lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed, 7 Dec 2022 07:14:09 +0100 From: Oleksij Rempel <o.rempel@...gutronix.de> To: Vladimir Oltean <olteanv@...il.com> Cc: Woojung Huh <woojung.huh@...rochip.com>, Andrew Lunn <andrew@...n.ch>, Arun.Ramadoss@...rochip.com, Florian Fainelli <f.fainelli@...il.com>, netdev@...r.kernel.org, linux-kernel@...r.kernel.org, Vivien Didelot <vivien.didelot@...il.com>, Eric Dumazet <edumazet@...gle.com>, Paolo Abeni <pabeni@...hat.com>, kernel@...gutronix.de, Jakub Kicinski <kuba@...nel.org>, UNGLinuxDriver@...rochip.com, "David S. Miller" <davem@...emloft.net> Subject: Re: [PATCH net-next v1 1/1] net: dsa: microchip: add stats64 support for ksz8 series of switches On Tue, Dec 06, 2022 at 07:08:01PM +0200, Vladimir Oltean wrote: > On Mon, Dec 05, 2022 at 06:29:04AM +0100, Oleksij Rempel wrote: > > +void ksz88xx_r_mib_stats64(struct ksz_device *dev, int port) > > +{ > > + struct ethtool_pause_stats *pstats; > > + struct rtnl_link_stats64 *stats; > > + struct ksz88xx_stats_raw *raw; > > + struct ksz_port_mib *mib; > > + > > + mib = &dev->ports[port].mib; > > + stats = &mib->stats64; > > + pstats = &mib->pause_stats; > > + raw = (struct ksz88xx_stats_raw *)mib->counters; > > + > > + spin_lock(&mib->stats64_lock); > > + > > + stats->rx_packets = raw->rx_bcast + raw->rx_mcast + raw->rx_ucast + > > + raw->rx_pause; > > + stats->tx_packets = raw->tx_bcast + raw->tx_mcast + raw->tx_ucast + > > + raw->tx_pause; > > + > > + /* HW counters are counting bytes + FCS which is not acceptable > > + * for rtnl_link_stats64 interface > > + */ > > + stats->rx_bytes = raw->rx + raw->rx_hi - stats->rx_packets * ETH_FCS_LEN; > > + stats->tx_bytes = raw->tx + raw->tx_hi - stats->tx_packets * ETH_FCS_LEN; > > What are rx_hi, tx_hi compared to rx, tx? rx, tx are packets with normal priority and rx_hi, tx_hi are packets with high prio. > > + > > + stats->rx_length_errors = raw->rx_undersize + raw->rx_fragments + > > + raw->rx_oversize; > > + > > + stats->rx_crc_errors = raw->rx_crc_err; > > + stats->rx_frame_errors = raw->rx_align_err; > > + stats->rx_dropped = raw->rx_discards; > > + stats->rx_errors = stats->rx_length_errors + stats->rx_crc_errors + > > + stats->rx_frame_errors + stats->rx_dropped; > > + > > + stats->tx_window_errors = raw->tx_late_col; > > + stats->tx_fifo_errors = raw->tx_discards; > > + stats->tx_aborted_errors = raw->tx_exc_col; > > + stats->tx_errors = stats->tx_window_errors + stats->tx_fifo_errors + > > + stats->tx_aborted_errors; > > + > > + stats->multicast = raw->rx_mcast; > > + stats->collisions = raw->tx_total_col; > > + > > + pstats->tx_pause_frames = raw->tx_pause; > > + pstats->rx_pause_frames = raw->rx_pause; > > FWIW, ksz_get_pause_stats() can sleep, just ksz_get_stats64() can't. So > the pause stats don't need to be periodically read (unless you want to > do that to prevent 32-bit overflows). KSZ driver is using worker to read stats periodically. Since all needed locks are already taken, I copy pause stats as well. Otherwise it will need some different locking, which will make things look different but do not reduce CPU load. 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 |
Powered by blists - more mailing lists