From ca589eadbd790444d03214f14cda7020e5ee8a54 Mon Sep 17 00:00:00 2001 From: Stefano Avallone Date: Thu, 13 Jan 2022 18:13:46 +0100 Subject: [PATCH] wifi: Fill in Block Ack Parameter Set field as per specs --- src/wifi/model/block-ack-manager.cc | 4 ++-- src/wifi/model/ht/ht-frame-exchange-manager.cc | 10 +++++----- src/wifi/test/wifi-aggregation-test.cc | 10 +++++----- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/wifi/model/block-ack-manager.cc b/src/wifi/model/block-ack-manager.cc index a6eba22f9..a948960c0 100644 --- a/src/wifi/model/block-ack-manager.cc +++ b/src/wifi/model/block-ack-manager.cc @@ -185,7 +185,7 @@ BlockAckManager::UpdateAgreement (const MgtAddBaResponseHeader *respHdr, Mac48Ad if (it != m_agreements.end ()) { OriginatorBlockAckAgreement& agreement = it->second.first; - agreement.SetBufferSize (respHdr->GetBufferSize () + 1); + agreement.SetBufferSize (respHdr->GetBufferSize ()); agreement.SetTimeout (respHdr->GetTimeout ()); agreement.SetAmsduSupport (respHdr->IsAmsduSupported ()); agreement.SetStartingSequence (startingSeq); @@ -549,7 +549,7 @@ BlockAckManager::NotifyGotBlockAck (const CtrlBAckResponseHeader& blockAck, Mac4 } return {nSuccessfulMpdus, nFailedMpdus}; } - + void BlockAckManager::NotifyMissedBlockAck (Mac48Address recipient, uint8_t tid) { diff --git a/src/wifi/model/ht/ht-frame-exchange-manager.cc b/src/wifi/model/ht/ht-frame-exchange-manager.cc index 59ae97ac9..4bd7d5794 100644 --- a/src/wifi/model/ht/ht-frame-exchange-manager.cc +++ b/src/wifi/model/ht/ht-frame-exchange-manager.cc @@ -219,7 +219,7 @@ HtFrameExchangeManager::SendAddBaResponse (const MgtAddBaRequestHeader *reqHdr, } respHdr.SetTid (reqHdr->GetTid ()); - respHdr.SetBufferSize (GetSupportedBaBufferSize () - 1); + respHdr.SetBufferSize (GetSupportedBaBufferSize ()); respHdr.SetTimeout (reqHdr->GetTimeout ()); WifiActionHeader actionHdr; @@ -288,9 +288,9 @@ HtFrameExchangeManager::CreateBlockAckAgreement (const MgtAddBaResponseHeader *r { NS_LOG_FUNCTION (this << *respHdr << originator << startingSeq); uint8_t tid = respHdr->GetTid (); - + RecipientBlockAckAgreement agreement (originator, respHdr->IsAmsduSupported (), tid, - respHdr->GetBufferSize () + 1, respHdr->GetTimeout (), + respHdr->GetBufferSize (), respHdr->GetTimeout (), startingSeq, m_mac->GetWifiRemoteStationManager ()->GetHtSupported () && m_mac->GetWifiRemoteStationManager ()->GetHtSupported (originator)); @@ -941,7 +941,7 @@ HtFrameExchangeManager::IsWithinLimitsIfAddMpdu (Ptr mpd { NS_ASSERT (mpdu != 0); NS_LOG_FUNCTION (this << *mpdu << &txParams << ppduDurationLimit); - + Mac48Address receiver = mpdu->GetHeader ().GetAddr1 (); uint32_t ampduSize = txParams.GetSizeIfAddMpdu (mpdu); @@ -1361,7 +1361,7 @@ HtFrameExchangeManager::ReceiveMpdu (Ptr mpdu, RxSignalInfo rx mpdu->GetPacket ()->PeekHeader (blockAckReq); NS_ABORT_MSG_IF (blockAckReq.IsMultiTid (), "Multi-TID BlockAckReq not supported"); uint8_t tid = blockAckReq.GetTidInfo (); - + auto agreementIt = m_agreements.find ({sender, tid}); if (agreementIt == m_agreements.end ()) diff --git a/src/wifi/test/wifi-aggregation-test.cc b/src/wifi/test/wifi-aggregation-test.cc index 49e158a08..306e63c58 100644 --- a/src/wifi/test/wifi-aggregation-test.cc +++ b/src/wifi/test/wifi-aggregation-test.cc @@ -176,7 +176,7 @@ AmpduAggregationTest::DoRun (void) respHdr.SetAmsduSupport (reqHdr.IsAmsduSupported ()); respHdr.SetImmediateBlockAck (); respHdr.SetTid (reqHdr.GetTid ()); - respHdr.SetBufferSize (63); + respHdr.SetBufferSize (64); respHdr.SetTimeout (reqHdr.GetTimeout ()); m_mac->GetBEQueue ()->GetBaManager ()->UpdateAgreement (&respHdr, hdr.GetAddr1 (), 0); @@ -477,7 +477,7 @@ TwoLevelAggregationTest::DoRun (void) respHdr.SetAmsduSupport (reqHdr.IsAmsduSupported ()); respHdr.SetImmediateBlockAck (); respHdr.SetTid (reqHdr.GetTid ()); - respHdr.SetBufferSize (63); + respHdr.SetBufferSize (64); respHdr.SetTimeout (reqHdr.GetTimeout ()); m_mac->GetVIQueue ()->GetBaManager ()->UpdateAgreement (&respHdr, hdr.GetAddr1 (), 0); @@ -523,7 +523,7 @@ TwoLevelAggregationTest::DoRun (void) Ptr psdu = Create (mpduList); htFem->DequeuePsdu (psdu); - + NS_TEST_EXPECT_MSG_EQ (m_mac->GetVIQueue ()->GetWifiMacQueue ()->GetNPackets (), 5, "Unexpected number of MSDUs left in the EDCA queue"); @@ -656,7 +656,7 @@ HeAggregationTest::DoRunSubTest (uint16_t bufferSize) respHdr.SetAmsduSupport (reqHdr.IsAmsduSupported ()); respHdr.SetImmediateBlockAck (); respHdr.SetTid (reqHdr.GetTid ()); - respHdr.SetBufferSize (bufferSize - 1); + respHdr.SetBufferSize (bufferSize); respHdr.SetTimeout (reqHdr.GetTimeout ()); m_mac->GetBEQueue ()->GetBaManager ()->UpdateAgreement (&respHdr, hdr.GetAddr1 (), 0); @@ -683,7 +683,7 @@ HeAggregationTest::DoRunSubTest (uint16_t bufferSize) WifiTxParameters txParams; txParams.m_txVector = m_mac->GetWifiRemoteStationManager ()->GetDataTxVector (peeked->GetHeader ()); Ptr item = m_mac->GetBEQueue ()->GetNextMpdu (peeked, txParams, Time::Min (), true); - + auto mpduList = mpduAggregator->GetNextAmpdu (item, txParams, Time::Min ()); Ptr psdu = Create (mpduList); htFem->DequeuePsdu (psdu);