net/ring: do not count unsent packets as errors
authorDavid Marchand <david.marchand@redhat.com>
Fri, 26 Jul 2019 10:21:27 +0000 (12:21 +0200)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 26 Jul 2019 13:27:05 +0000 (15:27 +0200)
err_pkts reflects the number of packets that the driver did not manage
to send.
This is a temporary situation, those packets are not freed and the
application can still retry to send them later.
Hence, we can't count them as transmit failed.

Fixes: e1e4017751f1 ("ring: add new driver")
Cc: stable@dpdk.org
Signed-off-by: David Marchand <david.marchand@redhat.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
drivers/net/ring/rte_eth_ring.c

index eb347bc..634da63 100644 (file)
@@ -41,7 +41,6 @@ struct ring_queue {
        struct rte_ring *rng;
        rte_atomic64_t rx_pkts;
        rte_atomic64_t tx_pkts;
-       rte_atomic64_t err_pkts;
 };
 
 struct pmd_internals {
@@ -89,13 +88,10 @@ eth_ring_tx(void *q, struct rte_mbuf **bufs, uint16_t nb_bufs)
        struct ring_queue *r = q;
        const uint16_t nb_tx = (uint16_t)rte_ring_enqueue_burst(r->rng,
                        ptrs, nb_bufs, NULL);
-       if (r->rng->flags & RING_F_SP_ENQ) {
+       if (r->rng->flags & RING_F_SP_ENQ)
                r->tx_pkts.cnt += nb_tx;
-               r->err_pkts.cnt += nb_bufs - nb_tx;
-       } else {
+       else
                rte_atomic64_add(&(r->tx_pkts), nb_tx);
-               rte_atomic64_add(&(r->err_pkts), nb_bufs - nb_tx);
-       }
        return nb_tx;
 }
 
@@ -172,7 +168,7 @@ static int
 eth_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)
 {
        unsigned int i;
-       unsigned long rx_total = 0, tx_total = 0, tx_err_total = 0;
+       unsigned long rx_total = 0, tx_total = 0;
        const struct pmd_internals *internal = dev->data->dev_private;
 
        for (i = 0; i < RTE_ETHDEV_QUEUE_STAT_CNTRS &&
@@ -185,12 +181,10 @@ eth_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)
                        i < dev->data->nb_tx_queues; i++) {
                stats->q_opackets[i] = internal->tx_ring_queues[i].tx_pkts.cnt;
                tx_total += stats->q_opackets[i];
-               tx_err_total += internal->tx_ring_queues[i].err_pkts.cnt;
        }
 
        stats->ipackets = rx_total;
        stats->opackets = tx_total;
-       stats->oerrors = tx_err_total;
 
        return 0;
 }
@@ -203,10 +197,8 @@ eth_stats_reset(struct rte_eth_dev *dev)
 
        for (i = 0; i < dev->data->nb_rx_queues; i++)
                internal->rx_ring_queues[i].rx_pkts.cnt = 0;
-       for (i = 0; i < dev->data->nb_tx_queues; i++) {
+       for (i = 0; i < dev->data->nb_tx_queues; i++)
                internal->tx_ring_queues[i].tx_pkts.cnt = 0;
-               internal->tx_ring_queues[i].err_pkts.cnt = 0;
-       }
 }
 
 static void