[dpdk-dev] [PATCH v2] net/af_packet: improve Tx statistics accuracy
Stephen Hemminger
stephen at networkplumber.org
Thu Oct 10 20:35:33 CEST 2019
On Thu, 10 Oct 2019 18:34:30 +0100
Flavia Musatescu <flavia.musatescu at intel.com> wrote:
> When sendto call fails and ENOBUFS error is being set some of the
> packets are actually successfully transmitted. There is no available
> count of those packets, so in order to make the statistics more
> accurate, all the previously enqueued packets will be considered
> successful, even though this is not entirely correct.
>
> Before:
> testpmd Tx statistics:
> TX-packets: 7529062 TX-errors: 3702150 TX-bytes: 451743720
> pktgen Rx statistics:
> Total Rx Pkts: 10700700
>
> After:
> testpmd TX statistics:
> TX-packets: 11510625 TX-errors: 0 TX-bytes: 690637500
> pktgen Rx statistics:
> Total Rx Pkts: 10974307
>
> Fixes: 74b7fc0a0ff1 ("net/af_packet: fix packet bytes counting")
> Cc: ciwillia at brocade.com
> Cc: stable at dpdk.org
>
> Signed-off-by: Flavia Musatescu <flavia.musatescu at intel.com>
>
> ---
> v2:
> * Changed the comment
> ---
> drivers/net/af_packet/rte_eth_af_packet.c | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/af_packet/rte_eth_af_packet.c b/drivers/net/af_packet/rte_eth_af_packet.c
> index 6df09f2..df281bf 100644
> --- a/drivers/net/af_packet/rte_eth_af_packet.c
> +++ b/drivers/net/af_packet/rte_eth_af_packet.c
> @@ -244,8 +244,12 @@ eth_af_packet_tx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
> }
>
> /* kick-off transmits */
> - if (sendto(pkt_q->sockfd, NULL, 0, MSG_DONTWAIT, NULL, 0) == -1) {
> - /* error sending -- no packets transmitted */
> + if (sendto(pkt_q->sockfd, NULL, 0, MSG_DONTWAIT, NULL, 0) == -1 &&
> + errno != ENOBUFS) {
> + /*
> + * In case of a ENOBUFS error all of the enqueued packets will
> + * be considered successful even though only some are sent.
> + */
> num_tx = 0;
> num_tx_bytes = 0;
> }
What about EINTR or EAGAIN?
More information about the dev
mailing list