On 04/08, Marvin Liu wrote: >Introduce free threshold setting in Rx queue, default value of it is 32. >Limiated threshold size to multiple of four as only vectorized packed Rx
s/Limiated/Limit >function will utilize it. Virtio driver will rearm Rx queue when more >than rx_free_thresh descs were dequeued. > >Signed-off-by: Marvin Liu <yong....@intel.com> > >diff --git a/drivers/net/virtio/virtio_rxtx.c >b/drivers/net/virtio/virtio_rxtx.c >index 752faa0f6..3a2dbc2e0 100644 >--- a/drivers/net/virtio/virtio_rxtx.c >+++ b/drivers/net/virtio/virtio_rxtx.c >@@ -936,6 +936,7 @@ virtio_dev_rx_queue_setup(struct rte_eth_dev *dev, > struct virtio_hw *hw = dev->data->dev_private; > struct virtqueue *vq = hw->vqs[vtpci_queue_idx]; > struct virtnet_rx *rxvq; >+ uint16_t rx_free_thresh; > > PMD_INIT_FUNC_TRACE(); > >@@ -944,6 +945,28 @@ virtio_dev_rx_queue_setup(struct rte_eth_dev *dev, > return -EINVAL; > } > >+ rx_free_thresh = rx_conf->rx_free_thresh; >+ if (rx_free_thresh == 0) >+ rx_free_thresh = >+ RTE_MIN(vq->vq_nentries / 4, DEFAULT_RX_FREE_THRESH); >+ >+ if (rx_free_thresh & 0x3) { >+ RTE_LOG(ERR, PMD, "rx_free_thresh must be multiples of four." >+ " (rx_free_thresh=%u port=%u queue=%u)\n", >+ rx_free_thresh, dev->data->port_id, queue_idx); >+ return -EINVAL; >+ } >+ >+ if (rx_free_thresh >= vq->vq_nentries) { >+ RTE_LOG(ERR, PMD, "rx_free_thresh must be less than the " >+ "number of RX entries (%u)." >+ " (rx_free_thresh=%u port=%u queue=%u)\n", >+ vq->vq_nentries, >+ rx_free_thresh, dev->data->port_id, queue_idx); >+ return -EINVAL; >+ } >+ vq->vq_free_thresh = rx_free_thresh; >+ > if (nb_desc == 0 || nb_desc > vq->vq_nentries) > nb_desc = vq->vq_nentries; > vq->vq_free_cnt = RTE_MIN(vq->vq_free_cnt, nb_desc); >diff --git a/drivers/net/virtio/virtqueue.h b/drivers/net/virtio/virtqueue.h >index 58ad7309a..6301c56b2 100644 >--- a/drivers/net/virtio/virtqueue.h >+++ b/drivers/net/virtio/virtqueue.h >@@ -18,6 +18,8 @@ > > struct rte_mbuf; > >+#define DEFAULT_RX_FREE_THRESH 32 What about naming it VIRITO_DEFAULT_RX_FREE_THRESH? Thanks, Xiaolong >+ > /* > * Per virtio_ring.h in Linux. > * For virtio_pci on SMP, we don't need to order with respect to MMIO >-- >2.17.1 >