Skip to content

net: mana: concurrent HWC requests and dynamic queue depth

Wei Hu linux-hyperv linux-rdma lkml netdev 5 versions – New

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v10 Latest4 patches 0 repliesNew
  2. v94 patches 2 repliesSuperseded
  3. v84 patches 3 repliesSuperseded
Earlier versions · 2
VersionPostedPatchesRepliesStatus
v74 patches2 repliesSuperseded
v64 patches3 repliesSuperseded

Changes in v10 from the cover letter

- Rebase onto current net-next, including the throttled-EQE support from 684603842b78 ("net: mana: Add support to process throttled EQEs").
- In patch 1, use one acquire-loaded CQ-table snapshot in the new throttle reader, matching the existing normal-EQE reader and HWC table-withdrawal lifetime contract.
- In patch 1, fence the HWC EQ before destroying its CQ, but keep the EQ allocation alive until the CQ has detached its upstream child entry. Preserve the upstream generic CQ detach/RCU implementation and allowance for empty HWC CQ polls.
- Refresh patch 4's context while preserving the upstream doorbell client_offset argument and address adjustment.
- Patches 2 and 3 retain their v9 changes. PF-directed queue geometry, healthy-admission waiting and timeout/cancellation policy are unchanged.

Patches in v10 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/4net: mana: prepare HWC ownership for safe reinitializationdrivers/net/ethernet/microsoft/mana/gdma_cdx.c drivers/net/ethernet/microsoft/mana/gdma_main.c drivers/net/ethernet/microsoft/mana/gdma_pci.c +5 more+275 -380 replies
2/4net: mana: give each HWC message slot its own completion statedrivers/net/ethernet/microsoft/mana/hw_channel.c include/net/mana/hw_channel.h+95 -340 replies
3/4net: mana: support concurrent HWC requestsdrivers/net/ethernet/microsoft/mana/gdma_cdx.c drivers/net/ethernet/microsoft/mana/gdma_main.c drivers/net/ethernet/microsoft/mana/gdma_pci.c +3 more+574 -1880 replies
4/4net: mana: add dynamic HWC queue depth with reinit pathdrivers/infiniband/hw/mana/main.c drivers/net/ethernet/microsoft/mana/gdma_main.c drivers/net/ethernet/microsoft/mana/hw_channel.c +2 more+317 -650 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v10 yet.

Read the v10 thread

Cover letter [PATCH net-next v10 0/4] net: mana: concurrent HWC requests and dynamic queue depth

This is v10 of Long Li's four-patch HWC series, rebased for the reopened net-next tree. I am carrying the series forward with review fixes and integration work. Original authorship and sign-offs are retained.

The series supports concurrent requests over the MANA hardware channel and rebuilds its queues using the queue depth and message sizes required by the PF. It prepares ownership and teardown, gives each message its own completion, adds concurrent request tracking, and enables dynamic sizing.

v9 was deferred while net-next was closed. This revision resolves its conflicts with the upstream throttled-EQE support; it is not an unchanged RESEND. No new actionable v9 review finding was located during the reposting check.

Changes since v9:
- Rebase onto current net-next, including the throttled-EQE support from 684603842b78 ("net: mana: Add support to process throttled EQEs").
- In patch 1, use one acquire-loaded CQ-table snapshot in the new throttle reader, matching the existing normal-EQE reader and HWC table-withdrawal lifetime contract.
- In patch 1, fence the HWC EQ before destroying its CQ, but keep the EQ allocation alive until the CQ has detached its upstream child entry. Preserve the upstream generic CQ detach/RCU implementation and allowance for empty HWC CQ polls.
- Refresh patch 4's context while preserving the upstream doorbell client_offset argument and address adjustment.
- Patches 2 and 3 retain their v9 changes. PF-directed queue geometry, healthy-admission waiting and timeout/cancellation policy are unchanged.

Validation on this exact revision:
- GCC and Clang W=1 MANA Ethernet/RDMA target builds for the unmodified base and each of the four intermediate commits.
- Strict netdev checkpatch with an 80-column limit and whitespace checks.
- Bounded actual-source userspace regression tests for request ownership, admission, retention, teardown, initialization, rebuild and TX budgets.
- New GCC/Clang ASan/UBSan tests of the throttle reader and CQ/EQ cleanup on patches 1 and 4, including partial setup, prior fencing, table withdrawal and negative controls for the integration changes.
- Source review of ownership, IRQ/RCU readers and failure paths.

These are static/offline checks. No new full-kernel, hardware, runtime or performance qualification is claimed for this rebase.

Previous revision:
https://lore.kernel.org/all/[email protected]/

Deferral while net-next was closed:
https://lore.kernel.org/all/[email protected]/

Base: fa5196392691051963726787944db872420dfa75

Long Li (4):
net: mana: prepare HWC ownership for safe reinitialization
net: mana: give each HWC message slot its own completion state
net: mana: support concurrent HWC requests
net: mana: add dynamic HWC queue depth with reinit path

 drivers/infiniband/hw/mana/main.c             |   19 +-
 .../net/ethernet/microsoft/mana/gdma_cdx.c    |    5 +-
 .../net/ethernet/microsoft/mana/gdma_main.c   |  162 ++-
 .../net/ethernet/microsoft/mana/gdma_pci.c    |   15 +-
 .../net/ethernet/microsoft/mana/hw_channel.c  | 1022 ++++++++++++++---
 .../net/ethernet/microsoft/mana/shm_channel.c |   58 +-
 include/net/mana/gdma.h                       |   17 +
 include/net/mana/hw_channel.h                 |   70 +-
 include/net/mana/shm_channel.h                |   10 +-
 9 files changed, 1157 insertions(+), 221 deletions(-)

base-commit: fa5196392691051963726787944db872420dfa75

Signature · 1 line
2.43.0