From fe3a0ad5d8c23d12eb152391180a37a89df37654 Mon Sep 17 00:00:00 2001 From: Stefano Avallone Date: Wed, 17 Aug 2022 17:55:56 +0200 Subject: [PATCH] wifi: Fix BlockAckManager searching for BA agreement When transmitting a DL MU PPDU containing PSDUs of different ACs with the ACK-SU-FORMAT acknowledgment sequence, BARs for different ACs may be stored by the BlockAckManager corresponding to the AC that gained channel access. When processing such BARs, the BlockAckManager has to search among the BE agreements of the proper BlockAckManager. --- RELEASE_NOTES.md | 1 + src/wifi/model/block-ack-manager.cc | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index ffa1d9706..a627947a8 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -38,6 +38,7 @@ Release 3-dev - (wifi) #709 Adjust WifiPhy::RxSensitivity with channel width for YansWifiChannel - (wifi) Align default TXOP limit for VI and VO to 802.11-2020 - (wifi) #696 - 802.11ax assert failed. cond="seqNumber < SEQNO_SPACE_SIZE && startingSeqNumber < SEQNO_SPACE_SIZE" +- (wifi) Fix acknowledgment in SU format for DL MU PPDUs including PSDUs of different TIDs Release 3.36.1 -------------- diff --git a/src/wifi/model/block-ack-manager.cc b/src/wifi/model/block-ack-manager.cc index 21d427196..2709101cd 100644 --- a/src/wifi/model/block-ack-manager.cc +++ b/src/wifi/model/block-ack-manager.cc @@ -293,7 +293,8 @@ BlockAckManager::GetBar (bool remove, uint8_t tid, Mac48Address address) } if (nextBar->bar->GetHeader ().IsBlockAckReq ()) { - AgreementsI it = m_agreements.find (std::make_pair (recipient, nextBar->tid)); + auto bam = m_bamMap.at (QosUtilsMapTidToAc (nextBar->tid)); + AgreementsI it = bam->m_agreements.find (std::make_pair (recipient, nextBar->tid)); if (it == m_agreements.end ()) { // BA agreement was torn down; remove this BAR and continue