Merge tag 'mlx5-updates-2018-05-17' of git://git.kernel.org/pub/scm/linux/kernel...
[sfrench/cifs-2.6.git] / drivers / net / ethernet / ti / netcp_core.c
index 736f6f713c093a1479eeafc48e0057c7a5d55c60..e40aa3e31af2345489a4dbc896593c7dc0f574cd 100644 (file)
@@ -1509,6 +1509,24 @@ static void netcp_addr_sweep_add(struct netcp_intf *netcp)
        }
 }
 
+static int netcp_set_promiscuous(struct netcp_intf *netcp, bool promisc)
+{
+       struct netcp_intf_modpriv *priv;
+       struct netcp_module *module;
+       int error;
+
+       for_each_module(netcp, priv) {
+               module = priv->netcp_module;
+               if (!module->set_rx_mode)
+                       continue;
+
+               error = module->set_rx_mode(priv->module_priv, promisc);
+               if (error)
+                       return error;
+       }
+       return 0;
+}
+
 static void netcp_set_rx_mode(struct net_device *ndev)
 {
        struct netcp_intf *netcp = netdev_priv(ndev);
@@ -1538,6 +1556,7 @@ static void netcp_set_rx_mode(struct net_device *ndev)
        /* finally sweep and callout into modules */
        netcp_addr_sweep_del(netcp);
        netcp_addr_sweep_add(netcp);
+       netcp_set_promiscuous(netcp, promisc);
        spin_unlock(&netcp->lock);
 }