[PATCH] net/af_packet: fix statistics
Morten Brørup
mb at smartsharesystems.com
Wed May 1 20:18:50 CEST 2024
> From: Stephen Hemminger [mailto:stephen at networkplumber.org]
> Sent: Wednesday, 1 May 2024 18.45
>
> On Wed, 1 May 2024 17:25:59 +0100
> Ferruh Yigit <ferruh.yigit at amd.com> wrote:
>
> > > - Remove the tx_error counter since it was not correct.
> > > When transmit ring is full it is not an error and
> > > the driver correctly returns only the number sent.
> > >
> >
> > nack
> > Transmit full is not only return case here.
> > There are actual errors continue to process relying this error
> calculation.
> > Also there are error cases like interface down.
> > Those error cases should be handled individually if we remove this.
> > I suggest split this change to separate patch.
>
> I see multiple drivers have copy/pasted same code and consider
> transmit full as an error. It is not.
+1
Transmit full is certainly not an error!
>
> There should be a new statistic at ethdev layer that does record
> transmit full, and make it across all drivers, but that would have
> to wait for ABI change.
What happens to these non-transmittable packets depend on the application.
Our application discards them and count them in a (per-port, per-queue) application level counter tx_nodescr, which eventually becomes IF-MIB::ifOutDiscards in SNMP. I think many applications behave similarly, so having an ethdev layer tx_nodescr counter might be helpful.
Other applications could try to retransmit them; if there are still no TX descriptors, they will be counted again.
In case anyone gets funny ideas: The PMD should still not free those non-transmitted packet mbufs, because the application might want to treat them differently than the transmitted packets, e.g. for latency stats or packet capture.
More information about the dev
mailing list