A Discrete-Event Network Simulator
API
Wifi Models

This section documents the API of the ns-3 Wifi module. More...

+ Collaboration diagram for Wifi Models:

Modules

 wifi module tests
 

Files

file  dsss-phy.h
 Declaration of ns3::DsssPhy class.
 
file  dsss-ppdu.h
 Declaration of ns3::DsssPpdu class.
 
file  erp-ofdm-phy.h
 Declaration of ns3::ErpOfdmPhy class.
 
file  erp-ofdm-ppdu.h
 Declaration of ns3::ErpOfdmPpdu class.
 
file  he-phy.h
 Declaration of ns3::HePhy class and ns3::HeSigAParameters struct.
 
file  he-ppdu.h
 Declaration of ns3::HePpdu class.
 
file  ht-phy.h
 Declaration of ns3::HtPhy class.
 
file  ht-ppdu.h
 Declaration of ns3::HtPpdu class.
 
file  ofdm-phy.h
 Declaration of ns3::OfdmPhy class and ns3::OfdmPhyVariant enum.
 
file  ofdm-ppdu.h
 Declaration of ns3::OfdmPpdu class.
 
file  phy-entity.h
 Declaration of:
 
file  vht-phy.h
 Declaration of ns3::VhtPhy class.
 
file  vht-ppdu.h
 Declaration of ns3::VhtPpdu class.
 
file  wifi-phy-common.h
 Declaration of the following enums:
 
file  wifi-ppdu.h
 Declaration of ns3::WifiPpdu class and ns3::WifiConstPsduMap.
 

Classes

class  ns3::AarfcdWifiManager
 an implementation of the AARF-CD algorithm More...
 
class  ns3::AarfWifiManager
 AARF Rate control algorithm. More...
 
class  ns3::AdhocWifiMac
 Wifi MAC high model for an ad-hoc Wifi MAC. More...
 
class  ns3::AmpduSubframeHeader
 Headers for A-MPDU subframes. More...
 
class  ns3::AmpduTag
 The aim of the AmpduTag is to provide means for a MAC to specify that a packet includes A-MPDU since this is done in HT-SIG and there is no HT-SIG representation in ns-3. More...
 
class  ns3::AmrrWifiManager
 AMRR Rate control algorithm. More...
 
class  ns3::AmsduSubframeHeader
 Headers for A-MSDU subframes. More...
 
class  ns3::AparfWifiManager
 APARF Power and rate control algorithm. More...
 
struct  ns3::ApInfo
 Struct to hold information regarding observed AP through active/passive scanning. More...
 
class  ns3::ApWifiMac
 Wi-Fi AP state machine. More...
 
class  ns3::ArfWifiManager
 ARF Rate control algorithm. More...
 
struct  ns3::Bar
 BlockAckRequest frame information. More...
 
class  ns3::BlockAckAgreement
 Maintains information for a block ack agreement. More...
 
class  ns3::BlockAckManager
 Manages all block ack agreements for an originator station. More...
 
struct  ns3::BlockAckReqType
 The different BlockAckRequest variants. More...
 
struct  ns3::BlockAckType
 The different BlockAck variants. More...
 
class  ns3::BlockAckWindow
 Block ack window. More...
 
class  ns3::CapabilityInformation
 Capability information. More...
 
class  ns3::CaraWifiManager
 implement the CARA rate control algorithm More...
 
class  CarrierAggregationTestCase
 This system test program creates different test cases with a single eNB and several UEs, all having the same Radio Bearer specification. More...
 
class  ns3::ChannelAccessManager
 Manage a set of ns3::Txop. More...
 
class  ns3::ConstantObssPdAlgorithm
 Constant OBSS PD algorithm. More...
 
class  ns3::ConstantRateWifiManager
 use constant rates for data and RTS transmissions More...
 
class  ns3::CtrlBAckRequestHeader
 Headers for BlockAckRequest. More...
 
class  ns3::CtrlBAckResponseHeader
 Headers for BlockAck response. More...
 
class  ns3::CtrlTriggerHeader
 Headers for Trigger frames. More...
 
class  ns3::CtrlTriggerUserInfoField
 User Info field of Trigger frames. More...
 
class  ns3::DsssErrorRateModel
 an implementation of DSSS error rate model More...
 
class  ns3::DsssParameterSet
 The DSSS Parameter Set. More...
 
class  ns3::DsssPhy
 PHY entity for HR/DSSS (11b) More...
 
class  ns3::DsssPpdu
 DSSS (HR/DSSS) PPDU (11b) More...
 
class  ns3::EdcaParameterSet
 The EDCA Parameter Set. More...
 
class  ns3::ErpInformation
 The ErpInformation Information Element. More...
 
class  ns3::ErpOfdmPhy
 PHY entity for ERP-OFDM (11g) More...
 
class  ns3::ErpOfdmPpdu
 ERP-OFDM PPDU (11g) More...
 
class  ns3::ErrorRateModel
 the interface for Wifi's error models More...
 
class  ns3::Event
 handles interference calculations More...
 
class  ns3::ExtendedCapabilities
 The Extended Capabilities Information Element. More...
 
