ieee80211: separate capability and BSS state ownership - #1216
Open
mgonzalezlopezudc wants to merge 3 commits into
Open
mgonzalezlopezudc wants to merge 3 commits into
mgonzalezlopezudc wants to merge 3 commits into
Conversation
mgonzalezlopezudc
force-pushed
the
refactor/ieee80211-htcapop-v3
branch
from
September 18, 2026 18:37
b2bbc26 to
8a9a626
Compare
Link-layer initialization may resolve peer interfaces by their configured addresses. Declare network-interface configuration as a prerequisite so these queries see initialized identities regardless of module declaration order. The physical-layer prerequisite remains in place. This ordering supplies the shared readiness contract used by simplified wireless association before network configuration. No fingerprint or statistical baseline is changed. The selected regression contract covers MacNonQos and MacQos, run 0, in examples/adhoc/qos, plus simplified association and AP lifecycle module tests in debug mode. Plan: plan/done/80211htcapop-refactor-v3.md Change: src.common.InitStages | behavior.change | test | ieee80211-htcapop-v3
Capability preparation previously depended on initialization broadcasts and mixed local PHY support with active BSS operation. Make the MAC prepare an idempotent profile through typed PHY contributors, and let management own accepted BSS transitions and simplified peer installation. Keep directional peer capabilities immutable and evaluate operation and HT eligibility separately. Publish committed MIB changes after management bookkeeping, guard state mutation, and replace modesetChanged listeners with explicit configuration providers. Prepare simplified associations before network configuration, independently of node declaration order. Keep simplified legacy STAs associated without accepting HT operation from an HT AP. Cover both declaration orders and shutdown/crash restart, while retaining BSS identity and channel and removing AP-side peer resources on stop. Migrate dependent consumers and regression fixtures together with the contracts. Document public API migration and the notification lifetime. Validation scope: debug build; 3 focused unit and 9 module cases covering capability preparation, provider wiring, association, lifecycle, beacon and channel updates; MacNonQos and MacQos run 0 fingerprints at 10s with unchanged tplx expectations. No fingerprint or statistical baseline changes. Plan: plan/done/80211htcapop-refactor-v3.md Change: src.ieee80211 | behavior.change | test expected whatsnew migration | ieee80211-htcapop-v3
Catalog-only consumers should not require capability preparation. Introduce a paired C++/NED IIeee80211ModeSetProvider contract and make MAC configuration extend it with the preparation operation used by management. ModeSetModuleBase now depends only on the read-only provider. Migrate the replacement-provider fixture to the narrow contract, removing its throwing preparation stub. Update architecture, migration guidance and release notes to identify the contract custom catalog providers implement. Validation of the integrated changes: debug build, 5 focused module tests, 3 unit tests and 18 unchanged Wi-Fi/Ethernet/VLAN/configurator fingerprint cases pass. Scoped architecture checks pass; interface checking reports only the existing AV-CONTRACT-02 bodies. No recorded baseline changes. Plan: plan/done/80211htcapop-refactor-v3.md Change: src.ieee80211 | refactor | whatsnew migration | ieee80211-htcapop-v3
mgonzalezlopezudc
force-pushed
the
refactor/ieee80211-htcapop-v3
branch
from
September 18, 2026 21:01
7058073 to
c913a63
Compare
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
Refactor IEEE 802.11 capability preparation and BSS/peer-state ownership around explicit typed
contracts and deterministic initialization dependencies.
The MAC assembles an idempotent local capability profile from typed PHY contributors. Management
owns accepted BSS, operation and peer transitions, while the MIB stores the committed view and
publishes changes after the associated bookkeeping is complete. Catalog consumers use a narrow
read-only mode-set provider; management-only preparation is exposed through the extended MAC
configuration provider.
The series also preserves the simplified legacy-STA abstraction: a legacy STA associated with an
HT AP retains the BSS identity, channel and association state but does not install HT operation.
Review order
common: change: prepare interface identity before link-layer usersestablishes the sharedreadiness prerequisite and identifies the implementation plan.
ieee80211: change: separate capability and BSS state ownershipintroduces the typed contracts,migrates consumers, and includes the simplified legacy-STA capability gate and lifecycle tests.
ieee80211: refactor: separate the read-only mode-set providernarrows catalog-only consumers.No fingerprint or statistical baseline is changed.
Architectural and compatibility surface
The change affects the common initialization-stage graph, IEEE 802.11 MAC, management and MIB
ownership, PHY capability contracts, mode-set/catalog consumers, NED provider wiring, and the
corresponding unit, module and protocol fixtures. Public C++ and NED provider APIs change; the
release notes and migration guide document the provider and notification-lifetime changes.
The implementation does not change MSG inputs, on-air field serialization, packet representation,
feature descriptors, statistical baselines, or files under the sealed
common/packet/subtree.The synthetic 20/40 MHz management and selection fixtures do not claim real 40 MHz packet-PHY
support, and the external-upper fixture does not claim real TAP I/O.
Validation
Validation across the series includes debug builds for the focused commit points and a release build
for the main implementation, followed by focused tests covering:
simplified initialization, reassociation and channel changes;
MacNonQosandMacQosad hoc fingerprints, run 0, 10 seconds, with unchangedtplxexpectations, plus 18 unchanged Wi-Fi/Ethernet/VLAN/configurator fingerprint cases.Scoped architecture checks for the IEEE 802.11 MAC and PHY paths pass. Interface checking reports
only the existing
AV-CONTRACT-02bodies. No recorded baseline changed.The exact implementation plan and its evidence are tracked in
the implementation plan and
the evidence companion.
Validation is deterministic and uses the checked-in configurations, run 0 and seed 0/default where
applicable. The recorded evidence does not claim performance results, real TAP I/O, a complete
feature-disabled campaign, or a full repository-wide cross-protocol initialization campaign.
Reproducible local cleanup verification
Each of the three output commits passed
make MODE=debug -j8and the selected legacy fingerprints.The common prerequisite passed three initialization/lifecycle module cases; both WLAN commit points
passed the following nine module and three unit cases. The final source tree is identical to the
previously audited
7058073ea84ba90394a7ee16a971b30de06433ef.The two fingerprints were executed through
opp_repl --load @opp -p inetafter settingINET_ROOTto the checkout, using this exact scoped call and a temporary JSON projection of the unchanged CSV
expectations (
MacNonQos=5749-0281/tplx,MacQos=1486-cbae/tplx):Both cases passed on the original head and every rewritten commit, with unchanged expectations.
Fixtures used run 0 and seed 0/default. No new release, feature-disabled, full-protocol or full
cross-protocol campaign was run during this cleanup; broader validation above is prior evidence.