netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
To: davem@davemloft.net
Cc: netdev@vger.kernel.org, gospo@redhat.com,
	Bruce Allan <bruce.w.allan@intel.com>,
	Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Subject: [net-next-2.6 PATCH 06/23] e1000e: link reporting problems
Date: Sat, 21 Nov 2009 01:23:34 -0800	[thread overview]
Message-ID: <20091121092333.5715.81064.stgit@localhost.localdomain> (raw)
In-Reply-To: <20091121092126.5715.41618.stgit@localhost.localdomain>

From: Bruce Allan <bruce.w.allan@intel.com>

Copper links with WoL or management enabled (any condition which prevents
the phy from being powered down when the interface is taken down) were
always reporting link-up when the interface had been taken down. This
is because when the interface is taken down (ifconfig ethx down),
interrupts are disabled. With no interrupts, there is no LSC interrupt,
which is normally required to set "get_link_status", which instructs the
driver to query the device for link state. The fix is to force
get_link_status to true if the interface is not up.

Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---

 drivers/net/e1000e/ethtool.c |   11 +++++++++++
 1 files changed, 11 insertions(+), 0 deletions(-)

diff --git a/drivers/net/e1000e/ethtool.c b/drivers/net/e1000e/ethtool.c
index 3d73f20..67e06fd 100644
--- a/drivers/net/e1000e/ethtool.c
+++ b/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);
 }


  parent reply	other threads:[~2009-11-21  9:23 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-11-21  9:22 [net-next-2.6 PATCH 01/23] e1000e: check WoL mode is among set of supported modes Jeff Kirsher
2009-11-21  9:22 ` [net-next-2.6 PATCH 02/23] e1000e: add missing tests for 82583 in ethtool functions Jeff Kirsher
2009-11-21  9:22 ` [net-next-2.6 PATCH 03/23] e1000e: clearing interrupt timers causes descriptors to get flushed Jeff Kirsher
2009-11-21  9:22 ` [net-next-2.6 PATCH 04/23] e1000e: function pointers for ethtool set/get offloads Jeff Kirsher
2009-11-21  9:23 ` [net-next-2.6 PATCH 05/23] e1000e: don't clean Rx ring while resetting Jeff Kirsher
2009-11-21  9:23 ` Jeff Kirsher [this message]
2009-11-21  9:23 ` [net-next-2.6 PATCH 07/23] e1000e: improper return code signage Jeff Kirsher
2009-11-21  9:24 ` [net-next-2.6 PATCH 08/23] e1000e: disable K1 on PCH LOM when in PHY loopback mode Jeff Kirsher
2009-11-21  9:24 ` [net-next-2.6 PATCH 09/23] e1000e: Incorrect MII Link beat reporting Jeff Kirsher
2009-11-21  9:24 ` [net-next-2.6 PATCH 10/23] e1000e: cleanup redundant #include's Jeff Kirsher
2009-11-21  9:25 ` [net-next-2.6 PATCH 11/23] e1000e: consolidate two dbug macros into one simpler one Jeff Kirsher
2009-11-21  9:25 ` [net-next-2.6 PATCH 12/23] e1000e: cleanup ops function pointers Jeff Kirsher
2009-11-21  9:25 ` [net-next-2.6 PATCH 13/23] e1000e: update copyright information Jeff Kirsher
2009-11-21  9:26 ` [net-next-2.6 PATCH 14/23] e1000e: remove comments regarding a non-existent api module Jeff Kirsher
2009-11-21  9:26 ` [net-next-2.6 PATCH 15/23] e1000e: provide comment for 82571 workaround Jeff Kirsher
2009-11-21  9:26 ` [net-next-2.6 PATCH 16/23] e1000e: set bools to true/false instead of 1/0 Jeff Kirsher
2009-11-21  9:27 ` [net-next-2.6 PATCH 17/23] e1000e: cleanup - shift indentation left by exiting early in e1000_tso Jeff Kirsher
2009-11-21  9:27 ` [net-next-2.6 PATCH 18/23] e1000e: cleanup functions that clear hardware statistics Jeff Kirsher
2009-11-21  9:27 ` [net-next-2.6 PATCH 19/23] e1000e: set pm_qos DMA latency requirement per interface when needed Jeff Kirsher
2009-11-21  9:27 ` [net-next-2.6 PATCH 20/23] e1000e: do not error out on identification LED init failure Jeff Kirsher
2009-11-21  9:28 ` [net-next-2.6 PATCH 21/23] e1000e: remove redundant might_sleep() Jeff Kirsher
2009-11-21  9:28 ` [net-next-2.6 PATCH 22/23] e1000e: cosmetic - group local variables of the same type Jeff Kirsher
2009-11-21  9:28 ` [net-next-2.6 PATCH 23/23] e1000e: update Tx Unit hang detection message Jeff Kirsher

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20091121092333.5715.81064.stgit@localhost.localdomain \
    --to=jeffrey.t.kirsher@intel.com \
    --cc=bruce.w.allan@intel.com \
    --cc=davem@davemloft.net \
    --cc=gospo@redhat.com \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).