diff --git a/CHANGES.html b/CHANGES.html
index 8afc48265..84c59efa5 100644
--- a/CHANGES.html
+++ b/CHANGES.html
@@ -66,7 +66,8 @@ us a note on ns-developers mailing list.
Changed behavior:
-
+- The Sifs, Slot and Pifs attributes have been moved from WifiMac to WifiPhy to better reflect that they are PHY characteristics, to decouple the MAC configuration from the PHY configuration and to ease the support for future standards.
+- Support for RIFS has been dropped from wifi. RIFS has been obsoleted by the 802.11 standard and support for it was not implemented according to the standard.
diff --git a/src/mesh/model/mesh-wifi-interface-mac.cc b/src/mesh/model/mesh-wifi-interface-mac.cc
index 532eb3c87..8ea0159a0 100644
--- a/src/mesh/model/mesh-wifi-interface-mac.cc
+++ b/src/mesh/model/mesh-wifi-interface-mac.cc
@@ -548,9 +548,9 @@ MeshWifiInterfaceMac::ResetStats ()
}
void
-MeshWifiInterfaceMac::FinishConfigureStandard (enum WifiPhyStandard standard)
+MeshWifiInterfaceMac::ConfigureStandard (enum WifiPhyStandard standard)
{
- RegularWifiMac::FinishConfigureStandard (standard);
+ RegularWifiMac::ConfigureStandard (standard);
m_standard = standard;
// We use the single DCF provided by WifiMac for the purpose of
diff --git a/src/mesh/model/mesh-wifi-interface-mac.h b/src/mesh/model/mesh-wifi-interface-mac.h
index 8d2829255..929c2984c 100644
--- a/src/mesh/model/mesh-wifi-interface-mac.h
+++ b/src/mesh/model/mesh-wifi-interface-mac.h
@@ -166,7 +166,7 @@ public:
*
* \param standard the WifiPhyStandard being configured
*/
- virtual void FinishConfigureStandard (enum WifiPhyStandard standard);
+ virtual void ConfigureStandard (enum WifiPhyStandard standard);
/**
* Assign a fixed random variable stream number to the random variables
* used by this model. Return the number of streams (possibly zero) that
diff --git a/src/wave/model/ocb-wifi-mac.cc b/src/wave/model/ocb-wifi-mac.cc
index 20fd02292..875155761 100644
--- a/src/wave/model/ocb-wifi-mac.cc
+++ b/src/wave/model/ocb-wifi-mac.cc
@@ -371,7 +371,7 @@ OcbWifiMac::ConfigureEdca (uint32_t cwmin, uint32_t cwmax, uint32_t aifsn, enum
}
void
-OcbWifiMac::FinishConfigureStandard (enum WifiPhyStandard standard)
+OcbWifiMac::ConfigureStandard (enum WifiPhyStandard standard)
{
NS_LOG_FUNCTION (this << standard);
NS_ASSERT ((standard == WIFI_PHY_STANDARD_80211_10MHZ)
diff --git a/src/wave/model/ocb-wifi-mac.h b/src/wave/model/ocb-wifi-mac.h
index 1549d1c63..24e484427 100644
--- a/src/wave/model/ocb-wifi-mac.h
+++ b/src/wave/model/ocb-wifi-mac.h
@@ -173,8 +173,8 @@ public:
*/
void Reset (void);
-protected:
- virtual void FinishConfigureStandard (enum WifiPhyStandard standard);
+ // Inherited from base class
+ virtual void ConfigureStandard (enum WifiPhyStandard standard);
private:
virtual void Receive (Ptr mpdu);
diff --git a/src/wifi/doc/source/wifi-design.rst b/src/wifi/doc/source/wifi-design.rst
index 59fee8eeb..7286b732a 100644
--- a/src/wifi/doc/source/wifi-design.rst
+++ b/src/wifi/doc/source/wifi-design.rst
@@ -168,6 +168,7 @@ The following details pertain to the physical layer and channel models:
* 802.11ax only supports SU PPDU format
* 802.11ac/ax MU-MIMO is not supported, and no more than 4 antennas can be configured
* 802.11n/ac/ax beamforming is not supported
+* 802.11n RIFS is not supported
* 802.11 HCF/HCCA are not implemented
* 802.11 PCF implementation currently assumes a DTIM interval equal to the beacon interval
* Authentication and encryption are missing
diff --git a/src/wifi/model/regular-wifi-mac.cc b/src/wifi/model/regular-wifi-mac.cc
index 019af0e01..c66399e4f 100644
--- a/src/wifi/model/regular-wifi-mac.cc
+++ b/src/wifi/model/regular-wifi-mac.cc
@@ -1076,7 +1076,7 @@ RegularWifiMac::GetTypeId (void)
}
void
-RegularWifiMac::FinishConfigureStandard (WifiPhyStandard standard)
+RegularWifiMac::ConfigureStandard (WifiPhyStandard standard)
{
NS_LOG_FUNCTION (this << standard);
uint32_t cwmin = 0;
diff --git a/src/wifi/model/regular-wifi-mac.h b/src/wifi/model/regular-wifi-mac.h
index f8c4e941d..ad36f7131 100644
--- a/src/wifi/model/regular-wifi-mac.h
+++ b/src/wifi/model/regular-wifi-mac.h
@@ -68,6 +68,7 @@ public:
Ptr GetWifiPhy (void) const;
void ResetWifiPhy (void);
virtual void SetWifiRemoteStationManager (const Ptr stationManager);
+ void ConfigureStandard (WifiPhyStandard standard);
/**
* This type defines the callback of a higher layer that a
@@ -189,20 +190,6 @@ protected:
*/
Ptr GetBKQueue (void) const;
- /**
- * \param standard the PHY standard to be used
- *
- * This method is called by ns3::WifiMac::ConfigureStandard to
- * complete the configuration process for a requested PHY standard.
- *
- * This method may be overridden by a derived class (e.g., in order
- * to apply DCF or EDCA parameters specific to the usage model it is
- * dealing with), in which case the reimplementation may choose to
- * deal with certain values in the WifiPhyStandard enumeration, and
- * chain up to this implementation to deal with the remainder.
- */
- void FinishConfigureStandard (WifiPhyStandard standard);
-
/**
* \param cwMin the minimum contention window size
* \param cwMax the maximum contention window size
diff --git a/src/wifi/model/wifi-mac.cc b/src/wifi/model/wifi-mac.cc
index df56a1337..a052ef7f8 100644
--- a/src/wifi/model/wifi-mac.cc
+++ b/src/wifi/model/wifi-mac.cc
@@ -120,117 +120,6 @@ WifiMac::NotifyRxDrop (Ptr packet)
m_macRxDropTrace (packet);
}
-void
-WifiMac::ConfigureStandard (WifiPhyStandard standard)
-{
- NS_LOG_FUNCTION (this << standard);
- switch (standard)
- {
- case WIFI_PHY_STANDARD_80211a:
- Configure80211a ();
- break;
- case WIFI_PHY_STANDARD_80211b:
- Configure80211b ();
- break;
- case WIFI_PHY_STANDARD_80211g:
- Configure80211g ();
- break;
- case WIFI_PHY_STANDARD_80211_10MHZ:
- Configure80211_10Mhz ();
- break;
- case WIFI_PHY_STANDARD_80211_5MHZ:
- Configure80211_5Mhz ();
- break;
- case WIFI_PHY_STANDARD_holland:
- Configure80211a ();
- break;
- case WIFI_PHY_STANDARD_80211n_2_4GHZ:
- Configure80211n_2_4Ghz ();
- break;
- case WIFI_PHY_STANDARD_80211n_5GHZ:
- Configure80211n_5Ghz ();
- break;
- case WIFI_PHY_STANDARD_80211ac:
- Configure80211ac ();
- break;
- case WIFI_PHY_STANDARD_80211ax_2_4GHZ:
- Configure80211ax_2_4Ghz ();
- break;
- case WIFI_PHY_STANDARD_80211ax_5GHZ:
- Configure80211ax_5Ghz ();
- break;
- case WIFI_PHY_STANDARD_UNSPECIFIED:
- default:
- NS_FATAL_ERROR ("Wifi standard not found");
- break;
- }
- FinishConfigureStandard (standard);
-}
-
-void
-WifiMac::Configure80211a (void)
-{
- NS_LOG_FUNCTION (this);
-}
-
-void
-WifiMac::Configure80211b (void)
-{
- NS_LOG_FUNCTION (this);
-}
-
-void
-WifiMac::Configure80211g (void)
-{
- NS_LOG_FUNCTION (this);
-}
-
-void
-WifiMac::Configure80211_10Mhz (void)
-{
- NS_LOG_FUNCTION (this);
-}
-
-void
-WifiMac::Configure80211_5Mhz (void)
-{
- NS_LOG_FUNCTION (this);
-}
-
-void
-WifiMac::Configure80211n_2_4Ghz (void)
-{
- NS_LOG_FUNCTION (this);
- Configure80211g ();
-}
-void
-WifiMac::Configure80211n_5Ghz (void)
-{
- NS_LOG_FUNCTION (this);
- Configure80211a ();
-}
-
-void
-WifiMac::Configure80211ac (void)
-{
- NS_LOG_FUNCTION (this);
- Configure80211n_5Ghz ();
-}
-
-void
-WifiMac::Configure80211ax_2_4Ghz (void)
-{
- NS_LOG_FUNCTION (this);
- Configure80211n_2_4Ghz ();
-}
-
-void
-WifiMac::Configure80211ax_5Ghz (void)
-{
- NS_LOG_FUNCTION (this);
- Configure80211ac ();
-}
-
void
WifiMac::ConfigureDcf (Ptr dcf, uint32_t cwmin, uint32_t cwmax, bool isDsss, AcIndex ac)
{
diff --git a/src/wifi/model/wifi-mac.h b/src/wifi/model/wifi-mac.h
index f094da051..0aecc3d34 100644
--- a/src/wifi/model/wifi-mac.h
+++ b/src/wifi/model/wifi-mac.h
@@ -213,22 +213,11 @@ public:
/**
* \param standard the wifi standard to be configured
*
- * This method sets standards-compliant defaults for WifiMac
- * parameters such as SIFS time, slot time, timeout values, etc.,
- * based on the standard selected.
- *
- * \sa WifiMac::Configure80211a
- * \sa WifiMac::Configure80211b
- * \sa WifiMac::Configure80211g
- * \sa WifiMac::Configure80211_10Mhz
- * \sa WifiMac::Configure80211_5Mhz
- * \sa WifiMac::Configure80211n_2_4Ghz
- * \sa WifiMac::Configure80211n_5Ghz
- * \sa WifiMac::Configure80211ac
- * \sa WifiMac::Configure80211ax_2_4Ghz
- * \sa WifiMac::Configure80211ax_5Ghz
+ * This method completes the configuration process for a requested PHY standard.
+ * Subclasses should implement this method to configure their DCF queues
+ * according to the requested standard.
*/
- void ConfigureStandard (WifiPhyStandard standard);
+ virtual void ConfigureStandard (WifiPhyStandard standard) = 0;
/**
* \return pointer to HtConfiguration if it exists
@@ -258,72 +247,8 @@ protected:
private:
- /**
- * \param standard the PHY standard to be used
- *
- * This method is called by ns3::WifiMac::ConfigureStandard to complete
- * the configuration process for a requested PHY standard. Subclasses should
- * implement this method to configure their DCF queues according to the
- * requested standard.
- */
- virtual void FinishConfigureStandard (WifiPhyStandard standard) = 0;
-
Ptr m_device; ///< Pointer to the device
- /**
- * This method sets 802.11a standards-compliant defaults for following attributes:
- * SIFS, Slot, EifsNoDifs, PIFS, CtsTimeout, and AckTimeout.
- */
- void Configure80211a (void);
- /**
- * This method sets 802.11b standards-compliant defaults for following attributes:
- * SIFS, Slot, EifsNoDifs, PIFS, CtsTimeout, and AckTimeout.
- */
- void Configure80211b (void);
- /**
- * This method sets 802.11g standards-compliant defaults for following attributes:
- * SIFS, Slot, EifsNoDifs, PIFS, CtsTimeout, and AckTimeout.
- * There is no support for short slot time.
- */
- void Configure80211g (void);
- /**
- * This method sets 802.11 with 10 MHz channel spacing standards-compliant defaults
- * for following attributes: SIFS, Slot, EifsNoDifs, PIFS, CtsTimeout, and AckTimeout.
- */
- void Configure80211_10Mhz (void);
- /**
- * This method sets 802.11 with 5 MHz channel spacing standards-compliant defaults
- * for following attributes: SIFS, Slot, EifsNoDifs, PIFS, CtsTimeout, and AckTimeout.
- */
- void Configure80211_5Mhz ();
- /**
- * This method sets 802.11n 2.4 GHz standards-compliant defaults for following attributes:
- * SIFS, RIFS, Slot, EifsNoDifs, PIFS, CtsTimeout, and AckTimeout.
- * There is no support for short slot time.
- */
- void Configure80211n_2_4Ghz (void);
- /**
- * This method sets 802.11n 5 GHz standards-compliant defaults for following attributes:
- * SIFS, RIFS, Slot, EifsNoDifs, PIFS, CtsTimeout, and AckTimeout.
- */
- void Configure80211n_5Ghz (void);
- /**
- * This method sets 802.11ac standards-compliant defaults for following attributes:
- * SIFS, Slot, EifsNoDifs, PIFS, CtsTimeout, and AckTimeout.
- */
- void Configure80211ac (void);
- /**
- * This method sets 802.11ax 2.4 GHz standards-compliant defaults for following attributes:
- * SIFS, Slot, EifsNoDifs, PIFS, CtsTimeout, and AckTimeout.
- * There is no support for short slot time.
- */
- void Configure80211ax_2_4Ghz (void);
- /**
- * This method sets 802.11ax 5 GHz standards-compliant defaults for following attributes:
- * SIFS, Slot, EifsNoDifs, PIFS, CtsTimeout, and AckTimeout.
- */
- void Configure80211ax_5Ghz (void);
-
/**
* The trace source fired when packets come into the "top" of the device
* at the L3/L2 transition, before being queued for transmission.