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