[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