class  ns3::ExtendedSupportedRatesIE
 The Extended Supported Rates Information Element. More...
 
class  ns3::FrameCaptureModel
 the interface for Wifi's frame capture models More...
 
class  ns3::FrameExchangeManager
 FrameExchangeManager is a base class handling the basic frame exchange sequences for non-QoS stations. More...
 
class  ns3::HeCapabilities
 The IEEE 802.11ax HE Capabilities. More...
 
class  ns3::HeConfiguration
 HE configuration. More...
 
class  ns3::HeFrameExchangeManager
 HeFrameExchangeManager handles the frame exchange sequences for HE stations. More...
 
class  ns3::HeOperation
 The HE Operation Information Element. More...
 
class  ns3::HePhy
 PHY entity for HE (11ax) More...
 
class  ns3::HePpdu
 HE PPDU (11ax) More...
 
class  ns3::HtCapabilities
 The HT Capabilities Information Element. More...
 
class  ns3::HtConfiguration
 HT configuration. More...
 
class  ns3::HtFrameExchangeManager
 HtFrameExchangeManager handles the frame exchange sequences for HT stations. More...
 
class  ns3::HtOperation
 The HT Operation Information Element. More...
 
class  ns3::HtPhy
 PHY entity for HT (11n) More...
 
class  ns3::HtPpdu
 HT PPDU (11n) More...
 
class  ns3::IdealWifiManager
 Ideal rate control algorithm. More...
 
class  ns3::InterferenceHelper
 handles interference calculations More...
 
class  ns3::MacRxMiddle
 This class handles duplicate detection and recomposition of fragments. More...
 
class  ns3::MacTxMiddle
 Handles sequence numbering of IEEE 802.11 data frames. More...
 
class  ns3::MgtAddBaRequestHeader
 Implement the header for management frames of type Add Block Ack request. More...
 
class  ns3::MgtAddBaResponseHeader
 Implement the header for management frames of type Add Block Ack response. More...
 
class  ns3::MgtAssocRequestHeader
 Implement the header for management frames of type association request. More...
 
class  ns3::MgtAssocResponseHeader
 Implement the header for management frames of type association and reassociation response. More...
 
class  ns3::MgtBeaconHeader
 Implement the header for management frames of type beacon. More...
 
class  ns3::MgtDelBaHeader
 Implement the header for management frames of type Delete Block Ack. More...
 
class  ns3::MgtProbeRequestHeader
 Implement the header for management frames of type probe request. More...
 
class  ns3::MgtProbeResponseHeader
 Implement the header for management frames of type probe response. More...
 
class  ns3::MgtReassocRequestHeader
 Implement the header for management frames of type reassociation request. More...
 
class  ns3::MinstrelHtWifiManager
 Implementation of Minstrel-HT Rate Control Algorithm. More...
 
class  ns3::MinstrelWifiManager
 Implementation of Minstrel Rate Control Algorithm. More...
 
class  ns3::MpduAggregator
 Aggregator used to construct A-MPDUs. More...
 
class  ns3::MsduAggregator
 Aggregator used to construct A-MSDUs. More...
 
class  ns3::MuEdcaParameterSet
 The MU EDCA Parameter Set. More...
 
class  ns3::MultiUserScheduler
 MultiUserScheduler is an abstract base class defining the API that APs supporting at least VHT can use to determine the format of their next transmission. More...
 
class  ns3::MuSnrTag
 A tag to be attached to a response to a multi-user UL frame, that carries the SNR values with which the individual frames have been received. More...
 
class  ns3::NistErrorRateModel
 A model for the error rate for different modulations. More...
 
class  ns3::ObssPdAlgorithm
 OBSS PD algorithm interface. More...
 
class  ns3::OfdmPhy
 PHY entity for OFDM (11a) More...
 
class  ns3::OfdmPpdu
 OFDM PPDU (11a) More...
 
class  ns3::OnoeWifiManager
 an implementation of the rate control algorithm developed by Atsushi Onoe More...
 
class  ns3::OriginatorBlockAckAgreement
 Maintains the state and information about transmitted MPDUs with Ack Policy set to Block Ack for an originator station. More...
 
class  ns3::ParfWifiManager
 PARF Rate control algorithm. More...
 
class  ns3::PhyEntity
 Abstract class for PHY entities. More...
 
class  ns3::PreambleDetectionModel
 the interface for Wifi's preamble detection models More...
 
class  ns3::QosFrameExchangeManager
 QosFrameExchangeManager handles the frame exchange sequences for QoS stations. More...
 
class  ns3::QosTxop
 Handle packet fragmentation and retransmissions for QoS data frames as well as MSDU aggregation (A-MSDU) and block ack sessions, for a given access class. More...
 
class  ns3::RecipientBlockAckAgreement
 Maintains the scoreboard and the receive reordering buffer used by a recipient of a Block Ack agreement. More...
 
class  ns3::RraaWifiManager
 Robust Rate Adaptation Algorithm. More...
 
