summaryrefslogtreecommitdiff
path: root/drivers/net/bnx2x/bnx2x_sp.c
diff options
context:
space:
mode:
authorVladislav Zolotarov <vladz@broadcom.com>2011-07-21 07:58:54 +0000
committerDavid S. Miller <davem@davemloft.net>2011-07-21 12:33:56 -0700
commit7961689586d30a34c10b18ac95ba1cd72cefe725 (patch)
treed80e394e9b5ca9b8835183a109060eda191e2be5 /drivers/net/bnx2x/bnx2x_sp.c
parent8736c82650500222c031dd7f59f0126e59808e36 (diff)
bnx2x: Broken self-test in SF mode on 578xx
This patch fixes both the failure in the self-test on 578xx and a hole in a parity recovery flow that this failure has discovered: - internal 'pending' state in a VLAN_MAC object wasn't been cleared when the object state change was called with DRV_ONLY flag, which in particular happens when a parity error happens during the self-test. - bp->sp_state wasn't cleared in the similar circumstances as described above. Signed-off-by: Vladislav Zolotarov <vladz@broadcom.com> Signed-off-by: Eilon Greenstein <eilong@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/bnx2x/bnx2x_sp.c')
-rw-r--r--drivers/net/bnx2x/bnx2x_sp.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/bnx2x/bnx2x_sp.c b/drivers/net/bnx2x/bnx2x_sp.c
index cce87d5e7609..df52f110c6c5 100644
--- a/drivers/net/bnx2x/bnx2x_sp.c
+++ b/drivers/net/bnx2x/bnx2x_sp.c
@@ -1689,6 +1689,12 @@ int bnx2x_config_vlan_mac(
if (!bnx2x_exe_queue_empty(&o->exe_queue))
rc = 1;
+ if (test_bit(RAMROD_DRV_CLR_ONLY, ramrod_flags)) {
+ DP(BNX2X_MSG_SP, "RAMROD_DRV_CLR_ONLY requested: "
+ "clearing a pending bit.\n");
+ raw->clear_pending(raw);
+ }
+
/* Execute commands if required */
if (cont || test_bit(RAMROD_EXEC, ramrod_flags) ||
test_bit(RAMROD_COMP_WAIT, ramrod_flags)) {