netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
To: davem@davemloft.net
Cc: Kai-Heng Feng <kai.heng.feng@canonical.com>,
	netdev@vger.kernel.org, nhorman@redhat.com, sassmann@redhat.com,
	stable <stable@vger.kernel.org>,
	Alexander Duyck <alexander.duyck@gmail.com>,
	Aaron Brown <aaron.f.brown@intel.com>,
	Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Subject: [net-next 14/17] igb: Report speed and duplex as unknown when device is runtime suspended
Date: Fri, 22 May 2020 19:51:06 -0700	[thread overview]
Message-ID: <20200523025109.3313635-15-jeffrey.t.kirsher@intel.com> (raw)
In-Reply-To: <20200523025109.3313635-1-jeffrey.t.kirsher@intel.com>

From: Kai-Heng Feng <kai.heng.feng@canonical.com>

igb device gets runtime suspended when there's no link partner. We can't
get correct speed under that state:
$ cat /sys/class/net/enp3s0/speed
1000

In addition to that, an error can also be spotted in dmesg:
[  385.991957] igb 0000:03:00.0 enp3s0: PCIe link lost

Since device can only be runtime suspended when there's no link partner,
we can skip reading register and let the following logic set speed and
duplex with correct status.

The more generic approach will be wrap get_link_ksettings() with begin()
and complete() callbacks. However, for this particular issue, begin()
calls igb_runtime_resume() , which tries to rtnl_lock() while the lock
is already hold by upper ethtool layer.

So let's take this approach until the igb_runtime_resume() no longer
needs to hold rtnl_lock.

CC: stable <stable@vger.kernel.org>
Suggested-by: Alexander Duyck <alexander.duyck@gmail.com>
Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
 drivers/net/ethernet/intel/igb/igb_ethtool.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/intel/igb/igb_ethtool.c b/drivers/net/ethernet/intel/igb/igb_ethtool.c
index 39d3b76a6f5d..2cd003c5ad43 100644
--- a/drivers/net/ethernet/intel/igb/igb_ethtool.c
+++ b/drivers/net/ethernet/intel/igb/igb_ethtool.c
@@ -143,7 +143,8 @@ static int igb_get_link_ksettings(struct net_device *netdev,
 	u32 speed;
 	u32 supported, advertising;
 
-	status = rd32(E1000_STATUS);
+	status = pm_runtime_suspended(&adapter->pdev->dev) ?
+		 0 : rd32(E1000_STATUS);
 	if (hw->phy.media_type == e1000_media_type_copper) {
 
 		supported = (SUPPORTED_10baseT_Half |
-- 
2.26.2


  parent reply	other threads:[~2020-05-23  2:51 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-23  2:50 [net-next 00/17][pull request] 1GbE Intel Wired LAN Driver Updates 2020-05-22 Jeff Kirsher
2020-05-23  2:50 ` [net-next 01/17] igc: Refactor igc_ethtool_add_nfc_rule() Jeff Kirsher
2020-05-23  2:50 ` [net-next 02/17] igc: Fix 'sw_idx' type in struct igc_nfc_rule Jeff Kirsher
2020-05-23  2:50 ` [net-next 03/17] igc: Fix locking issue when retrieving NFC rules Jeff Kirsher
2020-05-23  2:50 ` [net-next 04/17] igc: Fix NFC rule overwrite cases Jeff Kirsher
2020-05-23  2:50 ` [net-next 05/17] igc: Fix NFC rules with multicast addresses Jeff Kirsher
2020-05-23  2:50 ` [net-next 06/17] igc: Fix NFC rules restoration Jeff Kirsher
2020-05-23  2:50 ` [net-next 07/17] igc: Refactor igc_ethtool_update_nfc_rule() Jeff Kirsher
2020-05-23  2:51 ` [net-next 08/17] igc: Fix NFC rules leak when driver is unloaded Jeff Kirsher
2020-05-23  2:51 ` [net-next 09/17] igc: Fix NFC rule validation Jeff Kirsher
2020-05-23  2:51 ` [net-next 10/17] igc: Change return type from igc_disable_nfc_rule() Jeff Kirsher
2020-05-23  2:51 ` [net-next 11/17] igc: Change adapter->nfc_rule_lock to mutex Jeff Kirsher
2020-05-23  2:51 ` [net-next 12/17] igc: Remove igc_nfc_rule_exit() Jeff Kirsher
2020-05-23  2:51 ` [net-next 13/17] igc: Remove unused descriptor's flags Jeff Kirsher
2020-05-23  2:51 ` Jeff Kirsher [this message]
2020-05-23  2:51 ` [net-next 15/17] e1000e: Warn if disabling ULP failed Jeff Kirsher
2020-05-23  2:51 ` [net-next 16/17] e1000e: Disable TSO for buffer overrun workaround Jeff Kirsher
2020-05-23  2:51 ` [net-next 17/17] e1000e: disable s0ix entry and exit flows for ME systems Jeff Kirsher
2020-05-23 23:48 ` [net-next 00/17][pull request] 1GbE Intel Wired LAN Driver Updates 2020-05-22 David Miller

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=20200523025109.3313635-15-jeffrey.t.kirsher@intel.com \
    --to=jeffrey.t.kirsher@intel.com \
    --cc=aaron.f.brown@intel.com \
    --cc=alexander.duyck@gmail.com \
    --cc=davem@davemloft.net \
    --cc=kai.heng.feng@canonical.com \
    --cc=netdev@vger.kernel.org \
    --cc=nhorman@redhat.com \
    --cc=sassmann@redhat.com \
    --cc=stable@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).