Skip to content

ieee80211: correct wire encoding and receive behavior - #1189

Merged
levy merged 9 commits into
inet-framework:masterfrom
mgonzalezlopezudc:fix/ieee80211-wire-and-receive-correctness
Sep 14, 2026
Merged

ieee80211: correct wire encoding and receive behavior#1189
levy merged 9 commits into
inet-framework:masterfrom
mgonzalezlopezudc:fix/ieee80211-wire-and-receive-correctness

Conversation

@mgonzalezlopezudc

@mgonzalezlopezudc mgonzalezlopezudc commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

What

Correct IEEE 802.11 wire byte encoding, parameter sets, parity generation and validation, PHY protocol identification, AP beacon interval normalization, standard channel advertisement, radio channel change notifications, and receive duplicate handling for QoS Control, OFDM PHY, DSSS Parameter Sets, and Mesh Error codes.

The changes are organized into a clean, 9-commit linear series where whitespace is isolated first, each technical decision is self-contained with its dedicated unit/module tests, and fingerprint baseline movements accompany their direct causal commits.

Series Base & Prerequisites

This series is rebased directly onto upstream master (d9ae46234d), which already integrates prerequisite PR #1188 (0c5ccf5209..d9ae46234d, ieee80211: correct Block Ack and aggregation frame representations). Consequently, this pull request has no external PR dependencies and applies cleanly as a self-contained 9-commit series on master. Fingerprint baseline updates in commit 4 (6a87501b0e) and subsequent commits reflect the composition of master's Block Ack action and A-MSDU header corrections with this series' QoS Control bit position corrections.

Why

  1. Incidental whitespace isolation:
    Separates pre-existing trailing whitespace and trailing newline adjustments in modified files from functional changes so that each subsequent commit diff highlights solely its technical decision.

  2. Mesh Path Error reason code:
    Per IEEE Std 802.11-2024 Table 9-79, RC_MESH_PATH_ERROR_NO_FORWARDING_INFORMATION must use numeric reason code 62. Reason code 60 already designates an invalid mesh security capability. Ieee80211MgmtFrame.msg corrected this value, documented the numeric migration in WHATSNEW and the migration guide, and verified wire serialization in Ieee80211BeaconWire_1.test.

  3. Non-QoS duplicate removal separation:
    Per IEEE Std 802.11-2024 § 10.3.2.14.3 and Table 10-6, non-QoS Data (ST_DATA) shares the legacy receive duplicate cache (RC1) with management frames, rather than the per-TID QoS Data cache (RC2). QosDuplicateRemoval.cc previously aliased non-QoS data to QoS TID 0, allowing an unrelated QoS data frame to prematurely drop a valid non-QoS retry if sequence numbers coincided.

  4. QoS Control standard bit positions:
    Per IEEE Std 802.11-2024 Table 9-10, the 16-bit QoS Control field encodes TID in bits B0–B3, bit B4 as EOSP / subframe type depending on STA role, Ack Policy in bits B5–B6, and A-MSDU Present in bit B7. Ieee80211MacHeaderSerializer.cc previously transposed Ack Policy and A-MSDU Present bits and set unmodeled bit B4. The layout is corrected and unmodeled bit B4 is cleared, verified across all Distribution System address layouts.

  5. OFDM SIGNAL parity and RATE validation:
    Per IEEE Std 802.11-2024 § 17.3.4.4, bit 17 of the OFDM SIGNAL field provides even parity across bits 0–16. In accordance with §§ 17.3.4.2 and 17.3.12, all eight defined RATE codes are odd 4-bit values. The bit-level (Ieee80211OfdmRadio) and packet-level (Ieee80211Radio) models compute and insert parity on transmit, and validate parity and standard RATE validity on reception. Configured noncompliant reception is preserved: receiver compliance is checked so that testbeds using placeholder RATE 0 continue to deliver packets.

  6. HR-DSSS and ERP PHY identity preservation:
    ERP reuses OFDM's SIGNAL mode objects, whose factory constructs a base OFDM header. Ieee80211Radio::encapsulate now ensures ERP transmissions retain Ieee80211ErpOfdmPhyHeader and Protocol::ieee80211ErpOfdmPhy, and orders HR-DSSS ahead of DSSS dispatch so transmissions carry their specific PHY protocol identities.

  7. AP Beacon scheduling and interval normalization:
    Per IEEE Std 802.11-2024 § 9.4.1.3, Beacon Interval is a 16-bit field in Time Units (1 TU = 1024 µs), valid in the range 1 to 65535 TUs. AP beacon intervals are normalized down to whole 1024-µs TUs during initialization for both target scheduling and frame advertisement (e.g., default 100ms becomes 97 TUs = 99.328 ms), ensuring AP target spacing and advertised frame content agree. Values outside the 16-bit domain are rejected before scheduling or serialization.

  8. Consistent radio channel observations:
    AP management requires band and channel configuration without direct access to concrete transmitter pointers. Ieee80211Radio publishes immutable Ieee80211RadioChannelChangedDetails on radioChannelChangedSignal during initialization and runtime channel updates. Transmitter and receiver maintain separate owned channel instances, preventing double-free defects during runtime band reconfigurations.

  9. Standard DSSS Current Channel advertisement and STA discovery:
    Per IEEE Std 802.11-2024 § 9.4.2.4 and Tables 9-62 / 9-69, Beacon and Probe Response frames advertise the DSSS Parameter Set Current Channel element (element ID 3, 3 bytes) for 2.4 GHz operation. Ieee80211BeaconFrame::channelNumber represents the standard channel number (default -1 when absent) rather than an internal band index. Ieee80211MgmtSta converts standard channel numbers back to band indices during discovery and falls back to receive channel when absent or when HT Operation is present. Legacy custom 2.4 GHz bands without a standard channel mapping omit the element, preserving backward compatibility while strictly checking HT mappings.

