Received: by 2002:a05:6a10:c7c6:0:0:0:0 with SMTP id h6csp2093869pxy; Mon, 2 Aug 2021 19:25:58 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyA9dCGyMKEYqYdx/cjKZcpMODSNkSAbOpBUUH7mAI+4Yih1cZ5OJqmr58WIXS2YPLYFkGm X-Received: by 2002:a05:6602:2406:: with SMTP id s6mr5157558ioa.159.1627957558229; Mon, 02 Aug 2021 19:25:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1627957558; cv=none; d=google.com; s=arc-20160816; b=pjgcP0s0L3+0YYvGyBGAG++EZD/mMqfOMaZHwOi5oZ+4LkZiCIjnWTuFNPBb64WnNG jMv/Uy1dfxSf7Hefvo/lDnzHn+KejrsxU96lgtKWZJRs6Qz9cSXPZNvM8UEbCXCydnTL wPfK1u4mJ6700ldQk2Qci+TF4IB6swmOffrSZWFiBpna4pLAE/F0zIqJtLfOSJpk0Jmy ay2l0h8VxE5OoEIn6H7k6odC+4lz4IVAn8MaIO/CkaA4zIjZubmpfUsQH/dI2IgoHHrk Dmc4dVDCL1pLYtSK9W7iMCrIPtRciVvRNYerYoQDt1Y69d1wPuafINQkOGhGwI8+Xqpv QYkQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:feedback-id:content-transfer-encoding :mime-version:message-id:date:subject:cc:to:from; bh=HvsPoYg4ExPp7Xfmcrc5iuF/YUO6ktq2mc/LsNRb1KU=; b=QEk/eoGz8hajK8gvxzVygQl4Z0Jfl4KS4gQaweM5jZUIBrGzTI491m5LdnGJemEAly LTMoXpQPIawuGV19V8+uUzpYGTfrqT27T29cDKWY3rgWV/QgWxepN7XXvuRSE72iWb64 rPlkYUdhgWlO6NC9aHm9uydq2siU4qzwszEUwU35UgwMPn/3bAYVlP9CKxE3BEtPUBfo Dg5ubaMGk58Ge/i3kv3K5sZxW+cQYRRWHayRX33SHTWUxv1FoZr1Xws3/57/0/hFVSRY swozxQfqLQjVYTO7U6gB+B7wK4Vs3it7nU61pbvuUQwliLIzZNUsWnV2RzxCrdFlBwQf 4M8g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id f11si14952456ils.120.2021.08.02.19.25.46; Mon, 02 Aug 2021 19:25:58 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233430AbhHCCYa (ORCPT + 99 others); Mon, 2 Aug 2021 22:24:30 -0400 Received: from smtpbg704.qq.com ([203.205.195.105]:41863 "EHLO smtpproxy21.qq.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S233619AbhHCCYW (ORCPT ); Mon, 2 Aug 2021 22:24:22 -0400 X-QQ-mid: bizesmtp38t1627957442tpqpcyqc Received: from localhost.localdomain (unknown [113.57.152.160]) by esmtp6.qq.com (ESMTP) with id ; Tue, 03 Aug 2021 10:24:01 +0800 (CST) X-QQ-SSF: 0140000000200050B000B00A0000000 X-QQ-FEAT: Ry58bBY793t8J05YGMEb+oM4QxhzoNKqMDKOSIqF/miICeODdH/7BMzYL6Z+I f43TZnqv2iYUA5HyiOlp0Y74r3x9qJsncJR1BEniCjsBWOMLDm9Rci7ENMSjNpFCvqTYBKK sm93nw54FHYRAY1B9FUp78skywDoP67N1YbGwVA0DsSMuhMaLkiNWPSEe7C1o2lbFkqB5OK UzrGZp+/ze+xsChCun92Wat55pKcsxMvED+C3XtQSY8JZJxMVpQK+o9RrPChkegC9cpgukE HigewXuWO8vOEyUr7N0rB7jH312J5Txat9b3rnLt2L+KXesRIbDkaNKkKjhwmXcChjpHlJ6 lVv3J5PGvkIgeinu6SOj3GyJFQPoSoK+0D2P7lN6RGJbbK6HoQ= X-QQ-GoodBg: 2 From: Hao Chen To: peppe.cavallaro@st.com Cc: alexandre.torgue@foss.st.com, joabreu@synopsys.com, davem@davemloft.net, kuba@kernel.org, mcoquelin.stm32@gmail.com, linux@armlinux.org.uk, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Hao Chen Subject: [net-next,v8] net: stmmac: optimize check in ops '.begin' Date: Tue, 3 Aug 2021 10:23:13 +0800 Message-Id: <20210803022313.23612-1-chenhaoa@uniontech.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:uniontech.com:qybgforeign:qybgforeign5 X-QQ-Bgrelay: 1 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org I want to get permanent MAC address when the interface is down. And I think it is more convenient to get statistics in the down state by 'ethtool -S'. But current all of the ethool command return -EBUSY. I don't think we should check that the network interface is up in '.begin', which will cause that all the ethtool commands can't be used when the network interface is down. If some ethtool commands can only be used in the up state, check it in the corresponding ethool OPS function is better. This is too rude and unreasonable. Compile-tested on arm64. Tested on an arm64 system with an on-board STMMAC chip. Changes v7 ... v8: - Optimize commit description information, optimization parameters of pm_runtime function. Changes v6 ... v7: - fix arg type error of 'dev' to 'priv->device'. Changes v5 ... v6: - The 4.19.90 kernel not support pm_runtime, so implemente '.begin' and '.complete' again. Add return value check of pm_runtime function. Changes v4 ... v5: - test the '.begin' will return -13 error on my machine based on 4.19.90 kernel. The platform driver does not supported pm_runtime. So remove the implementation of '.begin' and '.complete'. Changes v3 ... v4: - implement '.complete' ethtool OPS. Changes v2 ... v3: - add linux/pm_runtime.h head file. Changes v1 ... v2: - fix spell error of dev. Signed-off-by: Hao Chen --- .../ethernet/stmicro/stmmac/stmmac_ethtool.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c index d0ce608b81c3..8e2ae0ff7f8f 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c @@ -12,8 +12,9 @@ #include #include #include -#include #include +#include +#include #include #include "stmmac.h" @@ -410,11 +411,14 @@ static void stmmac_ethtool_setmsglevel(struct net_device *dev, u32 level) } -static int stmmac_check_if_running(struct net_device *dev) +static int stmmac_ethtool_begin(struct net_device *dev) { - if (!netif_running(dev)) - return -EBUSY; - return 0; + return pm_runtime_resume_and_get(dev->dev); +} + +static void stmmac_ethtool_complete(struct net_device *dev) +{ + pm_runtime_put(dev->dev); } static int stmmac_ethtool_get_regs_len(struct net_device *dev) @@ -1073,7 +1077,8 @@ static int stmmac_set_tunable(struct net_device *dev, static const struct ethtool_ops stmmac_ethtool_ops = { .supported_coalesce_params = ETHTOOL_COALESCE_USECS | ETHTOOL_COALESCE_MAX_FRAMES, - .begin = stmmac_check_if_running, + .begin = stmmac_ethtool_begin, + .complete = stmmac_ethtool_complete, .get_drvinfo = stmmac_ethtool_getdrvinfo, .get_msglevel = stmmac_ethtool_getmsglevel, .set_msglevel = stmmac_ethtool_setmsglevel, -- 2.20.1