wifi: Add attributes to HeConfiguration to set MU EDCA Parameter Set elements

This commit is contained in:
Stefano Avallone
2019-10-25 18:26:22 +02:00
parent 4e8684c480
commit dbf4160e1a
2 changed files with 124 additions and 0 deletions

View File

@@ -58,6 +58,114 @@ HeConfiguration::GetTypeId (void)
MakeUintegerAccessor (&HeConfiguration::GetMpduBufferSize,
&HeConfiguration::SetMpduBufferSize),
MakeUintegerChecker<uint16_t> (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<uint8_t> (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<uint8_t> (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<uint8_t> (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<uint8_t> (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<uint16_t> (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<uint16_t> (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<uint16_t> (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<uint16_t> (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<uint16_t> (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<uint16_t> (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<uint16_t> (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<uint16_t> (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;
}

View File

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