diff --git a/src/wifi/model/wifi-default-ack-manager.cc b/src/wifi/model/wifi-default-ack-manager.cc index 92c136317..48497c850 100644 --- a/src/wifi/model/wifi-default-ack-manager.cc +++ b/src/wifi/model/wifi-default-ack-manager.cc @@ -130,7 +130,8 @@ WifiDefaultAckManager::IsResponseNeeded(Ptr mpdu, NS_LOG_FUNCTION(this << *mpdu << &txParams); uint8_t tid = mpdu->GetHeader().GetQosTid(); - Mac48Address receiver = mpdu->GetOriginal()->GetHeader().GetAddr1(); + auto receiver = mpdu->GetHeader().GetAddr1(); + auto origReceiver = mpdu->GetOriginal()->GetHeader().GetAddr1(); Ptr edca = m_mac->GetQosTxop(tid); // An immediate response (Ack or Block Ack) is needed if any of the following holds: @@ -144,9 +145,11 @@ WifiDefaultAckManager::IsResponseNeeded(Ptr mpdu, return !( m_baThreshold > 0 && GetMaxDistFromStartingSeq(mpdu, txParams) < - m_baThreshold * edca->GetBaBufferSize(receiver, tid) && - (edca->GetWifiMacQueue()->GetNPackets({WIFI_QOSDATA_QUEUE, WIFI_UNICAST, receiver, tid}) - - edca->GetBaManager()->GetNBufferedPackets(receiver, tid) > + m_baThreshold * edca->GetBaBufferSize(origReceiver, tid) && + (edca->GetWifiMacQueue()->GetNPackets( + {WIFI_QOSDATA_QUEUE, WIFI_UNICAST, origReceiver, tid}) - + edca->GetBaManager()->GetNBufferedPackets(origReceiver, tid) - + txParams.GetPsduInfo(receiver)->seqNumbers.at(tid).size() >= 1) && !(edca->GetTxopLimit(m_linkId).IsStrictlyPositive() && edca->GetRemainingTxop(m_linkId) == edca->GetTxopLimit(m_linkId) &&