diff options
| -rw-r--r-- | drivers/net/ethernet/emulex/benet/be_main.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c index 45662af28928..9e6d678bca43 100644 --- a/drivers/net/ethernet/emulex/benet/be_main.c +++ b/drivers/net/ethernet/emulex/benet/be_main.c | |||
| @@ -1157,6 +1157,14 @@ ret: | |||
| 1157 | return status; | 1157 | return status; |
| 1158 | } | 1158 | } |
| 1159 | 1159 | ||
| 1160 | static void be_clear_promisc(struct be_adapter *adapter) | ||
| 1161 | { | ||
| 1162 | adapter->promiscuous = false; | ||
| 1163 | adapter->flags &= ~BE_FLAGS_VLAN_PROMISC; | ||
| 1164 | |||
| 1165 | be_cmd_rx_filter(adapter, IFF_PROMISC, OFF); | ||
| 1166 | } | ||
| 1167 | |||
| 1160 | static void be_set_rx_mode(struct net_device *netdev) | 1168 | static void be_set_rx_mode(struct net_device *netdev) |
| 1161 | { | 1169 | { |
| 1162 | struct be_adapter *adapter = netdev_priv(netdev); | 1170 | struct be_adapter *adapter = netdev_priv(netdev); |
| @@ -1170,9 +1178,7 @@ static void be_set_rx_mode(struct net_device *netdev) | |||
| 1170 | 1178 | ||
| 1171 | /* BE was previously in promiscuous mode; disable it */ | 1179 | /* BE was previously in promiscuous mode; disable it */ |
| 1172 | if (adapter->promiscuous) { | 1180 | if (adapter->promiscuous) { |
| 1173 | adapter->promiscuous = false; | 1181 | be_clear_promisc(adapter); |
| 1174 | be_cmd_rx_filter(adapter, IFF_PROMISC, OFF); | ||
| 1175 | |||
| 1176 | if (adapter->vlans_added) | 1182 | if (adapter->vlans_added) |
| 1177 | be_vid_config(adapter); | 1183 | be_vid_config(adapter); |
| 1178 | } | 1184 | } |
