[PATCH v2 0/3] i3c: account for controller transfer limits

From: Shubham Patil

Date: Thu Nov 05 2026 - 03:55:03 EST


Targets advertise MRL and MWL, but these values do not account for
smaller controller transmit and receive buffers. This can cause client
drivers such as mctp-i3c to request transfers that the controller must
reject.

Add controller transfer limits to the I3C core, publish the independent
DesignWare transmit and receive buffer depths, and make mctp-i3c use the
effective target/controller limits.

Changes in v2:
- Rework the solution to preserve the target-reported MRL and MWL instead
of sending SETMRL/SETMWL and rewriting the GETMRL/GETMWL responses.
- Add I3C core fields and helper APIs that combine target and controller
transfer limits.
- Track the DesignWare transmit and receive buffer depths separately.
- Add an mctp-i3c patch that uses the effective transfer limits.
- Drop the unrelated IBI payload-length clamping from this series.
- Split the original DesignWare-only patch into three patches.

Link to v1:
https://lore.kernel.org/all/20260908102724.3232660-1-shubhamsanjay.patil@xxxxxxx/

Shubham Patil (3):
i3c: Add helpers to get the maximum transfer size for a device
i3c: dw: Track the transmit and receive buffer depths separately
mctp i3c: Clamp transfer lengths to the controller limits

drivers/i3c/device.c | 49 ++++++++++++++++++++++++++++++
drivers/i3c/master/dw-i3c-master.c | 22 ++++++++++----
drivers/i3c/master/dw-i3c-master.h | 3 +-
drivers/net/mctp/mctp-i3c.c | 8 ++---
include/linux/i3c/device.h | 3 ++
include/linux/i3c/master.h | 13 ++++++--
6 files changed, 84 insertions(+), 14 deletions(-)

--
2.34.1