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++) {
> 

Reply via email to