Hi Changchun,

2014-10-24 16:38, Ouyang Changchun:
> For zero copy, it need check whether RX descriptor num meets the 
> least requirement when using vector PMD Rx function, and give user 
> more hints if it fails to meet the least requirement.
[...]
> --- a/examples/vhost/main.c
> +++ b/examples/vhost/main.c
> @@ -131,6 +131,10 @@
>  #define RTE_TEST_RX_DESC_DEFAULT_ZCP 32   /* legacy: 32, DPDK virt FE: 128. 
> */
>  #define RTE_TEST_TX_DESC_DEFAULT_ZCP 64   /* legacy: 64, DPDK virt FE: 64.  
> */
>  
> +#ifdef RTE_IXGBE_INC_VECTOR
> +#define VPMD_RX_BURST         32
> +#endif
> +
>  /* Get first 4 bytes in mbuf headroom. */
>  #define MBUF_HEADROOM_UINT32(mbuf) (*(uint32_t *)((uint8_t *)(mbuf) \
>               + sizeof(struct rte_mbuf)))
> @@ -792,6 +796,19 @@ us_vhost_parse_args(int argc, char **argv)
>               return -1;
>       }
>  
> +#ifdef RTE_IXGBE_INC_VECTOR
> +     if ((zero_copy == 1) && (num_rx_descriptor <= VPMD_RX_BURST)) {
> +             RTE_LOG(INFO, VHOST_PORT,
> +                     "The RX desc num: %d is too small for PMD to work\n"
> +                     "properly, please enlarge it to bigger than %d if\n"
> +                     "possible by the option: '--rx-desc-num <number>'\n"
> +                     "One alternative is disabling RTE_IXGBE_INC_VECTOR\n"
> +                     "in config file and rebuild the libraries.\n",
> +                     num_rx_descriptor, VPMD_RX_BURST);
> +             return -1;
> +     }
> +#endif
> +
>       return 0;
>  }

I feel there is a design problem here.
An application shouldn't have to care about the underlying driver.

-- 
Thomas

Reply via email to