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.
This commit is contained in:
Stefano Avallone
2022-08-17 17:55:56 +02:00
committed by Stefano Avallone
parent 493e6c5197
commit fe3a0ad5d8
2 changed files with 3 additions and 1 deletions

View File

@@ -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
--------------

View File

@@ -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