diff --git a/src/wifi/model/txop.cc b/src/wifi/model/txop.cc index a9c0e9631..653e922ec 100644 --- a/src/wifi/model/txop.cc +++ b/src/wifi/model/txop.cc @@ -531,8 +531,14 @@ void Txop::Queue(Ptr mpdu) { NS_LOG_FUNCTION(this << *mpdu); - auto linkIds = m_mac->GetMacQueueScheduler()->GetLinkIds(m_queue->GetAc(), mpdu); - std::map hasFramesToTransmit; + + // channel access can be requested on a blocked link, if the reason for blocking the link + // is temporary + auto linkIds = m_mac->GetMacQueueScheduler()->GetLinkIds( + m_queue->GetAc(), + mpdu, + {WifiQueueBlockedReason::USING_OTHER_EMLSR_LINK, + WifiQueueBlockedReason::WAITING_EMLSR_TRANSITION_DELAY}); // ignore the links for which a channel access request event is already running for (auto it = linkIds.begin(); it != linkIds.end();) @@ -549,6 +555,7 @@ Txop::Queue(Ptr mpdu) // save the status of the AC queues before enqueuing the MPDU (required to determine if // backoff is needed) + std::map hasFramesToTransmit; for (const auto linkId : linkIds) { hasFramesToTransmit[linkId] = HasFramesToTransmit(linkId);