diff options
author | Yaniv Rosner <yanivr@broadcom.com> | 2011-01-17 23:33:42 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-01-18 19:10:38 -0500 |
commit | 791f18c0da3ad540806122e173d6b730d7d7f60b (patch) | |
tree | 7d842cb483c3e7c8b1f7e6785de8f798390f4c1a | |
parent | 5c99274b0177cd614455c277b1a4d4410d9cb702 (diff) |
bnx2x: Mark full duplex on some external PHYs
Device may show incorrect duplex mode for devices with external PHY
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>
-rw-r--r-- | drivers/net/bnx2x/bnx2x_link.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/net/bnx2x/bnx2x_link.c b/drivers/net/bnx2x/bnx2x_link.c index 500258d38cf1..f5fd33ea0976 100644 --- a/drivers/net/bnx2x/bnx2x_link.c +++ b/drivers/net/bnx2x/bnx2x_link.c | |||
@@ -4408,6 +4408,7 @@ static u8 bnx2x_8073_read_status(struct bnx2x_phy *phy, | |||
4408 | } | 4408 | } |
4409 | bnx2x_ext_phy_10G_an_resolve(bp, phy, vars); | 4409 | bnx2x_ext_phy_10G_an_resolve(bp, phy, vars); |
4410 | bnx2x_8073_resolve_fc(phy, params, vars); | 4410 | bnx2x_8073_resolve_fc(phy, params, vars); |
4411 | vars->duplex = DUPLEX_FULL; | ||
4411 | } | 4412 | } |
4412 | return link_up; | 4413 | return link_up; |
4413 | } | 4414 | } |
@@ -5154,6 +5155,7 @@ static u8 bnx2x_8706_8726_read_status(struct bnx2x_phy *phy, | |||
5154 | else | 5155 | else |
5155 | vars->line_speed = SPEED_10000; | 5156 | vars->line_speed = SPEED_10000; |
5156 | bnx2x_ext_phy_resolve_fc(phy, params, vars); | 5157 | bnx2x_ext_phy_resolve_fc(phy, params, vars); |
5158 | vars->duplex = DUPLEX_FULL; | ||
5157 | } | 5159 | } |
5158 | return link_up; | 5160 | return link_up; |
5159 | } | 5161 | } |
@@ -5850,8 +5852,11 @@ static u8 bnx2x_8727_read_status(struct bnx2x_phy *phy, | |||
5850 | DP(NETIF_MSG_LINK, "port %x: External link is down\n", | 5852 | DP(NETIF_MSG_LINK, "port %x: External link is down\n", |
5851 | params->port); | 5853 | params->port); |
5852 | } | 5854 | } |
5853 | if (link_up) | 5855 | if (link_up) { |
5854 | bnx2x_ext_phy_resolve_fc(phy, params, vars); | 5856 | bnx2x_ext_phy_resolve_fc(phy, params, vars); |
5857 | vars->duplex = DUPLEX_FULL; | ||
5858 | DP(NETIF_MSG_LINK, "duplex = 0x%x\n", vars->duplex); | ||
5859 | } | ||
5855 | 5860 | ||
5856 | if ((DUAL_MEDIA(params)) && | 5861 | if ((DUAL_MEDIA(params)) && |
5857 | (phy->req_line_speed == SPEED_1000)) { | 5862 | (phy->req_line_speed == SPEED_1000)) { |
@@ -6218,6 +6223,7 @@ static u8 bnx2x_848xx_read_status(struct bnx2x_phy *phy, | |||
6218 | /* Check link 10G */ | 6223 | /* Check link 10G */ |
6219 | if (val2 & (1<<11)) { | 6224 | if (val2 & (1<<11)) { |
6220 | vars->line_speed = SPEED_10000; | 6225 | vars->line_speed = SPEED_10000; |
6226 | vars->duplex = DUPLEX_FULL; | ||
6221 | link_up = 1; | 6227 | link_up = 1; |
6222 | bnx2x_ext_phy_10G_an_resolve(bp, phy, vars); | 6228 | bnx2x_ext_phy_10G_an_resolve(bp, phy, vars); |
6223 | } else { /* Check Legacy speed link */ | 6229 | } else { /* Check Legacy speed link */ |
@@ -6581,6 +6587,7 @@ static u8 bnx2x_7101_read_status(struct bnx2x_phy *phy, | |||
6581 | MDIO_AN_DEVAD, MDIO_AN_REG_MASTER_STATUS, | 6587 | MDIO_AN_DEVAD, MDIO_AN_REG_MASTER_STATUS, |
6582 | &val2); | 6588 | &val2); |
6583 | vars->line_speed = SPEED_10000; | 6589 | vars->line_speed = SPEED_10000; |
6590 | vars->duplex = DUPLEX_FULL; | ||
6584 | DP(NETIF_MSG_LINK, "SFX7101 AN status 0x%x->Master=%x\n", | 6591 | DP(NETIF_MSG_LINK, "SFX7101 AN status 0x%x->Master=%x\n", |
6585 | val2, (val2 & (1<<14))); | 6592 | val2, (val2 & (1<<14))); |
6586 | bnx2x_ext_phy_10G_an_resolve(bp, phy, vars); | 6593 | bnx2x_ext_phy_10G_an_resolve(bp, phy, vars); |