Skip to content

IEEE 802.11: add HT capability and PHY foundations - #1167

Merged
levy merged 6 commits into
inet-framework:masterfrom
mgonzalezlopezudc:pr/ht-01-foundations
Sep 8, 2026
Merged

IEEE 802.11: add HT capability and PHY foundations#1167
levy merged 6 commits into
inet-framework:masterfrom
mgonzalezlopezudc:pr/ht-01-foundations

Conversation

@mgonzalezlopezudc

@mgonzalezlopezudc mgonzalezlopezudc commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

IEEE 802.11 HT capability and PHY foundations

Mixed HT operation needs an explicit PHY timing reference, an encodable legacy rate set, and capabilities bounded by the configured radio. Establish the typed HT capability/operation model, element codec, channel mappings, complete mode catalog, and operational width/antenna limits. Small queue and serializer prerequisites remain separate commits at the start.

Stack and reading order

PR 1/4. Head: pr/ht-01-foundations. Target: master. Prepared range: 7aef79d5c0db..f01af194a8cb. Read the following commits in order:

  • 4a4c5fe3c0d2 — ieee80211: normalize existing blank lines
  • 77c4134e1eb6 — tests: verify management timestamps across time resolutions
  • 8a7b7061082e — queueing: mark the streaming API section public
  • 0ca43c03af02 — queueing: retain compound packets during drop notification
  • c340206ef9c6 — ieee80211: make PHY timing references explicit
  • 119a4cf77664 — ieee80211: encode the legacy operational rate set correctly
  • 2f7262f82bd5 — physicallayer/ieee80211: expose standards channel mappings
  • 656deae2bfe7 — ieee80211: model validated HT capabilities and operation
  • 788222ea7bec — physicallayer/ieee80211: complete the mixed HT mode catalog
  • f01af194a8cb — ieee80211: bound local HT capabilities by the operational PHY

Architectural surface

PHY timing/mode/channel contracts, HT management element representation and codec, MIB local capabilities, and generic queue ownership. No sealed packet-core paths are changed.

Baselines

C05 carries seven timing-related fingerprint transitions; C06 carries thirty rate-advertisement transitions. These touch examples.csv, showcases.csv, and tutorials.csv under tests/fingerprint. No baseline regeneration was performed during reconstruction.

Verification

Each of C01–C10 has a passing debug build and scoped opp_repl evidence. C05/C06 also passed their 7/30 fingerprint cases. The C10 initialization probe verified 20 MHz and one-stream bounds. This is per-commit evidence, not a separate full-suite run at this PR tip.

The full-stack recorded build command was make MODE=debug -j$(nproc). The scoped unit/module/queueing runs used opp_repl --load @opp -p inet, with exact run_opp_tests calls in the retained .final.tests.py execution artifact. Fingerprints used fingerprinttest -d -q -f tplx -f "~tNl" -f "~tND" with the retained explicit 37-row CSV. Exact commands, selectors, statuses, and source-tree mappings are in the accompanying execution report.


Devin Review

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 1 potential issue.

1 flag not posted on this PR by your GitHub settings — view it in Devin Review. (Configure)

Devin Review

Comment on lines +47 to +50
int primaryChannel = htOperation.primaryChannel;
localHtCapabilities = Ieee80211HtCapabilities();
htOperation = Ieee80211HtOperation();
htOperation.primaryChannel = primaryChannel;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 HT operation keeps wrong channel

When an HT radio uses any channel beyond index zero, updateLocalHtCapabilities preserves zero. No channel update writes htOperation.primaryChannel, so operation state identifies the wrong channel.

Prompt for agents
Track the radio's current IEEE 802.11 channel in Ieee80211Mib::htOperation.primaryChannel. Initialize it before updateLocalHtCapabilities runs and update it whenever the radio channel changes. Keep the value as the internal channel index expected by makeHtOperationElement, and add a focused test covering a nonzero initial channel plus a later channel change.
Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Keep the header ending consistent without mixing whitespace-only changes
with the operational capability API.
Internal channel indices differ from standards channel numbers in the
2.4 GHz band. Explicit mappings allow HT operation fields to use standards
channel numbers and validate HT40 pairs by center-frequency separation.

Keep reusable mapping behavior in Ieee80211BandBase and synchronize the
transmitter and receiver band when their channel changes. Direct band
interface subclasses must implement the new contract or inherit the base.
Capability consumers need exact HT MCS, width and guard-interval support
from typed mode entries, without inferring dense MCS sets or treating VHT
modes as HT modes. Preserve the explicit PHY timing reference.

Expose concrete transmitter and receiver width queries so callers can
intersect catalog support with the packet PHY's primary-channel limit.
Rate selection can only choose modes present in the catalog. Include all
modeled MCS 0..31 combinations for 20/40 MHz and long/short guard intervals
in the mixed HT set while preserving mandatory-mode membership.
HT advertisements need distinct capability, operation and directional
peer constraints. Represent these values and validate contradictory fields
before converting them into usable peer state.

Encode the modeled HT Capabilities and HT Operation fields according to
IEEE 802.11 sections 9.4.2.54 and 9.4.2.55, preserving subtype-specific
Basic HT-MCS presence. Print sparse MCS sets without implying dense support.
A catalog-wide advertisement can claim channel widths or spatial streams
that the configured radio cannot operate. Derive local capabilities at MAC
initialization from the transmitter/receiver width intersection and antenna
stream limit, and retain the resulting local and directional peer state
in the MIB.

Validate operation parameters against this bounded capability set before
management can publish it.
@levy
levy merged commit b61cd67 into inet-framework:master Sep 8, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants