A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
ns3::QosTxop Class Reference

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...

#include "qos-txop.h"

+ Inheritance diagram for ns3::QosTxop:
+ Collaboration diagram for ns3::QosTxop:

Classes

struct  QosLinkEntity
 Structure holding information specific to a single link. More...
 

Public Member Functions

 QosTxop (AcIndex ac=AC_UNDEF)
 Constructor.
 
 ~QosTxop () override
 
void AddBaResponseTimeout (Mac48Address recipient, uint8_t tid)
 Callback when ADDBA response is not received after timeout.
 
void AssignSequenceNumber (Ptr< WifiMpdu > mpdu) const
 Assign a sequence number to the given MPDU, if it is not a fragment and it is not a retransmitted frame.
 
void CompleteMpduTx (Ptr< WifiMpdu > mpdu)
 Stores an MPDU (part of an A-MPDU) in block ack agreement (i.e.
 
bool EdcaDisabled (uint8_t linkId) const
 Return true if the EDCA is disabled (the MU EDCA Timer is running and the MU AIFSN is zero) for the given link, false otherwise.
 
AcIndex GetAccessCategory () const
 Get the access category of this object.
 
Time GetAddBaResponseTimeout () const
 Get the timeout for ADDBA response.
 
uint8_t GetAifsn (uint8_t linkId) const override
 For the given link, return the number of slots that make up an AIFS according to the EDCA Parameter Set or the MU EDCA Parameter Set, depending on whether the MU EDCA Timer is running or not.
 
uint16_t GetBaBufferSize (Mac48Address address, uint8_t tid) const
 
Ptr< BlockAckManagerGetBaManager ()
 Get the Block Ack Manager associated with this QosTxop.
 
uint16_t GetBaStartingSequence (Mac48Address address, uint8_t tid) const
 
uint16_t GetBlockAckInactivityTimeout () const
 Get the BlockAck inactivity timeout.
 
uint8_t GetBlockAckThreshold () const
 Return the current threshold for block ack mechanism.
 
Time GetFailedAddBaTimeout () const
 Get the timeout for failed BA agreement.
 
uint32_t GetMaxCw (uint8_t linkId) const override
 For the given link, return the maximum contention window size from the EDCA Parameter Set or the MU EDCA Parameter Set, depending on whether the MU EDCA Timer is running or not.
 
uint32_t GetMinCw (uint8_t linkId) const override
 For the given link, return the minimum contention window size from the EDCA Parameter Set or the MU EDCA Parameter Set, depending on whether the MU EDCA Timer is running or not.
 
Ptr< WifiMpduGetNextMpdu (uint8_t linkId, Ptr< WifiMpdu > peekedItem, WifiTxParameters &txParams, Time availableTime, bool initialFrame)
 Prepare the frame to transmit on the given link starting from the MPDU that has been previously peeked by calling PeekNextMpdu.
 
uint16_t GetNextSequenceNumberFor (const WifiMacHeader *hdr)
 Return the next sequence number for the given header.
 
uint8_t GetQosQueueSize (uint8_t tid, Mac48Address receiver) const
 Get the value for the Queue Size subfield of the QoS Control field of a QoS data frame of the given TID and addressed to the given receiver.
 
virtual Time GetRemainingTxop (uint8_t linkId) const
 Return the remaining duration in the current TXOP on the given link.
 
virtual std::optional< TimeGetTxopStartTime (uint8_t linkId) const
 
void GotAddBaResponse (const MgtAddBaResponseHeader &respHdr, Mac48Address recipient)
 Event handler when an ADDBA response is received.
 
void GotDelBaFrame (const MgtDelBaHeader *delBaHdr, Mac48Address recipient)
 Event handler when a DELBA frame is received.
 
bool HasFramesToTransmit (uint8_t linkId) override
 Check if the Txop has frames to transmit over the given link.
 
bool IsQosTxop () const override
 Check for QoS TXOP.
 
bool MuEdcaTimerRunning (uint8_t linkId) const
 Return true if the MU EDCA Timer is running for the given link, false otherwise.
 
void NotifyChannelAccessed (uint8_t linkId, Time txopDuration) override
 Called by the FrameExchangeManager to notify that channel access has been granted on the given link for the given amount of time.
 
void NotifyChannelReleased (uint8_t linkId) override
 Called by the FrameExchangeManager to notify the completion of the transmissions.
 
void NotifyOriginatorAgreementNoReply (const Mac48Address &recipient, uint8_t tid)
 Take action upon notification of ADDBA_REQUEST frame being discarded (likely due to exceeded max retry limit).
 
Ptr< WifiMpduPeekNextMpdu (uint8_t linkId, uint8_t tid=8, Mac48Address recipient=Mac48Address::GetBroadcast(), Ptr< const WifiMpdu > mpdu=nullptr)
 Peek the next frame to transmit on the given link to the given receiver and of the given TID from the EDCA queue.
 
uint16_t PeekNextSequenceNumberFor (const WifiMacHeader *hdr)
 Return the next sequence number for the Traffic ID and destination, but do not pick it (i.e.
 
std::pair< CtrlBAckRequestHeader, WifiMacHeaderPrepareBlockAckRequest (Mac48Address recipient, uint8_t tid) const
 
void ResetBa (Mac48Address recipient, uint8_t tid)
 Reset BA agreement after BA negotiation failed.
 
void SetAddBaResponseTimeout (Time addBaResponseTimeout)
 Set the timeout to wait for ADDBA response.
 
void SetBlockAckInactivityTimeout (uint16_t timeout)
 Set the BlockAck inactivity timeout.
 
void SetBlockAckThreshold (uint8_t threshold)
 Set threshold for block ack mechanism.
 
void SetDroppedMpduCallback (DroppedMpdu callback) override
 
void SetFailedAddBaTimeout (Time failedAddBaTimeout)
 Set the timeout for failed BA agreement.
 
void SetMuAifsn (uint8_t aifsn, uint8_t linkId)
 Set the number of slots that make up an AIFS while the MU EDCA Timer is running for the given link.
 
void SetMuCwMax (uint16_t cwMax, uint8_t linkId)
 Set the maximum contention window size to use while the MU EDCA Timer is running for the given link.
 
void SetMuCwMin (uint16_t cwMin, uint8_t linkId)
 Set the minimum contention window size to use while the MU EDCA Timer is running for the given link.
 
void SetMuEdcaTimer (Time timer, uint8_t linkId)
 Set the MU EDCA Timer for the given link.
 
void StartMuEdcaTimerNow (uint8_t linkId)
 Start the MU EDCA Timer for the given link.
 
bool UseExplicitBarAfterMissedBlockAck () const
 Return true if an explicit BlockAckRequest is sent after a missed BlockAck.
 
- Public Member Functions inherited from ns3::Txop
 Txop ()
 
 Txop (Ptr< WifiMacQueue > queue)
 Constructor.
 
 ~Txop () override
 
int64_t AssignStreams (int64_t stream)
 Assign a fixed random variable stream number to the random variables used by this model.
 
virtual ChannelAccessStatus GetAccessStatus (uint8_t linkId) const
 
uint8_t GetAifsn () const
 Return the number of slots that make up an AIFS.
 
virtual uint8_t GetAifsn (uint8_t linkId) const
 Return the number of slots that make up an AIFS for the given link.
 
std::vector< uint8_t > GetAifsns () const
 Return the number of slots that make up an AIFS for each link.
 
uint32_t GetMaxCw () const
 Return the maximum contention window size.
 
virtual uint32_t GetMaxCw (uint8_t linkId) const
 Return the maximum contention window size for the given link.
 
std::vector< uint32_tGetMaxCws () const
 Return the maximum contention window size for each link.
 
uint32_t GetMinCw () const
 Return the minimum contention window size.
 
virtual uint32_t GetMinCw (uint8_t linkId) const
 Return the minimum contention window size for the given link.
 
std::vector< uint32_tGetMinCws () const
 Return the minimum contention window size for each link.
 
Time GetTxopLimit () const
 Return the TXOP limit.
 
Time GetTxopLimit (uint8_t linkId) const
 Return the TXOP limit for the given link.
 
std::vector< TimeGetTxopLimits () const
 Return the TXOP limit for each link.
 
Ptr< WifiMacQueueGetWifiMacQueue () const
 Return the packet queue associated with this Txop.
 
virtual bool HasFramesToTransmit (uint8_t linkId)
 Check if the Txop has frames to transmit over the given link.
 
virtual bool IsQosTxop () const
 Check for QoS TXOP.
 
virtual void NotifyChannelAccessed (uint8_t linkId, Time txopDuration=Seconds(0))
 Called by the FrameExchangeManager to notify that channel access has been granted on the given link for the given amount of time.
 
virtual void NotifyChannelReleased (uint8_t linkId)
 Called by the FrameExchangeManager to notify the completion of the transmissions.
 
virtual void NotifyOff ()
 When off operation occurs, the queue gets cleaned up.
 
virtual void NotifyOn ()
 When on operation occurs, channel access will be started.
 
virtual void NotifySleep (uint8_t linkId)
 Notify that the given link switched to sleep mode.
 
virtual void NotifyWakeUp (uint8_t linkId)
 When wake up operation occurs on a link, channel access on that link will be restarted.
 
virtual void Queue (Ptr< Packet > packet, const WifiMacHeader &hdr)
 
virtual void Queue (Ptr< WifiMpdu > mpdu)
 
void ResetCw (uint8_t linkId)
 Update the value of the CW variable for the given link to take into account a transmission success or a transmission abort (stop transmission of a packet after the maximum number of retransmissions has been reached).
 
void SetAifsn (uint8_t aifsn)
 Set the number of slots that make up an AIFS.
 
void SetAifsn (uint8_t aifsn, uint8_t linkId)
 Set the number of slots that make up an AIFS for the given link.
 
void SetAifsns (std::vector< uint8_t > aifsns)
 Set the number of slots that make up an AIFS for each link.
 
virtual void SetDroppedMpduCallback (DroppedMpdu callback)
 
void SetMaxCw (uint32_t maxCw)
 Set the maximum contention window size.
 
void SetMaxCw (uint32_t maxCw, uint8_t linkId)
 Set the maximum contention window size for the given link.
 
void SetMaxCws (std::vector< uint32_t > maxCws)
 Set the maximum contention window size for each link.
 
void SetMinCw (uint32_t minCw)
 Set the minimum contention window size.
 
void SetMinCw (uint32_t minCw, uint8_t linkId)
 Set the minimum contention window size for the given link.
 
void SetMinCws (std::vector< uint32_t > minCws)
 Set the minimum contention window size for each link.
 
void SetTxMiddle (const Ptr< MacTxMiddle > txMiddle)
 Set MacTxMiddle this Txop is associated to.
 
void SetTxopLimit (Time txopLimit)
 Set the TXOP limit.
 
void SetTxopLimit (Time txopLimit, uint8_t linkId)
 Set the TXOP limit for the given link.
 
void SetTxopLimits (const std::vector< Time > &txopLimits)
 Set the TXOP limit for each link.
 
virtual void SetWifiMac (const Ptr< WifiMac > mac)
 Set the wifi MAC this Txop is associated to.
 
void StartAccessAfterEvent (uint8_t linkId, bool hadFramesToTransmit, bool checkMediumBusy)
 Request channel access on the given link after the occurrence of an event that possibly requires to generate a new backoff value.
 
void StartBackoffNow (uint32_t nSlots, uint8_t linkId)
 
void SwapLinks (std::map< uint8_t, uint8_t > links)
 Swap the links based on the information included in the given map.
 
void UpdateFailedCw (uint8_t linkId)
 Update the value of the CW variable for the given link to take into account a transmission failure.
 
- Public Member Functions inherited from ns3::Object
 Object ()
 Constructor.
 
 ~Object () override
 Destructor.
 
void AggregateObject (Ptr< Object > other)
 Aggregate two Objects together.
 
void Dispose ()
 Dispose of this Object.
 
AggregateIterator GetAggregateIterator () const
 Get an iterator to the Objects aggregated to this one.
 
TypeId GetInstanceTypeId () const override
 Get the most derived TypeId for this Object.
 
template<typename T >
Ptr< T > GetObject () const
 Get a pointer to the requested aggregated Object.
 
template<>
Ptr< ObjectGetObject () const
 Specialization of () for objects of type ns3::Object.
 
template<typename T >
Ptr< T > GetObject (TypeId tid) const
 Get a pointer to the requested aggregated Object by TypeId.
 
template<>
Ptr< ObjectGetObject (TypeId tid) const
 Specialization of (TypeId tid) for objects of type ns3::Object.
 
void Initialize ()
 Invoke DoInitialize on all Objects aggregated to this one.
 
bool IsInitialized () const
 Check if the object has been initialized.
 
void UnidirectionalAggregateObject (Ptr< Object > other)
 Aggregate an Object to another Object.
 
- Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
 SimpleRefCount ()
 Default constructor.
 
 SimpleRefCount (const SimpleRefCount &o)
 Copy constructor.
 
uint32_t GetReferenceCount () const
 Get the reference count of the object.
 
SimpleRefCountoperator= (const SimpleRefCount &o)
 Assignment operator.
 
void Ref () const
 Increment the reference count.
 
void Unref () const
 Decrement the reference count.
 
- Public Member Functions inherited from ns3::ObjectBase
virtual ~ObjectBase ()
 Virtual destructor.
 
void GetAttribute (std::string name, AttributeValue &value) const
 Get the value of an attribute, raising fatal errors if unsuccessful.
 
bool GetAttributeFailSafe (std::string name, AttributeValue &value) const
 Get the value of an attribute without raising errors.
 
virtual TypeId GetInstanceTypeId () const =0
 Get the most derived TypeId for this Object.
 
void SetAttribute (std::string name, const AttributeValue &value)
 Set a single attribute, raising fatal errors if unsuccessful.
 
bool SetAttributeFailSafe (std::string name, const AttributeValue &value)
 Set a single attribute without raising errors.
 
bool TraceConnect (std::string name, std::string context, const CallbackBase &cb)
 Connect a TraceSource to a Callback with a context.
 
bool TraceConnectWithoutContext (std::string name, const CallbackBase &cb)
 Connect a TraceSource to a Callback without a context.
 
bool TraceDisconnect (std::string name, std::string context, const CallbackBase &cb)
 Disconnect from a TraceSource a Callback previously connected with a context.
 
bool TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb)
 Disconnect from a TraceSource a Callback previously connected without a context.
 

Static Public Member Functions

static TypeId GetTypeId ()
 Get the type ID.
 
- Static Public Member Functions inherited from ns3::Txop
static TypeId GetTypeId ()
 Get the type ID.
 
- Static Public Member Functions inherited from ns3::Object
static TypeId GetTypeId ()
 Register this type.
 
- Static Public Member Functions inherited from ns3::ObjectBase
static TypeId GetTypeId ()
 Get the type ID.
 

Protected Member Functions

void DoDispose () override
 Destructor implementation.
 
QosLinkEntityGetLink (uint8_t linkId) const
 Get a reference to the link associated with the given ID.
 
- Protected Member Functions inherited from ns3::Txop
void DoDispose () override
 Destructor implementation.
 
void DoInitialize () override
 Initialize() implementation.
 
virtual void GenerateBackoff (uint8_t linkId)
 Generate a new backoff for the given link now.
 
uint32_t GetBackoffSlots (uint8_t linkId) const
 Return the current number of backoff slots on the given link.
 
Time GetBackoffStart (uint8_t linkId) const
 Return the time when the backoff procedure started on the given link.
 
uint32_t GetCw (uint8_t linkId) const
 Get the current value of the CW variable for the given link.
 
LinkEntityGetLink (uint8_t linkId) const
 Get a reference to the link associated with the given ID.
 
const std::map< uint8_t, std::unique_ptr< LinkEntity > > & GetLinks () const
 
virtual void NotifyAccessRequested (uint8_t linkId)
 Notify that access request has been received for the given link.
 
void RequestAccess (uint8_t linkId)
 Request access to the ChannelAccessManager associated with the given link.
 
void UpdateBackoffSlotsNow (uint32_t nSlots, Time backoffUpdateBound, uint8_t linkId)
 Update backoff slots for the given link that nSlots has passed.
 
- Protected Member Functions inherited from ns3::Object
 Object (const Object &o)
 Copy an Object.
 
virtual void DoDispose ()
 Destructor implementation.
 
virtual void DoInitialize ()
 Initialize() implementation.
 
virtual void NotifyNewAggregate ()
 Notify all Objects aggregated to this one of a new Object being aggregated.
 
- Protected Member Functions inherited from ns3::ObjectBase
void ConstructSelf (const AttributeConstructionList &attributes)
 Complete construction of ObjectBase; invoked by derived classes.
 
virtual void NotifyConstructionCompleted ()
 Notifier called once the ObjectBase is fully constructed.
 

Private Types

typedef TracedCallback< Time, Time, uint8_t > TxopTracedCallback
 TracedCallback for TXOP trace typedef.
 

Private Member Functions

std::unique_ptr< LinkEntityCreateLinkEntity () const override
 Create a LinkEntity object.
 
bool IsQosOldPacket (Ptr< const WifiMpdu > mpdu)
 Check if the given MPDU is to be considered old according to the current starting sequence number of the transmit window, provided that a block ack agreement has been established with the recipient for the given TID.
 

Private Attributes

AcIndex m_ac
 the access category
 
Time m_addBaResponseTimeout
 timeout for ADDBA response
 
Ptr< BlockAckManagerm_baManager
 the block ack manager
 
uint16_t m_blockAckInactivityTimeout
 the BlockAck inactivity timeout value (in TUs, i.e.
 
uint8_t m_blockAckThreshold
 the block ack threshold (use BA mechanism if number of packets in queue reaches this value.
 
Time m_failedAddBaTimeout
 timeout after failed BA agreement
 
uint8_t m_nMaxInflights
 the maximum number of links on which an MPDU can be in-flight at the same time
 
TxopTracedCallback m_txopTrace
 TXOP trace callback.
 
bool m_useExplicitBarAfterMissedBlockAck
 flag whether explicit BlockAckRequest should be sent upon missed BlockAck Response
 

Friends

class AggregationCapableTransmissionListener
 allow AggregationCapableTransmissionListener class access
 

Additional Inherited Members

- Public Types inherited from ns3::Txop
enum  ChannelAccessStatus { NOT_REQUESTED = 0 , REQUESTED , GRANTED }
 Enumeration for channel access status. More...
 
typedef Callback< void, WifiMacDropReason, Ptr< const WifiMpdu > > DroppedMpdu
 typedef for a callback to invoke when an MPDU is dropped.
 
- Static Public Attributes inherited from ns3::Txop
static constexpr bool CHECK_MEDIUM_BUSY
 generation of backoff (also) depends on the busy/idle state of the medium
 
static constexpr bool DIDNT_HAVE_FRAMES_TO_TRANSMIT
 no packet available for transmission was in the queue
 
static constexpr bool DONT_CHECK_MEDIUM_BUSY
 generation of backoff is independent of the busy/idle state of the medium
 
static constexpr bool HAD_FRAMES_TO_TRANSMIT
 packets available for transmission were in the queue
 
- Protected Types inherited from ns3::Txop
typedef TracedCallback< uint32_t, uint8_t > BackoffValueTracedCallback
 TracedCallback for backoff trace value typedef.
 
typedef TracedCallback< uint32_t, uint8_t > CwValueTracedCallback
 TracedCallback for CW trace value typedef.
 
- Protected Attributes inherited from ns3::Txop
BackoffValueTracedCallback m_backoffTrace
 backoff trace value
 
CwValueTracedCallback m_cwTrace
 CW trace value.
 
DroppedMpdu m_droppedMpduCallback
 the dropped MPDU callback
 
Ptr< WifiMacm_mac
 the wifi MAC
 
Ptr< WifiMacQueuem_queue
 the wifi MAC queue
 
Ptr< UniformRandomVariablem_rng
 the random stream
 
Ptr< MacTxMiddlem_txMiddle
 the MacTxMiddle
 

Detailed Description

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.

This class implements the packet fragmentation and retransmission policy for QoS data frames. It uses the ns3::ChannelAccessManager helper class to decide when to send a packet. Packets are stored in a ns3::WifiMacQueue until they can be sent.

This queue contains packets for a particular access class. Possibles access classes are:

  • AC_VO : voice, TID = 6,7
  • AC_VI : video, TID = 4,5
  • AC_BE : best-effort, TID = 0,3
  • AC_BK : background, TID = 1,2

This class also implements block ack sessions and MSDU aggregation (A-MSDU).

The fragmentation policy currently implemented uses a simple threshold: any packet bigger than this threshold is fragmented in fragments whose size is smaller than the threshold.

The retransmission policy is also very simple: every packet is retransmitted until it is either successfully transmitted or it has been retransmitted up until the SSRC or SLRC thresholds.

The RTS/CTS policy is similar to the fragmentation policy: when a packet is bigger than a threshold, the RTS/CTS protocol is used.

Config Paths

ns3::QosTxop is accessible through the following paths with Config::Set and Config::Connect:

  • "/NodeList/[i]/DeviceList/[i]/$ns3::WifiNetDevice/Mac/Txop/$ns3::QosTxop"
  • "/NodeList/[i]/DeviceList/[i]/$ns3::WifiNetDevice/Mac/VO_Txop"
  • "/NodeList/[i]/DeviceList/[i]/$ns3::WifiNetDevice/Mac/VI_Txop"
  • "/NodeList/[i]/DeviceList/[i]/$ns3::WifiNetDevice/Mac/BE_Txop"
  • "/NodeList/[i]/DeviceList/[i]/$ns3::WifiNetDevice/Mac/BK_Txop"

Attributes

  • AddBaResponseTimeout: The timeout to wait for ADDBA response after the Ack to ADDBA request is received.
    • Set with class: ns3::TimeValue
    • Underlying type: Time +9.22337e+18ns:+9.22337e+18ns
    • Initial value: +5e+06ns
    • Flags: constructwriteread
  • BlockAckManager: The BlockAckManager object.
  • FailedAddBaTimeout: The timeout after a failed BA agreement. During this timeout, the originator resumes sending packets using normal MPDU. After that, BA agreement is reset and the originator will retry BA negotiation.
    • Set with class: ns3::TimeValue
    • Underlying type: Time +9.22337e+18ns:+9.22337e+18ns
    • Initial value: +2e+08ns
    • Flags: constructwriteread
  • NMaxInflights: The maximum number of links (in the range 1-15) on which an MPDU can be simultaneously in-flight.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint8_t 1:15
    • Initial value: 1
    • Flags: constructwriteread
  • UseExplicitBarAfterMissedBlockAck: Specify whether explicit BlockAckRequest should be sent upon missed BlockAck Response.
    • Set with class: ns3::BooleanValue
    • Underlying type: bool
    • Initial value: true
    • Flags: constructwriteread

Attributes defined in parent class ns3::Txop

TraceSources

TraceSources defined in parent class ns3::Txop

Size of this type is 240 bytes (on a 64-bit architecture).

Definition at line 73 of file qos-txop.h.

Member Typedef Documentation

◆ TxopTracedCallback

TracedCallback for TXOP trace typedef.

Definition at line 485 of file qos-txop.h.

Constructor & Destructor Documentation

◆ QosTxop()

ns3::QosTxop::QosTxop ( AcIndex  ac = AC_UNDEF)

Constructor.

Parameters
acthe Access Category

Definition at line 102 of file qos-txop.cc.

References ns3::Txop::CHECK_MEDIUM_BUSY, ns3::Txop::GetLinks(), ns3::WifiMac::GetLocalAddress(), ns3::WifiMac::GetMacQueueScheduler(), HasFramesToTransmit(), m_ac, m_baManager, ns3::Txop::m_mac, ns3::Txop::m_queue, ns3::MakeCallback(), ns3::BlockAckManager::NotifyDiscardedMpdu(), NS_LOG_FUNCTION, ns3::Txop::StartAccessAfterEvent(), ns3::WAITING_ADDBA_RESP, and ns3::WIFI_QOSDATA_QUEUE.

+ Here is the call graph for this function:

◆ ~QosTxop()

ns3::QosTxop::~QosTxop ( )
override

Definition at line 145 of file qos-txop.cc.

References NS_LOG_FUNCTION.

Member Function Documentation

◆ AddBaResponseTimeout()

void ns3::QosTxop::AddBaResponseTimeout ( Mac48Address  recipient,
uint8_t  tid 
)

Callback when ADDBA response is not received after timeout.

Parameters
recipientMAC address of recipient
tidtraffic ID

Definition at line 736 of file qos-txop.cc.

References m_baManager, m_failedAddBaTimeout, NotifyOriginatorAgreementNoReply(), NS_LOG_FUNCTION, ResetBa(), and ns3::Simulator::Schedule().

Referenced by ns3::HtFrameExchangeManager::NotifyReceivedNormalAck().

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

◆ AssignSequenceNumber()

void ns3::QosTxop::AssignSequenceNumber ( Ptr< WifiMpdu mpdu) const

Assign a sequence number to the given MPDU, if it is not a fragment and it is not a retransmitted frame.

Parameters
mpduthe MPDU

Definition at line 562 of file qos-txop.cc.

References ns3::Txop::m_queue, ns3::Txop::m_txMiddle, and NS_LOG_FUNCTION.

Referenced by GetNextMpdu().

+ Here is the caller graph for this function:

◆ CompleteMpduTx()

void ns3::QosTxop::CompleteMpduTx ( Ptr< WifiMpdu mpdu)

Stores an MPDU (part of an A-MPDU) in block ack agreement (i.e.

the sender is waiting for a BlockAck containing the sequence number of this MPDU).

Parameters
mpdureceived MPDU.

Definition at line 694 of file qos-txop.cc.

References ns3::WifiMac::GetBaAgreementEstablishedAsOriginator(), m_baManager, ns3::Txop::m_mac, ns3::Txop::m_queue, and NS_ASSERT.

Referenced by ns3::HtFrameExchangeManager::NotifyTxToEdca().

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

◆ CreateLinkEntity()

std::unique_ptr< Txop::LinkEntity > ns3::QosTxop::CreateLinkEntity ( ) const
overrideprivatevirtual

Create a LinkEntity object.

Returns
a unique pointer to the created LinkEntity object

Reimplemented from ns3::Txop.

Definition at line 163 of file qos-txop.cc.

◆ DoDispose()

void ns3::QosTxop::DoDispose ( )
overrideprotectedvirtual

Destructor implementation.

This method is called by Dispose() or by the Object's destructor, whichever comes first.

Subclasses are expected to implement their real destruction code in an overridden version of this method and chain up to their parent's implementation once they are done. i.e, for simplicity, the destructor of every subclass should be empty and its content should be moved to the associated DoDispose() method.

It is safe to call GetObject() from within this method.

Reimplemented from ns3::Object.

Definition at line 151 of file qos-txop.cc.

References ns3::Txop::DoDispose(), m_baManager, and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

◆ EdcaDisabled()

bool ns3::QosTxop::EdcaDisabled ( uint8_t  linkId) const

Return true if the EDCA is disabled (the MU EDCA Timer is running and the MU AIFSN is zero) for the given link, false otherwise.

Parameters
linkIdthe ID of the given link
Returns
whether the EDCA is disabled

Definition at line 244 of file qos-txop.cc.

References GetLink(), and MuEdcaTimerRunning().

Referenced by GetMaxCw(), GetMinCw(), and StartMuEdcaTimerNow().

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

◆ GetAccessCategory()

AcIndex ns3::QosTxop::GetAccessCategory ( ) const

Get the access category of this object.

Returns
the access category.

Definition at line 796 of file qos-txop.cc.

References m_ac.

Referenced by ns3::HtFrameExchangeManager::TransmissionSucceeded(), ns3::RrMultiUserScheduler::TrySendingBasicTf(), and ns3::RrMultiUserScheduler::TrySendingDlMuPpdu().

+ Here is the caller graph for this function:

◆ GetAddBaResponseTimeout()

Time ns3::QosTxop::GetAddBaResponseTimeout ( ) const

Get the timeout for ADDBA response.

Returns
the timeout to wait for ADDBA response

Definition at line 771 of file qos-txop.cc.

References m_addBaResponseTimeout.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

◆ GetAifsn()

uint8_t ns3::QosTxop::GetAifsn ( uint8_t  linkId) const
overridevirtual

For the given link, return the number of slots that make up an AIFS according to the EDCA Parameter Set or the MU EDCA Parameter Set, depending on whether the MU EDCA Timer is running or not.

Parameters
linkIdthe ID of the given link
Returns
the number of slots that currently make up an AIFS.

Reimplemented from ns3::Txop.

Definition at line 272 of file qos-txop.cc.

References ns3::Txop::LinkEntity::aifsn, GetLink(), ns3::QosTxop::QosLinkEntity::muAifsn, and MuEdcaTimerRunning().

+ Here is the call graph for this function:

◆ GetBaBufferSize()

uint16_t ns3::QosTxop::GetBaBufferSize ( Mac48Address  address,
uint8_t  tid 
) const
Parameters
addressrecipient address of the peer station
tidtraffic ID.
Returns
the negotiated buffer size during ADDBA handshake.

Returns the negotiated buffer size during ADDBA handshake with station addressed by recipient for TID tid.

Definition at line 288 of file qos-txop.cc.

References m_baManager.

Referenced by GetNextMpdu(), and PeekNextMpdu().

+ Here is the caller graph for this function:

◆ GetBaManager()

Ptr< BlockAckManager > ns3::QosTxop::GetBaManager ( )

Get the Block Ack Manager associated with this QosTxop.

Returns
the Block Ack Manager

Definition at line 282 of file qos-txop.cc.

References m_baManager.

Referenced by AmpduAggregationTest::EstablishAgreement(), ns3::WifiMac::GetBaAgreementEstablishedAsOriginator(), ns3::WifiMac::GetBaAgreementEstablishedAsRecipient(), ns3::HtFrameExchangeManager::GetBaManager(), ns3::HtFrameExchangeManager::GetBar(), ns3::WifiMac::Receive(), and ns3::HeFrameExchangeManager::SendPsduMap().

+ Here is the caller graph for this function:

◆ GetBaStartingSequence()

uint16_t ns3::QosTxop::GetBaStartingSequence ( Mac48Address  address,
uint8_t  tid 
) const
Parameters
addressrecipient address of the peer station
tidtraffic ID.
Returns
the starting sequence number of the originator transmit window.

Returns the current starting sequence number of the transmit window on the originator (WinStartO) of the block ack agreement established with the given recipient for the given TID.

Definition at line 294 of file qos-txop.cc.

References m_baManager.

Referenced by GetNextMpdu(), IsQosOldPacket(), and PeekNextMpdu().

+ Here is the caller graph for this function:

◆ GetBlockAckInactivityTimeout()

uint16_t ns3::QosTxop::GetBlockAckInactivityTimeout ( ) const

Get the BlockAck inactivity timeout.

Returns
the BlockAck inactivity timeout.

Definition at line 730 of file qos-txop.cc.

References m_blockAckInactivityTimeout.

◆ GetBlockAckThreshold()

uint8_t ns3::QosTxop::GetBlockAckThreshold ( ) const

Return the current threshold for block ack mechanism.

Returns
the current threshold for block ack mechanism.

Definition at line 723 of file qos-txop.cc.

References m_blockAckThreshold, and NS_LOG_FUNCTION.

◆ GetFailedAddBaTimeout()

Time ns3::QosTxop::GetFailedAddBaTimeout ( ) const

Get the timeout for failed BA agreement.

Returns
the timeout for failed BA agreement

Definition at line 784 of file qos-txop.cc.

References m_failedAddBaTimeout.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

◆ GetLink()

QosTxop::QosLinkEntity & ns3::QosTxop::GetLink ( uint8_t  linkId) const
protected

Get a reference to the link associated with the given ID.

Parameters
linkIdthe given link ID
Returns
a reference to the link associated with the given ID

Definition at line 169 of file qos-txop.cc.

References ns3::Txop::GetLink().

Referenced by EdcaDisabled(), GetAifsn(), GetMaxCw(), GetMinCw(), GetRemainingTxop(), GetTxopStartTime(), MuEdcaTimerRunning(), NotifyChannelAccessed(), NotifyChannelReleased(), SetMuAifsn(), SetMuCwMax(), SetMuCwMin(), SetMuEdcaTimer(), and StartMuEdcaTimerNow().

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

◆ GetMaxCw()

uint32_t ns3::QosTxop::GetMaxCw ( uint8_t  linkId) const
overridevirtual

For the given link, return the maximum contention window size from the EDCA Parameter Set or the MU EDCA Parameter Set, depending on whether the MU EDCA Timer is running or not.

Parameters
linkIdthe ID of the given link
Returns
the currently used maximum contention window size.

Reimplemented from ns3::Txop.

Definition at line 261 of file qos-txop.cc.

References ns3::Txop::LinkEntity::cwMax, EdcaDisabled(), GetLink(), ns3::QosTxop::QosLinkEntity::muCwMax, MuEdcaTimerRunning(), and NS_ASSERT.

+ Here is the call graph for this function:

◆ GetMinCw()

uint32_t ns3::QosTxop::GetMinCw ( uint8_t  linkId) const
overridevirtual

For the given link, return the minimum contention window size from the EDCA Parameter Set or the MU EDCA Parameter Set, depending on whether the MU EDCA Timer is running or not.

Parameters
linkIdthe ID of the given link
Returns
the currently used minimum contention window size.

Reimplemented from ns3::Txop.

Definition at line 250 of file qos-txop.cc.

References ns3::Txop::LinkEntity::cwMin, EdcaDisabled(), GetLink(), ns3::QosTxop::QosLinkEntity::muCwMin, MuEdcaTimerRunning(), and NS_ASSERT.

+ Here is the call graph for this function:

◆ GetNextMpdu()

Ptr< WifiMpdu > ns3::QosTxop::GetNextMpdu ( uint8_t  linkId,
Ptr< WifiMpdu peekedItem,
WifiTxParameters txParams,
Time  availableTime,
bool  initialFrame 
)

Prepare the frame to transmit on the given link starting from the MPDU that has been previously peeked by calling PeekNextMpdu.

A frame is only returned if it meets the constraint on the maximum A-MPDU size (by assuming that the frame has to be aggregated to an existing A-MPDU as specified by the TX parameters) and its transmission time does not exceed the given PPDU duration limit (if distinct from Time::Min ()). If the peeked MPDU is a unicast QoS Data frame stored in the EDCA queue, attempt to perform A-MSDU aggregation (while meeting the constraints mentioned above) and assign a sequence number to the dequeued frame.

Parameters
linkIdthe ID of the given link
peekedItemthe peeked frame.
txParamsthe TX parameters for the frame
availableTimethe time available for the transmission of the frame (including protection and acknowledgment); a value of Time::Min() indicates no time constraint
initialFrametrue if the frame is the initial PPDU of a TXOP
Returns
the frame to transmit or a null pointer if no frame meets the time constraints

Definition at line 491 of file qos-txop.cc.

References AssignSequenceNumber(), ns3::WifiMac::GetBaAgreementEstablishedAsOriginator(), GetBaBufferSize(), GetBaStartingSequence(), ns3::WifiMac::GetFrameExchangeManager(), ns3::WifiMac::GetHtSupported(), ns3::WifiTxParameters::GetSize(), ns3::Mac48Address::IsBroadcast(), ns3::IsInWindow(), ns3::Txop::m_mac, ns3::Time::Min(), NS_ASSERT, NS_LOG_DEBUG, and NS_LOG_FUNCTION.

Referenced by AmpduAggregationTest::DoRun(), TwoLevelAggregationTest::DoRun(), HeAggregationTest::DoRun(), EhtAggregationTest::DoRun(), and TestMultiUserScheduler::SelectTxFormat().

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

◆ GetNextSequenceNumberFor()

uint16_t ns3::QosTxop::GetNextSequenceNumberFor ( const WifiMacHeader hdr)

Return the next sequence number for the given header.

Parameters
hdrWi-Fi header.
Returns
the next sequence number.

Definition at line 340 of file qos-txop.cc.

References ns3::Txop::m_txMiddle.

◆ GetQosQueueSize()

uint8_t ns3::QosTxop::GetQosQueueSize ( uint8_t  tid,
Mac48Address  receiver 
) const

Get the value for the Queue Size subfield of the QoS Control field of a QoS data frame of the given TID and addressed to the given receiver.

Parameters
tidthe Traffic ID
receiverthe address of the given receiver
Returns
the value for the Queue Size subfield

Definition at line 175 of file qos-txop.cc.

References ns3::Txop::m_queue, NS_LOG_DEBUG, queueSize, ns3::WIFI_QOSDATA_QUEUE, and ns3::WIFI_UNICAST.

Referenced by ns3::HtFrameExchangeManager::FinalizeMacHeader(), and ns3::QosFrameExchangeManager::ForwardMpduDown().

+ Here is the caller graph for this function:

◆ GetRemainingTxop()

Time ns3::QosTxop::GetRemainingTxop ( uint8_t  linkId) const
virtual

Return the remaining duration in the current TXOP on the given link.

Parameters
linkIdthe ID of the given link
Returns
the remaining duration in the current TXOP.

Definition at line 632 of file qos-txop.cc.

References GetLink(), ns3::Time::IsStrictlyNegative(), ns3::Simulator::Now(), NS_ASSERT, NS_LOG_FUNCTION, and ns3::Seconds().

Referenced by ns3::QosFrameExchangeManager::GetCtsToSelfDurationId(), ns3::QosFrameExchangeManager::GetFrameDurationId(), ns3::HeFrameExchangeManager::GetMuRtsDurationId(), ns3::HtFrameExchangeManager::GetPsduDurationId(), ns3::QosFrameExchangeManager::GetRtsDurationId(), ns3::QosFrameExchangeManager::SendCfEndIfNeeded(), ns3::QosFrameExchangeManager::StartTransmission(), and ns3::QosFrameExchangeManager::TransmissionSucceeded().

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

◆ GetTxopStartTime()

std::optional< Time > ns3::QosTxop::GetTxopStartTime ( uint8_t  linkId) const
virtual
Parameters
linkIdthe ID of the given link
Returns
the TXOP start time, if a TXOP is ongoing on the given link

Definition at line 587 of file qos-txop.cc.

References GetLink(), and NS_LOG_FUNCTION.

Referenced by ns3::QosFrameExchangeManager::PifsRecovery(), and ns3::QosFrameExchangeManager::StartTransmission().

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

◆ GetTypeId()

TypeId ns3::QosTxop::GetTypeId ( )
static

◆ GotAddBaResponse()

void ns3::QosTxop::GotAddBaResponse ( const MgtAddBaResponseHeader respHdr,
Mac48Address  recipient 
)

Event handler when an ADDBA response is received.

Parameters
respHdrADDBA response header.
recipientaddress of the recipient.

Definition at line 648 of file qos-txop.cc.

References ns3::MgtAddBaResponseHeader::GetStatusCode(), ns3::MgtAddBaResponseHeader::GetTid(), ns3::StatusCode::IsSuccess(), m_baManager, ns3::Txop::m_queue, ns3::Txop::m_txMiddle, NS_LOG_DEBUG, and NS_LOG_FUNCTION.

Referenced by ns3::WifiMac::Receive().

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

◆ GotDelBaFrame()

void ns3::QosTxop::GotDelBaFrame ( const MgtDelBaHeader delBaHdr,
Mac48Address  recipient 
)

Event handler when a DELBA frame is received.

Parameters
delBaHdrDELBA header.
recipientaddress of the recipient.

Definition at line 679 of file qos-txop.cc.

References ns3::MgtDelBaHeader::GetTid(), m_baManager, NS_LOG_DEBUG, and NS_LOG_FUNCTION.

Referenced by ns3::WifiMac::Receive().

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

◆ HasFramesToTransmit()

bool ns3::QosTxop::HasFramesToTransmit ( uint8_t  linkId)
overridevirtual

Check if the Txop has frames to transmit over the given link.

Parameters
linkIdthe ID of the given link.
Returns
true if the Txop has frames to transmit.

Reimplemented from ns3::Txop.

Definition at line 329 of file qos-txop.cc.

References ns3::Txop::m_queue, and NS_LOG_FUNCTION.

Referenced by QosTxop(), and ns3::WifiMac::UnblockUnicastTxOnLinks().

+ Here is the caller graph for this function:

◆ IsQosOldPacket()

bool ns3::QosTxop::IsQosOldPacket ( Ptr< const WifiMpdu mpdu)
private

Check if the given MPDU is to be considered old according to the current starting sequence number of the transmit window, provided that a block ack agreement has been established with the recipient for the given TID.

Parameters
mpduthe given MPDU
Returns
true if the MPDU is to be considered old, false otherwise

Definition at line 352 of file qos-txop.cc.

References ns3::WifiMac::GetBaAgreementEstablishedAsOriginator(), GetBaStartingSequence(), ns3::Txop::m_mac, NS_LOG_FUNCTION, and ns3::QosUtilsIsOldPacket().

Referenced by PeekNextMpdu().

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

◆ IsQosTxop()

bool ns3::QosTxop::IsQosTxop ( ) const
overridevirtual

Check for QoS TXOP.

Returns
true if QoS TXOP.

Reimplemented from ns3::Txop.

Definition at line 790 of file qos-txop.cc.

◆ MuEdcaTimerRunning()

bool ns3::QosTxop::MuEdcaTimerRunning ( uint8_t  linkId) const

Return true if the MU EDCA Timer is running for the given link, false otherwise.

Parameters
linkIdthe ID of the given link
Returns
whether the MU EDCA Timer is running

Definition at line 235 of file qos-txop.cc.

References GetLink(), and ns3::Simulator::Now().

Referenced by EdcaDisabled(), GetAifsn(), GetMaxCw(), and GetMinCw().

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

◆ NotifyChannelAccessed()

void ns3::QosTxop::NotifyChannelAccessed ( uint8_t  linkId,
Time  txopDuration 
)
overridevirtual

Called by the FrameExchangeManager to notify that channel access has been granted on the given link for the given amount of time.

Parameters
linkIdthe ID of the given link
txopDurationthe duration of the TXOP gained (zero for DCF)

Reimplemented from ns3::Txop.

Definition at line 576 of file qos-txop.cc.

References GetLink(), ns3::Time::Min(), ns3::Txop::NotifyChannelAccessed(), ns3::Simulator::Now(), NS_ASSERT, NS_LOG_FUNCTION, ns3::QosTxop::QosLinkEntity::startTxop, and ns3::QosTxop::QosLinkEntity::txopDuration.

Referenced by ns3::QosFrameExchangeManager::StartTransmission().

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

◆ NotifyChannelReleased()

void ns3::QosTxop::NotifyChannelReleased ( uint8_t  linkId)
overridevirtual

Called by the FrameExchangeManager to notify the completion of the transmissions.

This method generates a new backoff and restarts access if needed.

Parameters
linkIdthe ID of the link the FrameExchangeManager is operating on

Reimplemented from ns3::Txop.

Definition at line 595 of file qos-txop.cc.

References ns3::Txop::LinkEntity::access, ns3::Txop::GenerateBackoff(), ns3::WifiMac::GetChannelAccessManager(), ns3::ChannelAccessManager::GetGenerateBackoffOnNoTx(), GetLink(), ns3::Txop::m_mac, ns3::Txop::m_queue, m_txopTrace, ns3::Txop::NOT_REQUESTED, ns3::Simulator::Now(), NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::Txop::RequestAccess(), and ns3::Simulator::ScheduleNow().

+ Here is the call graph for this function:

◆ NotifyOriginatorAgreementNoReply()

void ns3::QosTxop::NotifyOriginatorAgreementNoReply ( const Mac48Address recipient,
uint8_t  tid 
)

Take action upon notification of ADDBA_REQUEST frame being discarded (likely due to exceeded max retry limit).

Parameters
recipientthe intended recipient of the ADDBA_REQUEST frame
tidthe TID

Definition at line 687 of file qos-txop.cc.

References m_baManager, and NS_LOG_FUNCTION.

Referenced by AddBaResponseTimeout().

+ Here is the caller graph for this function:

◆ PeekNextMpdu()

Ptr< WifiMpdu > ns3::QosTxop::PeekNextMpdu ( uint8_t  linkId,
uint8_t  tid = 8,
Mac48Address  recipient = Mac48Address::GetBroadcast(),
Ptr< const WifiMpdu mpdu = nullptr 
)

Peek the next frame to transmit on the given link to the given receiver and of the given TID from the EDCA queue.

If tid is equal to 8 (invalid value) and recipient is the broadcast address, the first available frame is returned. If mpdu is not a null pointer, the search starts from the MPDU following mpdu in the queue; otherwise, the search starts from the head of the queue. Note that A-MSDU aggregation is never attempted. If the frame has never been transmitted, it is assigned a sequence number peeked from MacTxMiddle. Also note that multiple links are only available since 802.11be.

Parameters
linkIdthe ID of the given link
tidtraffic ID.
recipientthe receiver station address.
mpduthe MPDU after which the search starts from
Returns
the peeked frame.

Definition at line 374 of file qos-txop.cc.

References ns3::WifiMac::CanForwardPacketsTo(), ns3::WifiMacHeader::GetAddr1(), ns3::WifiMac::GetBaAgreementEstablishedAsOriginator(), GetBaBufferSize(), GetBaStartingSequence(), ns3::WifiMac::GetMacQueueScheduler(), ns3::WifiMacHeader::GetQosTid(), ns3::WifiMacHeader::GetSequenceNumber(), ns3::Mac48Address::IsBroadcast(), ns3::IsInWindow(), ns3::Callback< R, UArgs >::IsNull(), ns3::WifiMacHeader::IsQosData(), IsQosOldPacket(), m_ac, ns3::Txop::m_droppedMpduCallback, ns3::Txop::m_mac, m_nMaxInflights, ns3::Txop::m_queue, ns3::Txop::m_txMiddle, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::WifiMacHeader::SetSequenceNumber(), ns3::WIFI_MAC_DROP_QOS_OLD_PACKET, ns3::WIFI_QOSDATA_QUEUE, and ns3::WIFI_UNICAST.

Referenced by AmpduAggregationTest::DoRun(), TwoLevelAggregationTest::DoRun(), HeAggregationTest::DoRun(), EhtAggregationTest::DoRun(), ns3::RrMultiUserScheduler::SelectTxFormat(), TestMultiUserScheduler::SelectTxFormat(), and ns3::RrMultiUserScheduler::TrySendingDlMuPpdu().

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

◆ PeekNextSequenceNumberFor()

uint16_t ns3::QosTxop::PeekNextSequenceNumberFor ( const WifiMacHeader hdr)

Return the next sequence number for the Traffic ID and destination, but do not pick it (i.e.

the current sequence number remains unchanged).

Parameters
hdrWi-Fi header.
Returns
the next sequence number.

Definition at line 346 of file qos-txop.cc.

References ns3::Txop::m_txMiddle.

◆ PrepareBlockAckRequest()

std::pair< CtrlBAckRequestHeader, WifiMacHeader > ns3::QosTxop::PrepareBlockAckRequest ( Mac48Address  recipient,
uint8_t  tid 
) const
Parameters
recipientAddress of recipient.
tidtraffic ID.
Returns
the BlockAckRequest header and the MAC header for the BlockAckReq

Prepare a BlockAckRequest to be sent to recipient for Traffic ID tid. The header for the BlockAckRequest is requested to the QosTxop corresponding to the given TID. A block ack agreement with the given recipient for the given TID must have been established by such QosTxop.

Definition at line 300 of file qos-txop.cc.

References ns3::WifiMac::GetLocalAddress(), ns3::WifiMac::GetMldAddress(), m_ac, m_baManager, ns3::Txop::m_mac, NS_ASSERT, NS_LOG_FUNCTION, ns3::QosUtilsMapTidToAc(), ns3::WifiMacHeader::SetAddr1(), ns3::WifiMacHeader::SetAddr2(), ns3::WifiMacHeader::SetDsNotFrom(), ns3::WifiMacHeader::SetDsNotTo(), ns3::WifiMacHeader::SetNoMoreFragments(), ns3::WifiMacHeader::SetNoRetry(), ns3::WifiMacHeader::SetType(), and ns3::WIFI_MAC_CTL_BACKREQ.

Referenced by ns3::HtFrameExchangeManager::GetBar(), and ns3::HeFrameExchangeManager::SendPsduMap().

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

◆ ResetBa()

void ns3::QosTxop::ResetBa ( Mac48Address  recipient,
uint8_t  tid 
)

Reset BA agreement after BA negotiation failed.

Parameters
recipientMAC address of recipient
tidtraffic ID

Definition at line 749 of file qos-txop.cc.

References m_baManager, and NS_LOG_FUNCTION.

Referenced by AddBaResponseTimeout(), and ns3::HtFrameExchangeManager::NotifyPacketDiscarded().

+ Here is the caller graph for this function:

◆ SetAddBaResponseTimeout()

void ns3::QosTxop::SetAddBaResponseTimeout ( Time  addBaResponseTimeout)

Set the timeout to wait for ADDBA response.

Parameters
addBaResponseTimeoutthe timeout to wait for ADDBA response

Definition at line 764 of file qos-txop.cc.

References m_addBaResponseTimeout, and NS_LOG_FUNCTION.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

◆ SetBlockAckInactivityTimeout()

void ns3::QosTxop::SetBlockAckInactivityTimeout ( uint16_t  timeout)

Set the BlockAck inactivity timeout.

Parameters
timeoutthe BlockAck inactivity timeout.

Definition at line 716 of file qos-txop.cc.

References m_blockAckInactivityTimeout, NS_LOG_FUNCTION, and timeout.

Referenced by ns3::WifiMac::SetBeBlockAckInactivityTimeout(), ns3::WifiMac::SetBkBlockAckInactivityTimeout(), ns3::WifiMac::SetViBlockAckInactivityTimeout(), and ns3::WifiMac::SetVoBlockAckInactivityTimeout().

+ Here is the caller graph for this function:

◆ SetBlockAckThreshold()

void ns3::QosTxop::SetBlockAckThreshold ( uint8_t  threshold)

Set threshold for block ack mechanism.

If number of packets in the queue reaches the threshold, block ack mechanism is used.

Parameters
thresholdblock ack threshold value.

Definition at line 708 of file qos-txop.cc.

References m_baManager, m_blockAckThreshold, and NS_LOG_FUNCTION.

Referenced by ns3::WifiMac::SetBeBlockAckThreshold(), ns3::WifiMac::SetBkBlockAckThreshold(), ns3::WifiMac::SetViBlockAckThreshold(), and ns3::WifiMac::SetVoBlockAckThreshold().

+ Here is the caller graph for this function:

◆ SetDroppedMpduCallback()

void ns3::QosTxop::SetDroppedMpduCallback ( DroppedMpdu  callback)
overridevirtual
Parameters
callbackthe callback to invoke when an MPDU is dropped

Reimplemented from ns3::Txop.

Definition at line 186 of file qos-txop.cc.

References ns3::Callback< R, UArgs >::Bind(), m_baManager, NS_LOG_FUNCTION, ns3::Txop::SetDroppedMpduCallback(), and ns3::WIFI_MAC_DROP_QOS_OLD_PACKET.

+ Here is the call graph for this function:

◆ SetFailedAddBaTimeout()

void ns3::QosTxop::SetFailedAddBaTimeout ( Time  failedAddBaTimeout)

Set the timeout for failed BA agreement.

During the timeout period, all packets will be transmitted using normal MPDU.

Parameters
failedAddBaTimeoutthe timeout for failed BA agreement

Definition at line 777 of file qos-txop.cc.

References m_failedAddBaTimeout, and NS_LOG_FUNCTION.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

◆ SetMuAifsn()

void ns3::QosTxop::SetMuAifsn ( uint8_t  aifsn,
uint8_t  linkId 
)

Set the number of slots that make up an AIFS while the MU EDCA Timer is running for the given link.

Parameters
aifsnthe number of slots that make up an AIFS.
linkIdthe ID of the given link

Definition at line 208 of file qos-txop.cc.

References GetLink(), ns3::QosTxop::QosLinkEntity::muAifsn, and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

◆ SetMuCwMax()

void ns3::QosTxop::SetMuCwMax ( uint16_t  cwMax,
uint8_t  linkId 
)

Set the maximum contention window size to use while the MU EDCA Timer is running for the given link.

Parameters
cwMaxthe maximum contention window size.
linkIdthe ID of the given link

Definition at line 201 of file qos-txop.cc.

References GetLink(), ns3::QosTxop::QosLinkEntity::muCwMax, and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

◆ SetMuCwMin()

void ns3::QosTxop::SetMuCwMin ( uint16_t  cwMin,
uint8_t  linkId 
)

Set the minimum contention window size to use while the MU EDCA Timer is running for the given link.

Parameters
cwMinthe minimum contention window size.
linkIdthe ID of the given link

Definition at line 194 of file qos-txop.cc.

References GetLink(), ns3::QosTxop::QosLinkEntity::muCwMin, and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

◆ SetMuEdcaTimer()

void ns3::QosTxop::SetMuEdcaTimer ( Time  timer,
uint8_t  linkId 
)

Set the MU EDCA Timer for the given link.

Parameters
timerthe timer duration.
linkIdthe ID of the given link

Definition at line 215 of file qos-txop.cc.

References GetLink(), ns3::QosTxop::QosLinkEntity::muEdcaTimer, and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

◆ StartMuEdcaTimerNow()

void ns3::QosTxop::StartMuEdcaTimerNow ( uint8_t  linkId)

Start the MU EDCA Timer for the given link.

Parameters
linkIdthe ID of the given link

Definition at line 222 of file qos-txop.cc.

References ns3::ChannelAccessManager::DisableEdcaFor(), EdcaDisabled(), ns3::WifiMac::GetChannelAccessManager(), GetLink(), ns3::Txop::m_mac, ns3::Time::MS, ns3::Simulator::Now(), NS_LOG_DEBUG, and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

◆ UseExplicitBarAfterMissedBlockAck()

bool ns3::QosTxop::UseExplicitBarAfterMissedBlockAck ( ) const

Return true if an explicit BlockAckRequest is sent after a missed BlockAck.

Returns
true if an explicit BlockAckRequest is sent after a missed BlockAck

Definition at line 323 of file qos-txop.cc.

References m_useExplicitBarAfterMissedBlockAck.

Friends And Related Function Documentation

◆ AggregationCapableTransmissionListener

friend class AggregationCapableTransmissionListener
friend

allow AggregationCapableTransmissionListener class access

Definition at line 453 of file qos-txop.h.

Member Data Documentation

◆ m_ac

AcIndex ns3::QosTxop::m_ac
private

the access category

Definition at line 467 of file qos-txop.h.

Referenced by QosTxop(), GetAccessCategory(), PeekNextMpdu(), and PrepareBlockAckRequest().

◆ m_addBaResponseTimeout

Time ns3::QosTxop::m_addBaResponseTimeout
private

timeout for ADDBA response

Definition at line 475 of file qos-txop.h.

Referenced by GetAddBaResponseTimeout(), and SetAddBaResponseTimeout().

◆ m_baManager

◆ m_blockAckInactivityTimeout

uint16_t ns3::QosTxop::m_blockAckInactivityTimeout
private

the BlockAck inactivity timeout value (in TUs, i.e.

blocks of 1024 microseconds)

Definition at line 473 of file qos-txop.h.

Referenced by GetBlockAckInactivityTimeout(), and SetBlockAckInactivityTimeout().

◆ m_blockAckThreshold

uint8_t ns3::QosTxop::m_blockAckThreshold
private

the block ack threshold (use BA mechanism if number of packets in queue reaches this value.

If this value is 0, block ack is never used. When A-MPDU is enabled, block ack mechanism is used regardless of this value)

Definition at line 469 of file qos-txop.h.

Referenced by GetBlockAckThreshold(), and SetBlockAckThreshold().

◆ m_failedAddBaTimeout

Time ns3::QosTxop::m_failedAddBaTimeout
private

timeout after failed BA agreement

Definition at line 476 of file qos-txop.h.

Referenced by AddBaResponseTimeout(), GetFailedAddBaTimeout(), and SetFailedAddBaTimeout().

◆ m_nMaxInflights

uint8_t ns3::QosTxop::m_nMaxInflights
private

the maximum number of links on which an MPDU can be in-flight at the same time

Definition at line 479 of file qos-txop.h.

Referenced by GetTypeId(), and PeekNextMpdu().

◆ m_txopTrace

TxopTracedCallback ns3::QosTxop::m_txopTrace
private

TXOP trace callback.

Definition at line 487 of file qos-txop.h.

Referenced by GetTypeId(), and NotifyChannelReleased().

◆ m_useExplicitBarAfterMissedBlockAck

bool ns3::QosTxop::m_useExplicitBarAfterMissedBlockAck
private

flag whether explicit BlockAckRequest should be sent upon missed BlockAck Response

Definition at line 477 of file qos-txop.h.

Referenced by GetTypeId(), and UseExplicitBarAfterMissedBlockAck().


The documentation for this class was generated from the following files: