[dpdk-dev] [PATCH v4 0/8] add packed ring vectorized datapath
Marvin Liu
yong.liu at intel.com
Wed Apr 15 18:47:25 CEST 2020
This patch set introduced vectorized datapath for packed ring.
The size of packed ring descriptor is 16Bytes. Four batched descriptors
are just placed into one cacheline. AVX512 instructions can well handle
this kind of data. Packed ring TX datapath can fully transformed into
vectorized datapath. Rx datapath also can be vectorized when features
limiated(LRO and mergable disabled). User can specify whether disable
vectorized packed ring datapath by 'packed_vec' parameter of virtio user
vdev.
v4:
1. rename 'packed_vec' to 'vectorized', also used in split ring
2. add RTE_LIBRTE_VIRTIO_INC_VECTOR config for virtio ethdev
3. check required AVX512 extensions cpuflags
4. combine split and packed ring datapath selection logic
5. remove limitation that size must power of two
6. clear 12Bytes virtio_net_hdr
v3:
1. Remove virtio_net_hdr array for better performance
2. disable 'packed_vec' by default
v2:
1. more function blocks replaced by vector instructions
2. clean virtio_net_hdr by vector instruction
3. allow header room size change
4. add 'packed_vec' option in virtio_user vdev
5. fix build not check whether AVX512 enabled
6. doc update
Marvin Liu (8):
net/virtio: enable vectorized datapath
net/virtio-user: add vectorized datapath parameter
net/virtio: add vectorized packed ring Rx function
net/virtio: reuse packed ring xmit functions
net/virtio: add vectorized packed ring Tx datapath
eal/x86: identify AVX512 extensions flag
net/virtio: add election for vectorized datapath
doc: add packed vectorized datapath
config/common_base | 1 +
.../nics/features/virtio-packed_vec.ini | 22 +
.../{virtio_vec.ini => virtio-split_vec.ini} | 2 +-
doc/guides/nics/virtio.rst | 44 +-
drivers/net/virtio/Makefile | 36 +
drivers/net/virtio/meson.build | 13 +
drivers/net/virtio/virtio_ethdev.c | 95 ++-
drivers/net/virtio/virtio_ethdev.h | 6 +
drivers/net/virtio/virtio_pci.h | 3 +-
drivers/net/virtio/virtio_rxtx.c | 182 +----
drivers/net/virtio/virtio_rxtx_packed_avx.c | 637 ++++++++++++++++++
drivers/net/virtio/virtio_user_ethdev.c | 36 +-
drivers/net/virtio/virtqueue.c | 6 +-
drivers/net/virtio/virtqueue.h | 163 ++++-
lib/librte_eal/common/arch/x86/rte_cpuflags.c | 3 +
.../common/include/arch/x86/rte_cpuflags.h | 3 +
16 files changed, 1040 insertions(+), 212 deletions(-)
create mode 100644 doc/guides/nics/features/virtio-packed_vec.ini
rename doc/guides/nics/features/{virtio_vec.ini => virtio-split_vec.ini} (88%)
create mode 100644 drivers/net/virtio/virtio_rxtx_packed_avx.c
--
2.17.1
More information about the dev
mailing list