On 08/12/2020 14:07:48+0200, Vladimir Oltean wrote: > Commit 7afb3e575e5a ("net: mscc: ocelot: don't handle netdev events for > other netdevs") was too aggressive, and it made ocelot_netdevice_event > react only to network interface events emitted for the ocelot switch > ports. > > In fact, only the PRECHANGEUPPER should have had that check. > > When we ignore all events that are not for us, we miss the fact that the > upper of the LAG changes, and the bonding interface gets enslaved to a > bridge. This is an operation we could offload under certain conditions. > > Signed-off-by: Vladimir Oltean <vladimir.olt...@nxp.com> Reviewed-by: Alexandre Belloni <alexandre.bell...@bootlin.com>
> --- > drivers/net/ethernet/mscc/ocelot_net.c | 4 +--- > 1 file changed, 1 insertion(+), 3 deletions(-) > > diff --git a/drivers/net/ethernet/mscc/ocelot_net.c > b/drivers/net/ethernet/mscc/ocelot_net.c > index 93ecd5274156..6fb2a813e694 100644 > --- a/drivers/net/ethernet/mscc/ocelot_net.c > +++ b/drivers/net/ethernet/mscc/ocelot_net.c > @@ -1047,10 +1047,8 @@ static int ocelot_netdevice_event(struct > notifier_block *unused, > struct net_device *dev = netdev_notifier_info_to_dev(ptr); > int ret = 0; > > - if (!ocelot_netdevice_dev_check(dev)) > - return 0; > - > if (event == NETDEV_PRECHANGEUPPER && > + ocelot_netdevice_dev_check(dev) && > netif_is_lag_master(info->upper_dev)) { > struct netdev_lag_upper_info *lag_upper_info = info->upper_info; > struct netlink_ext_ack *extack; > -- > 2.25.1 > -- Alexandre Belloni, Bootlin Embedded Linux and Kernel engineering https://bootlin.com