From 3c868fce40b99fe5abe2fbbc8985288534f0f9a3 Mon Sep 17 00:00:00 2001 From: Stefano Avallone Date: Sat, 1 Jun 2024 16:01:08 +0200 Subject: [PATCH] wifi: An EMLSR client responding to a BSRP TF must be considered protected --- src/wifi/model/eht/eht-frame-exchange-manager.cc | 14 ++++++++++++++ src/wifi/model/eht/eht-frame-exchange-manager.h | 1 + src/wifi/model/he/he-frame-exchange-manager.h | 2 +- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/wifi/model/eht/eht-frame-exchange-manager.cc b/src/wifi/model/eht/eht-frame-exchange-manager.cc index 4e169202f..ac9719101 100644 --- a/src/wifi/model/eht/eht-frame-exchange-manager.cc +++ b/src/wifi/model/eht/eht-frame-exchange-manager.cc @@ -782,6 +782,20 @@ EhtFrameExchangeManager::SetIcfPaddingAndTxVector(CtrlTriggerHeader& trigger, } } +void +EhtFrameExchangeManager::ReceivedQosNullAfterBsrpTf(Mac48Address sender) +{ + NS_LOG_FUNCTION(this << sender); + + // an EMLSR client responding to a BSRP TF must be considered protected + if (GetWifiRemoteStationManager()->GetEmlsrEnabled(sender)) + { + m_protectedStas.insert(sender); + } + + HeFrameExchangeManager::ReceivedQosNullAfterBsrpTf(sender); +} + void EhtFrameExchangeManager::SendCtsAfterMuRts(const WifiMacHeader& muRtsHdr, const CtrlTriggerHeader& trigger, diff --git a/src/wifi/model/eht/eht-frame-exchange-manager.h b/src/wifi/model/eht/eht-frame-exchange-manager.h index 7bc0be450..5ab6fbaa3 100644 --- a/src/wifi/model/eht/eht-frame-exchange-manager.h +++ b/src/wifi/model/eht/eht-frame-exchange-manager.h @@ -199,6 +199,7 @@ class EhtFrameExchangeManager : public HeFrameExchangeManager void IntraBssNavResetTimeout() override; void SendCtsAfterRts(const WifiMacHeader& rtsHdr, WifiMode rtsTxMode, double rtsSnr) override; void PsduRxError(Ptr psdu) override; + void ReceivedQosNullAfterBsrpTf(Mac48Address sender) override; private: /** diff --git a/src/wifi/model/he/he-frame-exchange-manager.h b/src/wifi/model/he/he-frame-exchange-manager.h index 422bfd82c..f589ab375 100644 --- a/src/wifi/model/he/he-frame-exchange-manager.h +++ b/src/wifi/model/he/he-frame-exchange-manager.h @@ -348,7 +348,7 @@ class HeFrameExchangeManager : public VhtFrameExchangeManager * * \param sender the MAC address of the given sender */ - void ReceivedQosNullAfterBsrpTf(Mac48Address sender); + virtual void ReceivedQosNullAfterBsrpTf(Mac48Address sender); Ptr m_apMac; //!< MAC pointer (null if not an AP) Ptr m_staMac; //!< MAC pointer (null if not a STA)