This section documents the API of the ns-3 Wifi module. More...
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::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... | |
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... | |
This section documents the API of the ns-3 Wifi module.
For a generic functional description, please refer to the ns-3 manual.
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.
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.
enum ns3::MpduType |
The type of an MPDU.
Definition at line 30 of file wifi-mpdu-type.h.
enum ns3::OfdmPhyVariant |
The OFDM (11a) PHY variants.
Enumerator | |
---|---|
OFDM_PHY_DEFAULT | |
OFDM_PHY_10_MHZ | |
OFDM_PHY_5_MHZ |
Definition at line 43 of file ofdm-phy.h.
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.
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.
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.
enum ns3::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.
Enumeration of the possible reception failure reasons.
Definition at line 262 of file wifi-phy-common.h.
enum ns3::WifiPpduField |
The type of PPDU field (grouped for convenience)
Definition at line 170 of file wifi-phy-common.h.
enum ns3::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.
enum ns3::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.
enum ns3::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.
uint8_t ns3::GetTid | ( | Ptr< const Packet > | packet, |
const WifiMacHeader | hdr | ||
) |
This function is useful to get traffic id of different packet types.
packet | packet to check |
hdr | 802.11 header for packet to check |
Definition at line 187 of file qos-utils.cc.
References ns3::WifiActionHeader::BLOCK_ACK, ns3::WifiActionHeader::BLOCK_ACK_ADDBA_REQUEST, ns3::WifiActionHeader::BLOCK_ACK_ADDBA_RESPONSE, ns3::WifiActionHeader::BLOCK_ACK_DELBA, ns3::WifiActionHeader::ActionValue::blockAck, ns3::Packet::Copy(), ns3::WifiActionHeader::GetAction(), ns3::WifiActionHeader::GetCategory(), ns3::WifiMacHeader::GetQosTid(), ns3::MgtAddBaRequestHeader::GetTid(), ns3::MgtAddBaResponseHeader::GetTid(), ns3::MgtDelBaHeader::GetTid(), ns3::CtrlBAckResponseHeader::GetTidInfo(), ns3::CtrlBAckRequestHeader::GetTidInfo(), ns3::WifiMacHeader::IsAction(), ns3::WifiMacHeader::IsBlockAck(), ns3::WifiMacHeader::IsBlockAckReq(), ns3::WifiMacHeader::IsMgt(), ns3::WifiMacHeader::IsQosData(), NS_ASSERT, NS_FATAL_ERROR, ns3::Packet::PeekHeader(), and ns3::Packet::RemoveHeader().
Referenced by ns3::HtFrameExchangeManager::NotifyPacketDiscarded(), and ns3::WifiDefaultAckManager::TryAddMpdu().
Operator< overload returning true if the AC on the left has lower priority than the AC on the right.
left | the AC on the left of operator< |
right | the AC on the right of operator< |
Definition at line 110 of file qos-utils.cc.
Operator<= overload returning true if the AC on the left has lower or the same priority than the AC on the right.
left | the AC on the left of operator<= |
right | the AC on the right of operator<= |
Definition at line 115 of file qos-utils.cc.
Operator> overload returning true if the AC on the left has higher priority than the AC on the right.
left | the AC on the left of operator> |
right | the AC on the right of operator> |
Definition at line 84 of file qos-utils.cc.
References ns3::AC_BK, and NS_ABORT_MSG_IF.
Operator>= overload returning true if the AC on the left has higher or the same priority than the AC on the right.
left | the AC on the left of operator>= |
right | the AC on the right of operator>= |
Definition at line 103 of file qos-utils.cc.
References NS_ABORT_MSG_IF.
If a QoS tag is attached to the packet, returns a value < 8.
A value >= 8 is returned otherwise.
packet | the packet to checked for a QoS tag |
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().
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.
startingSeq | the starting sequence number |
seqNumber | the sequence number to be checked |
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().
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.
seqControl | the sequence control field |
endSequence | the sequence number ending the acknowledgment window |
Definition at line 167 of file qos-utils.cc.
Referenced by PacketBufferingCaseA::DoRun(), and PacketBufferingCaseB::DoRun().
AcIndex ns3::QosUtilsMapTidToAc | ( | uint8_t | tid | ) |
Maps TID (Traffic ID) to Access classes.
For more details see (Table 9-1 "UP-to-AC mapping"; IEEE 802.11-2012).
tid | the Traffic ID to be mapped to Access class |
Definition at line 126 of file qos-utils.cc.
References ns3::AC_BE, ns3::AC_BK, ns3::AC_UNDEF, ns3::AC_VI, ns3::AC_VO, and NS_ASSERT_MSG.
Referenced by ns3::RrMultiUserScheduler::ComputeDlMuInfo(), ns3::MeshWifiInterfaceMac::ForwardDown(), ns3::WifiDefaultAckManager::GetAckInfoIfAggregatedMuBar(), ns3::WifiDefaultAckManager::GetAckInfoIfBarBaSequence(), ns3::WifiDefaultAckManager::GetAckInfoIfTfMuBar(), ns3::MpduAggregator::GetMaxAmpduSize(), ns3::MsduAggregator::GetMaxAmsduSize(), ns3::WifiMac::GetQosTxop(), ns3::WifiRemoteStationManager::NeedRetransmission(), ns3::QosTxop::PrepareBlockAckRequest(), ns3::WifiRemoteStationManager::ReportDataFailed(), ns3::WifiRemoteStationManager::ReportDataOk(), ns3::WifiRemoteStationManager::ReportFinalDataFailed(), ns3::WifiRemoteStationManager::ReportFinalRtsFailed(), ns3::WifiRemoteStationManager::ReportRtsFailed(), ns3::WifiRemoteStationManager::ReportRtsOk(), ns3::SelectQueueByDSField(), and ns3::RrMultiUserScheduler::TrySendingDlMuPpdu().
Determine the TX queue for a given packet.
item | the packet |
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 253 of file qos-utils.cc.
References ns3::QueueItem::IP_DSFIELD, ns3::QosUtilsMapTidToAc(), and ns3::SocketPriorityTag::SetPriority().