Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
db9d61d
plan: add: declare capability and HT/GI implementation contracts
mgonzalezlopezudc Sep 18, 2026
e734003
common: change: prepare interface identity before link-layer users
mgonzalezlopezudc Sep 18, 2026
69f18c6
ieee80211: change: separate capability and BSS state ownership
mgonzalezlopezudc Sep 18, 2026
8f147ea
ieee80211: refactor: separate the read-only mode-set provider
mgonzalezlopezudc Sep 18, 2026
97898f8
ieee80211: format: remove redundant blank lines
mgonzalezlopezudc Sep 14, 2026
fbd2d71
ieee80211: add: require explicit data-mode guard interval queries
mgonzalezlopezudc Sep 14, 2026
3eadb65
ieee80211: fix: correct HT MCS 32, 73 and 76 definitions
mgonzalezlopezudc Sep 14, 2026
f3679f7
ieee80211: fix: distinguish band and preamble in mode caches
mgonzalezlopezudc Sep 14, 2026
39aa78b
ieee80211: fix: correct HT/VHT PPDU timing
mgonzalezlopezudc Sep 14, 2026
1d4e101
ieee80211: add+change: complete guard-interval mode lookup
mgonzalezlopezudc Sep 14, 2026
446257e
ieee80211: add: qualify fixed data rates by guard interval
mgonzalezlopezudc Sep 14, 2026
654cce6
ieee80211: fix: select mandatory response rates by bitrate
mgonzalezlopezudc Sep 14, 2026
b42a3e1
ieee80211: fix: use legacy basic rates for group-addressed frames
mgonzalezlopezudc Sep 14, 2026
3651b16
ieee80211: add+change: coordinate mode-set transitions
mgonzalezlopezudc Sep 14, 2026
ae9b366
ieee80211: fix: preserve reception state during radio reconfiguration
mgonzalezlopezudc Sep 14, 2026
3e7dca8
ieee80211: fix: enforce SSID element length bounds
mgonzalezlopezudc Sep 14, 2026
0001061
ieee80211: fix: mark malformed response AIDs incorrect
mgonzalezlopezudc Sep 14, 2026
b17b7e9
ieee80211: add: expose VHT MCS identity through the mode contract
mgonzalezlopezudc Sep 14, 2026
1ea317c
ieee80211: add: complete the supported VHT guard-interval catalog
mgonzalezlopezudc Sep 14, 2026
e4f236f
ieee80211: add+change: negotiate VHT capabilities for rate selection
mgonzalezlopezudc Sep 14, 2026
6c1176a
plan: add+change: record verified HT/GI comment closure
mgonzalezlopezudc Sep 18, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 78 additions & 0 deletions WHATSNEW
Original file line number Diff line number Diff line change
Expand Up @@ -280,6 +280,32 @@ Notable backward incompatible changes are the following:
arrives, so renewal timing does not move; traffic from the client starts one
probeWait later.

16. IEEE 802.11 capability and BSS state ownership

HT capabilities are prepared independently of the active BSS operation.
Simplified associations prepare both peers before network configuration,
regardless of node declaration order. Accepted BSS changes publish a
bssStateChanged notification after management completes its bookkeeping.
Legacy simplified stations retain BSS identity and channel information
without accepting the HT operation advertised by an HT access point.

Custom WLAN modules must replace ModeSetListener and modesetChanged with
an explicit modeSetModule using IIeee80211ModeSetProvider, and replace
direct MIB BSS/profile writes with the owner APIs. Custom HT PHY contributors
use typed capability interfaces. The migration guide describes these source
and wiring changes.
The selected legacy QoS and non-QoS ad hoc fingerprints remain unchanged;
no recorded fingerprint baseline was updated.

17. IEEE 802.11 PHY mode API

External implementations of IIeee80211DataMode must implement the new pure
virtual getGuardInterval() query. Return the modeled guard interval as a
simtime_t, or -1 when the PHY has no guard interval. The bitrate-based
Ieee80211ModeSet getMode() and findMode() overloads also take a trailing,
defaulted guardInterval argument. Ordinary existing calls still compile;
member-function pointers must use the new signature. See the migration guide.

Notable backward compatible changes are the following:

1. IEEE 802.11 per-station rate statistics
Expand Down Expand Up @@ -334,6 +360,58 @@ Notable backward compatible changes are the following:
ResidenceTimeTag and, with it, the FlowTag and the PacketEventTag of the packet.
Those two tags now survive the measurement.

6. IEEE 802.11 HT/VHT guard intervals and timing

HT MCS 32, 73, and 76 definitions are corrected. HT/VHT signal fields use
long-GI symbol timing independently of the data GI. Mixed-format HT and VHT
short-GI data airtimes are rounded to 4 us boundaries; HT greenfield retains
its unrounded short-GI airtime. Results and fingerprints may change for
simulations using the affected modes and frame formats.

IIeee80211Mode duration-component queries are now pure virtual. Their
previous defaults are supplied by Ieee80211ModeBase; direct external
implementations must provide these queries or inherit the base defaults.

