Commit 543a827d authored by Michael Chan's avatar Michael Chan Committed by David S. Miller

bnx2: Fix remote PHY initial link state.

On some remote PHY blade systems, the driver receives no initial link
interrupt.  As a result, the GMII/MII MAC mode does not get setup properly.
To fix this problem, we add an initial poll of the link state after chip
reset.

With this change, the setting of the initial carrier state in the init
code can be eliminated.
Signed-off-by: default avatarMichael Chan <mchan@broadcom.com>
Signed-off-by: default avatarBenjamin Li <benli@broadcom.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 74ecc62d
...@@ -4216,13 +4216,6 @@ bnx2_init_remote_phy(struct bnx2 *bp) ...@@ -4216,13 +4216,6 @@ bnx2_init_remote_phy(struct bnx2 *bp)
if (netif_running(bp->dev)) { if (netif_running(bp->dev)) {
u32 sig; u32 sig;
if (val & BNX2_LINK_STATUS_LINK_UP) {
bp->link_up = 1;
netif_carrier_on(bp->dev);
} else {
bp->link_up = 0;
netif_carrier_off(bp->dev);
}
sig = BNX2_DRV_ACK_CAP_SIGNATURE | sig = BNX2_DRV_ACK_CAP_SIGNATURE |
BNX2_FW_CAP_REMOTE_PHY_CAPABLE; BNX2_FW_CAP_REMOTE_PHY_CAPABLE;
bnx2_shmem_wr(bp, BNX2_DRV_ACK_CAP_MB, sig); bnx2_shmem_wr(bp, BNX2_DRV_ACK_CAP_MB, sig);
...@@ -4879,6 +4872,8 @@ bnx2_init_nic(struct bnx2 *bp) ...@@ -4879,6 +4872,8 @@ bnx2_init_nic(struct bnx2 *bp)
spin_lock_bh(&bp->phy_lock); spin_lock_bh(&bp->phy_lock);
bnx2_init_phy(bp); bnx2_init_phy(bp);
bnx2_set_link(bp); bnx2_set_link(bp);
if (bp->phy_flags & BNX2_PHY_FLAG_REMOTE_PHY_CAP)
bnx2_remote_phy_event(bp);
spin_unlock_bh(&bp->phy_lock); spin_unlock_bh(&bp->phy_lock);
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment