[dpdk-dev] [PATCH v12 0/9] add packed ring vectorized path

Maxime Coquelin maxime.coquelin at redhat.com
Wed Apr 29 10:17:01 CEST 2020



On 4/29/20 9:28 AM, Marvin Liu wrote:
> 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 device parameter "vectorized" will be introduced in this patch set.
> This parameter will be workable for both virtio device and virtio user
> vdev. It will also unify split and packed ring vectorized path default
> setting. Path election logic will check dependencies of vectorized path.
> Packed ring vectorized path is dependent on building/running environment
> and features like IN_ORDER and VERSION_1 enabled, MRG and LRO disabled. 
> If vectorized path is not supported, will fallback to normal path.
> 
> v12:
> * eliminate weak symbols in data path
> * remove desc extra padding which can impact normal path 
> * fix enqueue address invalid
> 
> v11:
> * fix i686 build warnings
> * fix typo in doc
> 
> v10:
> * reuse packed ring xmit cleanup
> 
> v9:
> * replace RTE_LIBRTE_VIRTIO_INC_VECTOR with vectorized devarg
> * reorder patch sequence
> 
> 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
> 
> Tested-by: Wang, Yinan <yinan.wang at intel.com>
> 
> Marvin Liu (9):
>   net/virtio: add Rx free threshold setting
>   net/virtio: inorder should depend on feature bit
>   net/virtio: add vectorized devarg
>   net/virtio-user: add vectorized devarg
>   net/virtio: reuse packed ring functions
>   net/virtio: add vectorized packed ring Rx path
>   net/virtio: add vectorized packed ring Tx path
>   net/virtio: add election for vectorized path
>   doc: add packed vectorized path
> 
>  doc/guides/nics/virtio.rst                  |  52 +-
>  drivers/net/virtio/Makefile                 |  35 ++
>  drivers/net/virtio/meson.build              |  14 +
>  drivers/net/virtio/virtio_ethdev.c          | 142 ++++-
>  drivers/net/virtio/virtio_ethdev.h          |   6 +
>  drivers/net/virtio/virtio_pci.h             |   3 +-
>  drivers/net/virtio/virtio_rxtx.c            | 351 ++---------
>  drivers/net/virtio/virtio_rxtx_packed_avx.c | 607 ++++++++++++++++++++
>  drivers/net/virtio/virtio_user_ethdev.c     |  32 +-
>  drivers/net/virtio/virtqueue.c              |   7 +-
>  drivers/net/virtio/virtqueue.h              | 304 ++++++++++
>  11 files changed, 1199 insertions(+), 354 deletions(-)
>  create mode 100644 drivers/net/virtio/virtio_rxtx_packed_avx.c
> 

Applied to dpdk-next-virtio/master,

Thanks,
Maxime



More information about the dev mailing list