class  ns3::RrMultiUserScheduler
 RrMultiUserScheduler is a simple OFDMA scheduler that indicates to perform a DL OFDMA transmission if the AP has frames to transmit to at least one station. More...
 
class  ns3::SimpleFrameCaptureModel
 A simple threshold-based model for frame capture effect. More...
 
class  ns3::SpectrumWifiPhy
 802.11 PHY layer model More...
 
class  ns3::Ssid
 The IEEE 802.11 SSID Information Element. More...
 
class  ns3::StaWifiMac
 The Wifi MAC high model for a non-AP STA in a BSS. More...
 
class  ns3::SupportedRates
 The Supported Rates Information Element. More...
 
class  ns3::ThompsonSamplingWifiManager
 Thompson Sampling rate control algorithm. More...
 
class  ns3::ThresholdPreambleDetectionModel
 A threshold-based model for detecting PHY preamble. More...
 
class  ns3::Txop
 Handle packet fragmentation and retransmissions for data and management frames. More...
 
class  ns3::VhtCapabilities
 The IEEE 802.11ac VHT Capabilities. More...
 
class  ns3::VhtConfiguration
 VHT configuration. More...
 
class  ns3::VhtFrameExchangeManager
 VhtFrameExchangeManager handles the frame exchange sequences for VHT stations. More...
 
class  ns3::VhtOperation
 The VHT Operation Information Element. More...
 
class  ns3::VhtPhy
 PHY entity for VHT (11ac) More...
 
class  ns3::VhtPpdu
 VHT PPDU (11ac) More...
 
class  ns3::WifiAc
 This class stores the pair of TIDs of an Access Category. More...
 
struct  ns3::WifiAckAfterTbPpdu
 WifiAckAfterTbPpdu is used when a station prepares a TB PPDU to send in response to a Basic Trigger Frame. More...
 
class  ns3::WifiAckManager
 WifiAckManager is an abstract base class. More...
 
struct  ns3::WifiAcknowledgment
 WifiAcknowledgment is an abstract base struct. More...
 
class  ns3::WifiActionHeader
 See IEEE 802.11 chapter 7.3.1.11 Header format: | category: 1 | action value: 1 |. More...
 
struct  ns3::WifiBarBlockAck
 WifiBarBlockAck specifies that a BlockAckReq is sent to solicit a Block Ack response. More...
 
struct  ns3::WifiBlockAck
 WifiBlockAck specifies that acknowledgment via Block Ack is required. More...
 
struct  ns3::WifiCtsToSelfProtection
 WifiCtsToSelfProtection specifies that CTS-to-self protection method is used. More...
 
class  ns3::WifiDefaultAckManager
 WifiDefaultAckManager is the default ack manager. More...
 
class  ns3::WifiDefaultProtectionManager
 WifiDefaultProtectionManager is the default protection manager, which selects the protection method for a frame based on its size. More...
 
struct  ns3::WifiDlMuAggregateTf
 WifiDlMuAggregateTf specifies that a DL MU PPDU made of PSDUs including each a MU-BAR Trigger Frame is acknowledged through BlockAck frames sent as HE TB PPDUs. More...
 
struct  ns3::WifiDlMuBarBaSequence
 WifiDlMuBarBaSequence specifies that a DL MU PPDU is acknowledged through a sequence of BlockAckReq and BlockAck frames. More...
 
struct  ns3::WifiDlMuTfMuBar
 WifiDlMuTfMuBar specifies that a DL MU PPDU is followed after a SIFS duration by a MU-BAR Trigger Frame (sent as single user frame) soliciting BlockAck frames sent as HE TB PPDUs. More...
 
class  ns3::WifiInformationElement
 Information element, as defined in 802.11-2007 standard. More...
 
class  ns3::WifiInformationElementVector
 Information element vector. More...
 
class  ns3::WifiMac
 base class for all MAC-level wifi objects. More...
 
class  ns3::WifiMacHeader
 Implements the IEEE 802.11 MAC header. More...
 
class  ns3::WifiMacQueue
 This queue implements the timeout procedure described in (Section 9.19.2.6 "Retransmit procedures" paragraph 6; IEEE 802.11-2012). More...
 
class  ns3::WifiMacQueueItem
 WifiMacQueueItem stores (const) packets along with their Wifi MAC headers and the time when they were enqueued. More...
 
class  ns3::WifiMacTrailer
 Implements the IEEE 802.11 MAC trailer. More...
 
class  ns3::WifiMode
 represent a single transmission mode More...
 
class  ns3::WifiNetDevice
 Hold together all Wifi-related objects. More...
 
struct  ns3::WifiNoAck
 WifiNoAck specifies that no acknowledgment is required. More...
 
struct  ns3::WifiNoProtection
 WifiNoProtection specifies that no protection method is used. More...
 
struct  ns3::WifiNormalAck
 WifiNormalAck specifies that acknowledgment via Normal Ack is required. More...
 
class  ns3::WifiPhy
 802.11 PHY layer model More...
 
class  ns3::WifiPhyOperatingChannel
 Class that keeps track of all information about the current PHY operating channel. More...
 
class  ns3::WifiPhyStateHelper
 This objects implements the PHY state machine of the Wifi device. More...
 
