Received: by 2002:a6b:fb09:0:0:0:0:0 with SMTP id h9csp3752158iog; Tue, 28 Jun 2022 01:54:52 -0700 (PDT) X-Google-Smtp-Source: AGRyM1tJGXMMMJvFyAVWVkFVT1ca0Byi/c7XCxkJSP5YGjIJZv4IoHkUxRpJUS9nL1Y7DfGHv7qW X-Received: by 2002:a63:f506:0:b0:3fc:962b:6e02 with SMTP id w6-20020a63f506000000b003fc962b6e02mr16811416pgh.266.1656406492382; Tue, 28 Jun 2022 01:54:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1656406492; cv=none; d=google.com; s=arc-20160816; b=DcG3+R1sZZoawuyA1kciA+ldfqtrGydqAWUM5p2pjnrPC6ZeszuzkjItC7xqbntfV2 TCnd/qvRPgyqV2bYSLBGPyB1DlJN8VWrfsC8UWez1JH03bn00tIln93Dla71csl1NDEf v05a5IVeBpM4eVroxARoprje/HFWlEXx/xNWLyMzXCunXi8uBOetfbYlkREK7ASsHoAY REy6sNrcX9SYeqgZlAugeTRKLH7+Fs2UFIIPfLOP/ZrvtONH+TmlCo3YOB7f3enwHwqX T1NuN+yW5lwifaFUAF/o3EWUvPZXmixgCDRFRZS9zrbriobcMnWKfolkAKAQaYid3NMK dCTw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=MgowRpEhDP7ILZE9Bu7iOj0FoSQd83hsDVaw2SUkKww=; b=QRxWDCHiP0dH6/OVrwamcefQ132V08p6rS3fASVzjvP/uMi0GktXhmhvHJTnfFjQ+H jrYbGChUOGLnxPYRqqEuDAE6nfk9VO1rL6kPyM+oXXSpEJVDc82shd4VUBKVxaxEw+jW NT4ZHAfmxHOGNyqlGTuVBlPhlNG/LWgqLGrdozPm/wvBJELNda5hVN25HTYKDSo+xKjQ HdQl1UGiIitCgt45LgDl4L5s0dANuaN6Pb7emYqGEBiJJ7+of0yzA04jjl4Ob/2ibUPN mAg4AAwVob7Ehf2enUZp3C7Xcqt9LbmcQHnu76/Zolk/+PG3Ilq9JlVGwgNsuxwOEDOz 6Tmw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id o23-20020a637e57000000b00401b6ab1e4dsi19196840pgn.471.2022.06.28.01.54.40; Tue, 28 Jun 2022 01:54:52 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343998AbiF1IwT (ORCPT + 99 others); Tue, 28 Jun 2022 04:52:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49464 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240962AbiF1IwL (ORCPT ); Tue, 28 Jun 2022 04:52:11 -0400 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 537AF2F65D for ; Tue, 28 Jun 2022 01:52:10 -0700 (PDT) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1o66x1-0003rq-Fd; Tue, 28 Jun 2022 10:52:03 +0200 Received: from [2a0a:edc0:0:1101:1d::ac] (helo=dude04.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1o66wx-003Ael-7g; Tue, 28 Jun 2022 10:52:02 +0200 Received: from ore by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1o66wz-00As6t-VH; Tue, 28 Jun 2022 10:52:01 +0200 From: Oleksij Rempel To: Woojung Huh , Andrew Lunn , Vivien Didelot , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: Oleksij Rempel , kernel@pengutronix.de, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Lukas Wunner , UNGLinuxDriver@microchip.com Subject: [PATCH net-next v2 2/4] net: dsa: ar9331: add support for pause stats Date: Tue, 28 Jun 2022 10:51:53 +0200 Message-Id: <20220628085155.2591201-3-o.rempel@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220628085155.2591201-1-o.rempel@pengutronix.de> References: <20220628085155.2591201-1-o.rempel@pengutronix.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add support for pause stats. Signed-off-by: Oleksij Rempel --- drivers/net/dsa/qca/ar9331.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/drivers/net/dsa/qca/ar9331.c b/drivers/net/dsa/qca/ar9331.c index fb3fe74abfe6..b286e4e9c2c4 100644 --- a/drivers/net/dsa/qca/ar9331.c +++ b/drivers/net/dsa/qca/ar9331.c @@ -231,6 +231,7 @@ struct ar9331_sw_port { int idx; struct delayed_work mib_read; struct rtnl_link_stats64 stats; + struct ethtool_pause_stats pause_stats; struct spinlock stats_lock; }; @@ -606,6 +607,7 @@ static void ar9331_sw_phylink_mac_link_up(struct dsa_switch *ds, int port, static void ar9331_read_stats(struct ar9331_sw_port *port) { struct ar9331_sw_priv *priv = ar9331_sw_port_to_priv(port); + struct ethtool_pause_stats *pstats = &port->pause_stats; struct rtnl_link_stats64 *stats = &port->stats; struct ar9331_sw_stats_raw raw; int ret; @@ -646,6 +648,9 @@ static void ar9331_read_stats(struct ar9331_sw_port *port) stats->multicast += raw.rxmulti; stats->collisions += raw.txcollision; + pstats->tx_pause_frames += raw.txpause; + pstats->rx_pause_frames += raw.rxpause; + spin_unlock(&port->stats_lock); } @@ -670,6 +675,17 @@ static void ar9331_get_stats64(struct dsa_switch *ds, int port, spin_unlock(&p->stats_lock); } +static void ar9331_get_pause_stats(struct dsa_switch *ds, int port, + struct ethtool_pause_stats *pause_stats) +{ + struct ar9331_sw_priv *priv = (struct ar9331_sw_priv *)ds->priv; + struct ar9331_sw_port *p = &priv->port[port]; + + spin_lock(&p->stats_lock); + memcpy(pause_stats, &p->pause_stats, sizeof(*pause_stats)); + spin_unlock(&p->stats_lock); +} + static const struct dsa_switch_ops ar9331_sw_ops = { .get_tag_protocol = ar9331_sw_get_tag_protocol, .setup = ar9331_sw_setup, @@ -679,6 +695,7 @@ static const struct dsa_switch_ops ar9331_sw_ops = { .phylink_mac_link_down = ar9331_sw_phylink_mac_link_down, .phylink_mac_link_up = ar9331_sw_phylink_mac_link_up, .get_stats64 = ar9331_get_stats64, + .get_pause_stats = ar9331_get_pause_stats, }; static irqreturn_t ar9331_sw_irq(int irq, void *data) -- 2.30.2