|
@@ -1157,6 +1157,14 @@ ret:
|
|
|
return status;
|
|
|
}
|
|
|
|
|
|
+static void be_clear_promisc(struct be_adapter *adapter)
|
|
|
+{
|
|
|
+ adapter->promiscuous = false;
|
|
|
+ adapter->flags &= ~BE_FLAGS_VLAN_PROMISC;
|
|
|
+
|
|
|
+ be_cmd_rx_filter(adapter, IFF_PROMISC, OFF);
|
|
|
+}
|
|
|
+
|
|
|
static void be_set_rx_mode(struct net_device *netdev)
|
|
|
{
|
|
|
struct be_adapter *adapter = netdev_priv(netdev);
|
|
@@ -1170,9 +1178,7 @@ static void be_set_rx_mode(struct net_device *netdev)
|
|
|
|
|
|
/* BE was previously in promiscuous mode; disable it */
|
|
|
if (adapter->promiscuous) {
|
|
|
- adapter->promiscuous = false;
|
|
|
- be_cmd_rx_filter(adapter, IFF_PROMISC, OFF);
|
|
|
-
|
|
|
+ be_clear_promisc(adapter);
|
|
|
if (adapter->vlans_added)
|
|
|
be_vid_config(adapter);
|
|
|
}
|