class  ns3::WifiPhyTag
 Tag for WifiTxVector and WifiPreamble information to be embedded in outgoing transmissions as a PacketTag. More...
 
class  ns3::WifiPpdu
 WifiPpdu stores a preamble, a modulation class, PHY headers and a PSDU. More...
 
struct  ns3::WifiProtection
 WifiProtection is an abstract base struct. More...
 
class  ns3::WifiProtectionManager
 WifiProtectionManager is an abstract base class. More...
 
class  ns3::WifiPsdu
 WifiPsdu stores an MPDU, S-MPDU or A-MPDU, by keeping header(s) and payload(s) separate for each constituent MPDU. More...
 
class  ns3::WifiRemoteStationManager
 hold a list of per-remote-station state. More...
 
struct  ns3::WifiRrpaaThresholds
 Robust Rate and Power Adaptation Algorithm. More...
 
struct  ns3::WifiRtsCtsProtection
 WifiRtsCtsProtection specifies that RTS/CTS protection method is used. More...
 
class  ns3::WifiSpectrumPhyInterface
 This class is an adaptor between class SpectrumWifiPhy (which inherits from WifiPhy) and class SpectrumChannel (which expects objects derived from class SpectrumPhy to be connected to it). More...
 
struct  ns3::WifiSpectrumSignalParameters
 Signal parameters for wifi. More...
 
class  ns3::WifiTxParameters
 This class stores the TX parameters (TX vector, protection mechanism, acknowledgment mechanism, TX duration, ...) for a frame of different types (MPDU, A-MPDU, multi-TID A-MPDU, MU PPDU, ...). More...
 
class  ns3::WifiTxTimer
 This class is used to handle the timer that a station starts when transmitting a frame that solicits a response. More...
 
struct  ns3::WifiUlMuMultiStaBa
 WifiUlMuMultiStaBa specifies that a Basic Trigger Frame is being sent to solicit TB PPDUs that will be acknowledged through a multi-STA BlockAck frame. More...
 
class  ns3::YansErrorRateModel
 Model the error rate for different modulations. More...
 
class  ns3::YansWifiChannel
 a channel to interconnect ns3::YansWifiPhy objects. More...
 
class  ns3::YansWifiPhy
 802.11 PHY layer model More...
 

Enumerations

enum  ns3::AcIndex : uint8_t {
  ns3::AC_BE = 0 , ns3::AC_BK = 1 , ns3::AC_VI = 2 , ns3::AC_VO = 3 ,
  ns3::AC_BE_NQOS = 4 , ns3::AC_BEACON = 5 , ns3::AC_UNDEF
}
 This enumeration defines the Access Categories as an enumeration with values corresponding to the AC index (ACI) values specified (Table 8-104 "ACI-to-AC coding"; IEEE 802.11-2012). More...
 
enum  ns3::FrequencyChannelType : uint8_t { ns3::WIFI_PHY_DSSS_CHANNEL = 0 , ns3::WIFI_PHY_OFDM_CHANNEL , ns3::WIFI_PHY_80211p_CHANNEL }
 Enumeration of frequency channel types. More...
 
enum  ns3::MpduType {
  ns3::NORMAL_MPDU , ns3::SINGLE_MPDU , ns3::FIRST_MPDU_IN_AGGREGATE , ns3::MIDDLE_MPDU_IN_AGGREGATE ,
  ns3::LAST_MPDU_IN_AGGREGATE
}
 The type of an MPDU. More...
 
enum  ns3::OfdmPhyVariant { ns3::OFDM_PHY_DEFAULT , ns3::OFDM_PHY_10_MHZ , ns3::OFDM_PHY_5_MHZ }
 The OFDM (11a) PHY variants. More...
 
enum  ns3::TriggerFrameType : uint8_t {
  ns3::BASIC_TRIGGER = 0 , ns3::BFRP_TRIGGER = 1 , ns3::MU_BAR_TRIGGER = 2 , ns3::MU_RTS_TRIGGER = 3 ,
  ns3::BSRP_TRIGGER = 4 , ns3::GCR_MU_BAR_TRIGGER = 5 , ns3::BQRP_TRIGGER = 6 , ns3::NFRP_TRIGGER = 7
}
 The different Trigger frame types. More...
 
enum  ns3::WifiMacDropReason : uint8_t { ns3::WIFI_MAC_DROP_FAILED_ENQUEUE = 0 , ns3::WIFI_MAC_DROP_EXPIRED_LIFETIME , ns3::WIFI_MAC_DROP_REACHED_RETRY_LIMIT , ns3::WIFI_MAC_DROP_QOS_OLD_PACKET }
 The reason why an MPDU was dropped. More...
 
enum  ns3::WifiModulationClass {
  ns3::WIFI_MOD_CLASS_UNKNOWN = 0 , ns3::WIFI_MOD_CLASS_DSSS , ns3::WIFI_MOD_CLASS_HR_DSSS , ns3::WIFI_MOD_CLASS_ERP_OFDM ,
  ns3::WIFI_MOD_CLASS_OFDM , ns3::WIFI_MOD_CLASS_HT , ns3::WIFI_MOD_CLASS_VHT , ns3::WIFI_MOD_CLASS_HE
}
 This enumeration defines the modulation classes per (Table 10-6 "Modulation classes"; IEEE 802.11-2016, with updated in 802.11ax/D6.0 as Table 10-9). More...
 