Reading Order

The branch consists of 9 linear commits building on top of master (d9ae46234d):

  1. 326ae2fc3achore: isolate trailing whitespace normalization

    • Single decision & rationale: Separate incidental trailing whitespace and trailing newline cleanups from functional changes to ensure subsequent commits contain only functional diffs.
    • Dependency: Based on master (d9ae46234d).
    • Component surface:
      • doc/src/migration-guide/index.rst
      • src/inet/linklayer/ieee80211/mac/duplicateremoval/QosDuplicateRemoval.cc
      • src/inet/linklayer/ieee80211/mgmt/Ieee80211MgmtApBase.h
      • src/inet/physicallayer/wireless/ieee80211/packetlevel/Ieee80211Radio.cc
      • src/inet/physicallayer/wireless/ieee80211/packetlevel/Ieee80211Radio.h
      • src/inet/physicallayer/wireless/ieee80211/packetlevel/Ieee80211Radio.ned
    • Verification: Debug build and scoped controls pass.
    • Baseline effect: 0 baseline rows changed.
  2. bbe54a426dieee80211: correct the mesh no-forwarding reason code

    • Single decision & rationale: Correct RC_MESH_PATH_ERROR_NO_FORWARDING_INFORMATION in Ieee80211MgmtFrame.msg from 60 to 62 per IEEE Std 802.11-2024 Table 9-79; document migration guidance.
    • Dependency: Follows commit 1 (326ae2fc3a).
    • Component surface:
      • WHATSNEW
      • doc/src/migration-guide/index.rst
      • src/inet/linklayer/ieee80211/mgmt/Ieee80211MgmtFrame.msg
      • tests/unit/Ieee80211BeaconWire_1.test
    • Verification: Ieee80211BeaconWire_1.test verifies wire serialization and reason code constant.
    • Baseline effect: 0 baseline rows changed.
  3. 72ba7b29deieee80211: isolate non-QoS receive duplicate identities

    • Single decision & rationale: Isolate non-QoS Data sequence caching in QosDuplicateRemoval.cc to the legacy cache (RC1) per Table 10-6 instead of aliasing QoS TID 0.
    • Dependency: Follows commit 1 (326ae2fc3a).
    • Component surface:
      • WHATSNEW
      • src/inet/linklayer/ieee80211/mac/duplicateremoval/QosDuplicateRemoval.cc
      • tests/unit/Ieee80211QosDuplicateRemoval_1.test
    • Verification: Ieee80211QosDuplicateRemoval_1.test validates separation between non-QoS and QoS sequence tracking, retry handling, and delivery.
    • Baseline effect: 0 baseline rows changed.
  4. 6a87501b0eieee80211: encode QoS Control in standard bit positions

    • Single decision & rationale: Correct QoS Control wire serialization in Ieee80211MacHeaderSerializer.cc to match Table 9-10 (TID bits 0–3, bit 4 clear, Ack Policy bits 5–6, A-MSDU Present bit 7). Composes with master's integrated Block Ack and A-MSDU representations.
    • Dependency: Follows commit 1 (326ae2fc3a).
    • Component surface:
      • WHATSNEW
      • src/inet/linklayer/ieee80211/mac/Ieee80211MacHeaderSerializer.cc
      • tests/fingerprint/examples.csv
      • tests/fingerprint/showcases.csv
      • tests/unit/Ieee80211OnWireBitCompliance_1.test
    • Verification: Ieee80211OnWireBitCompliance_1.test checks byte patterns across all DS configurations.
    • Baseline effect: 18 baseline rows updated for serialized byte changes (~tND only, identical tplx and ~tNl).
  5. a7e2c37a90ieee80211: generate and validate OFDM SIGNAL parity

    • Single decision & rationale: Compute bit 17 even parity on transmission and validate parity and standard RATE validity on reception across packet-level and bit-level radios (IEEE Std 802.11-2024 §§ 17.3.4.2, 17.3.4.4, 17.3.12); gate RATE rejection on receiver compliance to preserve noncompliant placeholder reception (RATE 0).
    • Dependency: Follows commit 1 (326ae2fc3a).
    • Component surface:
      • WHATSNEW
      • src/inet/physicallayer/wireless/ieee80211/bitlevel/Ieee80211LayeredOfdmReceiver.h
      • src/inet/physicallayer/wireless/ieee80211/bitlevel/Ieee80211OfdmRadio.cc
      • src/inet/physicallayer/wireless/ieee80211/packetlevel/Ieee80211OfdmSignalField.h
      • src/inet/physicallayer/wireless/ieee80211/packetlevel/Ieee80211Radio.cc
      • tests/fingerprint/examples.csv
      • tests/fingerprint/showcases.csv
      • tests/fingerprint/tutorials.csv
      • tests/unit/Ieee80211RadioWireIdentity_1.test
    • Verification: Ieee80211RadioWireIdentity_1.test verifies transmit parity calculation and receive rejection across modes.
    • Baseline effect: 158 baseline rows updated for serialized byte changes (~tND only, identical tplx and ~tNl).
  6. 1b6878a3f6ieee80211: preserve HR-DSSS and ERP PHY identities

    • Single decision & rationale: Preserve Ieee80211ErpOfdmPhyHeader and Protocol::ieee80211ErpOfdmPhy on ERP frames during encapsulation; order HR-DSSS ahead of DSSS dispatch in Ieee80211Radio.
    • Dependency: Follows commits 1 (326ae2fc3a) and 5 (a7e2c37a90).
    • Component surface:
      • WHATSNEW
      • src/inet/physicallayer/wireless/ieee80211/packetlevel/Ieee80211Radio.cc
      • tests/unit/Ieee80211RadioWireIdentity_1.test
    • Verification: Ieee80211RadioWireIdentity_1.test covers encapsulation, serialization, and decapsulation PHY protocol identity fidelity.
    • Baseline effect: 0 baseline rows changed.
  7. 9ee9d2725fieee80211: normalize beacon intervals before scheduling

    • Single decision & rationale: Normalize AP beacon interval to integer Time Units (1..65535 TUs, 1 TU = 1024 µs) during initialization for target timer scheduling and advertised frame fields (IEEE Std 802.11-2024 § 9.4.1.3). Validate 16-bit range before scheduling.
    • Dependency: Follows commit 1 (326ae2fc3a).
    • Component surface:
      • WHATSNEW
      • doc/src/migration-guide/index.rst
      • src/inet/linklayer/ieee80211/mgmt/Ieee80211BeaconInterval.h
      • src/inet/linklayer/ieee80211/mgmt/Ieee80211MgmtAp.cc
      • src/inet/linklayer/ieee80211/mgmt/Ieee80211MgmtAp.ned
      • src/inet/linklayer/ieee80211/mgmt/Ieee80211MgmtFrameSerializer.cc
      • tests/fingerprint/examples.csv
      • tests/fingerprint/showcases.csv
      • tests/fingerprint/tutorials.csv
      • tests/module/Ieee80211BeaconSchedule_1.test
      • tests/module/Ieee80211MgmtApUnavailableChannel_1.test
      • tests/unit/Ieee80211BeaconWire_1.test
      • tests/unit/Ieee80211HtMgmtElements_1.test
    • Verification: Ieee80211BeaconWire_1.test and Ieee80211MgmtFrameSerializer_1.test test serializer validation; Ieee80211BeaconSchedule_1.test tests runtime scheduling intervals.
    • Baseline effect: 30 baseline rows updated (30 trajectory and 30 serialized-byte changes due to 97 TU spacing).
  8. b91685bea9ieee80211: publish consistent radio channel observations

    • Single decision & rationale: Publish immutable Ieee80211RadioChannelChangedDetails on radioChannelChangedSignal during initialization and channel changes; decouple transmitter and receiver channel instance ownership in Ieee80211Radio to prevent double-free defects.
    • Dependency: Follows commit 1 (326ae2fc3a).
    • Component surface:
      • src/inet/linklayer/ieee80211/mgmt/Ieee80211MgmtApBase.cc
      • src/inet/linklayer/ieee80211/mgmt/Ieee80211MgmtApBase.h
      • src/inet/physicallayer/wireless/ieee80211/packetlevel/Ieee80211Radio.cc
      • src/inet/physicallayer/wireless/ieee80211/packetlevel/Ieee80211Radio.h
      • src/inet/physicallayer/wireless/ieee80211/packetlevel/Ieee80211Radio.ned
      • src/inet/physicallayer/wireless/ieee80211/packetlevel/Ieee80211RadioChannelChangedDetails.h
      • tests/module/Ieee80211BeaconSchedule_1.test
      • tests/module/Ieee80211MgmtApChannelChange_1.test
      • tests/module/Ieee80211MgmtApUnavailableChannel_1.test
    • Verification: Module tests cover initialization signals, runtime channel switching, and invalid channel exceptions.
    • Baseline effect: 0 baseline rows changed.
  9. b5c3c8ee49ieee80211: advertise and decode standard DSSS channels

    • Single decision & rationale: Serialize standard DSSS Current Channel element (element ID 3, 3 bytes) in 2.4 GHz Beacons and Probe Responses; represent standard channel number in Ieee80211BeaconFrame::channelNumber (default -1 when absent); convert back to band indices during STA discovery with receive-channel fallback. Omit DSSS for unmapped legacy custom 2.4 GHz bands while retaining channel-index validation and strict HT mapping.
    • Dependency: Follows commits 7 (9ee9d2725f) and 8 (b91685bea9).
    • Component surface:
      • WHATSNEW
      • doc/src/migration-guide/index.rst
      • src/inet/linklayer/ieee80211/mgmt/Ieee80211MgmtAp.cc
      • src/inet/linklayer/ieee80211/mgmt/Ieee80211MgmtApBase.cc
      • src/inet/linklayer/ieee80211/mgmt/Ieee80211MgmtApBase.h
      • src/inet/linklayer/ieee80211/mgmt/Ieee80211MgmtFrame.msg
      • src/inet/linklayer/ieee80211/mgmt/Ieee80211MgmtFrameSerializer.cc
      • src/inet/linklayer/ieee80211/mgmt/Ieee80211MgmtSta.cc
      • tests/fingerprint/examples.csv
      • tests/fingerprint/showcases.csv
      • tests/fingerprint/tutorials.csv
      • tests/module/Ieee80211BeaconSchedule_1.test
      • tests/unit/Ieee80211BeaconWire_1.test
      • tests/unit/Ieee80211MgmtStaDiscovery_1.test
    • Verification: Ieee80211BeaconWire_1.test validates 3-byte serialization and malformed rejection; Ieee80211MgmtStaDiscovery_1.test validates discovery channel conversion and fallbacks; module test Ieee80211BeaconSchedule_1.test covers scheduled frames across mapped and unmapped custom bands.
    • Baseline effect: 30 baseline rows updated (30 trajectory and 30 serialized-byte changes due to element presence in 2.4 GHz frames).

Architectural Surface

  • Modules touched:
    • src/inet/linklayer/ieee80211/mac/Ieee80211MacHeaderSerializer.cc
    • src/inet/linklayer/ieee80211/mac/duplicateremoval/QosDuplicateRemoval.cc
    • src/inet/linklayer/ieee80211/mgmt/Ieee80211BeaconInterval.h
    • src/inet/linklayer/ieee80211/mgmt/Ieee80211MgmtAp.cc
    • src/inet/linklayer/ieee80211/mgmt/Ieee80211MgmtAp.ned
    • src/inet/linklayer/ieee80211/mgmt/Ieee80211MgmtApBase.cc
    • src/inet/linklayer/ieee80211/mgmt/Ieee80211MgmtApBase.h
    • src/inet/linklayer/ieee80211/mgmt/Ieee80211MgmtFrame.msg
    • src/inet/linklayer/ieee80211/mgmt/Ieee80211MgmtFrameSerializer.cc
    • src/inet/linklayer/ieee80211/mgmt/Ieee80211MgmtSta.cc
    • src/inet/physicallayer/wireless/ieee80211/bitlevel/Ieee80211LayeredOfdmReceiver.h
    • src/inet/physicallayer/wireless/ieee80211/bitlevel/Ieee80211OfdmRadio.cc
    • src/inet/physicallayer/wireless/ieee80211/packetlevel/Ieee80211OfdmSignalField.h
    • src/inet/physicallayer/wireless/ieee80211/packetlevel/Ieee80211Radio.cc
    • src/inet/physicallayer/wireless/ieee80211/packetlevel/Ieee80211Radio.h
    • src/inet/physicallayer/wireless/ieee80211/packetlevel/Ieee80211Radio.ned
    • src/inet/physicallayer/wireless/ieee80211/packetlevel/Ieee80211RadioChannelChangedDetails.h
  • Contracts and protocols:
    • MAC duplicate removal contract (QosDuplicateRemoval): strict partition between legacy cache (RC1) and per-TID QoS cache (RC2).
    • Physical layer channel observation: Ieee80211Radio publishes Ieee80211RadioChannelChangedDetails on radioChannelChangedSignal.
    • PHY layer encapsulation: Ieee80211Radio encapsulates ERP frames with Ieee80211ErpOfdmPhyHeader and Protocol::ieee80211ErpOfdmPhy, and orders HR-DSSS before DSSS.
    • Management discovery contract (Ieee80211MgmtSta): converts standard DSSS Current Channel numbers to internal band channel indices, respecting HT Operation priority and receive-channel fallbacks.
  • Packet representation:
    • QoS Control chunk byte layout conforms to IEEE Std 802.11-2024 Table 9-10.
    • OFDM SIGNAL header calculates and validates bit 17 even parity and odd 4-bit RATE validity (IEEE Std 802.11-2024 §§ 17.3.4.2, 17.3.4.4, 17.3.12).
    • DSSS Parameter Set (element ID 3, 3 bytes) serialized in Beacon and Probe Response frames for 2.4 GHz operation; channelNumber in Ieee80211BeaconFrame stores standard channel number (-1 if absent).
    • Mesh reason code RC_MESH_PATH_ERROR_NO_FORWARDING_INFORMATION corrected to 62.
  • Configuration surface:
    • Ieee80211MgmtAp.ned: beaconInterval parameter comment updated to clarify 1..65535 TUs range and integer TU normalization.
  • Feature descriptors: None.
  • Seals and audit exceptions:
    • All modified files under src/inet/ are unsealed (doc/project/enforcement/check-source-seals.sh PASS).
    • No new architectural deviations (AV-*) or naming deviations (NV-*) introduced. Pre-existing repository violations match the base.

Baselines

Fingerprint baseline updates are causally split and committed alongside their triggering changes:

  • Commit 4 (6a87501b0e): 18 rows in examples.csv and showcases.csv updated solely for QoS Control serialized byte changes (~tND), with tplx and ~tNl unchanged. Composes with master's Block Ack action and A-MSDU header updates.
  • Commit 5 (a7e2c37a90): 158 rows across examples.csv, showcases.csv, and tutorials.csv updated for OFDM SIGNAL parity serialized bytes (~tND), with tplx and ~tNl unchanged. Restores 100/100 delivery in LayeredNonCompliant80211Ping.
  • Commit 7 (9ee9d2725f): 30 rows updated for AP beacon interval normalization (97 TUs = 99.328 ms instead of 100 ms), with both trajectory and serialized byte changes.
  • Commit 9 (b5c3c8ee49): 30 rows updated for 2.4 GHz DSSS Current Channel element wire presence and length in Beacons/Probe Responses.

Across all 158 legacy regression test tuples, all test cases pass cleanly with no unmodeled drift.

Verification Evidence

  1. Compilation:
    • make -j$(nproc) MODE=debug: PASS (libINET_dbg.so).
    • make -j$(nproc) MODE=release: PASS (libINET.so).
  2. Mechanical Project Gates:
    • doc/project/enforcement/check-commits.sh master..HEAD: PASS (9 commits, linear, valid subject/body formatting, clean splits, no fixup/squash/review commits).
    • doc/project/enforcement/check-source-seals.sh --base master: PASS (all touched files unsealed).
    • doc/project/enforcement/check-architecture.sh src/inet/linklayer/ieee80211: PASS.
    • doc/project/enforcement/check-architecture.sh src/inet/physicallayer/wireless/ieee80211: PASS.
    • doc/project/enforcement/check-naming.sh --base master: PASS for changed files (0 naming candidates in changed files; pre-existing violations match base).
    • doc/project/enforcement/check-interfaces.sh: PASS (0 new interface violations; 15 pre-existing violations match base).
  3. Direct Unit Tests (8/8 PASS):
    . setenv -q && inet_run_unit_tests -m debug -f 'Ieee80211(BeaconWire|HtMgmtElements|MgmtFrameSerializer|MgmtStaDiscovery|OnWireBitCompliance|QosDuplicateRemoval|RadioWireIdentity|MpduSubframeHeaderSerializer).*'
    • Ieee80211BeaconWire_1.test: PASS
    • Ieee80211HtMgmtElements_1.test: PASS
    • Ieee80211MgmtFrameSerializer_1.test: PASS
    • Ieee80211MgmtStaDiscovery_1.test: PASS
    • Ieee80211MpduSubframeHeaderSerializer_1.test: PASS
    • Ieee80211OnWireBitCompliance_1.test: PASS
    • Ieee80211QosDuplicateRemoval_1.test: PASS
    • Ieee80211RadioWireIdentity_1.test: PASS
  4. Direct Module Tests (3/3 PASS):
    . setenv -q && inet_run_module_tests -m debug -f 'Ieee80211(BeaconSchedule|MgmtApChannelChange|MgmtApUnavailableChannel)_1.test'
    • Ieee80211BeaconSchedule_1.test: PASS
    • Ieee80211MgmtApChannelChange_1.test: PASS
    • Ieee80211MgmtApUnavailableChannel_1.test: PASS
  5. Fingerprint Regression Tests (158/158 PASS):
    (cd tests/fingerprint && ./fingerprinttest -d -t 12 -m '^/(examples|showcases|tutorials)/' -f tplx -f '~tNl' -f '~tND' cleanup-selected.csv)
    • Ran 158 tests in 302.687s OK.

@mgonzalezlopezudc
mgonzalezlopezudc force-pushed the fix/ieee80211-wire-and-receive-correctness branch 4 times, most recently from 7925d04 to 3e9e9e8 Compare September 14, 2026 12:27
Separate the existing final-newline and trailing-blank-line normalization from the behavioral fixes so each later diff describes only its decision.

The scoped debug opp_repl fingerprint is unchanged.

Validation: incremental debug build, directly related tests and scoped opp_repl controls passed.
Mesh path errors without forwarding information must use reason 62 (IEEE Std 802.11-2024, Table 9-79). Value 60 already denotes invalid mesh security capability. Verify the independent wire bytes and document the numeric migration.

The scoped debug opp_repl fingerprint is unchanged.

Validation: incremental debug build, directly related tests and scoped opp_repl controls passed.
Non-QoS data shares the legacy receive cache with management traffic, rather than QoS TID 0 (IEEE Std 802.11-2024, Table 10-6). Separate these identities so a valid retry cannot be discarded because an unrelated QoS frame reused its sequence number. Exercise the recipient delivery path and transmitter/TID/fragment distinctions.

The 158 explicitly selected legacy fingerprint cases pass in debug mode. This commit changes 0 selected rows: 0 with trajectory changes and 0 with serialized-byte changes. Record only measured causal differences; preserve graphical expectations and unselected entries. Attribution and per-case deltas are in ai-logs/executions/2026-09-14_pr1189-cleanup/.

