[dpdk-dev] [PATCH v2 0/2] net/mlx5: add vectorized mprq

Raslan Darawsheh rasland at nvidia.com
Thu Oct 22 17:01:46 CEST 2020


Hi,

> -----Original Message-----
> From: Alexander Kozyrev <akozyrev at nvidia.com>
> Sent: Wednesday, October 21, 2020 11:30 PM
> To: dev at dpdk.org
> Cc: Raslan Darawsheh <rasland at nvidia.com>; Matan Azrad
> <matan at nvidia.com>; Slava Ovsiienko <viacheslavo at nvidia.com>
> Subject: [PATCH v2 0/2] net/mlx5: add vectorized mprq
> 
> The vectorized Rx burst function helps to accelerate the Rx processing
> by using SIMD (single instruction, multiple data) extensions for the
> multi-buffer packet processing. Pre-allocating multiple mbufs and
> filling them in batches of four greatly improves the throughput of the
> Rx burst routine.
> 
> MPRQ (Multi-Packet Rx Queue) lacks the vectorized version currently.
> It works by posting a single large buffer (consisted of  multiple
> fixed-size strides) in order to receive multiple packets at once on this
> buffer. A Rx packet is then copied to a user-provided mbuf or PMD
> attaches the Rx packet to the mbuf by the pointer to an external buffer.
> 
> It is proposed to add a vectorized MPRQ Rx routine to speed up the MPRQ
> buffer handling as well. It would require pre-allocation of multiple
> mbufs every time we exhaust all the strides from the current MPRQ buffer
> and switch to a new one. The new mlx5_rx_burst_mprq_vec() routine will
> take care of this as well as of decision on whether should we copy or
> attach an external buffer for a packet. The batch processing logic won't
> be different from the simple vectorized Rx routine.
> 
> The new vectorized MPRQ burst function is going to be selected
> automatically whenever the mprq_en devarg is specified. If SIMD is not
> available on the platform we fall back to the simple MPRQ Rx burst
> function. LRO is not supported by the vectorized MPRQ version and fall
> back to the regular MPRQ will be performed.
> 
> 
> Alexander Kozyrev (2):
>   net/mlx5: refactor vectorized Rx routine
>   net/mlx5: implement vectorized MPRQ burst
> 
>  drivers/net/mlx5/mlx5_devx.c             |  15 +-
>  drivers/net/mlx5/mlx5_ethdev.c           |  20 +-
>  drivers/net/mlx5/mlx5_rxq.c              |  96 +++---
>  drivers/net/mlx5/mlx5_rxtx.c             | 237 ++++---------
>  drivers/net/mlx5/mlx5_rxtx.h             | 200 ++++++++++-
>  drivers/net/mlx5/mlx5_rxtx_vec.c         | 416 ++++++++++++++++++++++-
>  drivers/net/mlx5/mlx5_rxtx_vec.h         |  55 ---
>  drivers/net/mlx5/mlx5_rxtx_vec_altivec.h | 106 ++----
>  drivers/net/mlx5/mlx5_rxtx_vec_neon.h    | 103 ++----
>  drivers/net/mlx5/mlx5_rxtx_vec_sse.h     | 121 ++-----
>  10 files changed, 813 insertions(+), 556 deletions(-)
> 
> --
> 2.24.1


Series applied to next-net-mlx,

Kindest regards,
Raslan Darawsheh


More information about the dev mailing list