enum  ns3::WifiPhyBand { ns3::WIFI_PHY_BAND_2_4GHZ , ns3::WIFI_PHY_BAND_5GHZ , ns3::WIFI_PHY_BAND_6GHZ , ns3::WIFI_PHY_BAND_UNSPECIFIED }
 Identifies the PHY band. More...
 
enum  ns3::WifiPhyRxfailureReason {
  ns3::UNKNOWN = 0 , ns3::UNSUPPORTED_SETTINGS , ns3::CHANNEL_SWITCHING , ns3::RXING ,
  ns3::TXING , ns3::SLEEPING , ns3::POWERED_OFF , ns3::TRUNCATED_TX ,
  ns3::BUSY_DECODING_PREAMBLE , ns3::PREAMBLE_DETECT_FAILURE , ns3::RECEPTION_ABORTED_BY_TX , ns3::L_SIG_FAILURE ,
  ns3::HT_SIG_FAILURE , ns3::SIG_A_FAILURE , ns3::SIG_B_FAILURE , ns3::PREAMBLE_DETECTION_PACKET_SWITCH ,
  ns3::FRAME_CAPTURE_PACKET_SWITCH , ns3::OBSS_PD_CCA_RESET , ns3::HE_TB_PPDU_TOO_LATE , ns3::FILTERED
}
 Enumeration of the possible reception failure reasons. More...
 
enum  ns3::WifiPpduField {
  ns3::WIFI_PPDU_FIELD_PREAMBLE = 0 , ns3::WIFI_PPDU_FIELD_NON_HT_HEADER , ns3::WIFI_PPDU_FIELD_HT_SIG , ns3::WIFI_PPDU_FIELD_TRAINING ,
  ns3::WIFI_PPDU_FIELD_SIG_A , ns3::WIFI_PPDU_FIELD_SIG_B , ns3::WIFI_PPDU_FIELD_DATA
}
 The type of PPDU field (grouped for convenience) More...
 
enum  ns3::WifiPpduType { ns3::WIFI_PPDU_TYPE_SU = 0 , ns3::WIFI_PPDU_TYPE_DL_MU , ns3::WIFI_PPDU_TYPE_UL_MU }
 The type of PPDU (SU, DL MU, or UL MU) More...
 
enum  ns3::WifiPreamble {
  ns3::WIFI_PREAMBLE_LONG , ns3::WIFI_PREAMBLE_SHORT , ns3::WIFI_PREAMBLE_HT_MF , ns3::WIFI_PREAMBLE_VHT_SU ,
  ns3::WIFI_PREAMBLE_VHT_MU , ns3::WIFI_PREAMBLE_HE_SU , ns3::WIFI_PREAMBLE_HE_ER_SU , ns3::WIFI_PREAMBLE_HE_MU ,
  ns3::WIFI_PREAMBLE_HE_TB
}
 The type of preamble to be used by an IEEE 802.11 transmission. More...
 
enum  ns3::WifiStandard {
  ns3::WIFI_STANDARD_UNSPECIFIED , ns3::WIFI_STANDARD_80211a , ns3::WIFI_STANDARD_80211b , ns3::WIFI_STANDARD_80211g ,
  ns3::WIFI_STANDARD_80211p , ns3::WIFI_STANDARD_80211n , ns3::WIFI_STANDARD_80211ac , ns3::WIFI_STANDARD_80211ax
}
 Identifies the IEEE 802.11 specifications that a Wifi device can be configured to use. More...
 

Functions

uint8_t ns3::GetTid (Ptr< const Packet > packet, const WifiMacHeader hdr)
 This function is useful to get traffic id of different packet types. More...
 
bool ns3::operator< (enum AcIndex left, enum AcIndex right)
 Operator< overload returning true if the AC on the left has lower priority than the AC on the right. More...
 
bool ns3::operator<= (enum AcIndex left, enum AcIndex right)
 Operator<= overload returning true if the AC on the left has lower or the same priority than the AC on the right. More...
 
bool ns3::operator> (enum AcIndex left, enum AcIndex right)
 Operator> overload returning true if the AC on the left has higher priority than the AC on the right. More...
 
bool ns3::operator>= (enum AcIndex left, enum AcIndex right)
 Operator>= overload returning true if the AC on the left has higher or the same priority than the AC on the right. More...
 
uint8_t ns3::QosUtilsGetTidForPacket (Ptr< const Packet > packet)
 If a QoS tag is attached to the packet, returns a value < 8. More...
 
bool ns3::QosUtilsIsOldPacket (uint16_t startingSeq, uint16_t seqNumber)
 This function checks if packet with sequence number seqNumber is an "old" packet. More...
 
