Repository navigation
Conversation
In gloms of three or more frames headed by two pure ACKs of one TCP flow, the head ACK never reached the air (A11: 21 of 21 missing; UDP head pairs 0 of 153). SendGlomDataPacket now sends that head in its own transfer and the rest as one glom, as before. It splits at most once per glom, so a glom costs at most one extra SDIO transfer; nothing else changes. Pure ACK: IPv4 (not a fragment) or IPv6 with TCP as the first next header, no TCP payload, ACK set, SYN/FIN/RST clear; TCP options such as timestamps and SACK count as header, not payload. Same flow: equal addresses and ports. The decision is wifipi_glom_head_split() in src/glomsplit.h, pure C with no Amiga headers; tests/test_glomsplit.c runs it on the host (33 checks). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…open A peer capture shows the head ACK missing after CMD53; it does not show whether the firmware or the air lost it. Comment only, no change in behaviour. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tXDuo #89) 517615d split only once per glom, so in a run of same-flow pure ACKs the remainder was again a glom of 3+ headed by a same-flow pair (291 of 306 changed download gloms). SendGlomDataPacket now ends a glom after its first two frames whenever they are same-flow pure ACKs and it would hold 3 or more, then starts the next glom from the third frame, so no glom of 3+ leaves with such a head pair. A run of k same-flow ACKs goes as pairs. Two-frame gloms of such a pair lost no head ACK in the peer captures (A11 0 of 44, G2 0 of 54), unlike three or more (A11 21 of 21). wifipi_glom_take() gives the frames the next transfer takes; tests/test_glomsplit.c now emits queues of 3, 4, 8 and 32 ACKs, with and without trailing data, and checks every glom (45 checks). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Draft component of tinic/AmiNetXDuo#115 for issue #89. In gloms of three or more frames headed by two pure ACKs from the same TCP flow, send the first ACK in its own SDIO transfer and leave the remainder batched. This targets a peer-capture absence pattern (A11: 21/21 matched heads absent); it does not establish where those frames were lost.
The classifier handles IPv4/IPv6 TCP pure ACKs, including TCP options, and excludes data, SYN, FIN, RST, fragments, and different flows. Host tests pass. Offline replay changes 22/1264 A11 gloms (1.74%); a download corpus changes 306/337 gloms (91%), so integrated download and upload A/B is required before merge. This draft is not release-ready.