mbox series

[net-next,00/15] net/mlx5e: Extend XDP multi-buffer capabilities

Message ID 20230417121903.46218-1-tariqt@nvidia.com (mailing list archive)
Headers show
Series net/mlx5e: Extend XDP multi-buffer capabilities | expand

Message

Tariq Toukan April 17, 2023, 12:18 p.m. UTC
Hi,

This series extends the XDP multi-buffer support in the mlx5e driver.

Patchset breakdown:
- Infrastructural changes and preparations.
- Add XDP multi-buffer support for XDP redirect-in.
- Use TX MPWQE (multi-packet WQE) HW feature for non-linear
  single-segmented XDP frames.
- Add XDP multi-buffer support for striding RQ.

In Striding RQ, we overcome the lack of headroom and tailroom between
the RQ strides by allocating a side page per packet and using it for the
xdp_buff descriptor. We structure the xdp_buff so that it contains
nothing in the linear part, and the whole packet resides in the
fragments.

Performance highlight:

Packet rate test, 64 bytes, 32 channels, MTU 9000 bytes.
CPU: Intel(R) Xeon(R) Platinum 8380 CPU @ 2.30GHz.
NIC: ConnectX-6 Dx, at 100 Gbps.

+----------+-------------+-------------+---------+
| Test     | Legacy RQ   | Striding RQ | Speedup |
+----------+-------------+-------------+---------+
| XDP_DROP | 101,615,544 | 117,191,020 | +15%    |
+----------+-------------+-------------+---------+
| XDP_TX   |  95,608,169 | 117,043,422 | +22%    |
+----------+-------------+-------------+---------+

Series generated against net commit:
e61caf04b9f8 Merge branch 'page_pool-allow-caching-from-safely-localized-napi'

I'm submitting this directly as Saeed is traveling.

Regards,
Tariq

Tariq Toukan (15):
  net/mlx5e: Move XDP struct and enum to XDP header
  net/mlx5e: Move struct mlx5e_xmit_data to datapath header
  net/mlx5e: Introduce extended version for mlx5e_xmit_data
  net/mlx5e: XDP, Remove doubtful unlikely calls
  net/mlx5e: XDP, Use multiple single-entry objects in xdpi_fifo
  net/mlx5e: XDP, Add support for multi-buffer XDP redirect-in
  net/mlx5e: XDP, Improve Striding RQ check with XDP
  net/mlx5e: XDP, Let XDP checker function get the params as input
  net/mlx5e: XDP, Consider large muti-buffer packets in Striding RQ
    params calculations
  net/mlx5e: XDP, Remove un-established assumptions on XDP buffer
  net/mlx5e: XDP, Allow non-linear single-segment frames in XDP TX MPWQE
  net/mlx5e: RX, Take shared info fragment addition into a function
  net/mlx5e: RX, Generalize mlx5e_fill_mxbuf()
  net/mlx5e: RX, Prepare non-linear striding RQ for XDP multi-buffer
    support
  net/mlx5e: RX, Add XDP multi-buffer support in Striding RQ

 drivers/net/ethernet/mellanox/mlx5/core/en.h  |  46 +--
 .../ethernet/mellanox/mlx5/core/en/params.c   |  32 +-
 .../ethernet/mellanox/mlx5/core/en/params.h   |   3 +
 .../net/ethernet/mellanox/mlx5/core/en/txrx.h |  13 +
 .../net/ethernet/mellanox/mlx5/core/en/xdp.c  | 305 +++++++++++++-----
 .../net/ethernet/mellanox/mlx5/core/en/xdp.h  |  55 +++-
 .../ethernet/mellanox/mlx5/core/en/xsk/tx.c   |  12 +-
 .../net/ethernet/mellanox/mlx5/core/en_main.c |  92 +++---
 .../net/ethernet/mellanox/mlx5/core/en_rx.c   | 215 +++++++++---
 9 files changed, 519 insertions(+), 254 deletions(-)

Comments

Jakub Kicinski April 20, 2023, 12:47 a.m. UTC | #1
On Mon, 17 Apr 2023 15:18:48 +0300 Tariq Toukan wrote:
> This series extends the XDP multi-buffer support in the mlx5e driver.
> 
> Patchset breakdown:
> - Infrastructural changes and preparations.
> - Add XDP multi-buffer support for XDP redirect-in.
> - Use TX MPWQE (multi-packet WQE) HW feature for non-linear
>   single-segmented XDP frames.
> - Add XDP multi-buffer support for striding RQ.

This is cd02a1a24897 in net-next, thanks!