From e806abc0fba68db1526c1f1da0eb3c04020ee9c9 Mon Sep 17 00:00:00 2001 From: Stefano Avallone Date: Mon, 26 Aug 2024 17:27:19 +0200 Subject: [PATCH] wifi: Clear PSDU map if no immediate response expected with BAR-BA ack sequence Otherwise, HeFEM::ProtectionCompleted() called upon sending the first BAR will enter the wrong if branch --- RELEASE_NOTES.md | 1 + src/wifi/model/he/he-frame-exchange-manager.cc | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index edb9246ac..c2255bd4f 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -48,6 +48,7 @@ The required Doxygen version for documentation generation is version 1.11. ### Bugs fixed - (wifi) Retransmit procedures have been aligned with the standard specifications. +- (wifi) Clear PSDU map if no immediate response expected with BAR-BA ack sequence ## Release 3.43 diff --git a/src/wifi/model/he/he-frame-exchange-manager.cc b/src/wifi/model/he/he-frame-exchange-manager.cc index 2f8f52610..7f632e750 100644 --- a/src/wifi/model/he/he-frame-exchange-manager.cc +++ b/src/wifi/model/he/he-frame-exchange-manager.cc @@ -927,9 +927,12 @@ HeFrameExchangeManager::SendPsduMap() auto hePhy = StaticCast(m_phy->GetPhyEntity(responseTxVector->GetModulationClass())); hePhy->SetTrigVector(m_trigVector, m_txTimer.GetDelayLeft()); } - else if (timerType == WifiTxTimer::NOT_RUNNING && m_txParams.m_txVector.IsUlMu()) + else if (timerType == WifiTxTimer::NOT_RUNNING && + (m_txParams.m_txVector.IsUlMu() || + m_txParams.m_acknowledgment->method == WifiAcknowledgment::DL_MU_BAR_BA_SEQUENCE)) { - // clear m_psduMap after sending QoS Null frames following a BSRP Trigger Frame + // clear m_psduMap after sending QoS Null frames following a BSRP Trigger Frame or after + // sending a DL MU PPDU with BAR-BA ack sequence and no immediate response is expected Simulator::Schedule(txDuration, &WifiPsduMap::clear, &m_psduMap); }