aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet
diff options
context:
space:
mode:
authorAjit Khaparde <ajit.khaparde@emulex.com>2013-11-18 11:44:37 -0500
committerDavid S. Miller <davem@davemloft.net>2013-11-18 16:25:22 -0500
commitd11a347de3f521af62da25e74156ea39e3774f19 (patch)
tree761eed97529e93635ae7e9fcf9beb7d322f26813 /drivers/net/ethernet
parent012bd38740a9f6f956cdaa69a4b9534daddb70a5 (diff)
be2net: Delete secondary unicast MAC addresses during be_close
Secondary unicast MAC addresses will get deleted only when the interface is UP. When the interface is DOWN, though these secondary MAC addresses are unusable and awaiting to be deleted, cause the firmware to believe that they are being used. If the user intends to set a MAC address as primary MAC from one of these secondary MAC addresses, the firmware returns a MAC address Collision error. Delete these secondary MAC addresses during be_close. The secondary MAC addresses list will be refreshed during interface open anyway. Signed-off-by: Ajit Khaparde <ajit.khaparde@emulex.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet')
-rw-r--r--drivers/net/ethernet/emulex/benet/be_main.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
index 13818d37bbbb..8e28cedf823b 100644
--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
@@ -2672,6 +2672,11 @@ static int be_close(struct net_device *netdev)
2672 2672
2673 be_rx_qs_destroy(adapter); 2673 be_rx_qs_destroy(adapter);
2674 2674
2675 for (i = 1; i < (adapter->uc_macs + 1); i++)
2676 be_cmd_pmac_del(adapter, adapter->if_handle,
2677 adapter->pmac_id[i], 0);
2678 adapter->uc_macs = 0;
2679
2675 for_all_evt_queues(adapter, eqo, i) { 2680 for_all_evt_queues(adapter, eqo, i) {
2676 if (msix_enabled(adapter)) 2681 if (msix_enabled(adapter))
2677 synchronize_irq(be_msix_vec_get(adapter, eqo)); 2682 synchronize_irq(be_msix_vec_get(adapter, eqo));