RateSelection and QosRateSelection now accept dataFrameGuardInterval to
qualify a configured dataFrameBitrate. The default, -1s, leaves the GI
unspecified; an explicit value must match the selected mode's modeled GI.
The MAC now coordinates explicitly registered mode-set consumers,
updating MAC, management, rate selection, and active contention before
publishing modesetChanged from the MAC. Initialization queries the catalog;
unchanged catalogs retain algorithm state. Incompatible catalog-only requests
are rejected before opening a transition, allowing an explicit-mode retry.
Failures after PHY mutation remain fatal. External PHY
and contention implementations have new contracts described in the
migration guide. Default TXOP limits are resolved for each new TXOP after
a mode-set change; active TXOPs and configured overrides retain their limits.

Radio reconfiguration preserves ongoing receptions when the incoming mode
and receiver listening configuration remain compatible. Transmit-only mode
changes and reapplying unchanged settings no longer interrupt reception.
Incompatible changes abort through the normal reception cleanup path.

Management subclasses can override addVhtCapabilities and addVhtOperation
to customize advertisements produced by inherited AP/STA frame builders.

Group-addressed frames use a legacy basic rate when that set is nonempty.
Eligible configured basic rates are preserved; other configured rates fall
back to the fastest legacy basic rate. For example, a configured 54 Mbps
group rate becomes 24 Mbps in the default mixed legacy catalog. This changes
airtime and fingerprints in affected existing scenarios.

The ac catalog now contains both 800 ns and 400 ns GI for all 310 supported
VHT width/NSS/MCS tuples. Existing unqualified lookups, mandatory/basic flags,
and reference modes retain their previous choices.

Detailed AP/STA management now exchanges VHT Capabilities and VHT Operation
elements. Both rate selectors constrain VHT unicast by local Tx and peer Rx
MCS/NSS maps, bandwidth, GI, and advertised long-GI rate limits. Association
loss and mode-set application invalidate peer state. Missing VHT negotiation
falls back to legacy rates, including simplified-management and ad-hoc setups;
this changes their airtime and fingerprints. Current detailed VHT operation
is limited to 20 MHz and long GI. See the migration guide for configuration
and the retained VHT-only profile limitations.


INET-4.7 (July 2026) — feature release
--------------------------------------
Expand Down
41 changes: 41 additions & 0 deletions doc/project/design/ieee80211-model-architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,3 +92,44 @@ Concrete signals declare their source/scope, change condition, payload, and life
[AR-COM-NOTIFY](../rule/architecture.md#ar-com-notify). An immutable borrowed snapshot is allowed;
it creates no second writable authority. Commands, queries, and required coordination use typed
calls or protocol messages, rather than notifications.

**Implemented HT contracts.** `IIeee80211ModeSetProvider` exposes the configured catalog after
`LOCAL`. `IIeee80211MacConfiguration` extends it with an idempotent `prepareLocalCapabilities()`
operation after PHY readiness. MAC consumers resolve their `modeSetModule` dependency through the
narrow provider in `ModeSetModuleBase` at `LINK_LAYER`; the MAC NED provides the default descendant
path. Management uses `macModule`. `LINK_LAYER` depends explicitly
on both `PHYSICAL_LAYER` and `NETWORK_INTERFACE_CONFIGURATION`, so addresses and contribution inputs
are available before simplified association. Its AP preparation/install/removal calls use
`IIeee80211BssProvider`; no remote `LAST` callback is required.

`Ieee80211Mib` provides const BSS/profile queries and guarded mutations. Management stages a complete
BSS/peer change, finishes its transaction and timer bookkeeping, then calls `publishStateChange()`.
The MIB's `bssStateChanged` signal covers meaningful BSS or peer changes. Its Boolean value reports
whether a BSS is active; observers query the current MIB for details. There is no borrowed signal
payload. Delivery is synchronous and observational: MIB mutation during delivery throws an error.
References into the MIB are valid only until the next corresponding mutation. A retained
`shared_ptr<const Ieee80211NegotiatedHtCapabilities>` keeps an immutable capability result alive,
but does not grant continued relationship eligibility.

`hasPreparedLocalCapabilities()`, `isLocalHtCapable()`, `hasActiveBss()`, `hasHtOperation()`, and
`relationshipAllowsHt(peer)` distinguish readiness, implementation support, current BSS presence,
accepted operation presence, and permission to select HT. A legacy BSS may be active without HT
operation. The current ad hoc no-beacon abstraction likewise has no learned channel/HT operation or
accepted peer advertisements. Stop/crash clears operational relationships while retaining prepared
configuration. Physical AP channel context is retained by management for restart; STA operation is
learned from accepted management information, independently of scan tuning.

**Runtime catalog reconfiguration.** The MAC simple module implements the typed
`IIeee80211ModeSetCoordinator` contract. The radio resolves its coordinator through
`modeSetCoordinatorModule`; the containing interface only supplies default wiring.
Consumers register through their declared catalog/configuration provider when it supports
coordination. A read-only replacement provider need not implement that optional runtime role.

An explicit changed-catalog transaction refreshes the MAC-assembled capability profile,
then management's local operation and dependent algorithms. HT compatibility results are
replaced only when capability inputs change; accepted peer knowledge remains relationship-scoped
and selection still checks eligibility and current operation. Reapplying the same catalog
does not reset algorithms. Ordinary preparation and stop/restart retain their existing contracts.
The MAC publishes `modesetChanged` only after a changed runtime catalog is applied; initialization
uses typed queries without a catalog notification. Membership changes and reentrant transitions
are rejected during application/publication. Failures after PHY mutation are fatal, without rollback.
Loading
Loading