wifi: (fixes #1073) Document that beacons use PIFS access with zero backoff

This commit is contained in:
Tom Henderson
2024-04-24 08:26:11 -07:00
parent 6f54540095
commit d88e7f1eb4
3 changed files with 14 additions and 1 deletions

View File

@@ -948,6 +948,14 @@ Station Manager. As a result, PPDUs are transmitted on the largest idle primary
For example, if a STA is operating on a 40 MHz channel and the secondary20 channel
is indicated to be busy, transmissions will occur on the primary20 channel.
In |ns3|, by default, beacons for both QoS and non-QoS APs access the channel after a PIFS interval (SIFS
plus one slot time), and with zero backoff (CWmin and CWmax both set to zero), giving
them higher priority than other access categories. Beacons are given a
separate Txop from data frames. The DCF parameters described above are non-standard,
but appear to be what some vendors have implemented in their products. To change the
DCF parameters for |ns3| access points, the ``ApWifiMac::DoCompleteConfig()`` method
must be manually edited.
The higher-level MAC functions are implemented in a set of other C++ classes and
deal with:

View File

@@ -261,6 +261,7 @@ ApWifiMac::DoCompleteConfig()
{
NS_LOG_FUNCTION(this);
m_beaconTxop->SetWifiMac(this);
// DCF behavior may be edited here; the default is PIFS access with zero backoff
m_beaconTxop->SetAifsns(std::vector<uint8_t>(GetNLinks(), 1));
m_beaconTxop->SetMinCws(std::vector<uint32_t>(GetNLinks(), 0));
m_beaconTxop->SetMaxCws(std::vector<uint32_t>(GetNLinks(), 0));

View File

@@ -63,7 +63,11 @@ using AssocReqRefVariant = std::variant<std::reference_wrapper<MgtAssocRequestHe
* \ingroup wifi
*
* Handle association, dis-association and authentication,
* of STAs within an infrastructure BSS.
* of STAs within an infrastructure BSS. By default, beacons are
* sent with PIFS access, zero backoff, and are generated roughly
* every 102.4 ms by default (configurable by an attribute) and
* with some jitter to de-synchronize beacon transmissions in
* multi-BSS scenarios.
*/
class ApWifiMac : public WifiMac
{