Validation: incremental debug build, directly related tests and scoped opp_repl controls passed.
Encode TID, Ack Policy and A-MSDU Present in their standard QoS Control positions (IEEE Std 802.11-2024, Table 9-10). Leave unmodeled bit 4 clear instead of advertising EOSP or an empty queue. Verify independent octets across all DS layouts and decode both bit-4 values.

The 158 explicitly selected legacy fingerprint cases pass in debug mode. This commit changes 18 selected rows: 0 with trajectory changes and 18 with serialized-byte changes. Record only measured causal differences; preserve graphical expectations and unselected entries. Attribution and per-case deltas are in ai-logs/executions/2026-09-14_pr1189-cleanup/.

Validation: incremental debug build, directly related tests and scoped opp_repl controls passed.
Preserve configured noncompliant reception: RATE 0 is a placeholder, not an undefined standard mode. Check parity in both operating modes and gate the standard RATE table on receiver compliance. OFDM SIGNAL bit 17 supplies even parity over bits 0-16, and reception must reject undefined RATE values (IEEE Std 802.11-2024, 17.3.4.2 and 17.3.4.4). Share the wire-integrity calculation between packet-level and bit-level radios, and test valid, corrupted, reserved-bit and undefined-rate inputs through the real radio methods.

The 158 explicitly selected legacy fingerprint cases pass in debug mode. This commit changes 158 selected rows: 0 with trajectory changes and 158 with serialized-byte changes. Record only measured causal differences; preserve graphical expectations and unselected entries. Attribution and per-case deltas are in ai-logs/executions/2026-09-14_pr1189-cleanup/.

