mirror of
https://github.com/torvalds/linux.git
synced 2024-11-17 17:41:44 +00:00
bnx2x: Prevent mistaken hangup between driver & FW
When system CPU is stressed it's possible that the driver will not be able to pulse the FW every second, which will cause the log to be filled with error messages. Increasing the threshold to 5 seconds seems to be enough to eliminate the issue. Signed-off-by: Eilon Greenstein <eilong@broadcom.com> Signed-off-by: Yuval Mintz <yuvalmin@broadcom.com> Signed-off-by: Ariel Elior <ariele@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
343f7dc430
commit
4c86866434
@ -5447,26 +5447,24 @@ static void bnx2x_timer(unsigned long data)
|
||||
if (IS_PF(bp) &&
|
||||
!BP_NOMCP(bp)) {
|
||||
int mb_idx = BP_FW_MB_IDX(bp);
|
||||
u32 drv_pulse;
|
||||
u32 mcp_pulse;
|
||||
u16 drv_pulse;
|
||||
u16 mcp_pulse;
|
||||
|
||||
++bp->fw_drv_pulse_wr_seq;
|
||||
bp->fw_drv_pulse_wr_seq &= DRV_PULSE_SEQ_MASK;
|
||||
/* TBD - add SYSTEM_TIME */
|
||||
drv_pulse = bp->fw_drv_pulse_wr_seq;
|
||||
bnx2x_drv_pulse(bp);
|
||||
|
||||
mcp_pulse = (SHMEM_RD(bp, func_mb[mb_idx].mcp_pulse_mb) &
|
||||
MCP_PULSE_SEQ_MASK);
|
||||
/* The delta between driver pulse and mcp response
|
||||
* should be 1 (before mcp response) or 0 (after mcp response)
|
||||
* should not get too big. If the MFW is more than 5 pulses
|
||||
* behind, we should worry about it enough to generate an error
|
||||
* log.
|
||||
*/
|
||||
if ((drv_pulse != mcp_pulse) &&
|
||||
(drv_pulse != ((mcp_pulse + 1) & MCP_PULSE_SEQ_MASK))) {
|
||||
/* someone lost a heartbeat... */
|
||||
BNX2X_ERR("drv_pulse (0x%x) != mcp_pulse (0x%x)\n",
|
||||
if (((drv_pulse - mcp_pulse) & MCP_PULSE_SEQ_MASK) > 5)
|
||||
BNX2X_ERR("MFW seems hanged: drv_pulse (0x%x) != mcp_pulse (0x%x)\n",
|
||||
drv_pulse, mcp_pulse);
|
||||
}
|
||||
}
|
||||
|
||||
if (bp->state == BNX2X_STATE_OPEN)
|
||||
|
Loading…
Reference in New Issue
Block a user