Skip to content

mlx5: external RxQ support

Michael Baum dpdk-dev 3 versions – Applied

Status from this message: Applied in next-net-mlx, thanks.

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v3 Latest6 patches 4 repliesApplied
  2. v26 patches 1 replySuperseded
  3. v16 patches 0 repliesSuperseded

Changes in v3 from the cover letter

- Rebase.
- Fix compilation error.
- Avoide TOCTOU issue in external RxQ map/unmap functions.
- Add check it the queue still referenced in unmapping function.
- Improve guide explanations for the new devargs.

Patches in v3 Applied

#Subject and filesSizeRepliesApplied
1/6common/mlx5: consider local functions as internaldevtools/libabigail.abignore drivers/common/mlx5/linux/mlx5_common_os.h drivers/common/mlx5/version.map+8 -03 replies
2/6common/mlx5: glue device and PD importationdrivers/common/mlx5/linux/meson.build drivers/common/mlx5/linux/mlx5_glue.c drivers/common/mlx5/linux/mlx5_glue.h+47 -00 replies
3/6common/mlx5: add remote PD and CTX supportdoc/guides/platform/mlx5.rst drivers/common/mlx5/linux/mlx5_common_os.c drivers/common/mlx5/linux/mlx5_common_os.h +4 more+324 -600 replies
4/6net/mlx5: optimize RxQ/TxQ control structuredrivers/net/mlx5/mlx5_devx.c drivers/net/mlx5/mlx5_ethdev.c drivers/net/mlx5/mlx5_flow.c +6 more+64 -950 replies
5/6net/mlx5: add external RxQ mapping APIdrivers/net/mlx5/linux/mlx5_os.c drivers/net/mlx5/mlx5.c drivers/net/mlx5/mlx5.h +6 more+210 -40 replies
6/6net/mlx5: support queue/RSS action for external RxQdoc/guides/nics/mlx5.rst doc/guides/rel_notes/release_22_03.rst drivers/net/mlx5/mlx5.c +4 more+187 -240 replies

Reviews trailers per patch

All 6 patches have a Reviewed-by or Acked-by.

PatchMatan Azrad
1/6A-b
2/6A-b
3/6A-b
4/6A-b
5/6A-b
6/6A-b

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v3 thread

Cover letter [PATCH v3 0/6] mlx5: external RxQ support

These patches add support to external Rx queues.
External queue is a queue that is managed by a process external to PMD, but uses PMD process to generate its flow rules.

For the hardware to allow the DPDK process to set rules for it, the process needs to use the same PD of the external process. In addition, the indexes of the queues in hardware are represented by 32-bit compared to the rte_flow indexes represented by 16-bit, so the processes need to share some mapping between the indexes.

These patches allow the external process to provide devargs which enable importing its context and PD, instead of prepare new ones. In addition, an API is provided for mapping for the indexes of the queues.

v1:
- initial commits.

v2:
- Rebase.
- Add ABI exception for common/mlx5 library.
- Correct DevX flag updating.
- Improve explanations in doc and comments.
- Remove teatpmd part.

v3:
- Rebase.
- Fix compilation error.
- Avoide TOCTOU issue in external RxQ map/unmap functions.
- Add check it the queue still referenced in unmapping function.
- Improve guide explanations for the new devargs.

Michael Baum (6):
common/mlx5: consider local functions as internal common/mlx5: glue device and PD importation common/mlx5: add remote PD and CTX support net/mlx5: optimize RxQ/TxQ control structure net/mlx5: add external RxQ mapping API net/mlx5: support queue/RSS action for external RxQ

 devtools/libabigail.abignore                 |   4 +
 doc/guides/nics/mlx5.rst                     |   1 +
 doc/guides/platform/mlx5.rst                 |  37 ++-
 doc/guides/rel_notes/release_22_03.rst       |   1 +
 drivers/common/mlx5/linux/meson.build        |   2 +
 drivers/common/mlx5/linux/mlx5_common_os.c   | 196 ++++++++++++--
 drivers/common/mlx5/linux/mlx5_common_os.h   |   7 +-
 drivers/common/mlx5/linux/mlx5_glue.c        |  41 +++
 drivers/common/mlx5/linux/mlx5_glue.h        |   4 +
 drivers/common/mlx5/mlx5_common.c            |  84 ++++--
 drivers/common/mlx5/mlx5_common.h            |  23 +-
 drivers/common/mlx5/version.map              |   3 +
 drivers/common/mlx5/windows/mlx5_common_os.c |  37 ++-
 drivers/common/mlx5/windows/mlx5_common_os.h |   1 -
 drivers/net/mlx5/linux/mlx5_os.c             |  17 ++
 drivers/net/mlx5/mlx5.c                      |   5 +
 drivers/net/mlx5/mlx5.h                      |   1 +
 drivers/net/mlx5/mlx5_defs.h                 |   3 +
 drivers/net/mlx5/mlx5_devx.c                 |  52 ++--
 drivers/net/mlx5/mlx5_ethdev.c               |  18 +-
 drivers/net/mlx5/mlx5_flow.c                 |  43 +--
 drivers/net/mlx5/mlx5_flow_dv.c              |  14 +-
 drivers/net/mlx5/mlx5_rx.h                   |  49 +++-
 drivers/net/mlx5/mlx5_rxq.c                  | 266 +++++++++++++++++--
 drivers/net/mlx5/mlx5_trigger.c              |  36 +--
 drivers/net/mlx5/mlx5_tx.h                   |   7 +-
 drivers/net/mlx5/mlx5_txq.c                  |  14 +-
 drivers/net/mlx5/rte_pmd_mlx5.h              |  50 +++-
 drivers/net/mlx5/version.map                 |   3 +
 29 files changed, 838 insertions(+), 181 deletions(-)
Signature · 1 line
2.25.1