wifi: Fill in Block Ack Parameter Set field as per specs

This commit is contained in:
Stefano Avallone
2022-01-13 18:13:46 +01:00
committed by Stefano Avallone
parent c37f7fa784
commit ca589eadbd
3 changed files with 12 additions and 12 deletions

View File

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

View File

@@ -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<const WifiMacQueueItem> 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<WifiMacQueueItem> 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 ())

View File

@@ -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<WifiPsdu> psdu = Create<WifiPsdu> (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<WifiMacQueueItem> item = m_mac->GetBEQueue ()->GetNextMpdu (peeked, txParams, Time::Min (), true);
auto mpduList = mpduAggregator->GetNextAmpdu (item, txParams, Time::Min ());
Ptr<WifiPsdu> psdu = Create<WifiPsdu> (mpduList);
htFem->DequeuePsdu (psdu);