wifi: Create alias for QoS Null frames sent in TB PPDUs

This commit is contained in:
Stefano Avallone
2024-06-05 16:24:43 +02:00
committed by Stefano Avallone
parent 9afe9f8c70
commit 357c1cf398
2 changed files with 5 additions and 4 deletions

View File

@@ -1830,9 +1830,11 @@ HeFrameExchangeManager::SendQosNullFramesInTbPpdu(const CtrlTriggerHeader& trigg
return;
}
const auto addr1 =
GetWifiRemoteStationManager()->GetMldAddress(hdr.GetAddr2()).value_or(hdr.GetAddr2());
WifiMacHeader header(WIFI_MAC_QOSDATA_NULL);
header.SetAddr1(hdr.GetAddr2());
header.SetAddr2(m_self);
header.SetAddr1(addr1);
header.SetAddr2(m_mac->GetAddress());
header.SetAddr3(hdr.GetAddr2());
header.SetDsTo();
header.SetDsNotFrom();
@@ -1869,6 +1871,7 @@ HeFrameExchangeManager::SendQosNullFramesInTbPpdu(const CtrlTriggerHeader& trigg
// TX parameters below.
header.SetQosTid(tid);
auto mpdu = Create<WifiMpdu>(Create<Packet>(), header);
mpdu = CreateAliasIfNeeded(mpdu);
txParams.AddMpdu(mpdu);
UpdateTxDuration(header.GetAddr1(), txParams);

View File

@@ -64,8 +64,6 @@ WifiMpdu::CreateAlias(uint8_t linkId) const
NS_LOG_FUNCTION(this << +linkId);
NS_ABORT_MSG_IF(!std::holds_alternative<OriginalInfo>(m_instanceInfo),
"This method can only be called on the original version of the MPDU");
NS_ABORT_MSG_IF(!IsQueued(),
"This method can only be called if the MPDU is stored in a MAC queue");
auto alias = Ptr<WifiMpdu>(new WifiMpdu, false);