wifi: Add MeasurementRequestElement (IE 38)

Part of #1311 (IEEE 802.11k/v support). This is MR 3 of 3. Depends on !2788 (the foundational IEs). Independent of !2789, so these two can be reviewed in parallel.

Summary

The Measurement Request element (Section 9.4.2.19) is the most complex IE in the 802.11k stack. It uses a variant-based design to support all 18 measurement types with type-safe access.

Design

  • 3-byte fixed header: Measurement Token, Mode bitmap, Type
  • std::variant-based body storage with SetBody<T>/GetBody<T> template API
  • SetBody automatically syncs the measurement type field
  • Per-type body structs hold type-scoped subelement fields
  • Mode bitmap with named accessors (Parallel, Enable, Request, Report, DurationMandatory)

Measurement types supported

Basic (0), CCA (1), RPI Histogram (2), Channel Load (3), Noise Histogram (4), Beacon (5), Frame (6), STA Statistics (7), LCI (8), Transmit Stream (9), Multicast Diagnostics (10), Location Civic (11), Location Identifier (12), Directional Channel Quality (13), Directional Measurement (14), Directional Statistics (15), FTM Range (16), Measurement Pause (255).

Subelements supported

Channel Load Reporting, Noise Histogram Reporting, SSID, Beacon Reporting, Reporting Detail, AP Channel Report, Azimuth Request, FTM Range Neighbor Report (uses NeighborReportElement from !2788), Vendor Specific.

Files

  • src/wifi/model/measurement-request-element.{h,cc}
  • src/wifi/test/wifi-rrm-info-elems-test.cc (adds 3 test cases, 8 total)
  • src/wifi/CMakeLists.txt

Tests

./ns3 run "test-runner --suite=wifi-rrm-info-elems"

3 new test cases: MeasurementRequestElementTest, MeasurementRequestModeTest, MeasurementRequestSubelementsTest.

Dependencies

Merge !2788 first. The FTM Range body includes NeighborReportElement.

Merge request reports

Loading