diff --git a/RELEASE_NOTES b/RELEASE_NOTES index 169e34677..a612b7329 100644 --- a/RELEASE_NOTES +++ b/RELEASE_NOTES @@ -30,6 +30,7 @@ New user-visible features Bugs fixed ---------- - (wifi) #467 - WiFi: Failed association process +- (wifi) #468 - WiFi: Wrong txDuration for trigger frame Release 3.35 ============ diff --git a/src/wifi/model/he/he-frame-exchange-manager.cc b/src/wifi/model/he/he-frame-exchange-manager.cc index c364e91c0..b0f6ec8f0 100644 --- a/src/wifi/model/he/he-frame-exchange-manager.cc +++ b/src/wifi/model/he/he-frame-exchange-manager.cc @@ -356,7 +356,8 @@ HeFrameExchangeManager::SendPsduMap (void) m_staExpectTbPpduFrom.insert (station.first); } - Time txDuration = m_phy->CalculateTxDuration (m_triggerFrame->GetSize (), + Ptr triggerPsdu = GetWifiPsdu (m_triggerFrame, acknowledgment->muBarTxVector); + Time txDuration = m_phy->CalculateTxDuration (triggerPsdu->GetSize (), acknowledgment->muBarTxVector, m_phy->GetPhyBand ()); // update acknowledgmentTime to correctly set the Duration/ID @@ -372,7 +373,7 @@ HeFrameExchangeManager::SendPsduMap (void) &m_staExpectTbPpduFrom, m_staExpectTbPpduFrom.size ()); m_channelAccessManager->NotifyAckTimeoutStartNow (timeout); - ForwardMpduDown (m_triggerFrame, acknowledgment->muBarTxVector); + ForwardPsduDown (triggerPsdu, acknowledgment->muBarTxVector); return; } } @@ -733,6 +734,11 @@ HeFrameExchangeManager::CalculateAcknowledgmentTime (WifiAcknowledgment* acknowl txVector, m_phy->GetPhyBand ()); uint32_t muBarSize = GetMuBarSize (dlMuTfMuBarAcknowledgment->barTypes); + if (dlMuTfMuBarAcknowledgment->muBarTxVector.GetModulationClass () >= WIFI_MOD_CLASS_VHT) + { + // MU-BAR TF will be sent as an S-MPDU + muBarSize = MpduAggregator::GetSizeIfAggregated (muBarSize, 0); + } dlMuTfMuBarAcknowledgment->acknowledgmentTime = m_phy->GetSifs () + m_phy->CalculateTxDuration (muBarSize, dlMuTfMuBarAcknowledgment->muBarTxVector, diff --git a/src/wifi/model/ht/ht-frame-exchange-manager.cc b/src/wifi/model/ht/ht-frame-exchange-manager.cc index 20fb6a915..184d3f09c 100644 --- a/src/wifi/model/ht/ht-frame-exchange-manager.cc +++ b/src/wifi/model/ht/ht-frame-exchange-manager.cc @@ -431,7 +431,7 @@ HtFrameExchangeManager::SendMpduFromBaManager (Ptr edca, Time available // we can transmit the BlockAckReq frame Ptr mpdu = edca->GetBaManager ()->GetBar (); - SendPsduWithProtection (Create (mpdu, false), txParams); + SendPsduWithProtection (GetWifiPsdu (Copy (mpdu), txParams.m_txVector), txParams); return true; }