net/af_packet: fix packet bytes counting
authorChas Williams <ciwillia@brocade.com>
Wed, 17 May 2017 18:03:35 +0000 (14:03 -0400)
committerFerruh Yigit <ferruh.yigit@intel.com>
Mon, 12 Jun 2017 09:41:26 +0000 (10:41 +0100)
On error, we also need to zero the bytes transmitted.

Fixes: f4ff17a465d2 ("net/af_packet: guard against buffer overruns in Tx path")
Cc: stable@dpdk.org
Signed-off-by: Chas Williams <ciwillia@brocade.com>
drivers/net/af_packet/rte_eth_af_packet.c

index ce4dc07..5620acd 100644 (file)
@@ -252,8 +252,11 @@ 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)
-               num_tx = 0; /* error sending -- no packets transmitted */
+       if (sendto(pkt_q->sockfd, NULL, 0, MSG_DONTWAIT, NULL, 0) == -1) {
+               /* error sending -- no packets transmitted */
+               num_tx = 0;
+               num_tx_bytes = 0;
+       }
 
        pkt_q->framenum = framenum;
        pkt_q->tx_pkts += num_tx;