If tx_free_thresh is quite low, it is possible that we need to
cleanup based on burst size.
Fixes:
fc30efe3a22e ("net/netvsc: change Rx descriptor setup and sizing")
Cc: stable@dpdk.org
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
struct hn_data *hv = txq->hv;
struct rte_eth_dev *vf_dev;
bool need_sig = false;
- uint16_t nb_tx;
+ uint16_t nb_tx, avail;
int ret;
if (unlikely(hv->closed))
return (*vf_dev->tx_pkt_burst)(sub_q, tx_pkts, nb_pkts);
}
- if (rte_mempool_avail_count(txq->txdesc_pool) <= txq->free_thresh)
+ avail = rte_mempool_avail_count(txq->txdesc_pool);
+ if (nb_pkts > avail || avail <= txq->free_thresh)
hn_process_events(hv, txq->queue_id, 0);
for (nb_tx = 0; nb_tx < nb_pkts; nb_tx++) {