In DMA mode, the IBI status descriptor encodes the payload using
CHUNKS (number of chunks) and DATA_LENGTH (valid bytes in the last
chunk). All preceding chunks are implicitly full-sized.
The current code accumulates full chunk sizes for non-final status
descriptors, but for the final status descriptor it only adds
DATA_LENGTH. This ignores the contribution of the preceding full
chunks described by the same final status entry.
As a result, the computed IBI payload length is truncated whenever
the final status spans multiple chunks. For example, with a chunk
size of 4 bytes, CHUNKS=2 and DATA_LENGTH=1 should result in a total
payload size of 5 bytes, but the current code reports only 1 byte.
Fix the calculation by adding the size of (CHUNKS - 1) full chunks
plus DATA_LENGTH for the last chunk.
Fixes:
|
||
|---|---|---|
| .. | ||
| mipi-i3c-hci | ||
| Kconfig | ||
| Makefile | ||
| adi-i3c-master.c | ||
| ast2600-i3c-master.c | ||
| dw-i3c-master.c | ||
| dw-i3c-master.h | ||
| i3c-master-cdns.c | ||
| renesas-i3c.c | ||
| svc-i3c-master.c | ||