Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp880249pxu; Wed, 2 Dec 2020 05:56:59 -0800 (PST) X-Google-Smtp-Source: ABdhPJxlkd62zmKHd5022mXMe3zr5Tis8eiCjIdCNkzdsCXJpb9gYmwPCGRLGkOJTNkan/jBeCab X-Received: by 2002:a05:6402:1d12:: with SMTP id dg18mr16284edb.238.1606917419300; Wed, 02 Dec 2020 05:56:59 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1606917419; cv=none; d=google.com; s=arc-20160816; b=Fr1bO1FXmYiuw+DwdcfH9rA45lfIIu59MUz2689RUAxeZwRYnrXAKpNRJQoIYcF3fm mz0aEKGiYwOUlYC9DPpqD5nFmWCvDGFkQrtLQ2urTw4dkJZkoYdnJmXmff/zm534qOqP mDgF5hwwFivffCtGOYnEjnSa841Z3pH1k2jEHtCK+RqVh+KnjLad3fXctlATyX0vwe8N HjYDnHum0+p1Pwghs9WF+XxR4KyR5TZKK87i0tn+FV44Zsr9IeYMm3GYf32RzgPbk+E1 d+FuxXNl36HJRKzIKrd7yKdI559CUpRHosa+hcR6l2gt//zyiyE6n5X9hQDmenUAbXgF bAgQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:user-agent:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date; bh=qQrBMkeep4f4/7SFLqe+jrm9KyuqBdbm8gYsKpKSkqM=; b=JSQIc5zXTAclAiEI1JC+yzPI9qPeTcmXrhY6OwXK4Mx2WLD3XN6Awibr6mAOG8L/K2 7djiyKKjhzT/sj8BiMUiltjIZtcCzF+lenLPdadn6gHqgugM3pNlt4G0v034pL08vhMt byVZHUD0IVA+fm73RwFFT6oWjIezSqIA/4PGbVxGS8SgS0Tj9Jp+ne7/t37QQqbrNac1 p7s529V50MiAYZPZ6Wmf06x6frdSpBzHQNTuNV6Cs1mp78WKvWF5n1xe8iEoeGv/apCL 35CfJ6UH6LalrhUC0VKqL5csgcAt15bFIpbFo5jRg51Oqzjd1WTP57XNRnwfS0Ozn4HS uFLw== 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 a13si1088628edt.369.2020.12.02.05.56.35; Wed, 02 Dec 2020 05:56:59 -0800 (PST) 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 S1730201AbgLBNvy (ORCPT + 99 others); Wed, 2 Dec 2020 08:51:54 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36762 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730057AbgLBNvv (ORCPT ); Wed, 2 Dec 2020 08:51:51 -0500 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 71D0AC0617A6 for ; Wed, 2 Dec 2020 05:51:11 -0800 (PST) Received: from pty.hi.pengutronix.de ([2001:67c:670:100:1d::c5]) by metis.ext.pengutronix.de with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kkSXB-0002w5-Aq; Wed, 02 Dec 2020 14:51:05 +0100 Received: from ore by pty.hi.pengutronix.de with local (Exim 4.89) (envelope-from ) id 1kkSX9-0006JI-Nu; Wed, 02 Dec 2020 14:51:03 +0100 Date: Wed, 2 Dec 2020 14:51:03 +0100 From: Oleksij Rempel To: Vladimir Oltean Cc: Andrew Lunn , Florian Fainelli , netdev@vger.kernel.org, Russell King , "David S. Miller" , Pengutronix Kernel Team , Jakub Kicinski , linux-mips@vger.kernel.org, Vivien Didelot , linux-kernel@vger.kernel.org Subject: Re: [PATCH v2 2/2] net: dsa: qca: ar9331: export stats64 Message-ID: <20201202135103.dis4eqaqekp7q36j@pengutronix.de> References: <20201202120712.6212-1-o.rempel@pengutronix.de> <20201202120712.6212-3-o.rempel@pengutronix.de> <20201202130438.vuhujicfcg2n2ih7@skbuf> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20201202130438.vuhujicfcg2n2ih7@skbuf> X-Sent-From: Pengutronix Hildesheim X-URL: http://www.pengutronix.de/ X-IRC: #ptxdist @freenode X-Accept-Language: de,en X-Accept-Content-Type: text/plain X-Uptime: 14:37:30 up 3:43, 22 users, load average: 0.19, 0.13, 0.03 User-Agent: NeoMutt/20170113 (1.7.2) X-SA-Exim-Connect-IP: 2001:67c:670:100:1d::c5 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 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Dec 02, 2020 at 03:04:38PM +0200, Vladimir Oltean wrote: > On Wed, Dec 02, 2020 at 01:07:12PM +0100, Oleksij Rempel wrote: > > Add stats support for the ar9331 switch. > > > > Signed-off-by: Oleksij Rempel > > --- > > /* Warning: switch reset will reset last AR9331_SW_MDIO_PHY_MODE_PAGE request > > @@ -422,6 +527,7 @@ static void ar9331_sw_phylink_mac_link_down(struct dsa_switch *ds, int port, > > phy_interface_t interface) > > { > > struct ar9331_sw_priv *priv = (struct ar9331_sw_priv *)ds->priv; > > + struct ar9331_sw_port *p = &priv->port[port]; > > struct regmap *regmap = priv->regmap; > > int ret; > > > > @@ -429,6 +535,8 @@ static void ar9331_sw_phylink_mac_link_down(struct dsa_switch *ds, int port, > > AR9331_SW_PORT_STATUS_MAC_MASK, 0); > > if (ret) > > dev_err_ratelimited(priv->dev, "%s: %i\n", __func__, ret); > > + > > + cancel_delayed_work_sync(&p->mib_read); > > Is this sufficient? Do you get a guaranteed .phylink_mac_link_down event > on unbind? How do you ensure you don't race with the stats worker there? Currently it works, but you are right, i'll better do this on remove as well. > > +static void ar9331_stats_update(struct ar9331_sw_port *port, > > + struct rtnl_link_stats64 *stats) > > +{ > > + struct ar9331_sw_stats *s = &port->stats; > > + > > + stats->rx_packets = s->rxbroad + s->rxmulti + s->rx64byte + > > + s->rx128byte + s->rx256byte + s->rx512byte + s->rx1024byte + > > + s->rx1518byte + s->rxmaxbyte; > > + stats->tx_packets = s->txbroad + s->txmulti + s->tx64byte + > > + s->tx128byte + s->tx256byte + s->tx512byte + s->tx1024byte + > > + s->tx1518byte + s->txmaxbyte; > > + stats->rx_bytes = s->rxgoodbyte; > > + stats->tx_bytes = s->txbyte; > > + stats->rx_errors = s->rxfcserr + s->rxalignerr + s->rxrunt + > > + s->rxfragment + s->rxoverflow; > > + stats->tx_errors = s->txoversize; > > + stats->multicast = s->rxmulti; > > + stats->collisions = s->txcollision; > > + stats->rx_length_errors = s->rxrunt * s->rxfragment + s->rxtoolong; > > Multiplication? Is this right? no. fixed. > > + stats->rx_crc_errors = s->rxfcserr + s->rxalignerr + s->rxfragment; > > + stats->rx_frame_errors = s->rxalignerr; > > + stats->rx_missed_errors = s->rxoverflow; > > + stats->tx_aborted_errors = s->txabortcol; > > + stats->tx_fifo_errors = s->txunderrun; > > + stats->tx_window_errors = s->txlatecol; > > + stats->rx_nohandler = s->filtered; > > +} > > + > > +static void ar9331_do_stats_poll(struct work_struct *work) > > +{ > > + > > Could you remove this empty line. fixed Thank you! Regards, Oleksij -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |