Skip to content

Commit 8e92ab3

Browse files
viviendavem330
authored andcommitted
net: dsa: simplify netdevice events handling
Simplify the code handling the slave netdevice notifier call by providing a dsa_slave_changeupper helper for NETDEV_CHANGEUPPER, and so on (only this event is supported at the moment.) Return NOTIFY_DONE when we did not care about an event, and NOTIFY_OK when we were concerned but no error occurred, as the API suggests. Signed-off-by: Vivien Didelot <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 88e4f0c commit 8e92ab3

File tree

1 file changed

+16
-28
lines changed

1 file changed

+16
-28
lines changed

net/dsa/slave.c

Lines changed: 16 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1491,46 +1491,34 @@ static bool dsa_slave_dev_check(struct net_device *dev)
14911491
return dev->netdev_ops == &dsa_slave_netdev_ops;
14921492
}
14931493

1494-
static int dsa_slave_port_upper_event(struct net_device *dev,
1495-
unsigned long event, void *ptr)
1494+
static int dsa_slave_changeupper(struct net_device *dev,
1495+
struct netdev_notifier_changeupper_info *info)
14961496
{
1497-
struct netdev_notifier_changeupper_info *info = ptr;
1498-
struct net_device *upper = info->upper_dev;
1499-
int err = 0;
1497+
int err = NOTIFY_DONE;
15001498

1501-
switch (event) {
1502-
case NETDEV_CHANGEUPPER:
1503-
if (netif_is_bridge_master(upper)) {
1504-
if (info->linking)
1505-
err = dsa_slave_bridge_port_join(dev, upper);
1506-
else
1507-
dsa_slave_bridge_port_leave(dev, upper);
1499+
if (netif_is_bridge_master(info->upper_dev)) {
1500+
if (info->linking) {
1501+
err = dsa_slave_bridge_port_join(dev, info->upper_dev);
1502+
err = notifier_from_errno(err);
1503+
} else {
1504+
dsa_slave_bridge_port_leave(dev, info->upper_dev);
1505+
err = NOTIFY_OK;
15081506
}
1509-
1510-
break;
1511-
}
1512-
1513-
return notifier_from_errno(err);
1514-
}
1515-
1516-
static int dsa_slave_port_event(struct net_device *dev, unsigned long event,
1517-
void *ptr)
1518-
{
1519-
switch (event) {
1520-
case NETDEV_CHANGEUPPER:
1521-
return dsa_slave_port_upper_event(dev, event, ptr);
15221507
}
15231508

1524-
return NOTIFY_DONE;
1509+
return err;
15251510
}
15261511

15271512
static int dsa_slave_netdevice_event(struct notifier_block *nb,
15281513
unsigned long event, void *ptr)
15291514
{
15301515
struct net_device *dev = netdev_notifier_info_to_dev(ptr);
15311516

1532-
if (dsa_slave_dev_check(dev))
1533-
return dsa_slave_port_event(dev, event, ptr);
1517+
if (dev->netdev_ops != &dsa_slave_netdev_ops)
1518+
return NOTIFY_DONE;
1519+
1520+
if (event == NETDEV_CHANGEUPPER)
1521+
return dsa_slave_changeupper(dev, ptr);
15341522

15351523
return NOTIFY_DONE;
15361524
}

0 commit comments

Comments
 (0)