diff options
author | Atita Shirwaikar <atita.shirwaikar@intel.com> | 2011-01-04 21:00:55 -0500 |
---|---|---|
committer | Jeff Kirsher <jeffrey.t.kirsher@intel.com> | 2011-02-11 11:57:39 -0500 |
commit | 1b1c0a489c1dcc1fa640c13404ca69e7beae07d9 (patch) | |
tree | ce6b5d4990c259acc769d6f1c3eb9b7edc0491ab | |
parent | 8fecce62b512c1d50174e03367d6f384dd4ceb80 (diff) |
ixgbe: Adding 100MB FULL support in ethtool
Current driver does not show 100MB support in ethtool.
Adding support for the same.
Signed-off-by: Atita Shirwaikar <atita.shirwaikar@intel.com>
Tested-by: Stephen Ko <stephen.s.ko@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
-rw-r--r-- | drivers/net/ixgbe/ixgbe_ethtool.c | 34 | ||||
-rw-r--r-- | drivers/net/ixgbe/ixgbe_main.c | 5 |
2 files changed, 36 insertions, 3 deletions
diff --git a/drivers/net/ixgbe/ixgbe_ethtool.c b/drivers/net/ixgbe/ixgbe_ethtool.c index 2002ea88ca2a..309272f8f103 100644 --- a/drivers/net/ixgbe/ixgbe_ethtool.c +++ b/drivers/net/ixgbe/ixgbe_ethtool.c | |||
@@ -152,7 +152,17 @@ static int ixgbe_get_settings(struct net_device *netdev, | |||
152 | ecmd->supported |= (SUPPORTED_1000baseT_Full | | 152 | ecmd->supported |= (SUPPORTED_1000baseT_Full | |
153 | SUPPORTED_Autoneg); | 153 | SUPPORTED_Autoneg); |
154 | 154 | ||
155 | switch (hw->mac.type) { | ||
156 | case ixgbe_mac_X540: | ||
157 | ecmd->supported |= SUPPORTED_100baseT_Full; | ||
158 | break; | ||
159 | default: | ||
160 | break; | ||
161 | } | ||
162 | |||
155 | ecmd->advertising = ADVERTISED_Autoneg; | 163 | ecmd->advertising = ADVERTISED_Autoneg; |
164 | if (hw->phy.autoneg_advertised & IXGBE_LINK_SPEED_100_FULL) | ||
165 | ecmd->advertising |= ADVERTISED_100baseT_Full; | ||
156 | if (hw->phy.autoneg_advertised & IXGBE_LINK_SPEED_10GB_FULL) | 166 | if (hw->phy.autoneg_advertised & IXGBE_LINK_SPEED_10GB_FULL) |
157 | ecmd->advertising |= ADVERTISED_10000baseT_Full; | 167 | ecmd->advertising |= ADVERTISED_10000baseT_Full; |
158 | if (hw->phy.autoneg_advertised & IXGBE_LINK_SPEED_1GB_FULL) | 168 | if (hw->phy.autoneg_advertised & IXGBE_LINK_SPEED_1GB_FULL) |
@@ -167,6 +177,15 @@ static int ixgbe_get_settings(struct net_device *netdev, | |||
167 | ecmd->advertising |= (ADVERTISED_10000baseT_Full | | 177 | ecmd->advertising |= (ADVERTISED_10000baseT_Full | |
168 | ADVERTISED_1000baseT_Full); | 178 | ADVERTISED_1000baseT_Full); |
169 | 179 | ||
180 | switch (hw->mac.type) { | ||
181 | case ixgbe_mac_X540: | ||
182 | if (!(ecmd->advertising & ADVERTISED_100baseT_Full)) | ||
183 | ecmd->advertising |= (ADVERTISED_100baseT_Full); | ||
184 | break; | ||
185 | default: | ||
186 | break; | ||
187 | } | ||
188 | |||
170 | if (hw->phy.media_type == ixgbe_media_type_copper) { | 189 | if (hw->phy.media_type == ixgbe_media_type_copper) { |
171 | ecmd->supported |= SUPPORTED_TP; | 190 | ecmd->supported |= SUPPORTED_TP; |
172 | ecmd->advertising |= ADVERTISED_TP; | 191 | ecmd->advertising |= ADVERTISED_TP; |
@@ -271,8 +290,19 @@ static int ixgbe_get_settings(struct net_device *netdev, | |||
271 | 290 | ||
272 | hw->mac.ops.check_link(hw, &link_speed, &link_up, false); | 291 | hw->mac.ops.check_link(hw, &link_speed, &link_up, false); |
273 | if (link_up) { | 292 | if (link_up) { |
274 | ecmd->speed = (link_speed == IXGBE_LINK_SPEED_10GB_FULL) ? | 293 | switch (link_speed) { |
275 | SPEED_10000 : SPEED_1000; | 294 | case IXGBE_LINK_SPEED_10GB_FULL: |
295 | ecmd->speed = SPEED_10000; | ||
296 | break; | ||
297 | case IXGBE_LINK_SPEED_1GB_FULL: | ||
298 | ecmd->speed = SPEED_1000; | ||
299 | break; | ||
300 | case IXGBE_LINK_SPEED_100_FULL: | ||
301 | ecmd->speed = SPEED_100; | ||
302 | break; | ||
303 | default: | ||
304 | break; | ||
305 | } | ||
276 | ecmd->duplex = DUPLEX_FULL; | 306 | ecmd->duplex = DUPLEX_FULL; |
277 | } else { | 307 | } else { |
278 | ecmd->speed = -1; | 308 | ecmd->speed = -1; |
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c index 4a6bcb66d2a8..4f81b5a00775 100644 --- a/drivers/net/ixgbe/ixgbe_main.c +++ b/drivers/net/ixgbe/ixgbe_main.c | |||
@@ -6102,7 +6102,10 @@ static void ixgbe_watchdog_task(struct work_struct *work) | |||
6102 | (link_speed == IXGBE_LINK_SPEED_10GB_FULL ? | 6102 | (link_speed == IXGBE_LINK_SPEED_10GB_FULL ? |
6103 | "10 Gbps" : | 6103 | "10 Gbps" : |
6104 | (link_speed == IXGBE_LINK_SPEED_1GB_FULL ? | 6104 | (link_speed == IXGBE_LINK_SPEED_1GB_FULL ? |
6105 | "1 Gbps" : "unknown speed")), | 6105 | "1 Gbps" : |
6106 | (link_speed == IXGBE_LINK_SPEED_100_FULL ? | ||
6107 | "100 Mbps" : | ||
6108 | "unknown speed"))), | ||
6106 | ((flow_rx && flow_tx) ? "RX/TX" : | 6109 | ((flow_rx && flow_tx) ? "RX/TX" : |
6107 | (flow_rx ? "RX" : | 6110 | (flow_rx ? "RX" : |
6108 | (flow_tx ? "TX" : "None")))); | 6111 | (flow_tx ? "TX" : "None")))); |