9#include "ns3/address-utils.h"
10#include "ns3/header-serialization-test.h"
12#include "ns3/mgt-headers.h"
13#include "ns3/multi-link-element.h"
14#include "ns3/reduced-neighbor-report.h"
15#include "ns3/simulator.h"
16#include "ns3/tid-to-link-mapping-element.h"
17#include "ns3/wifi-phy-operating-channel.h"
18#include "ns3/wifi-utils.h"
54 std::vector<MultiLinkElement::PerStaProfileSubelement> subelements);
57 void DoRun()
override;
64 "Check serialization and deserialization of Basic variant Multi-Link elements")
75 std::vector<MultiLinkElement::PerStaProfileSubelement> subelements)
106 for (std::size_t i = 0; i < subelements.size(); ++i)
137 .mediumSyncOfdmEdThreshold = 4,
138 .mediumSyncMaxNTxops = 5};
144 .emlsrPaddingDelay = 4,
145 .emlsrTransitionDelay = 5,
146 .transitionTimeout = 10};
182 for (
auto maxMcs : {7, 9, 11, 13})
200 perStaProfile1.SetLinkId(3);
201 perStaProfile1.SetCompleteProfile();
209 assoc.Get<
Ssid>() =
Ssid(
"OtherSsid");
237 assoc.Get<
Ssid>().reset();
240 auto perStaProfile3 = perStaProfile2;
241 perStaProfile3.SetAssocRequest(assoc);
256 auto i = buffer.
Begin();
270 "ExtendedSupportedRatesIE element not present");
280 "IE_EXT_MULTI_LINK_ELEMENT expected");
282 uint16_t mlControl = i.ReadLsbtohU16();
289 "PER_STA_PROFILE_SUBELEMENT_ID expected");
300 "PER_STA_PROFILE_SUBELEMENT_ID expected");
314 "ExtendedSupportedRatesIE element not present");
325 "Non-Inheritance does not indicate EhtCapabilities");
328 "Unexpected size for Elem ID list of Non-Inheritance element");
331 "Unexpected size for Elem ID list of Non-Inheritance element");
336 "PER_STA_PROFILE_SUBELEMENT_ID expected");
349 "ExtendedSupportedRatesIE element not present");
368 auto count = frame.Deserialize(buffer.
Begin());
375 "Containing frame should have SSID IE");
378 "Containing frame should have Supported Rates IE");
381 "Containing frame should have Extended Supported Rates IE");
384 "Containing frame should not have HT Capabilities IE");
387 "Containing frame should not have Extended Capabilities IE");
390 "Containing frame should not have VHT Capabilities IE");
393 "Containing frame should have HE Capabilities IE");
396 "Containing frame should have Multi-Link Element IE");
399 "Containing frame should have EHT Capabilities IE");
402 "Containing frame should not have TID-to-Link Mapping IE");
408 "Unexpected number of Per-STA Profile subelements");
412 auto& perSta1 = mle.GetPerStaProfile(0);
415 "First Per-STA Profile should contain an Association Request frame");
417 std::get<std::reference_wrapper<MgtAssocRequestHeader>>(perSta1.GetAssocRequest()).get();
421 "Frame in first Per-STA Profile should not have SSID IE");
424 "Frame in first Per-STA Profile should have Supported Rates IE");
428 "Supported Rates IE not correctly inherited by frame in first Per-STA Profile");
431 "Frame in first Per-STA Profile should have Extended Supported Rates IE");
435 "Extended Supported Rates IE not correctly inherited by frame in first Per-STA Profile");
438 "Frame in first Per-STA Profile should not have HT Capabilities IE");
442 "Frame in first Per-STA Profile should not have Extended Capabilities IE");
445 "Frame in first Per-STA Profile should not have VHT Capabilities IE");
448 "Frame in first Per-STA Profile should have HE Capabilities IE");
452 "HE Capabilities IE not correctly inherited by frame in first Per-STA Profile");
455 "Frame in first Per-STA Profile should not have Multi-Link Element IE");
458 "Frame in first Per-STA Profile should have EHT Capabilities IE");
462 "EHT Capabilities IE not correctly inherited by frame in first Per-STA Profile");
465 "Frame in first Per-STA Profile should not have TID-to-Link Mapping IE");
470 auto& perSta2 = mle.GetPerStaProfile(1);
473 "Second Per-STA Profile should contain an Association Request frame");
475 std::get<std::reference_wrapper<MgtAssocRequestHeader>>(perSta2.GetAssocRequest()).get();
479 "Frame in second Per-STA Profile should not have SSID IE");
482 "Frame in second Per-STA Profile should have Supported Rates IE");
486 "Supported Rates IE not correctly inherited by frame in second Per-STA Profile");
490 "Frame in second Per-STA Profile should have Extended Supported Rates IE");
494 "Extended Supported Rates IE should have not been inherited by frame in second Per-STA "
498 "Frame in second Per-STA Profile should not have HT Capabilities IE");
502 "Frame in second Per-STA Profile should not have Extended Capabilities IE");
505 "Frame in second Per-STA Profile should have VHT Capabilities IE");
508 "Frame in second Per-STA Profile should have HE Capabilities IE");
512 "HE Capabilities IE not correctly inherited by frame in second Per-STA Profile");
515 "Frame in second Per-STA Profile should not have Multi-Link Element IE");
519 "Frame in second Per-STA Profile should have not inherited EHT Capabilities IE");
522 "Frame in second Per-STA Profile should not have TID-to-Link Mapping IE");
527 auto& perSta3 = mle.GetPerStaProfile(2);
530 "Third Per-STA Profile should contain an Association Request frame");
532 std::get<std::reference_wrapper<MgtAssocRequestHeader>>(perSta3.GetAssocRequest()).get();
536 "Frame in third Per-STA Profile should not have SSID IE");
539 "Frame in third Per-STA Profile should have Supported Rates IE");
543 "Supported Rates IE not correctly inherited by frame in third Per-STA Profile");
546 "Frame in third Per-STA Profile should have Extended Supported Rates IE");
550 "Extended Supported Rates IE should have not been inherited by frame in third Per-STA "
554 "Frame in third Per-STA Profile should not have HT Capabilities IE");
558 "Frame in third Per-STA Profile should not have Extended Capabilities IE");
561 "Frame in third Per-STA Profile should have VHT Capabilities IE");
564 "Frame in third Per-STA Profile should have HE Capabilities IE");
568 "HE Capabilities IE not correctly inherited by frame in third Per-STA Profile");
571 "Frame in third Per-STA Profile should not have Multi-Link Element IE");
575 "Frame in third Per-STA Profile should have inherited EHT Capabilities IE");
579 "EHT Capabilities IE not correctly inherited by frame in third Per-STA Profile");
582 "Frame in third Per-STA Profile should not have TID-to-Link Mapping IE");
616 void DoRun()
override;
621 "Check serialization and deserialization of Reduced Neighbor Report elements")
636 std::stringstream info;
642 info <<
"{Ch=" << +channel.GetNumber() <<
", Bw=" << channel.GetWidth() <<
", 2.4 GHz} ";
659 info <<
"{Ch=" << +channel.GetNumber() <<
", Bw=" << channel.GetWidth() <<
", 5 GHz} ";
683 info <<
"{Ch=" << +channel.GetNumber() <<
", Bw=" << channel.GetWidth() <<
", 6 GHz} ";
793 uint8_t maxSupportedMcs)
const;
837 void DoRun()
override;
843WifiEhtCapabilitiesIeTest ::WifiEhtCapabilitiesIeTest(
bool is2_4Ghz,
MHz_u channelWidth)
845 m_is2_4Ghz{is2_4Ghz},
846 m_channelWidth{channelWidth}
854 uint8_t channelWidthSet = 0;
857 channelWidthSet |= 0x01;
861 channelWidthSet |= 0x02;
865 channelWidthSet |= 0x04;
874 uint8_t maxSupportedMcs)
const
883 maxAmpduSize = (1UL <<
static_cast<uint32_t>(std::ceil(std::log2(maxAmpduSize + 1)))) - 1;
885 capabilities.
SetMaxAmpduLength(std::min(std::max(maxAmpduSize, 8388607U), 16777215U));
888 (maxSupportedMcs >= 12) ? 1 : 0;
890 (maxSupportedMcs >= 12) ? 1 : 0;
893 for (
auto maxMcs : {7, 9, 11, 13})
897 maxMcs <= maxSupportedMcs ? 1 : 0);
900 maxMcs <= maxSupportedMcs ? 2 : 0);
905 for (
auto maxMcs : {9, 11, 13})
910 maxMcs <= maxSupportedMcs ? 3 : 0);
914 maxMcs <= maxSupportedMcs ? 4 : 0);
919 for (
auto maxMcs : {9, 11, 13})
923 maxMcs <= maxSupportedMcs ? 2 : 0);
926 maxMcs <= maxSupportedMcs ? 1 : 0);
932 for (
auto maxMcs : {9, 11, 13})
936 maxMcs <= maxSupportedMcs ? 4 : 0);
939 maxMcs <= maxSupportedMcs ? 3 : 0);
966 uint8_t
byte = it.
ReadU8();
972 uint8_t expectedValueFirstByte)
980 uint8_t expectedValueSixthByte)
995 uint8_t maxSupportedMcs)
1003 maxSupportedMcs >= 8 ? 0x21 : 0x00);
1007 maxSupportedMcs >= 10 ? 0x21 : 0x00);
1011 maxSupportedMcs >= 12 ? 0x21 : 0x00);
1019 maxSupportedMcs >= 10 ? 0x43 : 0x00);
1023 maxSupportedMcs >= 12 ? 0x43 : 0x00);
1031 maxSupportedMcs >= 10 ? 0x12 : 0x00);
1035 maxSupportedMcs >= 12 ? 0x12 : 0x00);
1043 maxSupportedMcs >= 10 ? 0x34 : 0x00);
1047 maxSupportedMcs >= 12 ? 0x34 : 0x00);
1055 uint16_t expectedEhtMcsAndNssSetSize = 0;
1059 expectedEhtMcsAndNssSetSize = 4;
1063 expectedEhtMcsAndNssSetSize = 3;
1066 expectedEhtMcsAndNssSetSize = (2 * 3);
1069 expectedEhtMcsAndNssSetSize = (3 * 3);
1075 uint16_t expectedSize = 1 +
1080 expectedEhtMcsAndNssSetSize;
1095 "Unexpected header size");
1118 "Unexpected header size");
1141 "Unexpected header size");
1162 std::vector<std::pair<uint8_t, uint8_t>> ppeThresholds;
1163 ppeThresholds.emplace_back(1, 2);
1164 ppeThresholds.emplace_back(2, 3);
1165 ppeThresholds.emplace_back(3, 4);
1166 ppeThresholds.emplace_back(4, 3);
1167 ppeThresholds.emplace_back(3, 2);
1168 ppeThresholds.emplace_back(2, 1);
1175 "Unexpected header size");
1207 std::optional<Time> mappingSwitchTime,
1208 std::optional<Time> expectedDuration,
1215 void DoRun()
override;
1225 std::optional<Time> mappingSwitchTime,
1226 std::optional<Time> expectedDuration,
1229 "Check serialization and deserialization of TID-To-Link Mapping elements"),
1230 m_direction(direction),
1231 m_mappingSwitchTime(mappingSwitchTime),
1232 m_expectedDuration(expectedDuration),
1233 m_mappings(mappings)
1250 "Incorrect Mapping Switch Time value");
1260 for (
const auto& [tid, linkSet] :
m_mappings)
1266 "Incorrect link set for TID " << +tid);
1302 uint8_t rxMaxNss0_7,
1303 uint8_t txMaxNss0_7,
1304 uint8_t rxMaxNss8_9,
1305 uint8_t txMaxNss8_9,
1306 uint8_t rxMaxNss10_11,
1307 uint8_t txMaxNss10_11,
1308 uint8_t rxMaxNss12_13,
1309 uint8_t txMaxNss12_13,
1310 std::optional<EhtOperation::EhtOpInfo> opInfo);
1315 void DoRun()
override;
1321 uint8_t rxMaxNss0_7,
1322 uint8_t txMaxNss0_7,
1323 uint8_t rxMaxNss8_9,
1324 uint8_t txMaxNss8_9,
1325 uint8_t rxMaxNss10_11,
1326 uint8_t txMaxNss10_11,
1327 uint8_t rxMaxNss12_13,
1328 uint8_t txMaxNss12_13,
1329 std::optional<EhtOperation::EhtOpInfo> opInfo)
1331 "Check serialization and deserialization of EHT Operation elements")
1377 TestCase::Duration::QUICK);
1381 {{3, std::set<uint8_t>{0, 4, 6}}}),
1382 TestCase::Duration::QUICK);
1384 WifiDirection::BOTH_DIRECTIONS,
1387 {{3, std::set<uint8_t>{0, 4, 6}}, {6, std::set<uint8_t>{3, 7, 11, 14}}}),
1388 TestCase::Duration::QUICK);
1392 {{0, std::set<uint8_t>{0, 1, 2}},
1393 {1, std::set<uint8_t>{3, 4, 5}},
1394 {2, std::set<uint8_t>{6, 7}},
1395 {3, std::set<uint8_t>{8, 9, 10}},
1396 {4, std::set<uint8_t>{11, 12, 13}},
1397 {5, std::set<uint8_t>{14}},
1398 {6, std::set<uint8_t>{1, 3, 6}},
1399 {7, std::set<uint8_t>{11, 14}}}),
1400 TestCase::Duration::QUICK);
1401 AddTestCase(
new EhtOperationElementTest({0, 0, 0, 0, 0}, 1, 2, 3, 4, 5, 6, 7, 8, std::nullopt),
1402 TestCase::Duration::QUICK);
1413 TestCase::Duration::QUICK);
1424 TestCase::Duration::QUICK);
Test Multi-Link Element (Basic variant) serialization and deserialization.
MgtAssocRequestHeader m_outerAssoc
the frame containing the MLE
~BasicMultiLinkElementTest() override
BasicMultiLinkElementTest()
Constructor.
void DoRun() override
Implementation to actually run this TestCase.
MultiLinkElement GetMultiLinkElement(const CommonInfoBasicMle &commonInfo, std::vector< MultiLinkElement::PerStaProfileSubelement > subelements)
Get a Multi-Link Element including the given Common Info field and the given Per-STA Profile Subeleme...
Test EHT Operation information element serialization and deserialization.
void DoRun() override
Implementation to actually run this TestCase.
EhtOperationElementTest(const EhtOperation::EhtOpParams ¶ms, uint8_t rxMaxNss0_7, uint8_t txMaxNss0_7, uint8_t rxMaxNss8_9, uint8_t txMaxNss8_9, uint8_t rxMaxNss10_11, uint8_t txMaxNss10_11, uint8_t rxMaxNss12_13, uint8_t txMaxNss12_13, std::optional< EhtOperation::EhtOpInfo > opInfo)
Constructor.
EhtOperation m_ehtOperation
EHT Operation element.
~EhtOperationElementTest() override=default
Test Reduced Neighbor Report serialization and deserialization.
ReducedNeighborReport GetReducedNeighborReport(PhyOpChannelIt channel2_4It, PhyOpChannelIt channel5It, PhyOpChannelIt channel6It)
Get a Reduced Neighbor Report element including the given operating channels.
ReducedNeighborReportTest()
Constructor.
void DoRun() override
Implementation to actually run this TestCase.
~ReducedNeighborReportTest() override
WifiPhyOperatingChannel::ConstIterator PhyOpChannelIt
typedef for const iterator on the set of available channels
Test TID-To-Link Mapping information element serialization and deserialization.
std::optional< Time > m_expectedDuration
the Expected Duration
void DoSetup() override
Implementation to do any local setup required for this TestCase.
TidToLinkMapping m_tidToLinkMapping
TID-To-Link Mapping element.
WifiDirection m_direction
the direction for the TID-to-link mapping
std::optional< Time > m_mappingSwitchTime
the Mapping Switching Time
TidToLinkMappingElementTest(WifiDirection direction, std::optional< Time > mappingSwitchTime, std::optional< Time > expectedDuration, const WifiTidLinkMapping &mappings)
Constructor.
WifiTidLinkMapping m_mappings
maps TIDs to link sets
~TidToLinkMappingElementTest() override=default
void DoRun() override
Implementation to actually run this TestCase.
Test serialization and deserialization of EHT capabilities IE.
WifiEhtCapabilitiesIeTest(bool is2_4Ghz, MHz_u channelWidth)
Constructor.
void CheckSerializedByte(const Buffer &buffer, uint32_t position, uint8_t value)
Check that the given buffer contains the given value at the given position.
void DoRun() override
Implementation to actually run this TestCase.
HeCapabilities GetHeCapabilities() const
Generate the HE capabilities IE.
bool m_is2_4Ghz
whether the PHY is operating in 2.4 GHz
void CheckSupportedEhtMcsAndNssSet(const Buffer &buffer, uint8_t maxSupportedMcs)
Check the content of the Supported EHT-MCS And NSS Set subfield.
~WifiEhtCapabilitiesIeTest() override=default
MHz_u m_channelWidth
Supported channel width by the PHY.
Buffer SerializeIntoBuffer(const EhtCapabilities &ehtCapabilities)
Serialize the EHT capabilities in a buffer.
EhtCapabilities GetEhtCapabilities(uint16_t maxMpduLength, uint32_t maxAmpduSize, uint8_t maxSupportedMcs) const
Generate the EHT capabilities IE.
void CheckEhtMacCapabilitiesInformation(const Buffer &buffer, uint8_t expectedValueFirstByte)
Check the content of the EHT MAC Capabilities Information subfield.
void CheckEhtPhyCapabilitiesInformation(const Buffer &buffer, uint8_t expectedValueSixthByte)
Check the content of the EHT PHY Capabilities Information subfield.
wifi EHT Information Elements Test Suite
WifiEhtInfoElemsTestSuite()
iterator in a Buffer instance
void Next()
go forward by one byte
automatically resized byte buffer
void AddAtStart(uint32_t start)
Buffer::Iterator Begin() const
The IEEE 802.11be EHT Capabilities.
void SetPpeThresholds(uint8_t nssPe, uint8_t ruIndexBitmask, const std::vector< std::pair< uint8_t, uint8_t > > &ppeThresholds)
Set the EHT PPE threshold info subfield.
void SetMaxMpduLength(uint16_t length)
Set the maximum MPDU length.
void SetSupportedTxEhtMcsAndNss(EhtMcsAndNssSet::EhtMcsMapType mapType, uint8_t upperMcs, uint8_t maxNss)
Set a subfield of the Supported EHT-MCS And NSS Set.
EhtPhyCapabilities m_phyCapabilities
EHT PHY Capabilities Info subfield.
uint8_t GetHighestSupportedTxMcs(EhtMcsAndNssSet::EhtMcsMapType mapType)
Get the highest supported TX MCS for a given EHT-MCS map type.
void SetMaxAmpduLength(uint32_t maxAmpduLength)
Set the maximum A-MPDU length.
void SetSupportedRxEhtMcsAndNss(EhtMcsAndNssSet::EhtMcsMapType mapType, uint8_t upperMcs, uint8_t maxNss)
Set a subfield of the Supported EHT-MCS And NSS Set.
uint8_t GetHighestSupportedRxMcs(EhtMcsAndNssSet::EhtMcsMapType mapType)
Get the highest supported RX MCS for a given EHT-MCS map type.
EHT Operation Information Element.
void SetMaxTxNss(uint8_t maxNss, uint8_t mcsStart, uint8_t mcsEnd)
Set the max Tx NSS for input MCS index range.
void SetMaxRxNss(uint8_t maxNss, uint8_t mcsStart, uint8_t mcsEnd)
Set the max Rx NSS for input MCS index range.
EhtOpParams m_params
EHT Operation Parameters.
std::optional< EhtOpInfo > m_opInfo
EHT Operation Information.
The Extended Capabilities Information Element.
The Extended Supported Rates Information Element.
The IEEE 802.11ax HE Capabilities.
void SetChannelWidthSet(uint8_t channelWidthSet)
Set channel width set.
The HT Capabilities Information Element.
Per-STA Profile Subelement of Multi-Link element.
void SetStaMacAddress(Mac48Address address)
Set the STA MAC Address subfield in the STA Info field.
void SetCompleteProfile()
Set the Complete Profile flag in the STA Control field.
void SetAssocRequest(const std::variant< MgtAssocRequestHeader, MgtReassocRequestHeader > &assoc)
Include the given (Re)Association Request frame body in the STA Profile field of this Per-STA Profile...
void SetLinkId(uint8_t linkId)
Set the Link ID subfield in the STA Control field.
void AddPerStaProfileSubelement()
Add a Per-STA Profile Subelement in the Link Info field.
void SetBssParamsChangeCount(uint8_t count)
Set the BSS Parameters Change Count subfield in the Common Info field.
void SetLinkIdInfo(uint8_t linkIdInfo)
Set the Link ID Info subfield in the Common Info field.
CommonInfoBasicMle & GetCommonInfoBasic()
void SetEmlsrTransitionDelay(Time delay)
Set the EMLSR Transition Delay subfield of the EML Capabilities subfield in the Common Info field.
PerStaProfileSubelement & GetPerStaProfile(std::size_t i)
Get a reference to the i-th Per-STA Profile Subelement in the Link Info field.
void SetEmlsrPaddingDelay(Time delay)
Set the EMLSR Padding Delay subfield of the EML Capabilities subfield in the Common Info field.
void SetMldMacAddress(Mac48Address address)
Set the MLD MAC Address subfield in the Common Info field.
void SetTransitionTimeout(Time timeout)
Set the Transition Timeout subfield of the EML Capabilities subfield in the Common Info field.
The IEEE 802.11 Non-Inheritance Information Element.
std::set< uint8_t > m_elemIdList
list of unique Element ID values (in increasing order)
bool IsPresent(uint8_t elemId, uint8_t elemIdExt=0) const
std::set< uint8_t > m_elemIdExtList
list of unique Element ID Extension values
The Reduced Neighbor Report element.
std::size_t GetNNbrApInfoFields() const
Get the number of Neighbor AP Information fields.
void SetMldParameters(std::size_t nbrApInfoId, std::size_t index, uint8_t mldId, uint8_t linkId, uint8_t changeSequence)
Set the MLD Parameters subfield of the i-th TBTT Information field of the given Neighbor AP Informati...
void SetShortSsid(std::size_t nbrApInfoId, std::size_t index, uint32_t shortSsid)
Set the Short SSID field of the i-th TBTT Information field of the given Neighbor AP Information fiel...
void SetBssid(std::size_t nbrApInfoId, std::size_t index, Mac48Address bssid)
Set the BSSID field of the i-th TBTT Information field of the given Neighbor AP Information field.
void SetPsd20MHz(std::size_t nbrApInfoId, std::size_t index, uint8_t psd20MHz)
Set the 20 MHz PSD field of the i-th TBTT Information field of the given Neighbor AP Information fiel...
void AddNbrApInfoField()
Add a Neighbor AP Information field.
void SetBssParameters(std::size_t nbrApInfoId, std::size_t index, uint8_t bssParameters)
Set the BSS Parameters field of the i-th TBTT Information field of the given Neighbor AP Information ...
void AddTbttInformationField(std::size_t nbrApInfoId)
Add a TBTT Information fields to the TBTT Information Set field of the given Neighbor AP Information ...
void SetOperatingChannel(std::size_t nbrApInfoId, const WifiPhyOperatingChannel &channel)
Set the Operating Class and the Channel Number fields of the given Neighbor AP Information field base...
static void Destroy()
Execute the events scheduled with ScheduleDestroy().
The IEEE 802.11 SSID Information Element.
The Supported Rates Information Element.
void AddTestCase(TestCase *testCase, Duration duration=Duration::QUICK)
Add an individual child TestCase to this test suite.
TID-to-Link Mapping Information Element.
std::optional< Time > GetMappingSwitchTime() const
void SetLinkMappingOfTid(uint8_t tid, std::set< uint8_t > linkIds)
Set the Link Mapping field of the given TID such that the given TID is mapped to the links associated...
std::optional< Time > GetExpectedDuration() const
void SetExpectedDuration(Time expectedDuration)
Set the Expected Duration field.
void SetMappingSwitchTime(Time mappingSwitchTime)
Set the Mapping Switch Time field.
std::set< uint8_t > GetLinkMappingOfTid(uint8_t tid) const
Get the Link Mapping field of the given TID.
TidToLinkMapping::Control m_control
TID-to-link Mapping Control.
The IEEE 802.11ac VHT Capabilities.
Class that keeps track of all information about the current PHY operating channel.
static const std::set< FrequencyChannelInfo > m_frequencyChannels
Available frequency channels.
std::set< FrequencyChannelInfo >::const_iterator ConstIterator
Typedef for a const iterator pointing to a channel in the set of available channels.
static ConstIterator FindFirst(uint8_t number, MHz_u frequency, MHz_u width, WifiStandard standard, WifiPhyBand band, ConstIterator start=m_frequencyChannels.begin())
Find the first frequency segment matching the specified parameters.
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file,...
#define NS_ASSERT_MSG(condition, message)
At runtime, in debugging builds, if this condition is not true, the program prints the message to out...
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
#define NS_LOG_DEBUG(msg)
Use NS_LOG to output a message of level LOG_DEBUG.
#define NS_TEST_ASSERT_MSG_EQ(actual, limit, msg)
Test that an actual and expected (limit) value are equal and report and abort if not.
#define NS_TEST_EXPECT_MSG_GT(actual, limit, msg)
Test that an actual value is greater than a limit and report if not.
#define NS_TEST_EXPECT_MSG_EQ(actual, limit, msg)
Test that an actual and expected (limit) value are equal and report if not.
Time MicroSeconds(uint64_t value)
Construct a Time in the indicated unit.
@ WIFI_PHY_BAND_6GHZ
The 6 GHz band.
@ WIFI_PHY_BAND_2_4GHZ
The 2.4 GHz band.
@ WIFI_PHY_BAND_5GHZ
The 5 GHz band.
@ PER_STA_PROFILE_SUBELEMENT_ID
Every class exported by the ns3 library is enclosed in the ns3 namespace.
std::map< uint8_t, std::set< uint8_t > > WifiTidLinkMapping
TID-indexed map of the link set to which the TID is mapped.
WifiDirection
Wifi direction.
void ReadFrom(Buffer::Iterator &i, Ipv4Address &ad)
Read an Ipv4Address from a Buffer.
Struct containing all supported rates.
SupportedRates rates
supported rates
std::optional< ExtendedSupportedRatesIE > extendedRates
supported extended rates
void AddSupportedRate(uint64_t bs)
Add the given rate to the supported rates.
EML Capabilities subfield.
uint8_t emlsrSupport
EMLSR Support.
Medium Synchronization Delay Information subfield.
uint8_t mediumSyncDuration
Medium Synchronization Duration.
Common Info field of the Basic Multi-Link element.
std::optional< EmlCapabilities > m_emlCapabilities
EML Capabilities.
uint8_t Deserialize(Buffer::Iterator start, uint16_t presence)
Deserialize the Common Info field.
void SetMediumSyncOfdmEdThreshold(int8_t threshold)
Set the Medium Synchronization OFDM ED Threshold subfield of the Medium Synchronization Delay Informa...
std::optional< MediumSyncDelayInfo > m_mediumSyncDelayInfo
Medium Synchronization Delay Information.
void SetMediumSyncDelayTimer(Time delay)
Set the Medium Synchronization Duration subfield of the Medium Synchronization Delay Information in t...
Mac48Address m_mldMacAddress
Subfields.
std::optional< uint8_t > m_bssParamsChangeCount
BSS Parameters Change Count.
void SetMediumSyncMaxNTxops(uint8_t nTxops)
Set the Medium Synchronization Maximum Number of TXOPs subfield of the Medium Synchronization Delay I...
std::optional< uint8_t > m_linkIdInfo
Link ID Info.
@ EHT_MCS_MAP_TYPE_320_MHZ
@ EHT_MCS_MAP_TYPE_20_MHZ_ONLY
@ EHT_MCS_MAP_TYPE_NOT_LARGER_THAN_80_MHZ
@ EHT_MCS_MAP_TYPE_160_MHZ
EHT Operation Information subfield IEEE 802.11be D2.0 Figure 9-1002c.
EHT Operation Parameters subfield IEEE 802.11be D2.0 Figure 9-1002b.
uint8_t support320MhzIn6Ghz
Support For 320 MHz In 6 GHz.
uint8_t supportTx1024And4096QamForRuSmallerThan242Tones
Tx 1024-QAM And 4096-QAM < 242-tone RU Support.
uint8_t supportRx1024And4096QamForRuSmallerThan242Tones
Rx 1024-QAM And 4096-QAM < 242-tone RU Support.
bool defaultMapping
Default link mapping.
WifiDirection direction
Direction.
static WifiEhtInfoElemsTestSuite g_wifiEhtInfoElemsTestSuite
the test suite