[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <3bc32261-fdcf-2cea-cae2-f4dddc147d96@ti.com>
Date: Wed, 11 Oct 2023 15:16:50 +0530
From: Ravi Gunasekaran <r-gunasekaran@...com>
To: MD Danish Anwar <danishanwar@...com>,
Paolo Abeni <pabeni@...hat.com>,
Jakub Kicinski <kuba@...nel.org>,
Eric Dumazet <edumazet@...gle.com>,
"David S. Miller" <davem@...emloft.net>
CC: <linux-kernel@...r.kernel.org>, <netdev@...r.kernel.org>,
<srk@...com>, Vignesh Raghavendra <vigneshr@...com>,
Roger Quadros <rogerq@...nel.org>
Subject: Re: [PATCH] net: ti: icssg-prueth: Fix tx_total_bytes count
On 10/11/23 12:07 PM, MD Danish Anwar wrote:
> ICSSG HW stats on TX side considers 8 preamble bytes as data bytes. Due
> to this the tx_total_bytes of one interface doesn't match the
> rx_total_bytes of other interface when two ICSSG interfaces are
The errata is on the ICSSG Tx side regardless of which interface it is
connected to. Please rephrase this part of the message to something like,
"rx_total_bytes of the link partner".
> connected with each other. There is no public errata available yet.
>
> As a workaround to fix this, decrease tx_total_bytes by 8 bytes for every
> tx frame.
>
> Fixes: c1e10d5dc7a1 ("net: ti: icssg-prueth: Add ICSSG Stats")
> Signed-off-by: MD Danish Anwar <danishanwar@...com>
> ---
> drivers/net/ethernet/ti/icssg/icssg_stats.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/drivers/net/ethernet/ti/icssg/icssg_stats.c b/drivers/net/ethernet/ti/icssg/icssg_stats.c
> index bb0b33927e3b..dc12edcbac02 100644
> --- a/drivers/net/ethernet/ti/icssg/icssg_stats.c
> +++ b/drivers/net/ethernet/ti/icssg/icssg_stats.c
> @@ -18,6 +18,7 @@ void emac_update_hardware_stats(struct prueth_emac *emac)
> struct prueth *prueth = emac->prueth;
> int slice = prueth_emac_slice(emac);
> u32 base = stats_base[slice];
> + u32 tx_pkt_cnt = 0;
> u32 val;
> int i;
>
> @@ -29,7 +30,12 @@ void emac_update_hardware_stats(struct prueth_emac *emac)
> base + icssg_all_stats[i].offset,
> val);
>
> + if (!strncmp(icssg_ethtool_stats[i].name, "tx_good_frames", ETH_GSTRING_LEN))
> + tx_pkt_cnt = val;
> +
> emac->stats[i] += val;
> + if (!strncmp(icssg_ethtool_stats[i].name, "tx_total_bytes", ETH_GSTRING_LEN))
> + emac->stats[i] -= tx_pkt_cnt * 8;
> }
> }
>
--
Regards,
Ravi
Powered by blists - more mailing lists