Messages in this thread | | | Date | Thu, 12 Oct 2023 10:52:01 +0530 | Subject | Re: [PATCH] net: ti: icssg-prueth: Fix tx_total_bytes count | From | MD Danish Anwar <> |
| |
On 11/10/23 15:16, Ravi Gunasekaran wrote: > > > 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". >
Sure Ravi, I'll update the commit message.
>> 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@ti.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; >> } >> } >> >
-- Thanks and Regards, Danish
| |