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
 

Classes

class  ns3::AarfcdWifiManager
 an implementation of the AARF-CD algorithmThis algorithm was first described in "Efficient Collision Detection for Auto Rate Fallback Algorithm". More...
 
class  ns3::AarfWifiManager
 AARF Rate control algorithmThis class implements the AARF rate control algorithm which was initially described in IEEE 802.11 Rate Adaptation: A Practical Approach, by M. More...
 
class  ns3::AdhocWifiMac
 
More...
 
class  ns3::AmpduSubframeHeader
 
Introspection did not find any typical Config paths. 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 algorithmThis class implements the AMRR rate control algorithm which was initially described in IEEE 802.11 Rate Adaptation: A Practical Approach, by M. More...
 
class  ns3::AmsduSubframeHeader
 
Introspection did not find any typical Config paths. 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 machineHandle association, dis-association and authentication, of STAs within an infrastructure BSS. More...
 
class  ns3::ArfWifiManager
 ARF Rate control algorithm. More...
 
struct  ns3::Bar
 Block Ack Request. More...
 
class  ns3::BlockAckAgreement
 Maintains information for a block ack agreement. More...
 
class  ns3::BlockAckCache
 BlockAckCache cache. More...
 
class  ns3::BlockAckManager
 Manages all block ack agreements for an originator station. More...
 
class  ns3::BlockAckWindow
 Block Ack window. More...
 
class  ns3::CapabilityInformation
 Capability information. More...
 
class  ns3::CaraWifiManager
 implement the CARA rate control algorithmImplement the CARA algorithm from: J. 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::CfParameterSet
 The CF Parameter SetThis class knows how to serialise and deserialise the CF Parameter Set. More...
 
class  ns3::ChannelAccessManager
 Manage a set of ns3::TxopHandle a set of independent ns3::Txop, each of which represents a single DCF within a MAC stack. More...
 
class  ns3::ConstantObssPdAlgorithm
 Constant OBSS PD algorithmThis constant OBSS_PD algorithm is a simple OBSS_PD algorithm which evalutes if a receiving signal should be accepted or rejected based on a constant threshold. More...
 
class  ns3::ConstantRateWifiManager
 use constant rates for data and RTS transmissions More...
 
class  ns3::CtrlBAckRequestHeader
 Headers for Block ack request. More...
 
class  ns3::CtrlBAckResponseHeader
 Headers for Block ack response. More...
 
class  ns3::DsssErrorRateModel
 an implementation of DSSS error rate modelThe 802.11b modulations: More...
 
class  ns3::DsssParameterSet
 The DSSS Parameter SetThis class knows how to serialise and deserialise the DSSS Parameter Set. More...
 
class  ns3::DsssSigHeader
 Implements the IEEE 802.11 DSSS SIG PHY header. More...
 
class  ns3::EdcaParameterSet
 The EDCA Parameter SetThis class knows how to serialise and deserialise the EDCA Parameter Set. More...
 
class  ns3::ErpInformation
 The ErpInformation Information ElementThis class knows how to serialise and deserialise the ErpInformation Information Element. 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 ElementThis class knows how to serialise and deserialise the Extended Capabilities Information Element. More...
 
class  ns3::ExtendedSupportedRatesIE
 The Extended Supported Rates Information ElementThis class knows how to serialise and deserialise the Extended Supported Rates Element that holds (non-HT) rates beyond the 8 that the original Supported Rates element can carry. More...
 
class  ns3::FrameCaptureModel
 the interface for Wifi's frame capture models More...
 
class  ns3::HeCapabilities
 The IEEE 802.11ax HE Capabilities. More...
 
class  ns3::HeConfiguration
 HE configurationThis object stores HE configuration information, for use in modifying AP or STA behavior and for constructing HE-related information elements. More...
 
class  ns3::HeOperation
 The HE Operation Information ElementThis class knows how to serialise and deserialise the HE Operation Information Element. More...
 
class  ns3::HeSigHeader
 Implements the IEEE 802.11ax HE-SIG PHY header (HE-SIG-A1/A2/B) More...
 
class  ns3::HtCapabilities
 The HT Capabilities Information ElementThis class knows how to serialise and deserialise the HT Capabilities Information Element. More...
 
class  ns3::HtConfiguration
 HT configurationThis object stores HT configuration information, for use in modifying AP or STA behavior and for constructing HT-related information elements. More...
 
class  ns3::HtOperation
 The HT Operation Information ElementThis class knows how to serialise and deserialise the HT Operation Information Element. More...
 
class  ns3::HtSigHeader
 Implements the IEEE 802.11n PHY header (HT-SIG1/2). More...
 
