From d2ea9f36ddcc7e6a244bf166790f9bd5b334da84 Mon Sep 17 00:00:00 2001 From: Stefano Avallone Date: Tue, 19 Sep 2023 18:01:00 +0200 Subject: [PATCH] wifi: Generate backoff if needed when MSD timer expires after that no TXOP attempts are allowed --- src/wifi/model/eht/eht-frame-exchange-manager.cc | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/wifi/model/eht/eht-frame-exchange-manager.cc b/src/wifi/model/eht/eht-frame-exchange-manager.cc index 174e5d870..da2576f62 100644 --- a/src/wifi/model/eht/eht-frame-exchange-manager.cc +++ b/src/wifi/model/eht/eht-frame-exchange-manager.cc @@ -187,14 +187,16 @@ EhtFrameExchangeManager::StartTransmission(Ptr edca, uint16_t allowedWidth if (auto elapsed = emlsrManager->GetElapsedMediumSyncDelayTimer(m_linkId); elapsed && emlsrManager->MediumSyncDelayNTxopsExceeded(m_linkId)) { - edca->NotifyChannelReleased(m_linkId); NS_LOG_DEBUG("No new TXOP attempts allowed while MediumSyncDelay is running"); - // request channel access if needed when the MediumSyncDelay timer expires + // request channel access if needed when the MediumSyncDelay timer expires; in the + // meantime no queued packet can be transmitted Simulator::Schedule(emlsrManager->GetMediumSyncDuration() - *elapsed, - &Txop::StartAccessIfNeeded, + &Txop::StartAccessAfterEvent, edca, - m_linkId); - + m_linkId, + false, // queued frames cannot be transmitted until MSD expires + false); // generate backoff regardless of medium busy + NotifyChannelReleased(edca); return false; }