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...
 
union  ns3::WifiActionHeader::ActionValue
 typedef for union of different ActionValues More...
 
class  ns3::AdhocWifiMac
 
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...
 
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::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::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::DcaTxop
 handle packet fragmentation and retransmissions. More...
 
class  ns3::DcfManager
 Manage a set of ns3::DcfStateHandle a set of independent ns3::DcfState, each of which represents a single DCF within a MAC stack. More...
 
class  ns3::DcfState
 keep track of the state needed for a single DCF function. 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::EdcaParameterSet
 The EDCA Parameter SetThis class knows how to serialise and deserialise the EDCA Parameter Set. More...
 
class  ns3::EdcaTxopN
 This queue contains packets for a particular access class. 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::InterferenceHelper::Event
 Signal event for a packet. 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::HtCapabilities
 The HT Capabilities Information ElementThis class knows how to serialise and deserialise the HT Capabilities Information Element. More...
 
class  ns3::HtOperation
 The HT Operation Information ElementThis class knows how to serialise and deserialise the HT Operation Information Element. 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::InterferenceHelper
 handles interference calculations More...
 
struct  ns3::MacLow::Item
 A struct for packet, Wifi header, and timestamp. More...
 
struct  ns3::BlockAckManager::Item
 A struct for packet, Wifi header, and timestamp. 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 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::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
 Abstract class that concrete mpdu aggregators have to implement. More...
 
class  ns3::MpduStandardAggregator
 Standard MPDU aggregator. More...
 
class  ns3::MsduAggregator
 Abstract class that concrete msdu aggregators have to implement. More...
 
class  ns3::MsduStandardAggregator
 Standard MSDU aggregator. More...
 
class  ns3::InterferenceHelper::NiChange
 Noise and Interference (thus Ni) event. 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::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...
 
struct  ns3::InterferenceHelper::SnrPer
 A struct for both SNR and PER. 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::VhtCapabilities
 The IEEE 802.11ac VHT Capabilities. More...
 
class  ns3::VhtOperation
 The VHT Operation Information ElementThis class knows how to serialise and deserialise the VHT Operation Information Element. 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::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::WifiQueue< Item >
 This queue implements the timeout procedure described in (Section 9.19.2.6 "Retransmit procedures" paragraph 6; IEEE 802.11-2012). 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::MacLowTransmissionParameters::ACK_NONE, ns3::MacLowTransmissionParameters::ACK_NORMAL, ns3::MacLowTransmissionParameters::ACK_FAST, ns3::MacLowTransmissionParameters::ACK_SUPER_FAST,
  ns3::MacLowTransmissionParameters::BLOCK_ACK_BASIC, ns3::MacLowTransmissionParameters::BLOCK_ACK_COMPRESSED, ns3::MacLowTransmissionParameters::BLOCK_ACK_MULTI_TID
}
 
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::WifiMacHeader::AddressType { ns3::WifiMacHeader::ADDR1, ns3::WifiMacHeader::ADDR2, ns3::WifiMacHeader::ADDR3, ns3::WifiMacHeader::ADDR4 }
 Address types. More...
 
enum  ns3::WifiActionHeader::BlockAckActionValue { ns3::WifiActionHeader::BLOCK_ACK_ADDBA_REQUEST = 0, ns3::WifiActionHeader::BLOCK_ACK_ADDBA_RESPONSE = 1, ns3::WifiActionHeader::BLOCK_ACK_DELBA = 2 }
 Block ACK action field values See 802.11 Table 8-202. More...
 
enum  ns3::WifiActionHeader::CategoryValue {
  ns3::WifiActionHeader::BLOCK_ACK = 3, ns3::WifiActionHeader::MESH = 13, ns3::WifiActionHeader::MULTIHOP = 14, ns3::WifiActionHeader::SELF_PROTECTED = 15,
  ns3::WifiActionHeader::VENDOR_SPECIFIC_ACTION = 127
}
 CategoryValue enumeration. More...
 
enum  ns3::WifiQueue< Item >::DropPolicy { ns3::WifiQueue< Item >::DROP_NEWEST, ns3::WifiQueue< Item >::DROP_OLDEST }
 drop policy More...
 
enum  ns3::StaWifiMac::MacState {
  ns3::StaWifiMac::ASSOCIATED, ns3::StaWifiMac::WAIT_PROBE_RESP, ns3::StaWifiMac::WAIT_ASSOC_RESP, ns3::StaWifiMac::BEACON_MISSED,
  ns3::StaWifiMac::REFUSED
}
 The current MAC state of the STA. More...
 