class  ns3::IdealWifiManager
 Ideal rate control algorithmThis class implements an 'ideal' rate control algorithm similar to RBAR in spirit (see A rate-adaptive MAC protocol for multihop wireless networks by G. More...
 
class  ns3::InfrastructureWifiMac
 The Wifi MAC high model for a STA or AP in a BSS. More...
 
class  ns3::InterferenceHelper
 handles interference calculations More...
 
class  ns3::LSigHeader
 Implements the IEEE 802.11 OFDM and ERP OFDM L-SIG PHY header. More...
 
class  ns3::MacLow
 handle RTS/CTS/DATA/ACK transactions. More...
 
class  ns3::MacLowTransmissionParameters
 control how a packet is transmitted. 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 del 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 AlgorithmMinstrel-HT is a rate adaptation mechanism for the 802.11n/ac standard based on Minstrel, and is based on the approach of probing the channel to dynamically learn about working rates that can be supported. More...
 
class  ns3::MinstrelWifiManager
 Implementation of Minstrel Rate Control AlgorithmMinstrel is a rate control algorithm implemented in MadWifi and Linux. More...
 
class  ns3::MpduAggregator
 Aggregator used to construct A-MPDUs. More...
 
class  ns3::MsduAggregator
 Aggregator used to construct A-MSDUs. More...
 
class  ns3::NistErrorRateModel
 A model for the error rate for different modulations. 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 block ack for an originator station. More...
 
class  ns3::ParfWifiManager
 PARF Rate control algorithm. More...
 
class  ns3::PreambleDetectionModel
 the interface for Wifi's preamble detection models 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::RegularWifiMac
 base class for all MAC-level wifi objects. More...
 
class  ns3::RraaWifiManager
 Robust Rate Adaptation AlgorithmThis is an implementation of RRAA as described in "Robust rate adaptation for 802.11 wireless networks" by "Starsky H. Y. Wong", "Hao Yang", "Songwu Lu", and, "Vaduvur Bharghavan" published in Mobicom 06. More...
 
class  ns3::SimpleFrameCaptureModel
 A simple threshold-based model for frame capture effect. More...
 
class  ns3::SpectrumWifiPhy
 802.11 PHY layer modelThis PHY implements a spectrum-aware enhancement of the 802.11 SpectrumWifiPhy 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 ElementThis class knows how to serialise and deserialise the Supported Rates Element that holds the first 8 (non-HT) supported rates. 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 configurationThis object stores VHT configuration information, for use in modifying AP or STA behavior and for constructing VHT-related information elements. More...
 
class  ns3::VhtOperation
 The VHT Operation Information ElementThis class knows how to serialise and deserialise the VHT Operation Information Element. More...
 
class  ns3::VhtSigHeader
 Implements the IEEE 802.11ac PHY header (VHT-SIG-A1/A2/B). More...
 
class  ns3::WifiActionHeader
 See IEEE 802.11 chapter 7.3.1.11 Header format: | category: 1 | action value: 1 |. More...
 
class  ns3::WifiInformationElement
 Information element, as defined in 802.11-2007 standardThe IEEE 802.11 standard includes the notion of Information Elements, which are encodings of management information to be communicated between STAs in the payload of various frames of type Management. More...
 
class  ns3::WifiInformationElementVector
 Information element vectorImplements a vector of WifiInformationElements. 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 modeA WifiMode is implemented by a single integer which is used to lookup in a global array the characteristics of the associated transmission mode. More...
 
class  ns3::WifiNetDevice
 Hold together all Wifi-related objects. More...
 
class  ns3::WifiPhy
 802.11 PHY layer model 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::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...
 
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::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 modelThis PHY implements a model of 802.11a. More...
 

Enumerations

enum  ns3::AcIndex {
  ns3::AC_BE = 0, ns3::AC_BK = 1, ns3::AC_VI = 2, ns3::AC_VO = 3,
  ns3::AC_BE_NQOS = 4, 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::BlockAckType { ns3::BASIC_BLOCK_ACK, ns3::COMPRESSED_BLOCK_ACK, ns3::EXTENDED_COMPRESSED_BLOCK_ACK, ns3::MULTI_TID_BLOCK_ACK }
 The different block ACK policies. 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::WifiPhyStandard {
  ns3::WIFI_PHY_STANDARD_80211a, ns3::WIFI_PHY_STANDARD_80211b, ns3::WIFI_PHY_STANDARD_80211g, ns3::WIFI_PHY_STANDARD_80211_10MHZ,
  ns3::WIFI_PHY_STANDARD_80211_5MHZ, ns3::WIFI_PHY_STANDARD_holland, ns3::WIFI_PHY_STANDARD_80211n_2_4GHZ, ns3::WIFI_PHY_STANDARD_80211n_5GHZ,
  ns3::WIFI_PHY_STANDARD_80211ac, ns3::WIFI_PHY_STANDARD_80211ax_2_4GHZ, ns3::WIFI_PHY_STANDARD_80211ax_5GHZ, ns3::WIFI_PHY_STANDARD_UNSPECIFIED
}
 Identifies the PHY specification that a Wifi device is configured to use. More...
 
enum  ns3::WifiPreamble {
  ns3::WIFI_PREAMBLE_LONG, ns3::WIFI_PREAMBLE_SHORT, ns3::WIFI_PREAMBLE_HT_MF, ns3::WIFI_PREAMBLE_HT_GF,
  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...
 

Functions

uint8_t ns3::GetTid (Ptr< const Packet > packet, const WifiMacHeader hdr)
 Extraction operator for TypeId. 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

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 

Total number of ACs.

AC_UNDEF 

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

◆ BlockAckType

The different block ACK policies.

Enumerator
BASIC_BLOCK_ACK 
COMPRESSED_BLOCK_ACK 
EXTENDED_COMPRESSED_BLOCK_ACK 
MULTI_TID_BLOCK_ACK 

Definition at line 30 of file block-ack-type.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 muliple MPDUs.

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

◆ WifiPhyStandard

Identifies the PHY specification that a Wifi device is configured to use.

Enumerator
WIFI_PHY_STANDARD_80211a 

OFDM PHY for the 5 GHz band (Clause 17)

WIFI_PHY_STANDARD_80211b 

DSSS PHY (Clause 15) and HR/DSSS PHY (Clause 18)

WIFI_PHY_STANDARD_80211g 

ERP-OFDM PHY (Clause 19, Section 19.5)

WIFI_PHY_STANDARD_80211_10MHZ 

OFDM PHY for the 5 GHz band (Clause 17 with 10 MHz channel bandwidth)

WIFI_PHY_STANDARD_80211_5MHZ 

OFDM PHY for the 5 GHz band (Clause 17 with 5 MHz channel bandwidth)

WIFI_PHY_STANDARD_holland 

This is intended to be the configuration used in this paper: Gavin Holland, Nitin Vaidya and Paramvir Bahl, "A Rate-Adaptive MAC Protocol for Multi-Hop Wireless Networks", in Proc.

of ACM MOBICOM, 2001.

WIFI_PHY_STANDARD_80211n_2_4GHZ 

HT PHY for the 2.4 GHz band (clause 20)

WIFI_PHY_STANDARD_80211n_5GHZ 

HT PHY for the 5 GHz band (clause 20)

WIFI_PHY_STANDARD_80211ac 

VHT PHY (clause 22)

WIFI_PHY_STANDARD_80211ax_2_4GHZ 

HE PHY for the 2.4 GHz band (clause 26)

WIFI_PHY_STANDARD_80211ax_5GHZ 

HE PHY for the 5 GHz band (clause 26)

WIFI_PHY_STANDARD_UNSPECIFIED 

Unspecified.

Definition at line 30 of file wifi-phy-standard.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_HT_GF 
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 32 of file wifi-preamble.h.

Function Documentation

◆ GetTid()

uint8_t ns3::GetTid ( Ptr< const Packet packet,
const WifiMacHeader  hdr 
)

◆ 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 58 of file qos-utils.cc.

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

Referenced by ns3::AdhocWifiMac::Enqueue(), ns3::OcbWifiMac::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 84 of file qos-utils.cc.

References NS_ASSERT.

Referenced by ns3::QosTxop::DequeuePeekedFrame(), QosUtilsIsOldPacketTest::DoRun(), ns3::QosTxop::IsQosOldPacket(), ns3::BlockAckManager::NotifyDiscardedMpdu(), ns3::BlockAckManager::NotifyGotBlockAck(), ns3::MacLow::ReceiveMpdu(), ns3::MacLow::SendBlockAckAfterBlockAckRequest(), ns3::BlockAckCache::UpdateWithBlockAckReq(), and ns3::BlockAckCache::UpdateWithMpdu().

+ 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
endSequence
Returns
a unique integer for the given sequence control and end sequence

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

Referenced by PacketBufferingCaseA::DoRun(), PacketBufferingCaseB::DoRun(), ns3::MacLow::RxCompleteBufferedPacketsWithSmallerSequence(), and ns3::MacLow::StoreMpduIfNeeded().

+ Here is the caller graph for this function:

◆ QosUtilsMapTidToAc()

AcIndex ns3::QosUtilsMapTidToAc ( uint8_t  tid)

◆ SelectQueueByDSField()

uint8_t ns3::SelectQueueByDSField ( Ptr< QueueItem item)

Determine the tx queue for a given packet.

Parameters
itemthe packet
Returns
the access category

Modelled 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 164 of file qos-utils.cc.

References ns3::QueueItem::GetPacket(), ns3::QueueItem::GetUint8Value(), ns3::QueueItem::IP_DSFIELD, ns3::QosUtilsMapTidToAc(), ns3::Packet::ReplacePacketTag(), and ns3::SocketPriorityTag::SetPriority().

+ Here is the call graph for this function: