diff --git a/src/wifi/model/he/he-configuration.cc b/src/wifi/model/he/he-configuration.cc index 5da10a4c6..12c6bb802 100644 --- a/src/wifi/model/he/he-configuration.cc +++ b/src/wifi/model/he/he-configuration.cc @@ -58,6 +58,114 @@ HeConfiguration::GetTypeId (void) MakeUintegerAccessor (&HeConfiguration::GetMpduBufferSize, &HeConfiguration::SetMpduBufferSize), MakeUintegerChecker (64, 256)) + .AddAttribute ("MuBeAifsn", + "AIFSN used by BE EDCA when the MU EDCA Timer is running. " + "It must be either zero (EDCA disabled) or a value from 2 to 15.", + UintegerValue (0), + MakeUintegerAccessor (&HeConfiguration::m_muBeAifsn), + MakeUintegerChecker (0, 15)) + .AddAttribute ("MuBkAifsn", + "AIFSN used by BK EDCA when the MU EDCA Timer is running. " + "It must be either zero (EDCA disabled) or a value from 2 to 15.", + UintegerValue (0), + MakeUintegerAccessor (&HeConfiguration::m_muBkAifsn), + MakeUintegerChecker (0, 15)) + .AddAttribute ("MuViAifsn", + "AIFSN used by VI EDCA when the MU EDCA Timer is running. " + "It must be either zero (EDCA disabled) or a value from 2 to 15.", + UintegerValue (0), + MakeUintegerAccessor (&HeConfiguration::m_muViAifsn), + MakeUintegerChecker (0, 15)) + .AddAttribute ("MuVoAifsn", + "AIFSN used by VO EDCA when the MU EDCA Timer is running. " + "It must be either zero (EDCA disabled) or a value from 2 to 15.", + UintegerValue (0), + MakeUintegerAccessor (&HeConfiguration::m_muVoAifsn), + MakeUintegerChecker (0, 15)) + .AddAttribute ("MuBeCwMin", + "CWmin used by BE EDCA when the MU EDCA Timer is running. " + "It must be a power of 2 minus 1 in the range from 0 to 32767.", + UintegerValue (15), + MakeUintegerAccessor (&HeConfiguration::m_muBeCwMin), + MakeUintegerChecker (0, 32767)) + .AddAttribute ("MuBkCwMin", + "CWmin used by BK EDCA when the MU EDCA Timer is running. " + "It must be a power of 2 minus 1 in the range from 0 to 32767.", + UintegerValue (15), + MakeUintegerAccessor (&HeConfiguration::m_muBkCwMin), + MakeUintegerChecker (0, 32767)) + .AddAttribute ("MuViCwMin", + "CWmin used by VI EDCA when the MU EDCA Timer is running. " + "It must be a power of 2 minus 1 in the range from 0 to 32767.", + UintegerValue (15), + MakeUintegerAccessor (&HeConfiguration::m_muViCwMin), + MakeUintegerChecker (0, 32767)) + .AddAttribute ("MuVoCwMin", + "CWmin used by VO EDCA when the MU EDCA Timer is running. " + "It must be a power of 2 minus 1 in the range from 0 to 32767.", + UintegerValue (15), + MakeUintegerAccessor (&HeConfiguration::m_muVoCwMin), + MakeUintegerChecker (0, 32767)) + .AddAttribute ("MuBeCwMax", + "CWmax used by BE EDCA when the MU EDCA Timer is running. " + "It must be a power of 2 minus 1 in the range from 0 to 32767.", + UintegerValue (1023), + MakeUintegerAccessor (&HeConfiguration::m_muBeCwMax), + MakeUintegerChecker (0, 32767)) + .AddAttribute ("MuBkCwMax", + "CWmax used by BK EDCA when the MU EDCA Timer is running. " + "It must be a power of 2 minus 1 in the range from 0 to 32767.", + UintegerValue (1023), + MakeUintegerAccessor (&HeConfiguration::m_muBkCwMax), + MakeUintegerChecker (0, 32767)) + .AddAttribute ("MuViCwMax", + "CWmax used by VI EDCA when the MU EDCA Timer is running. " + "It must be a power of 2 minus 1 in the range from 0 to 32767.", + UintegerValue (1023), + MakeUintegerAccessor (&HeConfiguration::m_muViCwMax), + MakeUintegerChecker (0, 32767)) + .AddAttribute ("MuVoCwMax", + "CWmax used by VO EDCA when the MU EDCA Timer is running. " + "It must be a power of 2 minus 1 in the range from 0 to 32767.", + UintegerValue (1023), + MakeUintegerAccessor (&HeConfiguration::m_muVoCwMax), + MakeUintegerChecker (0, 32767)) + .AddAttribute ("BeMuEdcaTimer", + "The MU EDCA Timer used by BE EDCA. It must be a multiple of " + "8192 us and must be in the range from 8.192 ms to 2088.96 ms. " + "0 is a reserved value, but we allow to use this value to indicate " + "that an MU EDCA Parameter Set element must not be sent. Therefore, " + "0 can only be used if the MU EDCA Timer for all ACs is set to 0.", + TimeValue (MicroSeconds (0)), + MakeTimeAccessor (&HeConfiguration::m_beMuEdcaTimer), + MakeTimeChecker (MicroSeconds (0), MicroSeconds (2088960))) + .AddAttribute ("BkMuEdcaTimer", + "The MU EDCA Timer used by BK EDCA. It must be a multiple of " + "8192 us and must be in the range from 8.192 ms to 2088.96 ms." + "0 is a reserved value, but we allow to use this value to indicate " + "that an MU EDCA Parameter Set element must not be sent. Therefore, " + "0 can only be used if the MU EDCA Timer for all ACs is set to 0.", + TimeValue (MicroSeconds (0)), + MakeTimeAccessor (&HeConfiguration::m_bkMuEdcaTimer), + MakeTimeChecker (MicroSeconds (0), MicroSeconds (2088960))) + .AddAttribute ("ViMuEdcaTimer", + "The MU EDCA Timer used by VI EDCA. It must be a multiple of " + "8192 us and must be in the range from 8.192 ms to 2088.96 ms." + "0 is a reserved value, but we allow to use this value to indicate " + "that an MU EDCA Parameter Set element must not be sent. Therefore, " + "0 can only be used if the MU EDCA Timer for all ACs is set to 0.", + TimeValue (MicroSeconds (0)), + MakeTimeAccessor (&HeConfiguration::m_viMuEdcaTimer), + MakeTimeChecker (MicroSeconds (0), MicroSeconds (2088960))) + .AddAttribute ("VoMuEdcaTimer", + "The MU EDCA Timer used by VO EDCA. It must be a multiple of " + "8192 us and must be in the range from 8.192 ms to 2088.96 ms." + "0 is a reserved value, but we allow to use this value to indicate " + "that an MU EDCA Parameter Set element must not be sent. Therefore, " + "0 can only be used if the MU EDCA Timer for all ACs is set to 0.", + TimeValue (MicroSeconds (0)), + MakeTimeAccessor (&HeConfiguration::m_voMuEdcaTimer), + MakeTimeChecker (MicroSeconds (0), MicroSeconds (2088960))) ; return tid; } diff --git a/src/wifi/model/he/he-configuration.h b/src/wifi/model/he/he-configuration.h index 3f1374b7f..49b6c3e4a 100644 --- a/src/wifi/model/he/he-configuration.h +++ b/src/wifi/model/he/he-configuration.h @@ -74,6 +74,22 @@ private: Time m_guardInterval; //!< Supported HE guard interval uint8_t m_bssColor; //!< BSS color uint16_t m_mpduBufferSize; //!< MPDU buffer size + uint8_t m_muBeAifsn; //!< AIFSN for BE in MU EDCA Parameter Set + uint8_t m_muBkAifsn; //!< AIFSN for BK in MU EDCA Parameter Set + uint8_t m_muViAifsn; //!< AIFSN for VI in MU EDCA Parameter Set + uint8_t m_muVoAifsn; //!< AIFSN for VO in MU EDCA Parameter Set + uint16_t m_muBeCwMin; //!< CWmin for BE in MU EDCA Parameter Set + uint16_t m_muBkCwMin; //!< CWmin for BK in MU EDCA Parameter Set + uint16_t m_muViCwMin; //!< CWmin for VI in MU EDCA Parameter Set + uint16_t m_muVoCwMin; //!< CWmin for VO in MU EDCA Parameter Set + uint16_t m_muBeCwMax; //!< CWmax for BE in MU EDCA Parameter Set + uint16_t m_muBkCwMax; //!< CWmax for BK in MU EDCA Parameter Set + uint16_t m_muViCwMax; //!< CWmax for VI in MU EDCA Parameter Set + uint16_t m_muVoCwMax; //!< CWmax for VO in MU EDCA Parameter Set + Time m_beMuEdcaTimer; //!< Timer for BE in MU EDCA Parameter Set + Time m_bkMuEdcaTimer; //!< Timer for BK in MU EDCA Parameter Set + Time m_viMuEdcaTimer; //!< Timer for VI in MU EDCA Parameter Set + Time m_voMuEdcaTimer; //!< Timer for VO in MU EDCA Parameter Set }; } //namespace ns3