wifi: Hold pointers to STA and AP MAC in base FEM

This commit is contained in:
Sébastien Deronne
2023-06-15 20:16:47 +02:00
parent 1e95559af2
commit 9fd5bd03a6
5 changed files with 13 additions and 18 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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();

View File

@@ -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

View File

@@ -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());
}
}
}