net/virtio: fix mbuf count on Rx queue setup
authorIvan Ilchenko <ivan.ilchenko@oktetlabs.ru>
Fri, 20 Aug 2021 12:47:20 +0000 (15:47 +0300)
committerMaxime Coquelin <maxime.coquelin@redhat.com>
Tue, 14 Sep 2021 11:21:57 +0000 (13:21 +0200)
Rx queue setup finish function may report wrong number of
allocated mbufs in case of in-order feature. Fix the
function to not ignore allocation error and count only
successfully allocated number of buffers.

Fixes: e5f456a98d3c ("net/virtio: support in-order Rx and Tx")
Cc: stable@dpdk.org
Signed-off-by: Ivan Ilchenko <ivan.ilchenko@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
drivers/net/virtio/virtio_rxtx.c

index d0365ce..8a48fba 100644 (file)
@@ -768,10 +768,11 @@ virtio_dev_rx_queue_setup_finish(struct rte_eth_dev *dev, uint16_t queue_idx)
                                if (unlikely(error)) {
                                        for (i = 0; i < free_cnt; i++)
                                                rte_pktmbuf_free(pkts[i]);
+                               } else {
+                                       nbufs += free_cnt;
                                }
                        }
 
-                       nbufs += free_cnt;
                        vq_update_avail_idx(vq);
                }
        } else {