You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
net/barex: fix CTS reordering corruption on multi-chunk transfers
CTS control messages are delivered by ACCL's multi-threaded callback
pool, so they can be enqueued out of the receiver's post order. The
sender paired its k-th isend with whichever CTS happened to be at the
queue head, writing chunk k's payload into the buffer posted for a
different chunk. The proxy pipelines up to 16 chunks per message, so
transfers of ~32MB and above (8+ in-flight chunks) corrupted data
while small transfers appeared fine; perf runs passed because they
never verify bytes.
Stamp each CTS with the receiver's post-order sequence number (stored
in the CTS message's former tail padding; wire size stays 64 bytes)
and make the sender consume CTS strictly in sequence order, retrying
via the proxy when the next-expected CTS has not arrived yet.
Verified on 810e (PPU dev5,6 + vsolar_1): byte-verify at 1MB, 16MB+8K,
32MB, 64MB now ALL_MATCH twice in a row (previously MISMATCH at 32/64MB),
and -R 0 staging-path verify at 64/128/256MB ALL_MATCH (256MB = 64
chunks, 4x ring-buffer wrap).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
0 commit comments