mirror of
https://github.com/torvalds/linux.git
synced 2024-12-13 06:32:50 +00:00
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>
This commit is contained in:
parent
8736c82650
commit
7961689586
@ -2042,6 +2042,9 @@ int bnx2x_nic_unload(struct bnx2x *bp, int unload_mode)
|
||||
*/
|
||||
bnx2x_squeeze_objects(bp);
|
||||
|
||||
/* There should be no more pending SP commands at this stage */
|
||||
bp->sp_state = 0;
|
||||
|
||||
bp->port.pmf = 0;
|
||||
|
||||
/* Free SKBs, SGEs, TPA pool and driver internals */
|
||||
|
@ -371,7 +371,7 @@
|
||||
mechanism. The fields are: [5:0] - message length; [12:6] - message
|
||||
pointer; 18:13] - next pointer. */
|
||||
#define CCM_REG_XX_DESCR_TABLE 0xd0300
|
||||
#define CCM_REG_XX_DESCR_TABLE_SIZE 36
|
||||
#define CCM_REG_XX_DESCR_TABLE_SIZE 24
|
||||
/* [R 7] Used to read the value of XX protection Free counter. */
|
||||
#define CCM_REG_XX_FREE 0xd0184
|
||||
/* [RW 6] Initial value for the credit counter; responsible for fulfilling
|
||||
@ -4226,7 +4226,7 @@
|
||||
mechanism. The fields are: [5:0] - length of the message; 15:6] - message
|
||||
pointer; 20:16] - next pointer. */
|
||||
#define TCM_REG_XX_DESCR_TABLE 0x50280
|
||||
#define TCM_REG_XX_DESCR_TABLE_SIZE 32
|
||||
#define TCM_REG_XX_DESCR_TABLE_SIZE 29
|
||||
/* [R 6] Use to read the value of XX protection Free counter. */
|
||||
#define TCM_REG_XX_FREE 0x50178
|
||||
/* [RW 6] Initial value for the credit counter; responsible for fulfilling
|
||||
@ -4754,7 +4754,7 @@
|
||||
mechanism. The fields are:[5:0] - message length; 14:6] - message
|
||||
pointer; 19:15] - next pointer. */
|
||||
#define UCM_REG_XX_DESCR_TABLE 0xe0280
|
||||
#define UCM_REG_XX_DESCR_TABLE_SIZE 32
|
||||
#define UCM_REG_XX_DESCR_TABLE_SIZE 27
|
||||
/* [R 6] Use to read the XX protection Free counter. */
|
||||
#define UCM_REG_XX_FREE 0xe016c
|
||||
/* [RW 6] Initial value for the credit counter; responsible for fulfilling
|
||||
|
@ -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)) {
|
||||
|
Loading…
Reference in New Issue
Block a user