From c547a8eeb3d7f04acb0aa0f62b01bd5e51c85aa5 Mon Sep 17 00:00:00 2001 From: Bruce Allan Date: Fri, 20 Nov 2009 23:23:34 +0000 Subject: [PATCH] --- yaml --- r: 171781 b: refs/heads/master c: 7ea9655f8a4ccefcd8fdea7eb4fc5dab98e1a7ba h: refs/heads/master i: 171779: e09fbc21a60b6c3c7cd07e9fbadd27c9d9afb87f v: v3 --- [refs] | 2 +- trunk/drivers/net/e1000e/ethtool.c | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index e25fb3a8633a..705102abff1f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a68ea775ad24ff403437c967628d2b9ce531ce48 +refs/heads/master: 7ea9655f8a4ccefcd8fdea7eb4fc5dab98e1a7ba diff --git a/trunk/drivers/net/e1000e/ethtool.c b/trunk/drivers/net/e1000e/ethtool.c index 3d73f2070b94..67e06fd9fc45 100644 --- a/trunk/drivers/net/e1000e/ethtool.c +++ b/trunk/drivers/net/e1000e/ethtool.c @@ -190,6 +190,17 @@ static int e1000_get_settings(struct net_device *netdev, static u32 e1000_get_link(struct net_device *netdev) { struct e1000_adapter *adapter = netdev_priv(netdev); + struct e1000_mac_info *mac = &adapter->hw.mac; + + /* + * If the link is not reported up to netdev, interrupts are disabled, + * and so the physical link state may have changed since we last + * looked. Set get_link_status to make sure that the true link + * state is interrogated, rather than pulling a cached and possibly + * stale link state from the driver. + */ + if (!netif_carrier_ok(netdev)) + mac->get_link_status = 1; return e1000_has_link(adapter); }