[PATCH net-next v4 00/10] net: ntb_netdev: Preserve checksum offload across NTB

Koichiro Den posted 10 patches 1 week, 4 days ago
drivers/net/ntb_netdev.c      | 191 ++++++++++++++++++++++++++++------
drivers/ntb/ntb_transport.c   | 177 +++++++++++++++++++++++--------
include/linux/ntb_transport.h |  12 ++-
3 files changed, 303 insertions(+), 77 deletions(-)
[PATCH net-next v4 00/10] net: ntb_netdev: Preserve checksum offload across NTB
Posted by Koichiro Den 1 week, 4 days ago
Hi,

ntb_netdev may be used on embedded systems, where CPU resources are
often limited. L4 checksum calculation can therefore become a bottleneck
even when traffic stays within a trusted PCIe fabric.

This series carries CHECKSUM_PARTIAL across NTB in an ntb_netdev header.
A per-payload metadata bit in ntb_transport marks its presence. Receive
support is exchanged at QP link-up through scratchpads. Peers without
capability exchange continue to use software checksumming. The feature
remains disabled by default and must be enabled explicitly on trusted
links. RX checksum offload settings stay unchanged while the interface
is up.

Best regards,
Koichiro
---
Changes in v4:
  - Move offload metadata into an ntb_netdev header (Jakub)
  - Add an RX entry completion ordering fix (Sashiko)
  - Learn checksum support from link events, not RX callbacks, and keep
    it per QP (Sashiko)
    https://lore.kernel.org/r/xsaocp32a6siggahziu4jqbwgmdasmp6v64pd5aujfkoxhiqws@n5luestlntzc/
  - Advertise receive support only with RXCSUM enabled. Drop
    partial-checksum frames when it is disabled (Sashiko)
  - Keep local QP link requests separate from peer readiness
  - Reject short RX frames before parsing them
  - Factor out RX packet and byte accounting
  - Add a transport API to exchange client capabilities at QP link-up
  - Keep NETIF_F_RXCSUM unchanged while the interface is up

Changes in v3:
  - Rebase after the related ntb_netdev fixes landed in net-next
  - Avoid counting RX checksum failures as both errors and drops (Jakub)
  - Reject csum_start below ETH_HLEN on RX and fall back to software on
    TX (Jakub)
  - Use READ_ONCE() for hdr->ver and hdr->len (Sashiko)

Changes in v2:
  - Reset peer checksum capability on every link event (Sashiko)
  - Add prerequisite fixes for RX ordering and shared field endianness
    (Sashiko)

v3: https://lore.kernel.org/r/20260904052134.2970111-1-den@valinux.co.jp/
v2: https://lore.kernel.org/r/20260817064916.13278-1-den@valinux.co.jp/
v1: https://lore.kernel.org/r/20260814032913.3558500-1-den@valinux.co.jp/


Koichiro Den (10):
  NTB: ntb_transport: Order RX descriptor reads after completion
  NTB: ntb_transport: Use little-endian shared fields
  NTB: ntb_transport: Order RX entry completion
  NTB: ntb_transport: Keep local QP link requests separate
  NTB: ntb_transport: Exchange client capabilities at link-up
  NTB: ntb_transport: Add per-payload client metadata
  net: ntb_netdev: Reject short RX frames
  net: ntb_netdev: Factor out RX statistics update
  net: ntb_netdev: Introduce an optional packet header, ntb_netdev_hdr
  net: ntb_netdev: Preserve CHECKSUM_PARTIAL across NTB

 drivers/net/ntb_netdev.c      | 191 ++++++++++++++++++++++++++++------
 drivers/ntb/ntb_transport.c   | 177 +++++++++++++++++++++++--------
 include/linux/ntb_transport.h |  12 ++-
 3 files changed, 303 insertions(+), 77 deletions(-)


base-commit: 879e280b8486d4612ad1aa050d6fada2dd80cf1c
prerequisite-patch-id: 0000000000000000000000000000000000000000
-- 
2.51.0