Validation: incremental debug build, directly related tests and scoped opp_repl controls passed.
ERP reuses the OFDM SIGNAL factory, which constructs a base OFDM header. Preserve the selected ERP header type and protocol, and dispatch HR-DSSS before its DSSS base type. Verify the derived PHY identities through encapsulation, serialization and decapsulation.

The 158 explicitly selected legacy fingerprint cases pass in debug mode. This commit changes 0 selected rows: 0 with trajectory changes and 0 with serialized-byte changes. Record only measured causal differences; preserve graphical expectations and unselected entries. Attribution and per-case deltas are in ai-logs/executions/2026-09-14_pr1189-cleanup/.

Validation: incremental debug build, directly related tests and scoped opp_repl controls passed.
AP target spacing must agree with the advertised TU interval (IEEE Std 802.11-2024, 9.4.1.3). Normalize once during initialization and reject values outside the 16-bit TU domain before scheduling or serialization. Include real AP target-spacing checks, serializer rejection coverage, and the valid-interval repair for the existing missing-channel fixture.

The 158 explicitly selected legacy fingerprint cases pass in debug mode. This commit changes 30 selected rows: 30 with trajectory changes and 30 with serialized-byte changes. Record only measured causal differences; preserve graphical expectations and unselected entries. Attribution and per-case deltas are in ai-logs/executions/2026-09-14_pr1189-cleanup/.

