|
@@ -6938,7 +6938,7 @@ u8 bnx2x_link_reset(struct link_params *params, struct link_vars *vars,
|
|
|
u8 reset_ext_phy)
|
|
|
{
|
|
|
struct bnx2x *bp = params->bp;
|
|
|
- u8 phy_index, port = params->port;
|
|
|
+ u8 phy_index, port = params->port, clear_latch_ind = 0;
|
|
|
DP(NETIF_MSG_LINK, "Resetting the link of port %d\n", port);
|
|
|
/* disable attentions */
|
|
|
vars->link_status = 0;
|
|
@@ -6976,9 +6976,18 @@ u8 bnx2x_link_reset(struct link_params *params, struct link_vars *vars,
|
|
|
params->phy[phy_index].link_reset(
|
|
|
¶ms->phy[phy_index],
|
|
|
params);
|
|
|
+ if (params->phy[phy_index].flags &
|
|
|
+ FLAGS_REARM_LATCH_SIGNAL)
|
|
|
+ clear_latch_ind = 1;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ if (clear_latch_ind) {
|
|
|
+ /* Clear latching indication */
|
|
|
+ bnx2x_rearm_latch_signal(bp, port, 0);
|
|
|
+ bnx2x_bits_dis(bp, NIG_REG_LATCH_BC_0 + port*4,
|
|
|
+ 1 << NIG_LATCH_BC_ENABLE_MI_INT);
|
|
|
+ }
|
|
|
if (params->phy[INT_PHY].link_reset)
|
|
|
params->phy[INT_PHY].link_reset(
|
|
|
¶ms->phy[INT_PHY], params);
|