uint32_t ns3::QosUtilsMapSeqControlToUniqueInteger (uint16_t seqControl, uint16_t endSequence)
 Next function is useful to correctly sort buffered packets under block ack. More...
 
AcIndex ns3::QosUtilsMapTidToAc (uint8_t tid)
 Maps TID (Traffic ID) to Access classes. More...
 
uint8_t ns3::SelectQueueByDSField (Ptr< QueueItem > item)
 Determine the TX queue for a given packet. More...
 

Detailed Description

This section documents the API of the ns-3 Wifi module.

For a generic functional description, please refer to the ns-3 manual.

Enumeration Type Documentation

◆ AcIndex

enum ns3::AcIndex : uint8_t

This enumeration defines the Access Categories as an enumeration with values corresponding to the AC index (ACI) values specified (Table 8-104 "ACI-to-AC coding"; IEEE 802.11-2012).

Enumerator
AC_BE 

Best Effort.

AC_BK 

Background.

AC_VI 

Video.

AC_VO 

Voice.

AC_BE_NQOS 

Non-QoS.

AC_BEACON 

Beacon queue.

AC_UNDEF 

Total number of ACs.

Definition at line 70 of file qos-utils.h.

◆ FrequencyChannelType

enum ns3::FrequencyChannelType : uint8_t

Enumeration of frequency channel types.

Enumerator
WIFI_PHY_DSSS_CHANNEL 
WIFI_PHY_OFDM_CHANNEL 
WIFI_PHY_80211p_CHANNEL 

Definition at line 96 of file wifi-standards.h.

◆ MpduType

The type of an MPDU.

Enumerator
NORMAL_MPDU 

The MPDU is not part of an A-MPDU.

SINGLE_MPDU 

The MPDU is a single MPDU.

FIRST_MPDU_IN_AGGREGATE 

The MPDU is the first aggregate in an A-MPDU with multiple MPDUs, but is not the last aggregate.

MIDDLE_MPDU_IN_AGGREGATE 

The MPDU is part of an A-MPDU with multiple MPDUs, but is neither the first nor the last aggregate.

LAST_MPDU_IN_AGGREGATE 

The MPDU is the last aggregate in an A-MPDU with multiple MPDUs.

Definition at line 30 of file wifi-mpdu-type.h.

◆ OfdmPhyVariant

The OFDM (11a) PHY variants.

See also
OfdmPhy
Enumerator
OFDM_PHY_DEFAULT 
OFDM_PHY_10_MHZ 
OFDM_PHY_5_MHZ 

Definition at line 43 of file ofdm-phy.h.

◆ TriggerFrameType

enum ns3::TriggerFrameType : uint8_t

The different Trigger frame types.

Enumerator
BASIC_TRIGGER 
BFRP_TRIGGER 
MU_BAR_TRIGGER 
MU_RTS_TRIGGER 
BSRP_TRIGGER 
GCR_MU_BAR_TRIGGER 
BQRP_TRIGGER 
NFRP_TRIGGER 

Definition at line 560 of file ctrl-headers.h.

◆ WifiMacDropReason

enum ns3::WifiMacDropReason : uint8_t

The reason why an MPDU was dropped.

Enumerator
WIFI_MAC_DROP_FAILED_ENQUEUE 
WIFI_MAC_DROP_EXPIRED_LIFETIME 
WIFI_MAC_DROP_REACHED_RETRY_LIMIT 
WIFI_MAC_DROP_QOS_OLD_PACKET 

Definition at line 65 of file wifi-mac.h.

◆ WifiModulationClass

This enumeration defines the modulation classes per (Table 10-6 "Modulation classes"; IEEE 802.11-2016, with updated in 802.11ax/D6.0 as Table 10-9).

Enumerator
WIFI_MOD_CLASS_UNKNOWN 

Modulation class unknown or unspecified.

A WifiMode with this WifiModulationClass has not been properly initialized.

WIFI_MOD_CLASS_DSSS 

DSSS (Clause 15)

WIFI_MOD_CLASS_HR_DSSS 

HR/DSSS (Clause 16)

WIFI_MOD_CLASS_ERP_OFDM 

ERP-OFDM (18.4)

WIFI_MOD_CLASS_OFDM 

OFDM (Clause 17)

WIFI_MOD_CLASS_HT 

HT (Clause 19)

WIFI_MOD_CLASS_VHT 

VHT (Clause 22)

WIFI_MOD_CLASS_HE 

HE (Clause 27)

Definition at line 121 of file wifi-phy-common.h.

◆ WifiPhyBand

Identifies the PHY band.

Enumerator
WIFI_PHY_BAND_2_4GHZ 

The 2.4 GHz band.

WIFI_PHY_BAND_5GHZ 

The 5 GHz band.

WIFI_PHY_BAND_6GHZ 

The 6 GHz band.

WIFI_PHY_BAND_UNSPECIFIED 

Unspecified.

Definition at line 32 of file wifi-phy-band.h.

◆ WifiPhyRxfailureReason

Enumeration of the possible reception failure reasons.

