From 18d5b58e88cd6c133d6422b33404f4705b49c8a3 Mon Sep 17 00:00:00 2001 From: Stefano Avallone Date: Tue, 25 Jul 2023 14:58:31 +0200 Subject: [PATCH] wifi: Fix resetting current MPDU when no ack is required --- src/wifi/model/frame-exchange-manager.cc | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/wifi/model/frame-exchange-manager.cc b/src/wifi/model/frame-exchange-manager.cc index d35d2d454..ab924bfab 100644 --- a/src/wifi/model/frame-exchange-manager.cc +++ b/src/wifi/model/frame-exchange-manager.cc @@ -415,12 +415,6 @@ FrameExchangeManager::SendMpduWithProtection(Ptr mpdu, WifiTxParameter } StartProtection(m_txParams); - - if (m_txParams.m_acknowledgment->method == WifiAcknowledgment::NONE) - { - // we are done with frames that do not require acknowledgment - m_mpdu = nullptr; - } } void @@ -473,14 +467,17 @@ FrameExchangeManager::SendMpdu() if (m_txParams.m_acknowledgment->method == WifiAcknowledgment::NONE) { - Simulator::Schedule(txDuration, &FrameExchangeManager::TransmissionSucceeded, this); - if (!m_mpdu->GetHeader().IsQosData() || m_mpdu->GetHeader().GetQosAckPolicy() == WifiMacHeader::NO_ACK) { // No acknowledgment, hence dequeue the MPDU if it is stored in a queue DequeueMpdu(m_mpdu); } + + Simulator::Schedule(txDuration, [=, this]() { + TransmissionSucceeded(); + m_mpdu = nullptr; + }); } else if (m_txParams.m_acknowledgment->method == WifiAcknowledgment::NORMAL_ACK) {