netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Saeed Mahameed <saeed@kernel.org>
To: "David S. Miller" <davem@davemloft.net>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Eric Dumazet <edumazet@google.com>
Cc: Saeed Mahameed <saeedm@nvidia.com>,
	netdev@vger.kernel.org, Tariq Toukan <tariqt@nvidia.com>
Subject: [pull request][net-next 00/16] mlx5 updates 2022-09-27
Date: Tue, 27 Sep 2022 13:35:55 -0700	[thread overview]
Message-ID: <20220927203611.244301-1-saeed@kernel.org> (raw)

From: Saeed Mahameed <saeedm@nvidia.com>

XSK buffer improvements, This is part #1 of 4 parts series.
For more information please see tag log below.

Please pull and let me know if there is any problem.

Thanks,
Saeed.

The following changes since commit 7bcd9683e51575c72c9289c05213150245d1c186:

  selftests/net: enable io_uring sendzc testing (2022-09-27 07:59:57 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux.git tags/mlx5-updates-2022-09-27

for you to fetch changes up to 48670cfdb211a57b41d870098bae659be5b453f7:

  net/mlx5e: Use runtime values of striding RQ parameters in datapath (2022-09-27 13:32:42 -0700)

----------------------------------------------------------------
mlx5-updates-2022-09-27

This is Part #1 of 4 parts series to align mlx5's implementation of
XSK (AF_XDP) RX-Qs indexing and management with other vendors:

Maxim Says:
===========

xsk: Bug fixes for frame mapping on striding RQ

Striding RQ relies on the driver mapping RX buffers into the NIC's
virtual memory space. Currently, regadless of the XSK frame size, mlx5e
maps them using MTT, and each mapping's length is PAGE_SIZE. As the
result, the stride size used by striding RQ is also equal to PAGE_SIZE.

This decision has the following issues:

1. In the XSK aligned mode with frame size smaller than PAGE_SIZE, it's
suboptimal. Using 2K strides and 2K pages allows to post twice as fewer
WQEs.

2. MTT is not suitable for unaligned frames, as it requires natural
alignment theoretically, in practice at least 8-byte alignment.

3. Using mapping and stride bigger than the frame has risk of writing
over the bounds of the XSK frame upon receiving packets bigger than MTU,
which is possible in some specific configurations.

This series addresses issues 1 and 2 and alleviates issue 3. Where
possible, page and stride size will match the XSK frame size (firmware
upgrade may be needed to have effect for 2K frames). Unaligned mode will
use KSM instead of MTT, which allows to drop the partial workaround [1].

[1]: https://lore.kernel.org/netdev/YufYFQ6JN91lQbso@boxer/T/

===========

----------------------------------------------------------------
Maxim Mikityanskiy (16):
      net/mlx5: Add the log_min_mkey_entity_size capability
      net/mlx5e: Convert mlx5e_get_max_sq_wqebbs to u8
      net/mlx5e: Remove unused fields from datapath structs
      net/mlx5e: Make mlx5e_verify_rx_mpwqe_strides static
      net/mlx5e: Validate striding RQ before enabling XDP
      net/mlx5e: Let mlx5e_get_sw_max_sq_mpw_wqebbs accept mdev
      net/mlx5e: Use mlx5e_stop_room_for_max_wqe where appropriate
      net/mlx5e: Fix a typo in mlx5e_xdp_mpwqe_is_full
      net/mlx5e: Use the aligned max TX MPWQE size
      net/mlx5e: kTLS, Check ICOSQ WQE size in advance
      net/mlx5e: Simplify stride size calculation for linear RQ
      net/mlx5e: xsk: Remove dead code in validation
      net/mlx5e: xsk: Fix SKB headroom calculation in validation
      net/mlx5e: Improve the MTU change shortcut
      net/mlx5e: Make dma_info array dynamic in struct mlx5e_mpw_info
      net/mlx5e: Use runtime values of striding RQ parameters in datapath

 drivers/net/ethernet/mellanox/mlx5/core/en.h       |  37 ++----
 .../net/ethernet/mellanox/mlx5/core/en/params.c    | 141 +++++++++++----------
 .../net/ethernet/mellanox/mlx5/core/en/params.h    |  15 ++-
 drivers/net/ethernet/mellanox/mlx5/core/en/txrx.h  |  13 +-
 drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c   |   2 +-
 drivers/net/ethernet/mellanox/mlx5/core/en/xdp.h   |   2 +-
 .../net/ethernet/mellanox/mlx5/core/en/xsk/rx.c    |   2 +-
 .../net/ethernet/mellanox/mlx5/core/en/xsk/setup.c |   6 +-
 .../ethernet/mellanox/mlx5/core/en_accel/ktls.c    |  18 +++
 .../ethernet/mellanox/mlx5/core/en_accel/ktls.h    |   5 +-
 .../net/ethernet/mellanox/mlx5/core/en_ethtool.c   |  12 +-
 drivers/net/ethernet/mellanox/mlx5/core/en_main.c  |  85 ++++++++-----
 drivers/net/ethernet/mellanox/mlx5/core/en_rx.c    |  60 +++++----
 include/linux/mlx5/mlx5_ifc.h                      |   8 +-
 14 files changed, 230 insertions(+), 176 deletions(-)

             reply	other threads:[~2022-09-27 20:36 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-27 20:35 Saeed Mahameed [this message]
2022-09-27 20:35 ` [net-next 01/16] net/mlx5: Add the log_min_mkey_entity_size capability Saeed Mahameed
2022-09-29  2:50   ` patchwork-bot+netdevbpf
2022-09-27 20:35 ` [net-next 02/16] net/mlx5e: Convert mlx5e_get_max_sq_wqebbs to u8 Saeed Mahameed
2022-09-27 20:35 ` [net-next 03/16] net/mlx5e: Remove unused fields from datapath structs Saeed Mahameed
2022-09-27 20:35 ` [net-next 04/16] net/mlx5e: Make mlx5e_verify_rx_mpwqe_strides static Saeed Mahameed
2022-09-27 20:36 ` [net-next 05/16] net/mlx5e: Validate striding RQ before enabling XDP Saeed Mahameed
2022-09-27 20:36 ` [net-next 06/16] net/mlx5e: Let mlx5e_get_sw_max_sq_mpw_wqebbs accept mdev Saeed Mahameed
2022-09-27 20:36 ` [net-next 07/16] net/mlx5e: Use mlx5e_stop_room_for_max_wqe where appropriate Saeed Mahameed
2022-09-27 20:36 ` [net-next 08/16] net/mlx5e: Fix a typo in mlx5e_xdp_mpwqe_is_full Saeed Mahameed
2022-09-27 20:36 ` [net-next 09/16] net/mlx5e: Use the aligned max TX MPWQE size Saeed Mahameed
2022-09-27 20:36 ` [net-next 10/16] net/mlx5e: kTLS, Check ICOSQ WQE size in advance Saeed Mahameed
2022-09-27 20:36 ` [net-next 11/16] net/mlx5e: Simplify stride size calculation for linear RQ Saeed Mahameed
2022-09-27 20:36 ` [net-next 12/16] net/mlx5e: xsk: Remove dead code in validation Saeed Mahameed
2022-09-27 20:36 ` [net-next 13/16] net/mlx5e: xsk: Fix SKB headroom calculation " Saeed Mahameed
2022-09-27 20:36 ` [net-next 14/16] net/mlx5e: Improve the MTU change shortcut Saeed Mahameed
2022-09-27 20:36 ` [net-next 15/16] net/mlx5e: Make dma_info array dynamic in struct mlx5e_mpw_info Saeed Mahameed
2022-09-27 20:36 ` [net-next 16/16] net/mlx5e: Use runtime values of striding RQ parameters in datapath Saeed Mahameed
2022-09-29  2:35 ` [pull request][net-next 00/16] mlx5 updates 2022-09-27 Jakub Kicinski
2022-09-29  7:20   ` Saeed Mahameed
2022-09-29 15:33     ` Jakub Kicinski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220927203611.244301-1-saeed@kernel.org \
    --to=saeed@kernel.org \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=kuba@kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=saeedm@nvidia.com \
    --cc=tariqt@nvidia.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).