Repository navigation
ieee80211: complete Basic Block Ack transfers without queued DATA - #1344
Open
mgonzalezlopezudc wants to merge 6 commits into
Open
mgonzalezlopezudc wants to merge 6 commits into
mgonzalezlopezudc wants to merge 6 commits into
Conversation
mgonzalezlopezudc
force-pushed
the
work/compressed-blockack-s4
branch
2 times, most recently
from
October 15, 2026 22:08
fcedba7 to
f988173
Compare
mgonzalezlopezudc
force-pushed
the
work/compressed-blockack-s4
branch
from
October 17, 2026 14:08
75559a4 to
0227b29
Compare
mgonzalezlopezudc
marked this pull request as ready for review
October 17, 2026 16:42
mgonzalezlopezudc
force-pushed
the
work/compressed-blockack-s4
branch
5 times, most recently
from
October 22, 2026 13:00
b238603 to
b716709
Compare
The audit requires separate Retry and transfer-completion changes. It also requires protocol evidence and shared arithmetic before production callers. This plan defines six commits and their verification. It preserves the final production source and accepted final fingerprints. The user approves five intermediate network-data values for the isolated Retry commit only. Protocol fixtures belong to the two behavior commits. This plan changes no protocol behavior. Its checks cover links and the existing protection unit. Plan: plan/pending/ieee80211-compressed-blockack-s4-corrections.md Change: plan | behavior.add | - | ieee80211-compressed-blockack-s4-corrections
Before this commit, the shared in-progress queue obtains a successor through extraction. Extraction changes ownership and can assign a sequence number. BAR selection needs candidate information before those changes. After this commit, callers can borrow the next eligible frame and query its prospective sequence. Ordinary successor queries retain extraction as their default. Existing transmission behavior remains unchanged. For example, queued DATA retains sequence 77 while preview reports prospective sequence 0. The DATA-selection fixture checks queue ownership, the unchanged header, and the empty in-progress set. This structural change needs no new protocol fixture or protocol reviewer document. Plan: plan/pending/ieee80211-compressed-blockack-s4-corrections.md Change: src.ieee80211 | refactor | test whatsnew migration | ieee80211-compressed-blockack-s4-corrections
mgonzalezlopezudc
force-pushed
the
work/compressed-blockack-s4
branch
from
October 22, 2026 14:55
b716709 to
77c78a3
Compare
Before this commit, lost or negative Block Ack feedback makes DATA eligible for retransmission. HCF can send that DATA with Retry clear because its header does not reflect the failed feedback state. After this commit, HCF sets Retry before Tx receives the retransmitted DATA. The sequence and TID remain unchanged. IEEE Std 802.11-2024, 9.2.4.1.6 requires Retry for this retransmission. Candidate selection and completion stay intact. WifiBlockAckDataRetry.test uses real association and ADDBA. Run 0 drops the first response. Run 1 clears its bitmap. Both require Retry on retransmission of the captured identity. Both fail on the parent and pass with this branch. tests/protocol/wifi/blockack-data-retry.md explains the protocol evidence. The user approved five intermediate ~tND values on 2026-10-22. Retry and its computed FCS change network-data content in these run-0 configurations: - Block Ack NoFragmentation: 2cd4-4795 -> 0f38-6042. - Block Ack Fragmentation: feff-7e88 -> ddec-9e3d. - Block Ack MixedTraffic: 9724-d1ce -> 2839-8753. - Fragmentation HCFfragblockack: c474-7174 -> bbe5-0771. - Wireless MacQosWithBlockAck: 538e-67df -> 1914-cd4d. All seven event and packet-length fingerprints remain unchanged. TXOP General and ad hoc MacQos run 1 retain all selected values. The seven-case check passes. The later completion commit restores the accepted final S4 rows. Plan: plan/pending/ieee80211-compressed-blockack-s4-corrections.md Change: src.ieee80211.Hcf | behavior.change.fix | test whatsnew fingerprint | ieee80211-compressed-blockack-s4-corrections
Before this commit, the agreement stores its window start but lacks the shared operations for cyclic distance, bitmap membership, and window advancement. The next commit needs these operations in HCF and both ACK owners. After this commit, OriginatorBlockAckAgreement owns these operations. No production caller uses them yet. Packet trajectories remain unchanged. For example, a four-position window at 4094 contains 4094, 4095, 0, and 1. Unresolved sequence 4095 prevents advancement to 0. The new unit fixture checks that boundary and the separate 64-position response bitmap. The Retry protocol fixture remains green. This preparation needs no new protocol fixture or protocol reviewer document because it changes no transmitted behavior. Plan: plan/pending/ieee80211-compressed-blockack-s4-corrections.md Change: src.ieee80211.OriginatorBlockAckAgreement | refactor | test | ieee80211-compressed-blockack-s4-corrections
mgonzalezlopezudc
force-pushed
the
work/compressed-blockack-s4
branch
3 times, most recently
from
October 22, 2026 17:49
08c3f9a to
e1a335e
Compare
Before this commit, a short Basic transfer can lack final feedback below the BAR threshold. Channel access requires another DATA candidate. A full window or an empty queue can therefore block completion. After this commit, HCF selects BAR before DATA extraction and permits BAR-only contention. The ACK policy separates outstanding DATA by peer and TID within the accepted window. Matched feedback resolves only that group. Shared agreement operations advance the window without duplicate cyclic arithmetic. Final resolution or expiry queues DELBA at a safe exchange boundary. BAR failure changes contention state without a DATA retry charge. Basic single protection reserves only prepared successors. Unextracted DATA starts another TXOP. These actions share one candidate contract without extraction. They stay together to preserve that contract across selection, reservation, and continuation. For example, a one-position window with threshold five needs BAR before the next sequence can proceed. WifiBlockAckTransferCompletion.test checks that case and a two-packet burst. Both fail on the parent and pass through BAR, matched feedback, DELBA, and ACK after this commit. The protocol explanation is tests/protocol/wifi/blockack-transfer-completion.md. The output checks reject any FAIL verdict, so one successful run cannot hide another run's failure. The existing BAR control holds contention with queued DATA to retain its agreement. The reassociation fixture probes before completion and extends fresh traffic. Both retain their state and response assertions. Seven module files and three unit files cover feedback, expiry, collision, and timing. The seven final fingerprint rows retain the user's 2026-10-15 acceptance. This commit replaces the five approved intermediate Retry values. Each tuple below names the resulting non-graphical ingredients for its configuration. - Block Ack NoFragmentation run 0: 9161-625d/tplx;6a02-09aa/~tNl;cbc0-3b0a/~tND. Final Normal Ack DATA reserves its ACK. Setup and BAR order also change. - Block Ack Fragmentation run 0: 36f4-5c22/tplx;66b0-94cd/~tNl;45f3-af4f/~tND. Final Block Ack DATA reserves zero. BAR obtains a separate TXOP. - Block Ack MixedTraffic run 0: 351b-d4ba/tplx;5c1f-69a8/~tNl;6182-6da3/~tND. The reservation excludes an unextracted large successor. Setup can precede it. - Fragmentation HCFfragblockack run 0: 2597-1e2e/tplx;d269-c6ae/~tNl;2f5c-4cca/~tND. Retry already comes from the parent. The final burst boundary now changes. - TXOP General run 0: ab91-87f3/tplx;f30c-6aa4/~tNl. HCF excludes an unextracted successor and ends the sequence at that boundary. - Ad hoc MacQos run 1: 4fd2-bb56/tplx;ecaf-89f7/~tNl;9398-0fae/~tND. Final Normal Ack DATA reserves SIFS plus ACK. Further extraction needs a TXOP. - Wireless MacQosWithBlockAck run 0: 6edb-0326/tplx;2a8a-50ee/~tNl;4301-882d/~tND. ADDBA reserves its ACK without unrelated DATA. Later extraction changes aggregation. The final CSV files and production source equal the original PR head. Graphical values remain unchanged and unverified. Basic stays the default compatibility profile. Compressed exchanges, general Basic DATA admission, and complete NAV conformance remain outside this change. Plan: plan/pending/ieee80211-compressed-blockack-s4-corrections.md Change: src.ieee80211 | behavior.change | test whatsnew migration fingerprint | ieee80211-compressed-blockack-s4-corrections
The current documents need the six-commit boundaries, direct protocol evidence, and exact causes for the accepted fingerprint values. This commit describes the implemented behavior and its owners. It separates inherited lifecycle support from S4. It records protocol, unit, module, and fingerprint checks with their source identities and scope limits. This documentation change preserves production behavior and baselines. No new protocol fixture or protocol reviewer document applies. The final focused contract and mechanical series checks verify the completed series. Plan: plan/pending/ieee80211-compressed-blockack-s4-corrections.md Change: plan | behavior.change | - | ieee80211-compressed-blockack-s4-corrections
mgonzalezlopezudc
force-pushed
the
work/compressed-blockack-s4
branch
from
October 22, 2026 17:59
e1a335e to
f9d8cea
Compare
This branch has not been deployed
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.
Summary
A short Basic Block Ack transfer can stop without final feedback when the queue empties or the transmit window fills. This PR lets HCF send a Block Ack Request (BAR) without another DATA frame and end the completed agreement with DELBA. It also sets Retry correctly when DATA needs retransmission.
For example, one outstanding DATA can fill a one-position window while the BAR threshold is five. HCF now requests feedback so the transfer can continue.
Commits
Compatibility and verification
Under Basic single protection, only DATA already prepared for transmission can continue in the same TXOP. Other queued DATA needs another TXOP, which can increase contention. Custom MAC extensions must follow the migration guide.
All six commits pass local debug builds and focused checks. The final selection passes seven protocol files, three unit files, and seven module files. Seven non-graphical fingerprint cases also pass with the unchanged production source.
Fingerprint updates cover the three Block Ack configurations:
NoFragmentation,Fragmentation, andMixedTraffic. They also coverHCFfragblockack, TXOPGeneral, ad hocMacQos, and wirelessMacQosWithBlockAck. The verification record gives each cause and approved value.Basic remains the default compatibility profile. Compressed exchanges, A-MPDU, general Basic DATA admission, complete NAV conformance, and graphical fingerprints remain outside these results.