diff options
Diffstat (limited to 'drivers/net/benet/be_main.c')
-rw-r--r-- | drivers/net/benet/be_main.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/net/benet/be_main.c b/drivers/net/benet/be_main.c index 3b2c5e6cb866..32a5b1100114 100644 --- a/drivers/net/benet/be_main.c +++ b/drivers/net/benet/be_main.c | |||
@@ -728,6 +728,10 @@ static int be_vid_config(struct be_adapter *adapter, bool vf, u32 vf_num) | |||
728 | status = be_cmd_vlan_config(adapter, if_handle, vtag, 1, 1, 0); | 728 | status = be_cmd_vlan_config(adapter, if_handle, vtag, 1, 1, 0); |
729 | } | 729 | } |
730 | 730 | ||
731 | /* No need to further configure vids if in promiscuous mode */ | ||
732 | if (adapter->promiscuous) | ||
733 | return 0; | ||
734 | |||
731 | if (adapter->vlans_added <= adapter->max_vlans) { | 735 | if (adapter->vlans_added <= adapter->max_vlans) { |
732 | /* Construct VLAN Table to give to HW */ | 736 | /* Construct VLAN Table to give to HW */ |
733 | for (i = 0; i < VLAN_N_VID; i++) { | 737 | for (i = 0; i < VLAN_N_VID; i++) { |
@@ -787,6 +791,9 @@ static void be_set_multicast_list(struct net_device *netdev) | |||
787 | if (adapter->promiscuous) { | 791 | if (adapter->promiscuous) { |
788 | adapter->promiscuous = false; | 792 | adapter->promiscuous = false; |
789 | be_cmd_promiscuous_config(adapter, false); | 793 | be_cmd_promiscuous_config(adapter, false); |
794 | |||
795 | if (adapter->vlans_added) | ||
796 | be_vid_config(adapter, false, 0); | ||
790 | } | 797 | } |
791 | 798 | ||
792 | /* Enable multicast promisc if num configured exceeds what we support */ | 799 | /* Enable multicast promisc if num configured exceeds what we support */ |