[PATCH net-next v3 00/12] net: mctp: usb: Add support for MCTP-over-USB v1.1
From: Jeremy Kerr <jk@codeconstruct.com.au>
Date: 2026-07-08 09:58:52
Also in:
linux-usb
Version 1.1.0 of DSP0283 (MCTP over USB transport binding) has been released, this patch series updates our current v1.0.1 support for the changes in v1.1.x. The major change in v1.1 is the introduction of "packet spanning" mode, where a single MCTP packet may be split over multiple USB packets (themselves forming a single USB bulk transfer). This relaxes the requirement for USB high-speed mode, as we can now send MCTP packets contained over multiple 64-byte full-speed USB bulk transfers, and gives us an increase in the maximum MCTP packet size - we now have 13 bits of packet length (previously 8) in the transport header. Handling packet spanning introduces some complexity in the transmit and receive paths, as we lose some constraints on where packet boundaries may correspond to USB transfer boundaries, and may need to retain state across separate transfers. To contain this complexity, we introduce a new library for the transfer packing- and unpacking implementations, "mctp-usblib". The host driver is a consumer of this library, and a future gadget driver can use the same implementations. We can now also implement tests on the API boundary of the library. The series implements an incremental shift to mctp-usblib, then implements packet spanning mode in the new library. We have a few changes to prepare for this, in altering a few constants and behaviours as v1.0-specific. Once packet spanning is implemented in mctp-usblib, we enable it in the host-side driver. To: Matt Johnston <matt@codeconstruct.com.au> To: Andrew Lunn <andrew+netdev@lunn.ch> To: "David S. Miller" <davem@davemloft.net> To: Eric Dumazet <edumazet@google.com> To: Jakub Kicinski <kuba@kernel.org> To: Paolo Abeni <pabeni@redhat.com> To: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: netdev@vger.kernel.org Cc: linux-usb@vger.kernel.org Signed-off-by: Jeremy Kerr <jk@codeconstruct.com.au> Changes in v3: - split rx urb status handling to a separate change, handle stalls - merge tx anchor usage into initial usblib implementation - add skb drop reasons - prevent unnecessary skb reallocation - Link to v2: https://patch.msgid.link/20260703-dev-mctp-usb-1-1-v2-0-60367b861b33@codeconstruct.com.au Changes in v2: - address sashiko reviews: - rx mac_header correction - rx/tx stats fixes - limit non-spanned packets (where we have no ZLP) to max size - handle transient rx urb error status - set skb_drop_reasons - kunit early-exit cleanups, take rntl lock where needed - rework tx_qmem locking and anchor handling (we don't need to unanchor on completion) - Link to v1: https://patch.msgid.link/20260630-dev-mctp-usb-1-1-v1-0-86a311fc67b7@codeconstruct.com.au --- Jeremy Kerr (12): net: mctp: usb: Include version indicator in max packet size defines net: mctp: usb: Use packet-length max for maximum packet-size check net: mctp: usblib: Move RX transfer processing to a new mctp-usblib net: mctp: usb: Improve IN endpoint status handling net: mctp: usblib: Move TX transfer processing to mctp-usblib net: mctp: usblib: Add support for multi-packet transmit net: mctp: usb: Accommodate DSP0283 v1.1 header format net: mctp: usblib: Implement receive-side packet spanning net: mctp: usblib: Implement transmit-side packet spanning net: mctp: usblib: Add initial kunit tests net: mctp: usb: enable v1.1 packet spanning net: mctp: usb: Allow multiple urbs in flight drivers/net/mctp/Kconfig | 16 + drivers/net/mctp/Makefile | 1 + drivers/net/mctp/mctp-usb.c | 315 +++++++++--------- drivers/net/mctp/mctp-usblib-test.c | 410 ++++++++++++++++++++++++ drivers/net/mctp/mctp-usblib.c | 616 ++++++++++++++++++++++++++++++++++++ include/linux/usb/mctp-usb.h | 88 +++++- 6 files changed, 1297 insertions(+), 149 deletions(-) --- base-commit: b85966adbf5de0668a815c6e3527f87e0c387fb4 change-id: 20260604-dev-mctp-usb-1-1-6fd854ad13e8 Best regards, -- Jeremy Kerr [off-list ref]