Enumerator
UNKNOWN 
UNSUPPORTED_SETTINGS 
CHANNEL_SWITCHING 
RXING 
TXING 
SLEEPING 
POWERED_OFF 
TRUNCATED_TX 
BUSY_DECODING_PREAMBLE 
PREAMBLE_DETECT_FAILURE 
RECEPTION_ABORTED_BY_TX 
L_SIG_FAILURE 
HT_SIG_FAILURE 
SIG_A_FAILURE 
SIG_B_FAILURE 
PREAMBLE_DETECTION_PACKET_SWITCH 
FRAME_CAPTURE_PACKET_SWITCH 
OBSS_PD_CCA_RESET 
HE_TB_PPDU_TOO_LATE 
FILTERED 

Definition at line 262 of file wifi-phy-common.h.

◆ WifiPpduField

The type of PPDU field (grouped for convenience)

Enumerator
WIFI_PPDU_FIELD_PREAMBLE 

SYNC + SFD fields for DSSS or ERP, shortSYNC + shortSFD fields for HR/DSSS or ERP, HT-GF-STF + HT-GF-LTF1 fields for HT-GF, L-STF + L-LTF fields otherwise.

WIFI_PPDU_FIELD_NON_HT_HEADER 

PHY header field for DSSS or ERP, short PHY header field for HR/DSSS or ERP, field not present for HT-GF, L-SIG field or L-SIG + RL-SIG fields otherwise.

WIFI_PPDU_FIELD_HT_SIG 

HT-SIG field.

WIFI_PPDU_FIELD_TRAINING 

STF + LTF fields (excluding those in preamble for HT-GF)

WIFI_PPDU_FIELD_SIG_A 

SIG-A field.

WIFI_PPDU_FIELD_SIG_B 

SIG-B field.

WIFI_PPDU_FIELD_DATA 

data field

Definition at line 170 of file wifi-phy-common.h.

◆ WifiPpduType

The type of PPDU (SU, DL MU, or UL MU)

Enumerator
WIFI_PPDU_TYPE_SU 
WIFI_PPDU_TYPE_DL_MU 
WIFI_PPDU_TYPE_UL_MU 

Definition at line 228 of file wifi-phy-common.h.

◆ WifiPreamble

The type of preamble to be used by an IEEE 802.11 transmission.

Enumerator
WIFI_PREAMBLE_LONG 
WIFI_PREAMBLE_SHORT 
WIFI_PREAMBLE_HT_MF 
WIFI_PREAMBLE_VHT_SU 
WIFI_PREAMBLE_VHT_MU 
WIFI_PREAMBLE_HE_SU 
WIFI_PREAMBLE_HE_ER_SU 
WIFI_PREAMBLE_HE_MU 
WIFI_PREAMBLE_HE_TB 

Definition at line 67 of file wifi-phy-common.h.

◆ WifiStandard

Identifies the IEEE 802.11 specifications that a Wifi device can be configured to use.

Enumerator
WIFI_STANDARD_UNSPECIFIED 
WIFI_STANDARD_80211a 
WIFI_STANDARD_80211b 
WIFI_STANDARD_80211g 
WIFI_STANDARD_80211p 
WIFI_STANDARD_80211n 
WIFI_STANDARD_80211ac 
WIFI_STANDARD_80211ax 

Definition at line 35 of file wifi-standards.h.

Function Documentation

◆ GetTid()

◆ operator<()

bool ns3::operator< ( enum AcIndex  left,
enum AcIndex  right 
)

Operator< overload returning true if the AC on the left has lower priority than the AC on the right.

Parameters
leftthe AC on the left of operator<
rightthe AC on the right of operator<
Returns
true if the AC on the left has lower priority than the AC on the right

Definition at line 110 of file qos-utils.cc.

◆ operator<=()

bool ns3::operator<= ( enum AcIndex  left,
enum AcIndex  right 
)

Operator<= overload returning true if the AC on the left has lower or the same priority than the AC on the right.

Parameters
leftthe AC on the left of operator<=
rightthe AC on the right of operator<=
Returns
true if the AC on the left has lower or the same priority than the AC on the right

Definition at line 115 of file qos-utils.cc.

◆ operator>()

bool ns3::operator> ( enum AcIndex  left,
enum AcIndex  right 
)

Operator> overload returning true if the AC on the left has higher priority than the AC on the right.

Parameters
leftthe AC on the left of operator>
rightthe AC on the right of operator>
Returns
true if the AC on the left has higher priority than the AC on the right

Definition at line 84 of file qos-utils.cc.

References ns3::AC_BK, and NS_ABORT_MSG_IF.

◆ operator>=()

bool ns3::operator>= ( enum AcIndex  left,
enum AcIndex  right 
)

Operator>= overload returning true if the AC on the left has higher or the same priority than the AC on the right.

Parameters
leftthe AC on the left of operator>=
rightthe AC on the right of operator>=
Returns
true if the AC on the left has higher or the same priority than the AC on the right

Definition at line 103 of file qos-utils.cc.

References NS_ABORT_MSG_IF.

◆ QosUtilsGetTidForPacket()

uint8_t ns3::QosUtilsGetTidForPacket ( Ptr< const Packet packet)

If a QoS tag is attached to the packet, returns a value < 8.

