: Refine remote PHY locking.
Subsystems (2)
PATCH 1/6 : Refine remote PHY locking.
[BNX2]: Refine remote PHY locking.
bnx2_set_remote_link() should be called under bp->phy_lock to protect against concurrent polling and interrupt calls. This change is needed by the next patch which will add one initial poll of the remote PHY link status.
Signed-off-by Michael Chan <[email protected]>
Signed-off-by Benjamin Li <[email protected]>
--- drivers/net/bnx2.c | 11 +++++------ 1 files changed, 5 insertions(+), 6 deletions(-)
drivers/net/bnx2.c +5 -6
@@ -1715,7 +1715,6 @@ bnx2_remote_phy_event(struct bnx2 *bp)break ; } -spin_lock (&bp->phy_lock); bp->flow_ctrl =0 ;if ((bp->autoneg & (AUTONEG_SPEED |AUTONEG_FLOW_CTRL )) != (AUTONEG_SPEED |AUTONEG_FLOW_CTRL )) {
@@ -1737,7 +1736,6 @@ bnx2_remote_phy_event(struct bnx2 *bp)if (old_port != bp->phy_port)bnx2_set_default_link (bp); -spin_unlock (&bp->phy_lock); }if (bp->link_up != link_up)bnx2_report_link (bp);
@@ -2445,14 +2443,15 @@ bnx2_phy_event_is_set(struct bnx2 *bp, struct bnx2_napi *bnapi, u32 event)static void bnx2_phy_int (struct bnx2 *bp,struct bnx2_napi *bnapi) { -if (bnx2_phy_event_is_set (bp, bnapi,STATUS_ATTN_BITS_LINK_STATE )) { -spin_lock (&bp->phy_lock); +spin_lock (&bp->phy_lock); + +if (bnx2_phy_event_is_set (bp, bnapi,STATUS_ATTN_BITS_LINK_STATE ))bnx2_set_link (bp); -spin_unlock (&bp->phy_lock); - }if (bnx2_phy_event_is_set (bp, bnapi,STATUS_ATTN_BITS_TIMER_ABORT ))bnx2_set_remote_link (bp); +spin_unlock (&bp->phy_lock); + } static inline u16
Signature · 1 line
1.5.5.GIT
From: "Michael Chan" <[email protected]>
Date: Wed, 30 Apr 2008 15:50:29 -0700
Quoted 9 lines
[BNX2]: Refine remote PHY locking.
bnx2_set_remote_link()should be called underbp->phy_lockto protect against concurrent polling and interrupt calls. This change is needed by the next patch which will add one initial poll of the remote PHY link status.Signed-off-by Michael Chan <[email protected]>Signed-off-by Benjamin Li <[email protected]>
Applied.