tg3: Report invalid link from tg3_get_settings()
authorMatt Carlson <mcarlson@broadcom.com>
Thu, 14 Oct 2010 10:37:44 +0000 (10:37 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sun, 17 Oct 2010 20:57:45 +0000 (13:57 -0700)
Currently the tg3 driver leaves the speed and duplex fields
uninitialized in tg3_get_settings() if the device is not up.  This can
lead to some strange deductions in certain versions of ethtool.  When
the device is up and the link is down, the driver reports SPEED_INVALID
and DUPLEX_INVALID for these fields.  This patch makes the presentation
consistent by returning SPEED_INVALID and DUPLEX_INVALID when the device
has not been brought up as well.

Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
Reviewed-by: Michael Chan <mchan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/tg3.c

index 17ca0a37c9e7a67e6fbbac28bc80a8d2729b0048..5d30e67ffe69fe2c6676ee9c4ca9665228f6b1fc 100644 (file)
@@ -9807,6 +9807,9 @@ static int tg3_get_settings(struct net_device *dev, struct ethtool_cmd *cmd)
        if (netif_running(dev)) {
                cmd->speed = tp->link_config.active_speed;
                cmd->duplex = tp->link_config.active_duplex;
+       } else {
+               cmd->speed = SPEED_INVALID;
+               cmd->duplex = DUPLEX_INVALID;
        }
        cmd->phy_address = tp->phy_addr;
        cmd->transceiver = XCVR_INTERNAL;