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.
This commit is contained in:
Stefano Avallone
2023-09-11 13:33:02 +02:00
parent c24de8e319
commit d6db2e45de

View File

@@ -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<HtFrameExchangeManager>(qosFem);
mpdu = htFem->GetMsduAggregator()->GetNextAmsdu(peekedItem, txParams, availableTime);