A value >= 8 is returned otherwise.

Parameters
packetthe packet to checked for a QoS tag
Returns
a value less than 8 if QoS tag was present, a value >= 8 is returned if no QoS tag was present

Definition at line 152 of file qos-utils.cc.

References ns3::SocketPriorityTag::GetPriority(), and ns3::Packet::PeekPacketTag().

Referenced by ns3::OcbWifiMac::Enqueue(), ns3::AdhocWifiMac::Enqueue(), ns3::StaWifiMac::Enqueue(), ns3::ApWifiMac::ForwardDown(), and ns3::OcbWifiMac::SendVsc().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ QosUtilsIsOldPacket()

bool ns3::QosUtilsIsOldPacket ( uint16_t  startingSeq,
uint16_t  seqNumber 
)

This function checks if packet with sequence number seqNumber is an "old" packet.

The sequence number space is considered divided into two parts, one of which is "old" and one of which is "new" by means of a boundary created by adding half the sequence number range to the starting sequence number startingSeq. So this function works fine also when seqNumber is smaller than startingSeq and startingSeq + 2048 is greater than 4096 because all comparison are circular modulo 2^12. The following are possible scenarios:

--— = old packets +++++ = new packets

CASE A:

0 4095 |++++++|-------------—|++++++| ^ ^ | endSeq | startingSeq

CASE B:

0 4095 |---—|++++++++++++++++|--—| ^ ^ | startingSeq | endSeq

Here in the examples endSeq is the sequenceNumber of the "last" new packet. So this function, when specified a starting sequence and a sequence number, returns true if that packet (with sequence number numberSeq)) belongs to the section of the sequence number space marked with '-' characters. The function returns false otherwise.

Parameters
startingSeqthe starting sequence number
seqNumberthe sequence number to be checked
Returns
true if the packet is old, false otherwise

Definition at line 178 of file qos-utils.cc.

References NS_ASSERT.

Referenced by QosUtilsIsOldPacketTest::DoRun(), ns3::WifiDefaultAckManager::GetMaxDistFromStartingSeq(), ns3::WifiPsdu::GetMaxDistFromStartingSeq(), ns3::QosTxop::IsQosOldPacket(), and ns3::BlockAckManager::NotifyDiscardedMpdu().

+ Here is the caller graph for this function:

◆ QosUtilsMapSeqControlToUniqueInteger()

uint32_t ns3::QosUtilsMapSeqControlToUniqueInteger ( uint16_t  seqControl,
uint16_t  endSequence 
)

Next function is useful to correctly sort buffered packets under block ack.

When an BAR is received from originator station, completed "old" (see section 9.10.3 in IEEE 802.11e) packets must be forwarded up before "new" packets.

Parameters
seqControlthe sequence control field
endSequencethe sequence number ending the acknowledgment window
Returns
a unique integer for the given sequence control and end sequence

Definition at line 167 of file qos-utils.cc.

Referenced by PacketBufferingCaseA::DoRun(), and PacketBufferingCaseB::DoRun().

+ Here is the caller graph for this function:

◆ QosUtilsMapTidToAc()

◆ SelectQueueByDSField()

uint8_t ns3::SelectQueueByDSField ( Ptr< QueueItem item)

Determine the TX queue for a given packet.

Parameters
itemthe packet
Returns
the access category

Modeled after the Linux function ieee80211_select_queue (net/mac80211/wme.c). A SocketPriority tag is attached to the packet (or the existing one is replaced) to carry the user priority, which is set to the three most significant bits of the DS field (TOS field in case of IPv4 and Traffic Class field in case of IPv6). The Access Category corresponding to the user priority according to the QosUtilsMapTidToAc function is returned.

The following table shows the mapping for the Diffserv Per Hop Behaviors.

PHB TOS (binary) UP Access Category
EF 101110xx 5 AC_VI
AF11 001010xx 1 AC_BK
AF21 010010xx 2 AC_BK
AF31 011010xx 3 AC_BE
AF41 100010xx 4 AC_VI
AF12 001100xx 1 AC_BK
AF22 010100xx 2 AC_BK
AF32 011100xx 3 AC_BE
AF42 100100xx 4 AC_VI
AF13 001110xx 1 AC_BK
AF23 010110xx 2 AC_BK
AF33 011110xx 3 AC_BE
AF43 100110xx 4 AC_VI
CS0 000000xx 0 AC_BE
CS1 001000xx 1 AC_BK
CS2 010000xx 2 AC_BK
CS3 011000xx 3 AC_BE
CS4 100000xx 4 AC_VI
CS5 101000xx 5 AC_VI
CS6 110000xx 6 AC_VO
CS7 111000xx 7 AC_VO

This method is called by the traffic control layer before enqueuing a packet in the queue disc, if a queue disc is installed on the outgoing device, or passing a packet to the device, otherwise.

Definition at line 252 of file qos-utils.cc.

References ns3::QueueItem::IP_DSFIELD, ns3::QosUtilsMapTidToAc(), and ns3::SocketPriorityTag::SetPriority().

+ Here is the call graph for this function: