[Saucy][PATCH 6/6] be2net: delete primary MAC address while unloading

Wen-chien Jesse Sung jesse.sung at canonical.com
Mon Dec 9 12:38:56 UTC 2013


From: Sathya Perla <sathya.perla at emulex.com>

BugLink: https://launchpad.net/bugs/1257227

Currently the UC-list is being deleted from the HW MAC table, but the primary
MAC is not.

Signed-off-by: Sathya Perla <sathya.perla at emulex.com>
Signed-off-by: David S. Miller <davem at davemloft.net>
(cherry picked from commit 2d17f4031475f2e836dd06d5b03593ee59f12fbd)
Signed-off-by: Wen-chien Jesse Sung <jesse.sung at canonical.com>
---
 drivers/net/ethernet/emulex/benet/be_main.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
index 48170c5..0ded53d 100644
--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
@@ -2796,7 +2796,7 @@ done:
 
 static int be_clear(struct be_adapter *adapter)
 {
-	int i = 1;
+	int i;
 
 	if (adapter->flags & BE_FLAGS_WORKER_SCHEDULED) {
 		cancel_delayed_work_sync(&adapter->work);
@@ -2806,9 +2806,11 @@ static int be_clear(struct be_adapter *adapter)
 	if (sriov_enabled(adapter))
 		be_vf_clear(adapter);
 
-	for (; adapter->uc_macs > 0; adapter->uc_macs--, i++)
+	/* delete the primary mac along with the uc-mac list */
+	for (i = 0; i < (adapter->uc_macs + 1); i++)
 		be_cmd_pmac_del(adapter, adapter->if_handle,
-			adapter->pmac_id[i], 0);
+				adapter->pmac_id[i], 0);
+	adapter->uc_macs = 0;
 
 	be_cmd_if_destroy(adapter, adapter->if_handle,  0);
 
-- 
1.8.3.2





More information about the kernel-team mailing list