Tested-by: Wang, Yinan <yinan.w...@intel.com>
> -----Original Message-----
> From: dev <dev-boun...@dpdk.org> On Behalf Of Marvin Liu
> Sent: 2020年4月23日 20:31
> To: maxime.coque...@redhat.com; Ye, Xiaolong <xiaolong...@intel.com>;
> Wang, Zhihong <zhihong.w...@intel.com>
> Cc: Van Haaren, Harry <harry.van.haa...@intel.com>; dev@dpdk.org; Liu,
> Yong <yong....@intel.com>
> Subject: [dpdk-dev] [PATCH v8 0/9] add packed ring vectorized path
>
> This patch set introduced vectorized path 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 path can fully transformed into vectorized path.
> Packed ring Rx path can be vectorized when requirements met(LRO and
> mergeable disabled).
>
> New option RTE_LIBRTE_VIRTIO_INC_VECTOR will be introduced in this patch
> set. This option will unify split and packed ring vectorized path default
> setting.
> Meanwhile user can specify whether enable vectorized path at runtime by
> 'vectorized' parameter of virtio user vdev.
>
> v8:
> * fix meson build error on ubuntu16.04 and suse15
>
> v7:
> * default vectorization is disabled
> * compilation time check dependency on rte_mbuf structure
> * offsets are calcuated when compiling
> * remove useless barrier as descs are batched store&load
> * vindex of scatter is directly set
> * some comments updates
> * enable vectorized path in meson build
>
> v6:
> * fix issue when size not power of 2
>
> v5:
> * remove cpuflags definition as required extensions always come with
> AVX512F on x86_64
> * inorder actions should depend on feature bit
> * check ring type in rx queue setup
> * rewrite some commit logs
> * fix some checkpatch warnings
>
> v4:
> * rename 'packed_vec' to 'vectorized', also used in split ring
> * add RTE_LIBRTE_VIRTIO_INC_VECTOR config for virtio ethdev
> * check required AVX512 extensions cpuflags
> * combine split and packed ring datapath selection logic
> * remove limitation that size must power of two
> * clear 12Bytes virtio_net_hdr
>
> v3:
> * remove virtio_net_hdr array for better performance
> * disable 'packed_vec' by default
>
> v2:
> * more function blocks replaced by vector instructions
> * clean virtio_net_hdr by vector instruction
> * allow header room size change
> * add 'packed_vec' option in virtio_user vdev
> * fix build not check whether AVX512 enabled
> * doc update
>
>
> Marvin Liu (9):
> net/virtio: add Rx free threshold setting
> net/virtio: enable vectorized path
> net/virtio: inorder should depend on feature bit
> net/virtio-user: add vectorized path parameter
> net/virtio: add vectorized packed ring Rx path
> net/virtio: reuse packed ring xmit functions
> net/virtio: add vectorized packed ring Tx path
> net/virtio: add election for vectorized path
> doc: add packed vectorized path
>
> config/common_base | 1 +
> doc/guides/nics/virtio.rst | 43 +-
> drivers/net/virtio/Makefile | 37 ++
> drivers/net/virtio/meson.build | 15 +
> 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 | 212 ++-----
> drivers/net/virtio/virtio_rxtx_packed_avx.c | 665 ++++++++++++++++++++
> drivers/net/virtio/virtio_user_ethdev.c | 37 +-
> drivers/net/virtio/virtqueue.c | 7 +-
> drivers/net/virtio/virtqueue.h | 168 ++++-
> 12 files changed, 1075 insertions(+), 214 deletions(-)
> create mode 100644 drivers/net/virtio/virtio_rxtx_packed_avx.c
>
> --
> 2.17.1