| From fe4c000d3c903620ab834ef54670263efe3b3545 Mon Sep 17 00:00:00 2001 |
| From: Claudiu Manoil <claudiu.manoil@nxp.com> |
| Date: Tue, 5 Nov 2019 23:50:13 +0200 |
| Subject: [PATCH] net: mscc: ocelot: don't handle netdev events for other |
| netdevs |
| |
| commit 7afb3e575e5aa9f5a200a3eb3f45d8130f6d6601 upstream. |
| |
| The check that the event is actually for this device should be moved |
| from the "port" handler to the net device handler. |
| |
| Otherwise the port handler will deny bonding configuration for other |
| net devices in the same system (like enetc in the LS1028A) that don't |
| have the lag_upper_info->tx_type restriction that ocelot has. |
| |
| Fixes: dc96ee3730fc ("net: mscc: ocelot: add bonding support") |
| Signed-off-by: Claudiu Manoil <claudiu.manoil@nxp.com> |
| Signed-off-by: Vladimir Oltean <olteanv@gmail.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/net/ethernet/mscc/ocelot.c b/drivers/net/ethernet/mscc/ocelot.c |
| index 58e76e7cb0d6..e5d93556d59a 100644 |
| --- a/drivers/net/ethernet/mscc/ocelot.c |
| +++ b/drivers/net/ethernet/mscc/ocelot.c |
| @@ -1483,9 +1483,6 @@ static int ocelot_netdevice_port_event(struct net_device *dev, |
| struct ocelot_port *ocelot_port = netdev_priv(dev); |
| int err = 0; |
| |
| - if (!ocelot_netdevice_dev_check(dev)) |
| - return 0; |
| - |
| switch (event) { |
| case NETDEV_CHANGEUPPER: |
| if (netif_is_bridge_master(info->upper_dev)) { |
| @@ -1522,6 +1519,9 @@ 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 && |
| netif_is_lag_master(info->upper_dev)) { |
| struct netdev_lag_upper_info *lag_upper_info = info->upper_info; |
| -- |
| 2.7.4 |
| |