wifi: Aux PHYs cannot receive A-MPDUs

This commit is contained in:
Stefano Avallone
2024-04-23 20:17:30 +02:00
parent a4ece26afc
commit 17fbcaba2f
2 changed files with 25 additions and 0 deletions

View File

@@ -1207,6 +1207,27 @@ EhtFrameExchangeManager::ReceiveMpdu(Ptr<const WifiMpdu> mpdu,
}
}
void
EhtFrameExchangeManager::EndReceiveAmpdu(Ptr<const WifiPsdu> psdu,
const RxSignalInfo& rxSignalInfo,
const WifiTxVector& txVector,
const std::vector<bool>& perMpduStatus)
{
NS_LOG_FUNCTION(
this << *psdu << rxSignalInfo << txVector << perMpduStatus.size()
<< std::all_of(perMpduStatus.begin(), perMpduStatus.end(), [](bool v) { return v; }));
// In our model, we make the assumption that an aux PHY is not able to receive an A-MPDU
if (m_staMac && m_staMac->IsEmlsrLink(m_linkId) &&
m_mac->GetLinkForPhy(m_staMac->GetEmlsrManager()->GetMainPhyId()) != m_linkId)
{
NS_LOG_DEBUG("Dropping " << *psdu << " received by an aux PHY on link " << +m_linkId);
return;
}
HeFrameExchangeManager::EndReceiveAmpdu(psdu, rxSignalInfo, txVector, perMpduStatus);
}
bool
EhtFrameExchangeManager::DropReceivedIcf()
{

View File

@@ -183,6 +183,10 @@ class EhtFrameExchangeManager : public HeFrameExchangeManager
RxSignalInfo rxSignalInfo,
const WifiTxVector& txVector,
bool inAmpdu) override;
void EndReceiveAmpdu(Ptr<const WifiPsdu> psdu,
const RxSignalInfo& rxSignalInfo,
const WifiTxVector& txVector,
const std::vector<bool>& perMpduStatus) override;
void NavResetTimeout() override;
void IntraBssNavResetTimeout() override;
void SendCtsAfterRts(const WifiMacHeader& rtsHdr, WifiMode rtsTxMode, double rtsSnr) override;