Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp2020340ybb; Thu, 26 Mar 2020 19:46:56 -0700 (PDT) X-Google-Smtp-Source: ADFU+vuha9NnS813cakvb/YY1VbSXfPn9YWUiyS+sdMKR9pgbH8qvPbNNMcgZY4Z8w9UnF2zhlZH X-Received: by 2002:aca:f07:: with SMTP id 7mr2495941oip.68.1585277216226; Thu, 26 Mar 2020 19:46:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1585277216; cv=none; d=google.com; s=arc-20160816; b=eKvgs7mC3bezUq+9MR98UwTIhGgw1NIYeu0vggnawdiukdGZeBk6TV0pTM0SU0ACG3 QizQgW/28s8OGI+ZiJXICsG8alT5/HEjrafnkb2bDyB0iHPGTClGNUktIflKn2JekTeD qzOssrCxr13nj4m4gtfeiezqZQA5Nvr+1LbqTLgg5WVFUm6HE8/TG/f7ibgEqfwkO4PP vtc1pKz6cdL2zEjtouNS2jYcmXSq3+lDusj12Y00sX7o7Xx8mVeRVAGsIQazJYet9Opo QE5He1Jz6fUlOB6X7ToErWHK8+JZjv+/vZa4rgBb/UkfTO1h153ixjB99Ao7q8/8W99b pVDg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from; bh=CfDi5xnC/Wf3z/8Fa1MfYUcoi0B9ABDu1zyLqdQljj0=; b=nto46TC2vD2fXOLG4TZTRLTkZC2T3aohiUeffG8bM6mjH8WdMLwqfkwJiQtGv87N3V 5IZtRFjlkYYovYwGSesAMIchZowkh2IG+oyF8ESUDTTuUQG4Ka5Ry5GSA5QALl7tYCmU 4MkWi6kwFjmMJ4DXJYDhBmlooL5BKsAn3TLIMXcFp24tCgyENhKxoF7IiXYWoqkq0X3l LYz/aE73aUoHNvVTXa3/8mZdmTYnJGsrqWole5y9dtHamYCn6Q1ixQokPIiFapq6ebMV 85wgvixHK7ftu9He5EDWHVi8GrNcgxx68tTLJ/Z2VQ60zWfUQw/CNbYY+ac/w+7dqTUb CpCw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=canonical.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id r3si1935422otc.58.2020.03.26.19.46.42; Thu, 26 Mar 2020 19:46:56 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=canonical.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727738AbgC0CqW (ORCPT + 99 others); Thu, 26 Mar 2020 22:46:22 -0400 Received: from youngberry.canonical.com ([91.189.89.112]:34355 "EHLO youngberry.canonical.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726363AbgC0CqW (ORCPT ); Thu, 26 Mar 2020 22:46:22 -0400 Received: from 61-220-137-37.hinet-ip.hinet.net ([61.220.137.37] helo=localhost) by youngberry.canonical.com with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1jHf0Z-0002zW-PR; Fri, 27 Mar 2020 02:46:08 +0000 From: Kai-Heng Feng To: davem@davemloft.net, kuba@kernel.org Cc: alexander.duyck@gmail.com, Kai-Heng Feng , Jeff Kirsher , Aaron Brown , Michal Kubecek , Florian Fainelli , Andrew Lunn , Maxime Chevallier , netdev@vger.kernel.org (open list:NETWORKING [GENERAL]), linux-kernel@vger.kernel.org (open list) Subject: [PATCH] ethtool: Report speed and duplex as unknown when device is runtime suspended Date: Fri, 27 Mar 2020 10:45:51 +0800 Message-Id: <20200327024552.22170-1-kai.heng.feng@canonical.com> X-Mailer: git-send-email 2.17.1 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Device like igb 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 directly report the speed and duplex as unknown. Cc: Jeff Kirsher Cc: Aaron Brown Suggested-by: Alexander Duyck Signed-off-by: Kai-Heng Feng --- net/ethtool/ioctl.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/net/ethtool/ioctl.c b/net/ethtool/ioctl.c index 10d929abdf6a..2ba04aa9d775 100644 --- a/net/ethtool/ioctl.c +++ b/net/ethtool/ioctl.c @@ -28,6 +28,7 @@ #include #include #include +#include #include "common.h" @@ -429,6 +430,13 @@ int __ethtool_get_link_ksettings(struct net_device *dev, return -EOPNOTSUPP; memset(link_ksettings, 0, sizeof(*link_ksettings)); + + if (pm_runtime_suspended(dev->dev.parent)) { + link_ksettings->base.duplex = DUPLEX_UNKNOWN; + link_ksettings->base.speed = SPEED_UNKNOWN; + return 0; + } + return dev->ethtool_ops->get_link_ksettings(dev, link_ksettings); } EXPORT_SYMBOL(__ethtool_get_link_ksettings); -- 2.17.1