A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
StartSeqNoUpdateAfterAddBaTimeoutTest Class Reference

Test update of BA starting sequence number after ADDBA Response timeout in multi-link operations. More...

#include "wifi-mlo-test.h"

+ Inheritance diagram for StartSeqNoUpdateAfterAddBaTimeoutTest:
+ Collaboration diagram for StartSeqNoUpdateAfterAddBaTimeoutTest:

Public Member Functions

 StartSeqNoUpdateAfterAddBaTimeoutTest ()
 
- Public Member Functions inherited from ns3::TestCase
 TestCase (const TestCase &)=delete
 
virtual ~TestCase ()
 Destructor.
 
std::string GetName () const
 
TestCaseoperator= (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< ListErrorModelm_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
 
 Uplink or Downlink direction. More...
- 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.
 
TestCaseGetParent () 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.
 

Detailed Description

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:

  • when the AP MLD receives the ADDBA Response, the BA starting sequence number is set to the sequence number of the QoS data frame which is inflight
  • the QoS data frame is retransmitted and received by the non-AP MLD

Definition at line 758 of file wifi-mlo-test.h.

Constructor & Destructor Documentation

◆ StartSeqNoUpdateAfterAddBaTimeoutTest()

StartSeqNoUpdateAfterAddBaTimeoutTest::StartSeqNoUpdateAfterAddBaTimeoutTest ( )

Definition at line 2823 of file wifi-mlo-test.cc.

Member Function Documentation

◆ DoRun()

void StartSeqNoUpdateAfterAddBaTimeoutTest::DoRun ( )
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().

+ Here is the call graph for this function:

◆ DoSetup()

void StartSeqNoUpdateAfterAddBaTimeoutTest::DoSetup ( )
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().

+ Here is the call graph for this function:

◆ StartTraffic()

void StartSeqNoUpdateAfterAddBaTimeoutTest::StartTraffic ( )
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().

+ Here is the call graph for this function:

◆ Transmit()

void StartSeqNoUpdateAfterAddBaTimeoutTest::Transmit ( Ptr< WifiMac > mac,
uint8_t phyId,
WifiConstPsduMap psduMap,
WifiTxVector txVector,
double txPowerW )
overrideprivatevirtual

Callback invoked when a FEM passes PSDUs to the PHY.

Parameters
macthe MAC transmitting the PSDUs
phyIdthe ID of the PHY transmitting the PSDUs
psduMapthe PSDU map
txVectorthe TX vector
txPowerWthe 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().

+ Here is the call graph for this function:

Member Data Documentation

◆ m_nQosDataCount

std::size_t StartSeqNoUpdateAfterAddBaTimeoutTest::m_nQosDataCount
private

counter for transmitted QoS data frames

Definition at line 774 of file wifi-mlo-test.h.

Referenced by DoRun().

◆ m_sockAddr

PacketSocketAddress StartSeqNoUpdateAfterAddBaTimeoutTest::m_sockAddr
private

packet socket address

Definition at line 773 of file wifi-mlo-test.h.

Referenced by StartTraffic().

◆ m_staErrorModel

Ptr<ListErrorModel> StartSeqNoUpdateAfterAddBaTimeoutTest::m_staErrorModel
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().


The documentation for this class was generated from the following files: