From d6db2e45dedb12726c5bdd4329cffbba86fd48e3 Mon Sep 17 00:00:00 2001 From: Stefano Avallone Date: Mon, 11 Sep 2023 13:33:02 +0200 Subject: [PATCH] wifi: Do not start A-MSDU aggregation if an A-MSDU is found in the queue A-MSDUs with no assigned sequence number may be found in the queue after an RTS/CTS failure. --- src/wifi/model/qos-txop.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/wifi/model/qos-txop.cc b/src/wifi/model/qos-txop.cc index 6cf0d7f59..e1f133c2d 100644 --- a/src/wifi/model/qos-txop.cc +++ b/src/wifi/model/qos-txop.cc @@ -520,9 +520,11 @@ QosTxop::GetNextMpdu(uint8_t linkId, GetBaStartingSequence(peekedItem->GetOriginal()->GetHeader().GetAddr1(), tid), GetBaBufferSize(peekedItem->GetOriginal()->GetHeader().GetAddr1(), tid))); - // try A-MSDU aggregation + // try A-MSDU aggregation if the MPDU does not contain an A-MSDU and does not already + // have a sequence number assigned (may be a retransmission) if (m_mac->GetHtSupported() && !recipient.IsBroadcast() && - !peekedItem->HasSeqNoAssigned() && !peekedItem->IsFragment()) + !peekedItem->GetHeader().IsQosAmsdu() && !peekedItem->HasSeqNoAssigned() && + !peekedItem->IsFragment()) { auto htFem = StaticCast(qosFem); mpdu = htFem->GetMsduAggregator()->GetNextAmsdu(peekedItem, txParams, availableTime);