diff options
Diffstat (limited to 'drivers/net/mlx4/en_ethtool.c')
-rw-r--r-- | drivers/net/mlx4/en_ethtool.c | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/drivers/net/mlx4/en_ethtool.c b/drivers/net/mlx4/en_ethtool.c index f7d72d7a8704..fa2f2f43ab48 100644 --- a/drivers/net/mlx4/en_ethtool.c +++ b/drivers/net/mlx4/en_ethtool.c | |||
@@ -244,16 +244,39 @@ static void mlx4_en_get_strings(struct net_device *dev, | |||
244 | 244 | ||
245 | static int mlx4_en_get_settings(struct net_device *dev, struct ethtool_cmd *cmd) | 245 | static int mlx4_en_get_settings(struct net_device *dev, struct ethtool_cmd *cmd) |
246 | { | 246 | { |
247 | struct mlx4_en_priv *priv = netdev_priv(dev); | ||
248 | int trans_type; | ||
249 | |||
247 | cmd->autoneg = AUTONEG_DISABLE; | 250 | cmd->autoneg = AUTONEG_DISABLE; |
248 | cmd->supported = SUPPORTED_10000baseT_Full; | 251 | cmd->supported = SUPPORTED_10000baseT_Full; |
249 | cmd->advertising = ADVERTISED_1000baseT_Full; | 252 | cmd->advertising = ADVERTISED_10000baseT_Full; |
253 | |||
254 | if (mlx4_en_QUERY_PORT(priv->mdev, priv->port)) | ||
255 | return -ENOMEM; | ||
256 | |||
257 | trans_type = priv->port_state.transciver; | ||
250 | if (netif_carrier_ok(dev)) { | 258 | if (netif_carrier_ok(dev)) { |
251 | cmd->speed = SPEED_10000; | 259 | cmd->speed = priv->port_state.link_speed; |
252 | cmd->duplex = DUPLEX_FULL; | 260 | cmd->duplex = DUPLEX_FULL; |
253 | } else { | 261 | } else { |
254 | cmd->speed = -1; | 262 | cmd->speed = -1; |
255 | cmd->duplex = -1; | 263 | cmd->duplex = -1; |
256 | } | 264 | } |
265 | |||
266 | if (trans_type > 0 && trans_type <= 0xC) { | ||
267 | cmd->port = PORT_FIBRE; | ||
268 | cmd->transceiver = XCVR_EXTERNAL; | ||
269 | cmd->supported |= SUPPORTED_FIBRE; | ||
270 | cmd->advertising |= ADVERTISED_FIBRE; | ||
271 | } else if (trans_type == 0x80 || trans_type == 0) { | ||
272 | cmd->port = PORT_TP; | ||
273 | cmd->transceiver = XCVR_INTERNAL; | ||
274 | cmd->supported |= SUPPORTED_TP; | ||
275 | cmd->advertising |= ADVERTISED_TP; | ||
276 | } else { | ||
277 | cmd->port = -1; | ||
278 | cmd->transceiver = -1; | ||
279 | } | ||
257 | return 0; | 280 | return 0; |
258 | } | 281 | } |
259 | 282 | ||