enum  ns3::WifiActionHeader::MeshActionValue {
  ns3::WifiActionHeader::LINK_METRIC_REPORT = 0, ns3::WifiActionHeader::PATH_SELECTION = 1, ns3::WifiActionHeader::PORTAL_ANNOUNCEMENT = 2, ns3::WifiActionHeader::CONGESTION_CONTROL_NOTIFICATION = 3,
  ns3::WifiActionHeader::MDA_SETUP_REQUEST = 4, ns3::WifiActionHeader::MDA_SETUP_REPLY = 5, ns3::WifiActionHeader::MDAOP_ADVERTISMENT_REQUEST = 6, ns3::WifiActionHeader::MDAOP_ADVERTISMENTS = 7,
  ns3::WifiActionHeader::MDAOP_SET_TEARDOWN = 8, ns3::WifiActionHeader::TBTT_ADJUSTMENT_REQUEST = 9, ns3::WifiActionHeader::TBTT_ADJUSTMENT_RESPONSE = 10
}
 MeshActionValue enumeration. More...
 
enum  ns3::WifiActionHeader::MultihopActionValue { ns3::WifiActionHeader::PROXY_UPDATE = 0, ns3::WifiActionHeader::PROXY_UPDATE_CONFIRMATION = 1 }
 MultihopActionValue enumeration. More...
 
enum  ns3::WifiRemoteStationManager::ProtectionMode { ns3::WifiRemoteStationManager::RTS_CTS, ns3::WifiRemoteStationManager::CTS_TO_SELF }
 ProtectionMode enumeration. More...
 
enum  ns3::WifiMacHeader::QosAckPolicy { ns3::WifiMacHeader::NORMAL_ACK = 0, ns3::WifiMacHeader::NO_ACK = 1, ns3::WifiMacHeader::NO_EXPLICIT_ACK = 2, ns3::WifiMacHeader::BLOCK_ACK = 3 }
 ACK policy for QoS frames. More...
 
enum  ns3::WifiActionHeader::SelfProtectedActionValue {
  ns3::WifiActionHeader::PEER_LINK_OPEN = 1, ns3::WifiActionHeader::PEER_LINK_CONFIRM = 2, ns3::WifiActionHeader::PEER_LINK_CLOSE = 3, ns3::WifiActionHeader::GROUP_KEY_INFORM = 4,
  ns3::WifiActionHeader::GROUP_KEY_ACK = 5
}
 SelfProtectedActionValue enumeration. More...
 
enum  ns3::AparfWifiManager::State { ns3::AparfWifiManager::High, ns3::AparfWifiManager::Low, ns3::AparfWifiManager::Spread }
 Enumeration of the possible states of the channel. More...
 
enum  ns3::OriginatorBlockAckAgreement::State { ns3::OriginatorBlockAckAgreement::PENDING, ns3::OriginatorBlockAckAgreement::ESTABLISHED, ns3::OriginatorBlockAckAgreement::INACTIVE, ns3::OriginatorBlockAckAgreement::UNSUCCESSFUL }
 Represents the state for this agreement. More...
 
enum  ns3::WifiPhy::State {
  ns3::WifiPhy::IDLE, ns3::WifiPhy::CCA_BUSY, ns3::WifiPhy::TX, ns3::WifiPhy::RX,
  ns3::WifiPhy::SWITCHING, ns3::WifiPhy::SLEEP
}
 The state of the PHY layer. 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, ns3::WIFI_PREAMBLE_HE_SU, ns3::WIFI_PREAMBLE_HE_ER_SU, ns3::WIFI_PREAMBLE_HE_MU,
  ns3::WIFI_PREAMBLE_HE_TB, ns3::WIFI_PREAMBLE_NONE
}
 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...
 

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

anonymous enum
private
Enumerator
ACK_NONE 
ACK_NORMAL 
ACK_FAST 
ACK_SUPER_FAST 
BLOCK_ACK_BASIC 
BLOCK_ACK_COMPRESSED 
BLOCK_ACK_MULTI_TID 

Definition at line 216 of file mac-low.h.

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.

Address types.

Enumerator
ADDR1 
ADDR2 
ADDR3 
ADDR4 

Definition at line 97 of file wifi-mac-header.h.

Block ACK action field values See 802.11 Table 8-202.

Enumerator
BLOCK_ACK_ADDBA_REQUEST 
BLOCK_ACK_ADDBA_RESPONSE 
BLOCK_ACK_DELBA 

Definition at line 685 of file mgt-headers.h.

CategoryValue enumeration.

Enumerator
BLOCK_ACK 
MESH 
MULTIHOP 
SELF_PROTECTED 
VENDOR_SPECIFIC_ACTION 

Definition at line 637 of file mgt-headers.h.

template<typename Item >
enum ns3::WifiQueue::DropPolicy

drop policy

Enumerator
DROP_NEWEST 
DROP_OLDEST 

Definition at line 161 of file wifi-mac-queue.h.

The current MAC state of the STA.

Enumerator
ASSOCIATED 
WAIT_PROBE_RESP 
WAIT_ASSOC_RESP 
BEACON_MISSED 
REFUSED 

Definition at line 91 of file sta-wifi-mac.h.

MeshActionValue enumeration.

Enumerator
LINK_METRIC_REPORT 
PATH_SELECTION 
PORTAL_ANNOUNCEMENT 
CONGESTION_CONTROL_NOTIFICATION 
MDA_SETUP_REQUEST 
MDA_SETUP_REPLY 
MDAOP_ADVERTISMENT_REQUEST 
MDAOP_ADVERTISMENTS 
MDAOP_SET_TEARDOWN 
TBTT_ADJUSTMENT_REQUEST 
TBTT_ADJUSTMENT_RESPONSE 

