diff --git a/src/wifi/model/frame-exchange-manager.cc b/src/wifi/model/frame-exchange-manager.cc index 68f2f1b67..2dc2d479a 100644 --- a/src/wifi/model/frame-exchange-manager.cc +++ b/src/wifi/model/frame-exchange-manager.cc @@ -8,6 +8,7 @@ #include "frame-exchange-manager.h" +#include "ap-wifi-mac.h" #include "snr-tag.h" #include "sta-wifi-mac.h" #include "wifi-mac-queue.h" @@ -91,6 +92,8 @@ FrameExchangeManager::DoDispose() Reset(); m_fragmentedPacket = nullptr; m_mac = nullptr; + m_apMac = nullptr; + m_staMac = nullptr; m_txMiddle = nullptr; m_rxMiddle = nullptr; m_channelAccessManager = nullptr; @@ -138,6 +141,8 @@ FrameExchangeManager::SetWifiMac(Ptr mac) { NS_LOG_FUNCTION(this << mac); m_mac = mac; + m_apMac = DynamicCast(m_mac); + m_staMac = DynamicCast(mac); } void diff --git a/src/wifi/model/frame-exchange-manager.h b/src/wifi/model/frame-exchange-manager.h index 1ff08f6ab..1256fc3e4 100644 --- a/src/wifi/model/frame-exchange-manager.h +++ b/src/wifi/model/frame-exchange-manager.h @@ -35,6 +35,9 @@ namespace ns3 { +class ApWifiMac; +class StaWifiMac; + struct RxSignalInfo; struct WifiProtection; struct WifiAcknowledgment; @@ -506,6 +509,8 @@ class FrameExchangeManager : public Object WifiTxTimer m_txTimer; //!< the timer set upon frame transmission EventId m_navResetEvent; //!< the event to reset the NAV after an RTS Ptr m_mac; //!< the MAC layer on this station + Ptr m_apMac; //!< AP MAC layer pointer (null if not an AP) + Ptr m_staMac; //!< STA MAC layer pointer (null if not a STA) Ptr m_txMiddle; //!< the MAC TX Middle on this station Ptr m_rxMiddle; //!< the MAC RX Middle on this station Ptr m_channelAccessManager; //!< the channel access manager diff --git a/src/wifi/model/he/he-frame-exchange-manager.cc b/src/wifi/model/he/he-frame-exchange-manager.cc index 2f66a259b..2f8f52610 100644 --- a/src/wifi/model/he/he-frame-exchange-manager.cc +++ b/src/wifi/model/he/he-frame-exchange-manager.cc @@ -92,14 +92,6 @@ HeFrameExchangeManager::Reset() VhtFrameExchangeManager::Reset(); } -void -HeFrameExchangeManager::SetWifiMac(const Ptr mac) -{ - m_apMac = DynamicCast(mac); - m_staMac = DynamicCast(mac); - VhtFrameExchangeManager::SetWifiMac(mac); -} - void HeFrameExchangeManager::RxStartIndication(WifiTxVector txVector, Time psduDuration) { @@ -113,7 +105,6 @@ void HeFrameExchangeManager::DoDispose() { NS_LOG_FUNCTION(this); - m_apMac = nullptr; m_staMac = nullptr; m_psduMap.clear(); m_txParams.Clear(); diff --git a/src/wifi/model/he/he-frame-exchange-manager.h b/src/wifi/model/he/he-frame-exchange-manager.h index 22d15fa62..2b510a044 100644 --- a/src/wifi/model/he/he-frame-exchange-manager.h +++ b/src/wifi/model/he/he-frame-exchange-manager.h @@ -20,8 +20,6 @@ namespace ns3 { class MultiUserScheduler; -class ApWifiMac; -class StaWifiMac; class CtrlTriggerHeader; /** @@ -65,7 +63,6 @@ class HeFrameExchangeManager : public VhtFrameExchangeManager ~HeFrameExchangeManager() override; bool StartFrameExchange(Ptr edca, Time availableTime, bool initialFrame) override; - void SetWifiMac(const Ptr mac) override; void CalculateAcknowledgmentTime(WifiAcknowledgment* acknowledgment) const override; void CalculateProtectionTime(WifiProtection* protection) const override; std::optional FindTxopHolder(const WifiMacHeader& hdr, @@ -362,8 +359,6 @@ class HeFrameExchangeManager : public VhtFrameExchangeManager */ 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) WifiTxVector m_trigVector; //!< the TRIGVECTOR Time m_intraBssNavEnd; //!< intra-BSS NAV expiration time EventId m_intraBssNavResetEvent; //!< the event to reset the intra-BSS NAV after an RTS diff --git a/src/wifi/model/qos-frame-exchange-manager.cc b/src/wifi/model/qos-frame-exchange-manager.cc index 46cfaee5b..29b615411 100644 --- a/src/wifi/model/qos-frame-exchange-manager.cc +++ b/src/wifi/model/qos-frame-exchange-manager.cc @@ -694,10 +694,9 @@ QosFrameExchangeManager::PreProcessFrame(Ptr psdu, const WifiTxV NS_LOG_DEBUG("Station " << hdr.GetAddr2() << " reported a buffer status of " << +hdr.GetQosQueueSize() << " for tid=" << +hdr.GetQosTid()); - StaticCast(m_mac)->SetBufferStatus( - hdr.GetQosTid(), - mpdu->GetOriginal()->GetHeader().GetAddr2(), - hdr.GetQosQueueSize()); + m_apMac->SetBufferStatus(hdr.GetQosTid(), + mpdu->GetOriginal()->GetHeader().GetAddr2(), + hdr.GetQosQueueSize()); } } }