A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
wifi-static-infra-bss-test.cc
Go to the documentation of this file.
1/*
2 * Copyright (c) 2025
3 *
4 * SPDX-License-Identifier: GPL-2.0-only
5 *
6 * Author: Sharan Naribole <sharan.naribole@gmail.com>
7 */
8
9#include "ns3/ap-wifi-mac.h"
10#include "ns3/assert.h"
11#include "ns3/boolean.h"
12#include "ns3/frame-exchange-manager.h"
13#include "ns3/log.h"
14#include "ns3/mac48-address.h"
15#include "ns3/multi-model-spectrum-channel.h"
16#include "ns3/node-container.h"
17#include "ns3/rng-seed-manager.h"
18#include "ns3/rr-multi-user-scheduler.h"
19#include "ns3/simulator.h"
20#include "ns3/spectrum-wifi-helper.h"
21#include "ns3/sta-wifi-mac.h"
22#include "ns3/string.h"
23#include "ns3/test.h"
24#include "ns3/wifi-mac-header.h"
25#include "ns3/wifi-mac-helper.h"
26#include "ns3/wifi-mac.h"
27#include "ns3/wifi-net-device.h"
28#include "ns3/wifi-ns3-constants.h"
29#include "ns3/wifi-static-setup-helper.h"
30#include "ns3/wifi-utils.h"
31
32#include <algorithm>
33#include <optional>
34#include <unordered_map>
35
36/// @ingroup wifi-test
37/// @ingroup tests
38/// @brief WifiStaticSetupHelper test suite
39/// Test suite intended to test static management exchanges between
40/// AP device and client device for single link and multi
41/// link operations.
42/// The test prepares AP WifiNetDevice and client WifiNetDevice
43/// based on test vector input and performs static exchanges for
44/// association, Block ACK agreement, UL MU disable etc.
45/// using WifiStaticSetupHelper. The test verifies if state machines
46/// at ApWifiMac and StaWifiMac has been updated correctly.
47
48using namespace ns3;
49NS_LOG_COMPONENT_DEFINE("WifiStaticInfraBssTestSuite");
50
51/// @brief Constants used in test suite
53{
54const auto DEFAULT_RNG_SEED = 3; ///< default RNG seed
55const auto DEFAULT_RNG_RUN = 7; ///< default RNG run
56const auto DEFAULT_STREAM_INDEX = 100; ///< default stream index
57const auto DEFAULT_SIM_STOP_TIME = NanoSeconds(1); ///< default simulation stop time
58const auto DEFAULT_BEACON_GEN = false; ///< default beacon generation value
59const auto DEFAULT_DATA_MODE = "HeMcs3"; ///< default data mode
60const auto DEFAULT_CONTROL_MODE = "OfdmRate24Mbps"; ///< default control mode
61const auto DEFAULT_WIFI_STANDARD = WifiStandard::WIFI_STANDARD_80211be; ///< default Wi-Fi standard
62const auto DEFAULT_SSID = Ssid("wifi-static-setup"); ///< default SSID
63const tid_t DEFAULT_TEST_TID = 0; ///< default TID
64const uint16_t DEFAULT_BA_BUFFER_SIZE = 64; ///< default MPDU buffer size
65const uint8_t DEFAULT_WIFI_UL_MU_NUM_RU = 4; ///< default number of RUs in UL MU PPDUs
66} // namespace WifiStaticInfraBssTestConstants
67
69
70/// @brief channel map typedef
71using ChannelMap = std::unordered_map<WifiPhyBand, Ptr<MultiModelSpectrumChannel>>;
72
73/// @brief test case information
75{
76 std::string name; ///< Test case name
77 StringVector apChs{}; ///< Channel setting for AP device
78 StringVector clientChs{}; ///< Channel settings for client device
79 uint16_t apBufferSize{consts::DEFAULT_BA_BUFFER_SIZE}; ///< Originator Buffer Size
80 uint16_t clientBufferSize{consts::DEFAULT_BA_BUFFER_SIZE}; ///< Recipient Buffer Size
81 std::optional<Ipv4Address> apMulticastIp{std::nullopt}; ///< AP multicast IP
82 bool ulMuDataDisable{DEFAULT_WIFI_UL_MU_DATA_DISABLE}; ///< UL MU Data Disable
83};
84
85/**
86 * Test static setup of an infrastructure BSS.
87 */
89{
90 public:
91 /**
92 * Constructor.
93 *
94 * @param testVec the test vector
95 */
97
98 private:
99 /// Construct WifiNetDevice
100 /// @param isAp true if AP, false otherwise
101 /// @param channelMap created spectrum channels
102 /// @return constructed WifiNetDevice
103 Ptr<WifiNetDevice> GetWifiNetDevice(bool isAp, const ChannelMap& channelMap);
104
105 /// Construct PHY helper based on input operating channels
106 /// @param settings vector of strings specifying the operating channels to configure
107 /// @param channelMap created spectrum channels
108 /// @return PHY helper
110 const ChannelMap& channelMap) const;
111
112 /// @return the WifiHelper
114 /// @return the AP MAC helper
116 /// @return the Client MAC helper
118 void ValidateAssoc(); ///< Validate Association
119
120 /// Validate Multi-user scheduler setup
121 /// @param apMac AP MAC
122 /// @param clientMac Non-AP MAC
124
125 /// Validate association state machine at AP and client
126 /// for input link
127 /// @param clientLinkId client local Link ID
128 /// @param apMac AP MAC
129 /// @param clientMac Client MAC
130 void ValidateAssocForLink(linkId_t clientLinkId,
131 Ptr<ApWifiMac> apMac,
132 Ptr<StaWifiMac> clientMac);
133
134 /// Validate Block ACK Agreement at AP and client
135 /// @param apMac AP MAC
136 /// @param clientMac Client MAC
137 void ValidateBaAgr(Ptr<ApWifiMac> apMac, Ptr<StaWifiMac> clientMac);
138
139 void DoRun() override;
140 void DoSetup() override;
141
143 Ptr<WifiNetDevice> m_apDev{nullptr}; ///< AP WiFi device
144 Ptr<WifiNetDevice> m_clientDev{nullptr}; ///< client WiFi device
145 std::optional<Mac48Address> m_apGcrGroupAddr; ///< GCR group address
146};
147
149 : TestCase(testVec.name),
150 m_testVec(testVec)
151{
152}
153
156{
157 WifiHelper wifiHelper;
159 wifiHelper.SetRemoteStationManager("ns3::ConstantRateWifiManager",
160 "DataMode",
162 "ControlMode",
164 return wifiHelper;
165}
166
169 const ChannelMap& channelMap) const
170{
171 NS_ASSERT(!settings.empty());
172 SpectrumWifiPhyHelper helper(settings.size());
173
174 linkId_t linkId = 0;
175 for (const auto& str : settings)
176 {
177 helper.Set(linkId, "ChannelSettings", StringValue(str));
178
179 auto channelConfig = WifiChannelConfig::FromString(str);
180 auto phyBand = channelConfig.front().band;
181 auto freqRange = GetFrequencyRange(phyBand);
182 helper.AddPhyToFreqRangeMapping(linkId, freqRange);
183 helper.AddChannel(channelMap.at(phyBand), freqRange);
184
185 ++linkId;
186 }
187 return helper;
188}
189
192{
193 WifiMacHelper macHelper;
194 auto ssid = Ssid(consts::DEFAULT_SSID);
195
196 macHelper.SetType("ns3::ApWifiMac",
197 "Ssid",
198 SsidValue(ssid),
199 "BeaconGeneration",
201 "MpduBufferSize",
202 UintegerValue(m_testVec.apBufferSize));
203 macHelper.SetMultiUserScheduler("ns3::RrMultiUserScheduler",
204 "NStations",
206 return macHelper;
207}
208
211{
212 WifiMacHelper macHelper;
214 macHelper.SetType("ns3::StaWifiMac",
215 "Ssid",
216 SsidValue(ssid),
217 "MpduBufferSize",
218 UintegerValue(m_testVec.clientBufferSize));
219 return macHelper;
220}
221
224{
225 NodeContainer node(1);
226 auto wifiHelper = GetWifiHelper();
227 auto settings = isAp ? m_testVec.apChs : m_testVec.clientChs;
228 auto phyHelper = GetPhyHelper(settings, channelMap);
229 auto macHelper = isAp ? GetApMacHelper() : GetClientMacHelper();
230 auto netDev = wifiHelper.Install(phyHelper, macHelper, node);
232 return DynamicCast<WifiNetDevice>(netDev.Get(0));
233}
234
235void
263
264void
266 Ptr<ApWifiMac> apMac,
267 Ptr<StaWifiMac> clientMac)
268{
269 const auto isMldAssoc = (apMac->GetNLinks() > 1) && (clientMac->GetNLinks() > 1);
270 const auto apLinkId = clientLinkId;
271 const auto clientFem = clientMac->GetFrameExchangeManager(clientLinkId);
272 const auto apFem = apMac->GetFrameExchangeManager(apLinkId);
273 const auto staAddr = clientFem->GetAddress();
274 const auto apAddr = apFem->GetAddress();
275 const auto staRemoteMgr = clientMac->GetWifiRemoteStationManager(clientLinkId);
276 const auto apRemoteMgr = apMac->GetWifiRemoteStationManager(apLinkId);
277
278 NS_TEST_ASSERT_MSG_EQ(clientFem->GetBssid(),
279 apAddr,
280 "Unexpected BSSID for STA link ID " << +clientLinkId);
281 NS_TEST_ASSERT_MSG_EQ(apRemoteMgr->IsAssociated(staAddr),
282 true,
283 "Expecting STA " << staAddr << " to be associated on AP link "
284 << +apLinkId);
285
286 const auto aid = apMac->GetAssociationId(staAddr, apLinkId);
287 NS_TEST_ASSERT_MSG_EQ(apMac->GetStaList(apLinkId).contains(aid),
288 true,
289 "STA " << staAddr << " not found in list of associated STAs");
290
291 if (!isMldAssoc)
292 {
293 return;
294 }
295
296 NS_TEST_ASSERT_MSG_EQ((staRemoteMgr->GetMldAddress(apAddr) == apMac->GetAddress()),
297 true,
298 "Incorrect MLD address stored by STA on link ID " << +clientLinkId);
299 NS_TEST_ASSERT_MSG_EQ((staRemoteMgr->GetAffiliatedStaAddress(apMac->GetAddress()) == apAddr),
300 true,
301 "Incorrect affiliated address stored by STA on link ID "
302 << +clientLinkId);
303
304 NS_TEST_ASSERT_MSG_EQ((apRemoteMgr->GetMldAddress(staAddr) == clientMac->GetAddress()),
305 true,
306 "Incorrect MLD address stored by AP on link ID " << +apLinkId);
308 (apRemoteMgr->GetAffiliatedStaAddress(clientMac->GetAddress()) == staAddr),
309 true,
310 "Incorrect affiliated address stored by AP on link ID " << +apLinkId);
311}
312
313void
315{
316 auto muScheduler = apMac->GetObject<RrMultiUserScheduler>();
317 NS_ASSERT(muScheduler);
318 auto clientList = muScheduler->GetUlMuStas();
319 std::size_t expectedSize = m_testVec.ulMuDataDisable ? 0 : 1;
320 if (expectedSize == 0)
321 {
322 return;
323 }
324 auto clientAddr = clientList.front().address;
325 auto expectedAddr = clientMac->GetAddress();
326 NS_TEST_ASSERT_MSG_EQ(clientAddr, expectedAddr, "Client MAC address mismatch");
327}
328
329void
331{
332 auto isMldAssoc = (apMac->GetNLinks() > 1) && (clientMac->GetNLinks() > 1);
333 auto setupLinks = clientMac->GetSetupLinkIds();
334 auto linkId = *(setupLinks.begin());
335 auto apAddr =
336 isMldAssoc ? apMac->GetAddress() : clientMac->GetFrameExchangeManager(linkId)->GetBssid();
337 auto clientAddr = isMldAssoc ? clientMac->GetAddress()
338 : clientMac->GetFrameExchangeManager(linkId)->GetAddress();
339
340 auto expectedBufferSize = std::min(m_testVec.apBufferSize, m_testVec.clientBufferSize);
341
342 // AP Block ACK Manager
343 auto baApOrig = apMac->GetBaAgreementEstablishedAsOriginator(clientAddr,
346 NS_TEST_ASSERT_MSG_EQ(baApOrig.has_value(),
347 true,
348 "BA Agreement not established at AP as originator");
349 NS_TEST_ASSERT_MSG_EQ(baApOrig->get().GetBufferSize(),
350 expectedBufferSize,
351 "BA Agreement buffer size mismatch");
352 auto baApRecip =
353 apMac->GetBaAgreementEstablishedAsRecipient(clientAddr, consts::DEFAULT_TEST_TID);
354 NS_TEST_ASSERT_MSG_EQ(baApRecip.has_value(),
355 true,
356 "BA Agreement not established at AP as recipient");
357 NS_TEST_ASSERT_MSG_EQ(baApRecip->get().GetBufferSize(),
358 expectedBufferSize,
359 "BA Agreement buffer size mismatch");
360
361 // Non-AP Block ACK Manager
362 auto baClientOrig =
363 clientMac->GetBaAgreementEstablishedAsOriginator(apAddr, consts::DEFAULT_TEST_TID);
364 NS_TEST_ASSERT_MSG_EQ(baClientOrig.has_value(),
365 true,
366 "BA Agreement not established at client as originator");
367 NS_TEST_ASSERT_MSG_EQ(baClientOrig->get().GetBufferSize(),
368 expectedBufferSize,
369 "BA Agreement buffer size mismatch");
370 auto baClientRecip = clientMac->GetBaAgreementEstablishedAsRecipient(apAddr,
373 NS_TEST_ASSERT_MSG_EQ(baClientRecip.has_value(),
374 true,
375 "BA Agreement not established at client as recipient");
376 NS_TEST_ASSERT_MSG_EQ(baClientOrig->get().GetBufferSize(),
377 expectedBufferSize,
378 "BA Agreement buffer size mismatch");
379}
380
381void
383{
384 auto apMac = DynamicCast<ApWifiMac>(m_apDev->GetMac());
385 NS_ASSERT(apMac);
386 auto clientMac = DynamicCast<StaWifiMac>(m_clientDev->GetMac());
387 NS_ASSERT(clientMac);
388
389 NS_TEST_ASSERT_MSG_EQ(clientMac->IsAssociated(), true, "Expected the STA to be associated");
390 const auto nClientLinks = m_testVec.clientChs.size();
391 auto clientLinkIds = clientMac->GetLinkIds();
392 NS_TEST_EXPECT_MSG_EQ(clientLinkIds.size(), nClientLinks, "Client number of links mismatch");
393 for (auto linkId : clientLinkIds)
394 {
395 ValidateAssocForLink(linkId, apMac, clientMac);
396 }
397
398 ValidateBaAgr(apMac, clientMac);
399 ValidateMuScheduler(apMac, clientMac);
400}
401
402void
410
411/**
412 * @ingroup wifi-test
413 * @ingroup tests
414 *
415 * @brief WifiStaticSetupHelper test suite
416 */
418{
419 public:
421};
422
424 : TestSuite("wifi-static-infra-bss-test", Type::UNIT)
425{
426 for (const std::vector<WifiStaticInfraBssTestVector> inputs{
427 {"AP-1-link-Client-1-link",
428 {"{36, 0, BAND_5GHZ, 0}"},
429 {"{36, 0, BAND_5GHZ, 0}"},
432 std::nullopt,
434 {"AP-1-link-Client-1-link-multicast",
435 {"{36, 0, BAND_5GHZ, 0}"},
436 {"{36, 0, BAND_5GHZ, 0}"},
439 "239.192.1.1",
441 {"AP-2-link-Client-1-link",
442 {"{36, 0, BAND_5GHZ, 0}", "{2, 0, BAND_2_4GHZ, 0}"},
443 {"{36, 0, BAND_5GHZ, 0}"},
446 std::nullopt,
448 {"AP-2-link-Client-1-link-Diff-Order",
449 {"{36, 0, BAND_5GHZ, 0}", "{2, 0, BAND_2_4GHZ, 0}"},
450 {"{2, 0, BAND_2_4GHZ, 0}"},
453 std::nullopt,
455 {"AP-3-link-Client-2-link",
456 {"{36, 0, BAND_5GHZ, 0}", "{2, 0, BAND_2_4GHZ, 0}", "{1, 0, BAND_6GHZ, 0}"},
457 {"{36, 0, BAND_5GHZ, 0}", "{1, 0, BAND_6GHZ, 0}"},
460 std::nullopt,
462 {"AP-3-link-Client-2-link-Diff-Order",
463 {"{36, 0, BAND_5GHZ, 0}", "{2, 0, BAND_2_4GHZ, 0}", "{1, 0, BAND_6GHZ, 0}"},
464 {"{2, 0, BAND_2_4GHZ, 0}", "{36, 0, BAND_5GHZ, 0}"},
467 std::nullopt,
469 {"AP-3-link-Client-3-link",
470 {"{36, 0, BAND_5GHZ, 0}", "{2, 0, BAND_2_4GHZ, 0}", "{1, 0, BAND_6GHZ, 0}"},
471 {"{36, 0, BAND_5GHZ, 0}", "{2, 0, BAND_2_4GHZ, 0}", "{1, 0, BAND_6GHZ, 0}"},
474 std::nullopt,
476 {"AP-80MHz-Client-20MHz",
477 {"{42, 80, BAND_5GHZ, 0}"},
478 {"{36, 20, BAND_5GHZ, 0}"},
481 std::nullopt,
483 {"Single-linkBuffer-Size-Test",
484 {"{36, 0, BAND_5GHZ, 0}"},
485 {"{36, 0, BAND_5GHZ, 0}"},
486 64,
487 256,
488 std::nullopt,
490 {"Single-linkBuffer-Size-Test-Alt",
491 {"{36, 0, BAND_5GHZ, 0}"},
492 {"{36, 0, BAND_5GHZ, 0}"},
493 1024,
494 256,
495 std::nullopt,
497 {"Multi-link-Buffer-Size-Test",
498 {"{36, 0, BAND_5GHZ, 0}", "{2, 0, BAND_2_4GHZ, 0}", "{1, 0, BAND_6GHZ, 0}"},
499 {"{36, 0, BAND_5GHZ, 0}", "{2, 0, BAND_2_4GHZ, 0}", "{1, 0, BAND_6GHZ, 0}"},
500 256,
501 64,
502 std::nullopt,
504 {"Multi-link-Buffer-Size-Test-Alt",
505 {"{36, 0, BAND_5GHZ, 0}", "{2, 0, BAND_2_4GHZ, 0}", "{1, 0, BAND_6GHZ, 0}"},
506 {"{36, 0, BAND_5GHZ, 0}", "{2, 0, BAND_2_4GHZ, 0}", "{1, 0, BAND_6GHZ, 0}"},
507 1024,
508 1024,
509 std::nullopt,
511 {"Single-link-UL-MU-Disable",
512 {"{36, 0, BAND_5GHZ, 0}"},
513 {"{36, 0, BAND_5GHZ, 0}"},
516 std::nullopt,
517 true},
518 {"2-link-UL-MU-Disable",
519 {"{36, 0, BAND_5GHZ, 0}", "{2, 0, BAND_2_4GHZ, 0}", "{1, 0, BAND_6GHZ, 0}"},
520 {"{36, 0, BAND_5GHZ, 0}", "{1, 0, BAND_6GHZ, 0}"},
523 std::nullopt,
524 true}};
525
526 const auto& input : inputs)
527 {
529 }
530}
531
Test static setup of an infrastructure BSS.
SpectrumWifiPhyHelper GetPhyHelper(const StringVector &settings, const ChannelMap &channelMap) const
Construct PHY helper based on input operating channels.
void ValidateAssocForLink(linkId_t clientLinkId, Ptr< ApWifiMac > apMac, Ptr< StaWifiMac > clientMac)
Validate association state machine at AP and client for input link.
WifiMacHelper GetClientMacHelper() const
Ptr< WifiNetDevice > m_apDev
AP WiFi device.
void DoSetup() override
Implementation to do any local setup required for this TestCase.
std::optional< Mac48Address > m_apGcrGroupAddr
GCR group address.
Ptr< WifiNetDevice > GetWifiNetDevice(bool isAp, const ChannelMap &channelMap)
Construct WifiNetDevice.
WifiStaticInfraBssTestVector m_testVec
Test vector.
void ValidateMuScheduler(Ptr< ApWifiMac > apMac, Ptr< StaWifiMac > clientMac)
Validate Multi-user scheduler setup.
void ValidateBaAgr(Ptr< ApWifiMac > apMac, Ptr< StaWifiMac > clientMac)
Validate Block ACK Agreement at AP and client.
WifiStaticInfraBssTest(const WifiStaticInfraBssTestVector &testVec)
Constructor.
Ptr< WifiNetDevice > m_clientDev
client WiFi device
void ValidateAssoc()
Validate Association.
void DoRun() override
Implementation to actually run this TestCase.
WifiStaticSetupHelper test suite.
AttributeValue implementation for Boolean.
Definition boolean.h:26
static Mac48Address ConvertFrom(const Address &address)
keep track of a set of node pointers.
Smart pointer class similar to boost::intrusive_ptr.
Definition ptr.h:67
static void SetRun(uint64_t run)
Set the run number of simulation.
static void SetSeed(uint32_t seed)
Set the seed.
RrMultiUserScheduler is a simple OFDMA scheduler that indicates to perform a DL OFDMA transmission if...
static void Destroy()
Execute the events scheduled with ScheduleDestroy().
Definition simulator.cc:131
static void Run()
Run the simulation.
Definition simulator.cc:167
static void Stop()
Tell the Simulator the calling event should be the last one executed.
Definition simulator.cc:175
Make it easy to create and manage PHY objects for the spectrum model.
void AddChannel(const Ptr< SpectrumChannel > channel, const FrequencyRange &freqRange=WHOLE_WIFI_SPECTRUM)
void AddPhyToFreqRangeMapping(uint8_t linkId, const FrequencyRange &freqRange)
Add a given spectrum PHY interface to the PHY instance corresponding of a given link.
The IEEE 802.11 SSID Information Element.
Definition ssid.h:25
AttributeValue implementation for Ssid.
Definition ssid.h:85
Hold variables of type string.
Definition string.h:45
void AddTestCase(TestCase *testCase, Duration duration=Duration::QUICK)
Add an individual child TestCase to this test suite.
Definition test.cc:292
@ QUICK
Fast test.
Definition test.h:1054
TestCase(const TestCase &)=delete
Type
Type of test.
Definition test.h:1257
@ UNIT
This test suite implements a Unit Test.
Definition test.h:1259
TestSuite(std::string name, Type type=Type::UNIT)
Construct a new test suite.
Definition test.cc:490
Hold an unsigned integer type.
Definition uinteger.h:34
helps to create WifiNetDevice objects
void SetRemoteStationManager(std::string type, Args &&... args)
Helper function used to set the station manager.
static int64_t AssignStreams(NetDeviceContainer c, int64_t stream)
Assign a fixed random variable stream number to the random variables used by the PHY and MAC aspects ...
virtual void SetStandard(WifiStandard standard)
create MAC layers for a ns3::WifiNetDevice.
void SetMultiUserScheduler(std::string type, Args &&... args)
Helper function used to set the Multi User Scheduler that can be aggregated to an HE AP's MAC.
void SetType(std::string type, Args &&... args)
void Set(std::string name, const AttributeValue &v)
static void SetStaticAssociation(Ptr< WifiNetDevice > bssDev, const NetDeviceContainer &clientDevs)
Bypass static capabilities exchange for input devices.
static void SetStaticBlockAck(Ptr< WifiNetDevice > apDev, const NetDeviceContainer &clientDevs, const std::set< tid_t > &tids, std::optional< Mac48Address > gcrGroupAddr=std::nullopt)
Bypass ADDBA Request-Response exchange sequence between AP and STAs for given TIDs.
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file,...
Definition assert.h:55
#define NS_ASSERT_MSG(condition, message)
At runtime, in debugging builds, if this condition is not true, the program prints the message to out...
Definition assert.h:75
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
Definition log.h:191
Ptr< T > CreateObject(Args &&... args)
Create an object by type, with varying number of constructor parameters.
Definition object.h:619
#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.
Definition test.h:133
#define NS_TEST_EXPECT_MSG_EQ(actual, limit, msg)
Test that an actual and expected (limit) value are equal and report if not.
Definition test.h:240
Time NanoSeconds(uint64_t value)
Construct a Time in the indicated unit.
Definition nstime.h:1405
@ WIFI_STANDARD_80211be
@ 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.
const auto DEFAULT_DATA_MODE
default data mode
const uint16_t DEFAULT_BA_BUFFER_SIZE
default MPDU buffer size
const auto DEFAULT_RNG_SEED
default RNG seed
const auto DEFAULT_STREAM_INDEX
default stream index
const auto DEFAULT_SIM_STOP_TIME
default simulation stop time
const uint8_t DEFAULT_WIFI_UL_MU_NUM_RU
default number of RUs in UL MU PPDUs
const auto DEFAULT_CONTROL_MODE
default control mode
const auto DEFAULT_WIFI_STANDARD
default Wi-Fi standard
const auto DEFAULT_BEACON_GEN
default beacon generation value
Every class exported by the ns3 library is enclosed in the ns3 namespace.
FrequencyRange GetFrequencyRange(WifiPhyBand band)
Get the frequency range corresponding to the given PHY band.
static constexpr bool DEFAULT_WIFI_UL_MU_DATA_DISABLE
UL MU Data Disable flag at non-AP STA.
Ptr< T1 > DynamicCast(const Ptr< T2 > &p)
Cast a Ptr.
Definition ptr.h:585
uint8_t tid_t
IEEE 802.11-2020 9.2.4.5.2 TID subfield.
Definition wifi-utils.h:71
uint8_t linkId_t
IEEE 802.11be D7.0 Figure 9-207e—Link ID Info field format.
Definition wifi-utils.h:74
std::vector< std::string > StringVector
Return type of SplitString.
Definition string.h:26
StringVector apChs
Channel setting for AP device.
std::optional< Ipv4Address > apMulticastIp
AP multicast IP.
StringVector clientChs
Channel settings for client device.
uint16_t apBufferSize
Originator Buffer Size.
uint16_t clientBufferSize
Recipient Buffer Size.
static WifiChannelConfig FromString(const std::string &settings, WifiStandard standard=WIFI_STANDARD_UNSPECIFIED)
Get the wifi channel config from a WifiPhy::ChannelSettings string.
Definition wifi-types.cc:24
static WifiStaticInfraBssTestSuite g_wifiStaticInfraBssTestSuite
std::unordered_map< WifiPhyBand, Ptr< MultiModelSpectrumChannel > > ChannelMap
channel map typedef