Validation: incremental debug build, directly related tests and scoped opp_repl controls passed.

Introduce AP scheduling coverage in the module suite, whose explicit activity
module exercises initialization and timer-driven Beacon/Probe Response creation.
AP management needs the band and channel as a consistent radio observation, without accessing a concrete transmitter. Publish immutable band details during initialization and runtime changes. Give transmitter and receiver separate owned channel objects so later band changes cannot free a shared object twice. Verify preconfigured radios, synchronous detail lifetime, unavailable channels and runtime HT updates.

The 158 explicitly selected legacy fingerprint cases pass in debug mode. This commit changes 0 selected rows: 0 with trajectory changes and 0 with serialized-byte changes. Record only measured causal differences; preserve graphical expectations and unselected entries. Attribution and per-case deltas are in ai-logs/executions/2026-09-14_pr1189-cleanup/.

Validation: incremental debug build, directly related tests and scoped opp_repl controls passed.
The DSSS Current Channel element carries a standard channel number, not a band-local index (IEEE Std 802.11-2024, 9.4.2.4 and Tables 9-62/9-69). Advertise it for modeled 2.4 GHz operation, account for its wire length, and convert back through the receive band during discovery. Retain receive-channel fallback and HT Operation authority; test absent, malformed and duplicate elements.

The 158 explicitly selected legacy fingerprint cases pass in debug mode. This commit changes 30 selected rows: 30 with trajectory changes and 30 with serialized-byte changes. Record only measured causal differences; preserve graphical expectations and unselected entries. Attribution and per-case deltas are in ai-logs/executions/2026-09-14_pr1189-cleanup/.

Validation: incremental debug build, directly related tests and scoped opp_repl controls passed.

Legacy custom 2.4 GHz bands without a standard-channel map otherwise abort
on the next Beacon or Probe Response. Omit DSSS for this nonstandard legacy
operation, keep channel-index validation and strict HT mapping, and document
the modeling simplification. Cover mapped and unmapped custom bands through
fresh scheduled Beacons, Probe Responses and serialized body lengths.
@mgonzalezlopezudc
mgonzalezlopezudc force-pushed the fix/ieee80211-wire-and-receive-correctness branch from 3e9e9e8 to b5c3c8e Compare September 14, 2026 12:45
@levy
levy merged commit cbbba4d into inet-framework:master Sep 14, 2026
15 checks passed
@mgonzalezlopezudc
mgonzalezlopezudc deleted the fix/ieee80211-wire-and-receive-correctness branch September 14, 2026 13:08
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