Test update of BA starting sequence number after ADDBA Response timeout in multi-link operations. More...
#include "wifi-mlo-test.h"
Public Member Functions | |
StartSeqNoUpdateAfterAddBaTimeoutTest () | |
Public Member Functions inherited from MultiLinkOperationsTestBase | |
MultiLinkOperationsTestBase (const std::string &name, uint8_t nStations, const BaseParams &baseParams) | |
Constructor. | |
~MultiLinkOperationsTestBase () override=default | |
Public Member Functions inherited from ns3::TestCase | |
TestCase (const TestCase &)=delete | |
virtual | ~TestCase () |
Destructor. | |
std::string | GetName () const |
TestCase & | operator= (const TestCase &)=delete |
Private Member Functions | |
void | DoRun () override |
Implementation to actually run this TestCase. | |
void | DoSetup () override |
Implementation to do any local setup required for this TestCase. | |
void | StartTraffic () override |
Start the generation of traffic (needs to be overridden) | |
void | Transmit (Ptr< WifiMac > mac, uint8_t phyId, WifiConstPsduMap psduMap, WifiTxVector txVector, double txPowerW) override |
Callback invoked when a FEM passes PSDUs to the PHY. | |
Private Attributes | |
std::size_t | m_nQosDataCount |
counter for transmitted QoS data frames | |
PacketSocketAddress | m_sockAddr |
packet socket address | |
Ptr< ListErrorModel > | m_staErrorModel |
error rate model to corrupt frames at the non-AP MLD | |
Additional Inherited Members | |
Public Types inherited from ns3::TestCase | |
enum class | Duration { QUICK = 1 , EXTENSIVE = 2 , TAKES_FOREVER = 3 } |
How long the test takes to execute. More... | |
Static Public Attributes inherited from ns3::TestCase | |
static constexpr auto | QUICK = Duration::QUICK |
Deprecated test duration simple enums. | |
static constexpr auto | EXTENSIVE = Duration::EXTENSIVE |
static constexpr auto | TAKES_FOREVER = Duration::TAKES_FOREVER |
Protected Types inherited from MultiLinkOperationsTestBase | |
using | ChannelMap = std::map<FrequencyRange, Ptr<MultiModelSpectrumChannel>> |
PHY band-indexed map of spectrum channels. | |
enum | Direction { DL = 0 , UL } |
Uplink or Downlink direction. More... | |
Protected Member Functions inherited from MultiLinkOperationsTestBase | |
void | CheckAddresses (Ptr< const WifiPsdu > psdu, std::optional< Direction > direction=std::nullopt) |
Check that the Address 1 and Address 2 fields of the given PSDU contain device MAC addresses. | |
void | CheckCapabilities (Ptr< WifiMpdu > mpdu, Ptr< WifiMac > mac, uint8_t phyId) |
Check that the expected Capabilities information elements are present in the given management frame based on the band in which the given link is operating. | |
Ptr< PacketSocketClient > | GetApplication (const PacketSocketAddress &sockAddr, std::size_t count, std::size_t pktSize, Time delay=Seconds(0), uint8_t priority=0) const |
virtual void | L7Receive (uint8_t nodeId, Ptr< const Packet > p, const Address &addr) |
Function to trace packets received by the server application. | |
void | SetChannels (SpectrumWifiPhyHelper &helper, const std::vector< std::string > &channels, const ChannelMap &channelMap) |
Reset the given PHY helper, use the given strings to set the ChannelSettings attribute of the PHY objects to create, and attach them to the given spectrum channels appropriately. | |
void | SetSsid (uint16_t aid, Mac48Address) |
Set the SSID on the next station that needs to start the association procedure. | |
Protected Member Functions inherited from ns3::TestCase | |
TestCase (std::string name) | |
Constructor. | |
void | AddTestCase (TestCase *testCase, Duration duration=Duration::QUICK) |
Add an individual child TestCase to this test suite. | |
TestCase * | GetParent () const |
Get the parent of this TestCase. | |
bool | IsStatusFailure () const |
Check if any tests failed. | |
bool | IsStatusSuccess () const |
Check if all tests passed. | |
void | SetDataDir (std::string directory) |
Set the data directory where reference trace files can be found. | |
void | ReportTestFailure (std::string cond, std::string actual, std::string limit, std::string message, std::string file, int32_t line) |
Log the failure of this TestCase. | |
bool | MustAssertOnFailure () const |
Check if this run should assert on failure. | |
bool | MustContinueOnFailure () const |
Check if this run should continue on failure. | |
std::string | CreateDataDirFilename (std::string filename) |
Construct the full path to a file in the data directory. | |
std::string | CreateTempDirFilename (std::string filename) |
Construct the full path to a file in a temporary directory. | |
Protected Attributes inherited from MultiLinkOperationsTestBase | |
const std::vector< std::string > | m_apChannels |
strings specifying channels for AP | |
Ptr< ApWifiMac > | m_apMac |
AP wifi MAC. | |
Time | m_duration {Seconds(1)} |
simulation duration | |
const std::vector< uint8_t > | m_fixedPhyBands |
links on non-AP MLD with fixed PHY band | |
uint16_t | m_lastAid |
AID of last associated station. | |
uint8_t | m_nStations |
number of stations to create | |
std::vector< std::size_t > | m_rxPkts |
number of packets received at application layer by each node (index is node ID) | |
const std::vector< std::string > | m_staChannels |
strings specifying channels for STA | |
std::vector< Ptr< StaWifiMac > > | m_staMacs |
STA wifi MACs. | |
std::vector< FrameInfo > | m_txPsdus |
transmitted PSDUs | |
Test update of BA starting sequence number after ADDBA Response timeout in multi-link operations.
In this test, an AP MLD and a non-AP MLD setup 2 links. The AP MLD has a QoS data frame to transmit to the non-AP MLD, which triggers the establishment of a BA agreement. When the ADDBA Request frame is received by the non-AP MLD, transmissions of the non-AP MLD are blocked to put the transmission of the ADDBA Response on hold. The goal is to mimic a delay in getting channel access due to, e.g., other devices grabbing the medium. When the ADDBA Response timer at the AP MLD expires, transmissions of the non-AP MLD are unblocked, so that the AP MLD sends the QoS data frame (protected by RTS, but the test works without RTS as well, and using Normal acknowledgment) on one link and the non-AP MLD sends the ADDBA Response on the other link. The transmission of the QoS data frame is then corrupted. We verify that:
Definition at line 758 of file wifi-mlo-test.h.
StartSeqNoUpdateAfterAddBaTimeoutTest::StartSeqNoUpdateAfterAddBaTimeoutTest | ( | ) |
Definition at line 2823 of file wifi-mlo-test.cc.
|
overrideprivatevirtual |
Implementation to actually run this TestCase.
Subclasses should override this method to conduct their tests.
Implements ns3::TestCase.
Definition at line 2967 of file wifi-mlo-test.cc.
References ns3::Simulator::Destroy(), MultiLinkOperationsTestBase::m_duration, m_nQosDataCount, MultiLinkOperationsTestBase::m_rxPkts, NS_TEST_EXPECT_MSG_EQ, ns3::Simulator::Run(), and ns3::Simulator::Stop().
|
overrideprivatevirtual |
Implementation to do any local setup required for this TestCase.
Subclasses should override this method to perform any costly per-test setup before DoRun is invoked.
Reimplemented from MultiLinkOperationsTestBase.
Definition at line 2836 of file wifi-mlo-test.cc.
References MultiLinkOperationsTestBase::DoSetup(), m_staErrorModel, MultiLinkOperationsTestBase::m_staMacs, and ns3::Config::SetDefault().
|
overrideprivatevirtual |
Start the generation of traffic (needs to be overridden)
Reimplemented from MultiLinkOperationsTestBase.
Definition at line 2851 of file wifi-mlo-test.cc.
References MultiLinkOperationsTestBase::GetApplication(), MultiLinkOperationsTestBase::m_apMac, m_sockAddr, MultiLinkOperationsTestBase::m_staMacs, ns3::PacketSocketAddress::SetPhysicalAddress(), ns3::PacketSocketAddress::SetProtocol(), and ns3::PacketSocketAddress::SetSingleDevice().
|
overrideprivatevirtual |
Callback invoked when a FEM passes PSDUs to the PHY.
mac | the MAC transmitting the PSDUs |
phyId | the ID of the PHY transmitting the PSDUs |
psduMap | the PSDU map |
txVector | the TX vector |
txPowerW | the tx power in Watts |
Reimplemented from MultiLinkOperationsTestBase.
Definition at line 2862 of file wifi-mlo-test.cc.
References ns3::AC_BE, ns3::WifiActionHeader::BLOCK_ACK, ns3::WifiActionHeader::BLOCK_ACK_ADDBA_REQUEST, ns3::WifiActionHeader::ActionValue::blockAck, ns3::WifiPhy::CalculateTxDuration(), ns3::WifiActionHeader::GetAction(), ns3::WifiActionHeader::GetCategory(), MultiLinkOperationsTestBase::m_apMac, MultiLinkOperationsTestBase::m_staMacs, MultiLinkOperationsTestBase::m_txPsdus, NS_TEST_ASSERT_MSG_EQ, and ns3::Simulator::Schedule().
|
private |
counter for transmitted QoS data frames
Definition at line 774 of file wifi-mlo-test.h.
Referenced by DoRun().
|
private |
|
private |
error rate model to corrupt frames at the non-AP MLD
Definition at line 775 of file wifi-mlo-test.h.
Referenced by DoSetup().