Rather than dropping the whole burst if some don't fit.
This improves performance.

Signed-off-by: Andrew Boyer <abo...@pensando.io>
Signed-off-by: Vishwas Danivas <vish...@pensando.io>
---
 drivers/net/ionic/ionic_rxtx.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ionic/ionic_rxtx.c b/drivers/net/ionic/ionic_rxtx.c
index 2522c8283a..81182b5dc4 100644
--- a/drivers/net/ionic/ionic_rxtx.c
+++ b/drivers/net/ionic/ionic_rxtx.c
@@ -536,15 +536,16 @@ ionic_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
        struct ionic_tx_stats *stats = &txq->stats;
        uint32_t next_q_head_idx;
        uint32_t bytes_tx = 0;
-       uint16_t nb_tx = 0;
+       uint16_t nb_avail, nb_tx = 0;
        int err;
 
        /* Cleaning old buffers */
        ionic_tx_flush(txq);
 
-       if (unlikely(ionic_q_space_avail(q) < nb_pkts)) {
-               stats->stop += nb_pkts;
-               return 0;
+       nb_avail = ionic_q_space_avail(q);
+       if (unlikely(nb_avail < nb_pkts)) {
+               stats->stop += nb_pkts - nb_avail;
+               nb_pkts = nb_avail;
        }
 
        while (nb_tx < nb_pkts) {
-- 
2.17.1

Reply via email to