aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/mii.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/mii.c')
-rw-r--r--drivers/net/mii.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/drivers/net/mii.c b/drivers/net/mii.c
index e8198edeaa76..4fbc816efee2 100644
--- a/drivers/net/mii.c
+++ b/drivers/net/mii.c
@@ -121,22 +121,25 @@ int mii_ethtool_gset(struct mii_if_info *mii, struct ethtool_cmd *ecmd)
121 121
122 if (nego & (ADVERTISED_1000baseT_Full | 122 if (nego & (ADVERTISED_1000baseT_Full |
123 ADVERTISED_1000baseT_Half)) { 123 ADVERTISED_1000baseT_Half)) {
124 ecmd->speed = SPEED_1000; 124 ethtool_cmd_speed_set(ecmd, SPEED_1000);
125 ecmd->duplex = !!(nego & ADVERTISED_1000baseT_Full); 125 ecmd->duplex = !!(nego & ADVERTISED_1000baseT_Full);
126 } else if (nego & (ADVERTISED_100baseT_Full | 126 } else if (nego & (ADVERTISED_100baseT_Full |
127 ADVERTISED_100baseT_Half)) { 127 ADVERTISED_100baseT_Half)) {
128 ecmd->speed = SPEED_100; 128 ethtool_cmd_speed_set(ecmd, SPEED_100);
129 ecmd->duplex = !!(nego & ADVERTISED_100baseT_Full); 129 ecmd->duplex = !!(nego & ADVERTISED_100baseT_Full);
130 } else { 130 } else {
131 ecmd->speed = SPEED_10; 131 ethtool_cmd_speed_set(ecmd, SPEED_10);
132 ecmd->duplex = !!(nego & ADVERTISED_10baseT_Full); 132 ecmd->duplex = !!(nego & ADVERTISED_10baseT_Full);
133 } 133 }
134 } else { 134 } else {
135 ecmd->autoneg = AUTONEG_DISABLE; 135 ecmd->autoneg = AUTONEG_DISABLE;
136 136
137 ecmd->speed = ((bmcr & BMCR_SPEED1000 && 137 ethtool_cmd_speed_set(ecmd,
138 (bmcr & BMCR_SPEED100) == 0) ? SPEED_1000 : 138 ((bmcr & BMCR_SPEED1000 &&
139 (bmcr & BMCR_SPEED100) ? SPEED_100 : SPEED_10); 139 (bmcr & BMCR_SPEED100) == 0) ?
140 SPEED_1000 :
141 ((bmcr & BMCR_SPEED100) ?
142 SPEED_100 : SPEED_10)));
140 ecmd->duplex = (bmcr & BMCR_FULLDPLX) ? DUPLEX_FULL : DUPLEX_HALF; 143 ecmd->duplex = (bmcr & BMCR_FULLDPLX) ? DUPLEX_FULL : DUPLEX_HALF;
141 } 144 }
142 145