wifi: Hold pointers to STA and AP MAC in base FEM
This commit is contained in:
@@ -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<WifiMac> mac)
|
||||
{
|
||||
NS_LOG_FUNCTION(this << mac);
|
||||
m_mac = mac;
|
||||
m_apMac = DynamicCast<ApWifiMac>(m_mac);
|
||||
m_staMac = DynamicCast<StaWifiMac>(mac);
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -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<WifiMac> m_mac; //!< the MAC layer on this station
|
||||
Ptr<ApWifiMac> m_apMac; //!< AP MAC layer pointer (null if not an AP)
|
||||
Ptr<StaWifiMac> m_staMac; //!< STA MAC layer pointer (null if not a STA)
|
||||
Ptr<MacTxMiddle> m_txMiddle; //!< the MAC TX Middle on this station
|
||||
Ptr<MacRxMiddle> m_rxMiddle; //!< the MAC RX Middle on this station
|
||||
Ptr<ChannelAccessManager> m_channelAccessManager; //!< the channel access manager
|
||||
|
||||
@@ -92,14 +92,6 @@ HeFrameExchangeManager::Reset()
|
||||
VhtFrameExchangeManager::Reset();
|
||||
}
|
||||
|
||||
void
|
||||
HeFrameExchangeManager::SetWifiMac(const Ptr<WifiMac> mac)
|
||||
{
|
||||
m_apMac = DynamicCast<ApWifiMac>(mac);
|
||||
m_staMac = DynamicCast<StaWifiMac>(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();
|
||||
|
||||
@@ -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<QosTxop> edca, Time availableTime, bool initialFrame) override;
|
||||
void SetWifiMac(const Ptr<WifiMac> mac) override;
|
||||
void CalculateAcknowledgmentTime(WifiAcknowledgment* acknowledgment) const override;
|
||||
void CalculateProtectionTime(WifiProtection* protection) const override;
|
||||
std::optional<Mac48Address> FindTxopHolder(const WifiMacHeader& hdr,
|
||||
@@ -362,8 +359,6 @@ class HeFrameExchangeManager : public VhtFrameExchangeManager
|
||||
*/
|
||||
virtual void ReceivedQosNullAfterBsrpTf(Mac48Address sender);
|
||||
|
||||
Ptr<ApWifiMac> m_apMac; //!< MAC pointer (null if not an AP)
|
||||
Ptr<StaWifiMac> 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
|
||||
|
||||
@@ -694,10 +694,9 @@ QosFrameExchangeManager::PreProcessFrame(Ptr<const WifiPsdu> psdu, const WifiTxV
|
||||
NS_LOG_DEBUG("Station " << hdr.GetAddr2() << " reported a buffer status of "
|
||||
<< +hdr.GetQosQueueSize()
|
||||
<< " for tid=" << +hdr.GetQosTid());
|
||||
StaticCast<ApWifiMac>(m_mac)->SetBufferStatus(
|
||||
hdr.GetQosTid(),
|
||||
mpdu->GetOriginal()->GetHeader().GetAddr2(),
|
||||
hdr.GetQosQueueSize());
|
||||
m_apMac->SetBufferStatus(hdr.GetQosTid(),
|
||||
mpdu->GetOriginal()->GetHeader().GetAddr2(),
|
||||
hdr.GetQosQueueSize());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user