On 02/24/2017 08:48 AM, Zhiyong Yang wrote: > vhost removes limit of RX burst size(32 pkts) and supports to make > an best effort to receive pkts. > > Cc: yuanhan....@linux.intel.com > Cc: maxime.coque...@redhat.com > > Signed-off-by: Zhiyong Yang <zhiyong.y...@intel.com> > --- > drivers/net/vhost/rte_eth_vhost.c | 23 +++++++++++++++++++++-- > 1 file changed, 21 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/vhost/rte_eth_vhost.c > b/drivers/net/vhost/rte_eth_vhost.c > index 1e1fa34..8a97c2a 100644 > --- a/drivers/net/vhost/rte_eth_vhost.c > +++ b/drivers/net/vhost/rte_eth_vhost.c > @@ -402,9 +402,28 @@ eth_vhost_rx(void *q, struct rte_mbuf **bufs, uint16_t > nb_bufs) > goto out; > > /* Dequeue packets from guest TX queue */ > - nb_rx = rte_vhost_dequeue_burst(r->vid, > - r->virtqueue_id, r->mb_pool, bufs, nb_bufs); > + if (likely(nb_bufs <= VHOST_MAX_PKT_BURST)) > + nb_rx = rte_vhost_dequeue_burst(r->vid, r->virtqueue_id, > + r->mb_pool, bufs, nb_bufs); > + else { > + uint16_t nb_receive = nb_bufs; > + > + while (nb_receive) { > + uint16_t nb_pkts; > + uint16_t num = (uint16_t)RTE_MIN(nb_receive, > + VHOST_MAX_PKT_BURST); > > + nb_pkts = rte_vhost_dequeue_burst(r->vid, > + r->virtqueue_id, > + r->mb_pool, > + &bufs[nb_rx], num); > + > + nb_rx += nb_pkts; > + nb_receive -= nb_pkts; > + if (nb_pkts < num) > + break; > + }
Similar comment for this as for vhost tx > + } > r->stats.pkts += nb_rx; > > for (i = 0; likely(i < nb_rx); i++) { >