bnx2x: Fix KR2 rapid link flap
Check KR2 recovery time at the beginning of the work-around function. Signed-off-by: Yaniv Rosner <yanivr@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
259c9a1f9e
commit
cb28ea3b13
|
@ -13437,13 +13437,7 @@ static void bnx2x_check_kr2_wa(struct link_params *params,
|
||||||
{
|
{
|
||||||
struct bnx2x *bp = params->bp;
|
struct bnx2x *bp = params->bp;
|
||||||
u16 base_page, next_page, not_kr2_device, lane;
|
u16 base_page, next_page, not_kr2_device, lane;
|
||||||
int sigdet = bnx2x_warpcore_get_sigdet(phy, params);
|
int sigdet;
|
||||||
|
|
||||||
if (!sigdet) {
|
|
||||||
if (!(vars->link_attr_sync & LINK_ATTR_SYNC_KR2_ENABLE))
|
|
||||||
bnx2x_kr2_recovery(params, vars, phy);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Once KR2 was disabled, wait 5 seconds before checking KR2 recovery
|
/* Once KR2 was disabled, wait 5 seconds before checking KR2 recovery
|
||||||
* since some switches tend to reinit the AN process and clear the
|
* since some switches tend to reinit the AN process and clear the
|
||||||
|
@ -13454,6 +13448,16 @@ static void bnx2x_check_kr2_wa(struct link_params *params,
|
||||||
vars->check_kr2_recovery_cnt--;
|
vars->check_kr2_recovery_cnt--;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sigdet = bnx2x_warpcore_get_sigdet(phy, params);
|
||||||
|
if (!sigdet) {
|
||||||
|
if (!(vars->link_attr_sync & LINK_ATTR_SYNC_KR2_ENABLE)) {
|
||||||
|
bnx2x_kr2_recovery(params, vars, phy);
|
||||||
|
DP(NETIF_MSG_LINK, "No sigdet\n");
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
lane = bnx2x_get_warpcore_lane(phy, params);
|
lane = bnx2x_get_warpcore_lane(phy, params);
|
||||||
CL22_WR_OVER_CL45(bp, phy, MDIO_REG_BANK_AER_BLOCK,
|
CL22_WR_OVER_CL45(bp, phy, MDIO_REG_BANK_AER_BLOCK,
|
||||||
MDIO_AER_BLOCK_AER_REG, lane);
|
MDIO_AER_BLOCK_AER_REG, lane);
|
||||||
|
|
Loading…
Reference in New Issue