Definition at line 666 of file mgt-headers.h.

MultihopActionValue enumeration.

Enumerator
PROXY_UPDATE 
PROXY_UPDATE_CONFIRMATION 

Definition at line 659 of file mgt-headers.h.

ProtectionMode enumeration.

Enumerator
RTS_CTS 
CTS_TO_SELF 

Definition at line 99 of file wifi-remote-station-manager.h.

ACK policy for QoS frames.

Enumerator
NORMAL_ACK 
NO_ACK 
NO_EXPLICIT_ACK 
BLOCK_ACK 

Definition at line 86 of file wifi-mac-header.h.

SelfProtectedActionValue enumeration.

Enumerator
PEER_LINK_OPEN 
PEER_LINK_CONFIRM 
PEER_LINK_CLOSE 
GROUP_KEY_INFORM 
GROUP_KEY_ACK 

Definition at line 649 of file mgt-headers.h.

Enumeration of the possible states of the channel.

Enumerator
High 
Low 
Spread 

Definition at line 65 of file aparf-wifi-manager.h.

Represents the state for this agreement.

PENDING: If an agreement is in PENDING state it means that an ADDBARequest frame was sent to recipient in order to setup the block ack and the originator is waiting for the relative ADDBAResponse frame.

ESTABLISHED: The block ack is active and all packets relative to this agreement are transmitted with ack policy set to block ack.

INACTIVE: In our implementation, block ack tear-down happens only if an inactivity timeout occurs so we could have an active block ack but a number of packets that doesn't reach the value of m_blockAckThreshold (see ns3::BlockAckManager). In these conditions the agreement becomes INACTIVE until that the number of packets reaches the value of m_blockAckThreshold again.

UNSUCCESSFUL (not used for now): The agreement's state becomes UNSUCCESSFUL if:

  • its previous state was PENDING and an ADDBAResponse frame wasn't received from recipient station within an interval of time defined by m_bAckSetupTimeout attribute in ns3::WifiMac.
  • an ADDBAResponse frame is received from recipient and the Status Code field is set to failure.

In both cases for station addressed by BlockAckAgreement::m_peer and for TID BlockAckAgreement::m_tid block ack mechanism won't be used.State enumeration

Enumerator
PENDING 
ESTABLISHED 
INACTIVE 
UNSUCCESSFUL 

Definition at line 98 of file originator-block-ack-agreement.h.

The state of the PHY layer.

State enumeration

Enumerator
IDLE 

The PHY layer is IDLE.

CCA_BUSY 

The PHY layer has sense the medium busy through the CCA mechanism.

TX 

The PHY layer is sending a packet.

RX 

The PHY layer is receiving a packet.

SWITCHING 

The PHY layer is switching to other channel.

SLEEP 

The PHY layer is sleeping.

Definition at line 171 of file wifi-phy.h.

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.

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 
WIFI_PREAMBLE_HE_SU 
WIFI_PREAMBLE_HE_ER_SU 
WIFI_PREAMBLE_HE_MU 
WIFI_PREAMBLE_HE_TB 
WIFI_PREAMBLE_NONE 

Definition at line 30 of file wifi-preamble.h.

Function Documentation

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

Extraction operator for TypeId.

Next function is useful to get traffic id of different packet types.

Parameters
[in]packetis the packet
[in]hdris Wifi MAC header
Returns
the TypeId of the MAC header
Parameters
packetpacket to check
hdr802.11 header for packet to check

Returns Tid of different packet types

Definition at line 103 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::MgtAddBaResponseHeader::GetTid(), ns3::MgtDelBaHeader::GetTid(), ns3::CtrlBAckRequestHeader::GetTidInfo(), ns3::CtrlBAckResponseHeader::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::MacLow::AggregateToAmpdu(), ns3::MacLow::BlockAckTimeout(), ns3::MacLow::ForwardDown(), ns3::EdcaTxopN::MissedAck(), ns3::EdcaTxopN::MissedBlockAck(), ns3::EdcaTxopN::MissedCts(), ns3::EdcaTxopN::NeedFragmentation(), ns3::MacLow::NormalAckTimeout(), ns3::MacLow::PerformMsduAggregation(), ns3::MacLow::ReceiveOk(), ns3::MacLow::SendDataAfterCts(), ns3::MacLow::StartTransmission(), and ns3::MacLow::StopMpduAggregation().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

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

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

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

References NS_ASSERT.

Referenced by QosUtilsIsOldPacketTest::DoRun(), ns3::BlockAckManager::GetNextPacket(), ns3::BlockAckManager::PeekNextPacketByTidAndAddress(), ns3::MacLow::ReceiveMpdu(), ns3::MacLow::SendBlockAckAfterBlockAckRequest(), ns3::BlockAckCache::UpdateWithBlockAckReq(), and ns3::BlockAckCache::UpdateWithMpdu().

+ Here is the caller graph for this function:

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 77 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: