提交 543a827d 编写于 作者: M Michael Chan 提交者: 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: NMichael Chan <mchan@broadcom.com>
Signed-off-by: NBenjamin Li <benli@broadcom.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 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% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册