From 85f24694e9970307e6f080c5a3e728bac4795260 Mon Sep 17 00:00:00 2001 From: Stefano Avallone Date: Sat, 20 Jun 2020 16:03:34 +0200 Subject: [PATCH] wifi: No need to pass EifsNoDifs around --- src/mesh/model/dot11s/airtime-metric.cc | 6 +++-- src/wifi/model/channel-access-manager.cc | 12 ++-------- src/wifi/model/channel-access-manager.h | 19 +++++----------- src/wifi/model/regular-wifi-mac.cc | 13 ----------- src/wifi/model/regular-wifi-mac.h | 2 -- src/wifi/model/wifi-mac.cc | 23 ------------------- src/wifi/model/wifi-mac.h | 24 -------------------- src/wifi/test/channel-access-manager-test.cc | 19 ++++++++++++++-- 8 files changed, 29 insertions(+), 89 deletions(-) diff --git a/src/mesh/model/dot11s/airtime-metric.cc b/src/mesh/model/dot11s/airtime-metric.cc index 4e87d2978..2caa8f07e 100644 --- a/src/mesh/model/dot11s/airtime-metric.cc +++ b/src/mesh/model/dot11s/airtime-metric.cc @@ -94,8 +94,10 @@ AirtimeLinkMetricCalculator::CalculateMetric (Mac48Address peerAddress, PtrGetPifs () + mac->GetWifiPhy ()->GetSlot () + mac->GetEifsNoDifs () + //DIFS + SIFS + AckTxTime = PIFS + SLOT + EifsNoDifs - mac->GetWifiPhy ()->CalculateTxDuration (m_testFrame->GetSize (), txVector, mac->GetWifiPhy ()->GetFrequency()) + //DIFS + SIFS + AckTxTime = 2 * SIFS + 2 * SLOT + AckTxTime + 2 * mac->GetWifiPhy ()->GetSifs () + 2 * mac->GetWifiPhy ()->GetSlot () + + mac->GetWifiPhy ()->GetAckTxTime () + + mac->GetWifiPhy ()->CalculateTxDuration (m_testFrame->GetSize (), txVector, mac->GetWifiPhy ()->GetFrequency()) ).GetMicroSeconds () / (10.24 * (1.0 - failAvg))); return metric; } diff --git a/src/wifi/model/channel-access-manager.cc b/src/wifi/model/channel-access-manager.cc index 1c5ba1198..9996a94af 100644 --- a/src/wifi/model/channel-access-manager.cc +++ b/src/wifi/model/channel-access-manager.cc @@ -180,18 +180,10 @@ ChannelAccessManager::GetSifs (void) const return m_phy->GetSifs (); } -void -ChannelAccessManager::SetEifsNoDifs (Time eifsNoDifs) -{ - NS_LOG_FUNCTION (this << eifsNoDifs); - m_eifsNoDifs = eifsNoDifs; -} - Time ChannelAccessManager::GetEifsNoDifs () const { - NS_LOG_FUNCTION (this); - return m_eifsNoDifs; + return m_phy->GetSifs () + m_phy->GetAckTxTime (); } void @@ -413,7 +405,7 @@ ChannelAccessManager::GetAccessGrantStart (bool ignoreNav) const Time rxAccessStart = lastRxEnd + GetSifs (); if ((lastRxEnd <= Simulator::Now ()) && !m_lastRxReceivedOk) { - rxAccessStart += m_eifsNoDifs; + rxAccessStart += GetEifsNoDifs (); } Time busyAccessStart = m_lastBusyStart + m_lastBusyDuration + GetSifs (); Time txAccessStart = m_lastTxStart + m_lastTxDuration + GetSifs (); diff --git a/src/wifi/model/channel-access-manager.h b/src/wifi/model/channel-access-manager.h index 9ddfb30ae..3c58766eb 100644 --- a/src/wifi/model/channel-access-manager.h +++ b/src/wifi/model/channel-access-manager.h @@ -73,19 +73,6 @@ public: */ void SetupLow (Ptr low); - /** - * \param eifsNoDifs the duration of a EIFS minus the duration of DIFS. - * - * It is a bad idea to call this method after RequestAccess or - * one of the Notify methods has been invoked. - */ - void SetEifsNoDifs (Time eifsNoDifs); - - /** - * \return value set previously using SetEifsNoDifs. - */ - Time GetEifsNoDifs (void) const; - /** * \param txop a new Txop. * @@ -292,6 +279,12 @@ private: * \return the slot duration */ virtual Time GetSlot (void) const; + /** + * Return the EIFS duration minus a DIFS. + * + * \return the EIFS duration minus a DIFS + */ + virtual Time GetEifsNoDifs (void) const; /** * typedef for a vector of Txops diff --git a/src/wifi/model/regular-wifi-mac.cc b/src/wifi/model/regular-wifi-mac.cc index 608391769..1d9663116 100644 --- a/src/wifi/model/regular-wifi-mac.cc +++ b/src/wifi/model/regular-wifi-mac.cc @@ -623,19 +623,6 @@ RegularWifiMac::SetCtsToSelfSupported (bool enable) m_low->SetCtsToSelfSupported (enable); } -void -RegularWifiMac::SetEifsNoDifs (Time eifsNoDifs) -{ - NS_LOG_FUNCTION (this << eifsNoDifs); - m_channelAccessManager->SetEifsNoDifs (eifsNoDifs); -} - -Time -RegularWifiMac::GetEifsNoDifs (void) const -{ - return m_channelAccessManager->GetEifsNoDifs (); -} - void RegularWifiMac::SetRifs (Time rifs) { diff --git a/src/wifi/model/regular-wifi-mac.h b/src/wifi/model/regular-wifi-mac.h index 030c73166..d0409efd2 100644 --- a/src/wifi/model/regular-wifi-mac.h +++ b/src/wifi/model/regular-wifi-mac.h @@ -54,7 +54,6 @@ public: virtual ~RegularWifiMac (); // Implementations of pure virtual methods. - void SetEifsNoDifs (Time eifsNoDifs); void SetPifs (Time pifs); void SetRifs (Time rifs); void SetShortSlotTimeSupported (bool enable); @@ -63,7 +62,6 @@ public: void SetPromisc (void); Time GetRifs (void) const; Time GetPifs (void) const; - Time GetEifsNoDifs (void) const; bool GetShortSlotTimeSupported (void) const; Ssid GetSsid (void) const; Mac48Address GetAddress (void) const; diff --git a/src/wifi/model/wifi-mac.cc b/src/wifi/model/wifi-mac.cc index c24ec1e1f..52ee79274 100644 --- a/src/wifi/model/wifi-mac.cc +++ b/src/wifi/model/wifi-mac.cc @@ -55,30 +55,12 @@ WifiMac::GetDefaultRifs (void) return MicroSeconds (2); } -Time -WifiMac::GetDefaultEifsNoDifs (void) -{ - return GetDefaultSifs () + GetDefaultCtsAckDelay (); -} - -Time -WifiMac::GetDefaultCtsAckDelay (void) -{ - //802.11-a specific: at 6 Mbit/s - return MicroSeconds (44); -} - TypeId WifiMac::GetTypeId (void) { static TypeId tid = TypeId ("ns3::WifiMac") .SetParent () .SetGroupName ("Wifi") - .AddAttribute ("EifsNoDifs", "The value of EIFS-DIFS.", - TimeValue (GetDefaultEifsNoDifs ()), - MakeTimeAccessor (&WifiMac::SetEifsNoDifs, - &WifiMac::GetEifsNoDifs), - MakeTimeChecker ()) .AddAttribute ("Pifs", "The value of the PIFS constant.", TimeValue (GetDefaultSifs () + GetDefaultSlot ()), MakeTimeAccessor (&WifiMac::SetPifs, @@ -220,7 +202,6 @@ void WifiMac::Configure80211a (void) { NS_LOG_FUNCTION (this); - SetEifsNoDifs (MicroSeconds (16 + 44)); SetPifs (MicroSeconds (16 + 9)); } @@ -228,7 +209,6 @@ void WifiMac::Configure80211b (void) { NS_LOG_FUNCTION (this); - SetEifsNoDifs (MicroSeconds (10 + 304)); SetPifs (MicroSeconds (10 + 20)); } @@ -236,7 +216,6 @@ void WifiMac::Configure80211g (void) { NS_LOG_FUNCTION (this); - SetEifsNoDifs (MicroSeconds (10 + 304)); SetPifs (MicroSeconds (10 + 20)); } @@ -244,7 +223,6 @@ void WifiMac::Configure80211_10Mhz (void) { NS_LOG_FUNCTION (this); - SetEifsNoDifs (MicroSeconds (32 + 88)); SetPifs (MicroSeconds (32 + 13)); } @@ -252,7 +230,6 @@ void WifiMac::Configure80211_5Mhz (void) { NS_LOG_FUNCTION (this); - SetEifsNoDifs (MicroSeconds (64 + 176)); SetPifs (MicroSeconds (64 + 21)); } diff --git a/src/wifi/model/wifi-mac.h b/src/wifi/model/wifi-mac.h index 0a5ff21e1..9cad3660c 100644 --- a/src/wifi/model/wifi-mac.h +++ b/src/wifi/model/wifi-mac.h @@ -67,13 +67,6 @@ public: */ Ptr GetDevice (void) const; - /** - * \param eifsNoDifs the duration of an EIFS minus DIFS. - * - * This value is used to calculate the EIFS depending - * on AIFSN. - */ - virtual void SetEifsNoDifs (Time eifsNoDifs) = 0; /** * \param pifs the PIFS duration. */ @@ -110,10 +103,6 @@ public: * \return the current PIFS duration. */ virtual Time GetPifs (void) const = 0; - /** - * \return the current EIFS minus DIFS duration - */ - virtual Time GetEifsNoDifs (void) const = 0; /** * \return the MAC address associated to this MAC layer. */ @@ -303,19 +292,6 @@ private: * Return a default RIFS value for 802.11n (2 microseconds). */ static Time GetDefaultRifs (void); - /** - * \return the default extended interframe space (EIFS) without - * DCF interframe space (DIFS) - * - * Return default SIFS + default CTS-Ack delay - */ - static Time GetDefaultEifsNoDifs (void); - /** - * \return the default CTS-Ack delay - * - * Return a default value for 802.11a at 6Mbps (44 microseconds) - */ - static Time GetDefaultCtsAckDelay (void); /** * \param standard the PHY standard to be used diff --git a/src/wifi/test/channel-access-manager-test.cc b/src/wifi/test/channel-access-manager-test.cc index aaa906fa1..b1a3bccbe 100644 --- a/src/wifi/test/channel-access-manager-test.cc +++ b/src/wifi/test/channel-access-manager-test.cc @@ -174,6 +174,15 @@ public: { m_slot = slot; } + /** + * Set the duration of EIFS - DIFS + * + * \param eifsNoDifs the duration of EIFS - DIFS + */ + void SetEifsNoDifs (Time eifsNoDifs) + { + m_eifsNoDifs = eifsNoDifs; + } private: // Inherited from base class @@ -187,8 +196,14 @@ private: return m_slot; } - Time m_slot; // slot duration - Time m_sifs; // SIFS duration + Time GetEifsNoDifs (void) const + { + return m_eifsNoDifs; + } + + Time m_slot; // slot duration + Time m_sifs; // SIFS duration + Time m_eifsNoDifs; // EIFS duration minus a DIFS }; /**