A Discrete-Event Network Simulator
API
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:

Public Member Functions

 QosTxop ()
 
virtual ~QosTxop ()
 
void AddBaResponseTimeout (Mac48Address recipient, uint8_t tid)
 Callback when ADDBA response is not received after timeout. More...
 
void AssignSequenceNumber (Ptr< WifiMacQueueItem > mpdu) const
 Assign a sequence number to the given MPDU, if it is not a fragment and it is not a retransmitted frame. More...
 
void CompleteMpduTx (Ptr< WifiMacQueueItem > mpdu)
 Stores an MPDU (part of an A-MPDU) in block ack agreement (i.e. More...
 
AcIndex GetAccessCategory (void) const override
 Get the access category. More...
 
Time GetAddBaResponseTimeout (void) const
 Get the timeout for ADDBA response. More...
 
bool GetBaAgreementEstablished (Mac48Address address, uint8_t tid) const
 
uint16_t GetBaBufferSize (Mac48Address address, uint8_t tid) const
 
Ptr< BlockAckManagerGetBaManager (void)
 Get the Block Ack Manager associated with this QosTxop. More...
 
uint16_t GetBaStartingSequence (Mac48Address address, uint8_t tid) const
 
uint16_t GetBlockAckInactivityTimeout (void) const
 Get the BlockAck inactivity timeout. More...
 
BlockAckReqType GetBlockAckReqType (Mac48Address recipient, uint8_t tid) const
 
uint8_t GetBlockAckThreshold (void) const
 Return the current threshold for block ack mechanism. More...
 
BlockAckType GetBlockAckType (Mac48Address recipient, uint8_t tid) const
 
Time GetFailedAddBaTimeout (void) const
 Get the timeout for failed BA agreement. More...
 
Ptr< WifiMacQueueItemGetNextMpdu (Ptr< const WifiMacQueueItem > peekedItem, WifiTxParameters &txParams, Time availableTime, bool initialFrame, WifiMacQueueItem::QueueIteratorPair &queueIt)
 Prepare the frame to transmit starting from the MPDU that has been previously peeked by calling PeekNextMpdu. More...
 
uint16_t GetNextSequenceNumberFor (const WifiMacHeader *hdr)
 Return the next sequence number for the given header. More...
 
virtual Time GetRemainingTxop (void) const
 Return the remaining duration in the current TXOP. More...
 
void GotAddBaResponse (const MgtAddBaResponseHeader *respHdr, Mac48Address recipient)
 Event handler when an ADDBA response is received. More...
 
void GotDelBaFrame (const MgtDelBaHeader *delBaHdr, Mac48Address recipient)
 Event handler when a DELBA frame is received. More...
 
bool HasFramesToTransmit (void) override
 Check if the Txop has frames to transmit. More...
 
bool IsQosTxop (void) const override
 Check for QoS TXOP. More...
 
virtual bool IsTxopStarted (void) const
 Return true if a TXOP has started. More...
 
void NotifyChannelAccessed (Time txopDuration) override
 Called by the FrameExchangeManager to notify that channel access has been granted for the given amount of time. More...
 
void NotifyChannelReleased (void) override
 Called by the FrameExchangeManager to notify the completion of the transmissions. More...
 
void NotifyInternalCollision (void) override
 Notify the Txop that internal collision has occurred. More...
 
Ptr< const WifiMacQueueItemPeekNextMpdu (uint8_t tid=8, Mac48Address recipient=Mac48Address::GetBroadcast())
 Peek the next frame to transmit to the given receiver and of the given TID from the block ack manager retransmit queue first and, if not found, from the EDCA queue. More...
 
Ptr< const WifiMacQueueItemPeekNextMpdu (WifiMacQueueItem::QueueIteratorPair queueIt, uint8_t tid=8, Mac48Address recipient=Mac48Address::GetBroadcast())
 Peek the next frame to transmit to the given receiver and of the given TID from the block ack manager retransmit queue first and, if not found, from the EDCA queue. More...
 
uint16_t PeekNextSequenceNumberFor (const WifiMacHeader *hdr)
 Return the next sequence number for the Traffic ID and destination, but do not pick it (i.e. More...
 
Ptr< const WifiMacQueueItemPrepareBlockAckRequest (Mac48Address recipient, uint8_t tid) const
 
void PushFront (Ptr< const Packet > packet, const WifiMacHeader &hdr)
 
void ResetBa (Mac48Address recipient, uint8_t tid)
 Reset BA agreement after BA negotiation failed. More...
 
void ScheduleBar (Ptr< const WifiMacQueueItem > bar, bool skipIfNoDataQueued=false)
 
void SetAccessCategory (AcIndex ac)
 Set the access category of this EDCAF. More...
 
void SetAddBaResponseTimeout (Time addBaResponseTimeout)
 Set the timeout to wait for ADDBA response. More...
 
void SetBlockAckInactivityTimeout (uint16_t timeout)
 Set the BlockAck inactivity timeout. More...
 
void SetBlockAckThreshold (uint8_t threshold)
 Set threshold for block ack mechanism. More...
 
void SetDroppedMpduCallback (DroppedMpdu callback) override
 
void SetFailedAddBaTimeout (Time failedAddBaTimeout)
 Set the timeout for failed BA agreement. More...
 
void SetQosFrameExchangeManager (const Ptr< QosFrameExchangeManager > qosFem)
 Set the Frame Exchange Manager associated with this QoS STA. More...
 
void SetQosQueueSize (Ptr< WifiMacQueueItem > mpdu)
 Set the Queue Size subfield of the QoS Control field of the given QoS data frame. More...
 
void SetWifiRemoteStationManager (const Ptr< WifiRemoteStationManager > remoteManager) override
 Set WifiRemoteStationsManager this Txop is associated to. More...
 
bool UseExplicitBarAfterMissedBlockAck (void) const
 Return true if an explicit BlockAckRequest is sent after a missed BlockAck. More...
 
- Public Member Functions inherited from ns3::Txop
 Txop ()
 
virtual ~Txop ()
 
int64_t AssignStreams (int64_t stream)
 Assign a fixed random variable stream number to the random variables used by this model. More...
 
virtual ChannelAccessStatus GetAccessStatus (void) const
 
uint8_t GetAifsn (void) const
 Return the number of slots that make up an AIFS. More...
 
uint32_t GetMaxCw (void) const
 Return the maximum contention window size. More...
 
uint32_t GetMinCw (void) const
 Return the minimum contention window size. More...
 
Time GetTxopLimit (void) const
 Return the TXOP limit. More...
 
Ptr< WifiMacQueueGetWifiMacQueue () const
 Return the packet queue associated with this Txop. More...
 
virtual void NotifyChannelSwitching (void)
 When a channel switching occurs, enqueued packets are removed. More...
 
virtual void NotifyOff (void)
 When off operation occurs, the queue gets cleaned up. More...
 
virtual void NotifyOn (void)
 When on operation occurs, channel access will be started. More...
 
virtual void NotifySleep (void)
 When sleep operation occurs, if there is a pending packet transmission, it will be reinserted to the front of the queue. More...
 
virtual void NotifyWakeUp (void)
 When wake up operation occurs, channel access will be restarted. More...
 
virtual void Queue (Ptr< Packet > packet, const WifiMacHeader &hdr)
 
void ResetCw (void)
 Update the value of the CW variable 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). More...
 
void SetAifsn (uint8_t aifsn)
 Set the number of slots that make up an AIFS. More...
 
void SetChannelAccessManager (const Ptr< ChannelAccessManager > manager)
 Set ChannelAccessManager this Txop is associated to. More...
 
void SetMaxCw (uint32_t maxCw)
 Set the maximum contention window size. More...
 
void SetMinCw (uint32_t minCw)
 Set the minimum contention window size. More...
 
void SetTxMiddle (const Ptr< MacTxMiddle > txMiddle)
 Set MacTxMiddle this Txop is associated to. More...
 
void SetTxopLimit (Time txopLimit)
 Set the TXOP limit. More...
 
void StartBackoffNow (uint32_t nSlots)
 
void UpdateFailedCw (void)
 Update the value of the CW variable to take into account a transmission failure. More...
 
- Public Member Functions inherited from ns3::Object
 Object ()
 Constructor. More...
 
virtual ~Object ()
 Destructor. More...
 
void AggregateObject (Ptr< Object > other)
 Aggregate two Objects together. More...
 
void Dispose (void)
 Dispose of this Object. More...
 
AggregateIterator GetAggregateIterator (void) const
 Get an iterator to the Objects aggregated to this one. More...
 
virtual TypeId GetInstanceTypeId (void) const
 Get the most derived TypeId for this Object. More...
 
template<typename T >
Ptr< T > GetObject (void) const
 Get a pointer to the requested aggregated Object. More...
 
template<typename T >
Ptr< T > GetObject (TypeId tid) const
 Get a pointer to the requested aggregated Object by TypeId. More...
 
template<>
Ptr< ObjectGetObject () const
 Specialization of () for objects of type ns3::Object. More...
 
template<>
Ptr< ObjectGetObject (TypeId tid) const
 Specialization of (TypeId tid) for objects of type ns3::Object. More...
 
void Initialize (void)
 Invoke DoInitialize on all Objects aggregated to this one. More...
 
bool IsInitialized (void) const
 Check if the object has been initialized. More...
 
- Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
 SimpleRefCount ()
 Default constructor. More...
 
 SimpleRefCount (const SimpleRefCount &o)
 Copy constructor. More...
 
uint32_t GetReferenceCount (void) const
 Get the reference count of the object. More...
 
SimpleRefCountoperator= (const SimpleRefCount &o)
 Assignment operator. More...
 
void Ref (void) const
 Increment the reference count. More...
 
void Unref (void) const
 Decrement the reference count. More...
 
- Public Member Functions inherited from ns3::ObjectBase
virtual ~ObjectBase ()
 Virtual destructor. More...
 
void GetAttribute (std::string name, AttributeValue &value) const
 Get the value of an attribute, raising fatal errors if unsuccessful. More...
 
bool GetAttributeFailSafe (std::string name, AttributeValue &value) const
 Get the value of an attribute without raising erros. More...
 
void SetAttribute (std::string name, const AttributeValue &value)
 Set a single attribute, raising fatal errors if unsuccessful. More...
 
bool SetAttributeFailSafe (std::string name, const AttributeValue &value)
 Set a single attribute without raising errors. More...
 
bool TraceConnect (std::string name, std::string context, const CallbackBase &cb)
 Connect a TraceSource to a Callback with a context. More...
 
bool TraceConnectWithoutContext (std::string name, const CallbackBase &cb)
 Connect a TraceSource to a Callback without a context. More...
 
bool TraceDisconnect (std::string name, std::string context, const CallbackBase &cb)
 Disconnect from a TraceSource a Callback previously connected with a context. More...
 
bool TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb)
 Disconnect from a TraceSource a Callback previously connected without a context. More...
 

Static Public Member Functions

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

Protected Member Functions

void DoDispose (void) override
 Destructor implementation. More...
 
- Protected Member Functions inherited from ns3::Txop
void DoDispose (void) override
 Destructor implementation. More...
 
void DoInitialize (void) override
 Initialize() implementation. More...
 
virtual void GenerateBackoff (void)
 Generate a new backoff now. More...
 
uint32_t GetBackoffSlots (void) const
 Return the current number of backoff slots. More...
 
Time GetBackoffStart (void) const
 Return the time when the backoff procedure started. More...
 
uint32_t GetCw (void) const
 
virtual void NotifyAccessRequested (void)
 Notify that access request has been received. More...
 
void RequestAccess (void)
 Request access to the ChannelAccessManager. More...
 
virtual void StartAccessIfNeeded (void)
 Request access from Txop if needed. More...
 
void UpdateBackoffSlotsNow (uint32_t nSlots, Time backoffUpdateBound)
 Update backoff slots that nSlots has passed. More...
 
- Protected Member Functions inherited from ns3::Object
 Object (const Object &o)
 Copy an Object. More...
 
virtual void NotifyNewAggregate (void)
 Notify all Objects aggregated to this one of a new Object being aggregated. More...
 
- Protected Member Functions inherited from ns3::ObjectBase
void ConstructSelf (const AttributeConstructionList &attributes)
 Complete construction of ObjectBase; invoked by derived classes. More...
 
virtual void NotifyConstructionCompleted (void)
 Notifier called once the ObjectBase is fully constructed. More...
 

Private Member Functions

void DoInitialize (void) override
 Initialize() implementation. More...
 
bool IsQosOldPacket (Ptr< const WifiMacQueueItem > 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. More...
 

Private Attributes

AcIndex m_ac
 the access category More...
 
Time m_addBaResponseTimeout
 timeout for ADDBA response More...
 
Ptr< BlockAckManagerm_baManager
 the block ack manager More...
 
uint16_t m_blockAckInactivityTimeout
 the BlockAck inactivity timeout value (in TUs, i.e. More...
 
uint8_t m_blockAckThreshold
 the block ack threshold (use BA mechanism if number of packets in queue reaches this value. More...
 
Time m_currentPacketTimestamp
 the current packet timestamp More...
 
Time m_failedAddBaTimeout
 timeout after failed BA agreement More...
 
Ptr< QosBlockedDestinationsm_qosBlockedDestinations
 the QoS blocked destinations More...
 
Ptr< QosFrameExchangeManagerm_qosFem
 the QoS Frame Exchange Manager More...
 
Time m_startTxop
 the start TXOP time More...
 
Time m_txopDuration
 the duration of a TXOP More...
 
TracedCallback< Time, Timem_txopTrace
 TXOP trace callback. More...
 
bool m_useExplicitBarAfterMissedBlockAck
 flag whether explicit BlockAckRequest should be sent upon missed BlockAck Response More...
 

Friends

class AggregationCapableTransmissionListener
 allow AggregationCapableTransmissionListener class access More...
 

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 WifiMacQueueItem > > DroppedMpdu
 typedef for a callback to invoke when an MPDU is dropped. More...
 
- Protected Attributes inherited from ns3::Txop
ChannelAccessStatus m_access
 channel access status More...
 
uint8_t m_aifsn
 the AIFSN More...
 
uint32_t m_backoff
 the current backoff More...
 
uint32_t m_backoffSlots
 the number of backoff slots More...
 
Time m_backoffStart
 the backoffStart variable is used to keep track of the time at which a backoff was started or the time at which the backoff counter was last updated. More...
 
TracedCallback< uint32_t > m_backoffTrace
 backoff trace value More...
 
Ptr< ChannelAccessManagerm_channelAccessManager
 the channel access manager More...
 
uint32_t m_cw
 the current contention window More...
 
uint32_t m_cwMax
 the maximum contention window More...
 
uint32_t m_cwMin
 the minimum contention window More...
 
TracedValue< uint32_t > m_cwTrace
 CW trace value. More...
 
DroppedMpdu m_droppedMpduCallback
 the dropped MPDU callback More...
 
Ptr< WifiMacQueuem_queue
 the wifi MAC queue More...
 
Ptr< UniformRandomVariablem_rng
 the random stream More...
 
Ptr< WifiRemoteStationManagerm_stationManager
 the wifi remote station manager More...
 
Ptr< MacTxMiddlem_txMiddle
 the MacTxMiddle More...
 
Time m_txopLimit
 the TXOP limit time More...
 

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::MacLow and ns3::ChannelAccessManager helper classes to respectively send packets and decide when to send them. 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). If A-MSDU is enabled for that access class, it picks several packets from the queue instead of a single one and sends the aggregated packet to ns3::MacLow.

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/$ns3::RegularWifiMac/Txop/$ns3::QosTxop"
  • "/NodeList/[i]/DeviceList/[i]/$ns3::WifiNetDevice/Mac/$ns3::RegularWifiMac/VO_Txop"
  • "/NodeList/[i]/DeviceList/[i]/$ns3::WifiNetDevice/Mac/$ns3::RegularWifiMac/VI_Txop"
  • "/NodeList/[i]/DeviceList/[i]/$ns3::WifiNetDevice/Mac/$ns3::RegularWifiMac/BE_Txop"
  • "/NodeList/[i]/DeviceList/[i]/$ns3::WifiNetDevice/Mac/$ns3::RegularWifiMac/BK_Txop"

Attributes

  • UseExplicitBarAfterMissedBlockAck: Specify whether explicit BlockAckRequest should be sent upon missed BlockAck Response.
    • Set with class: BooleanValue
    • Underlying type: bool
    • Initial value: true
    • Flags: construct write read
  • 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: +1e+06ns
    • Flags: construct write read
  • 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: construct write read
  • BlockAckManager: The BlockAckManager object.

Attributes defined in parent class ns3::Txop

  • MinCw: The minimum value of the contention window.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint32_t 0:4294967295
    • Initial value: 15
    • Flags: construct write read
  • MaxCw: The maximum value of the contention window.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint32_t 0:4294967295
    • Initial value: 1023
    • Flags: construct write read
  • Aifsn: The AIFSN: the default value conforms to non-QOS.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint8_t 0:255
    • Initial value: 2
    • Flags: construct write read
  • TxopLimit: The TXOP limit: the default value conforms to non-QoS.
    • Set with class: ns3::TimeValue
    • Underlying type: Time -9.22337e+18ns:+9.22337e+18ns
    • Initial value: +0ns
    • Flags: construct write read
  • Queue: The WifiMacQueue object

TraceSources

TraceSources defined in parent class ns3::Txop

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

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

Constructor & Destructor Documentation

◆ QosTxop()

ns3::QosTxop::QosTxop ( )

◆ ~QosTxop()

ns3::QosTxop::~QosTxop ( )
virtual

Definition at line 106 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 721 of file qos-txop.cc.

References ns3::Txop::GenerateBackoff(), HasFramesToTransmit(), ns3::Txop::m_access, m_baManager, ns3::Txop::m_channelAccessManager, m_failedAddBaTimeout, ns3::Txop::NOT_REQUESTED, NS_LOG_FUNCTION, ns3::OriginatorBlockAckAgreement::PENDING, 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< WifiMacQueueItem 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 460 of file qos-txop.cc.

References ns3::WifiMacQueueItem::GetHeader(), ns3::WifiMacQueueItem::IsFragment(), ns3::WifiMacHeader::IsRetry(), ns3::Txop::m_txMiddle, NS_LOG_FUNCTION, and ns3::WifiMacHeader::SetSequenceNumber().

Referenced by GetNextMpdu().

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

◆ CompleteMpduTx()

void ns3::QosTxop::CompleteMpduTx ( Ptr< WifiMacQueueItem 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 674 of file qos-txop.cc.

References ns3::WifiMacHeader::GetAddr1(), GetBaAgreementEstablished(), ns3::WifiMacQueueItem::GetHeader(), ns3::WifiMacHeader::GetQosTid(), ns3::WifiMacHeader::IsQosData(), m_baManager, and NS_ASSERT.

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

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

◆ DoDispose()

void ns3::QosTxop::DoDispose ( void  )
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 112 of file qos-txop.cc.

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

+ Here is the call graph for this function:

◆ DoInitialize()

void ns3::QosTxop::DoInitialize ( void  )
overrideprivatevirtual

Initialize() implementation.

This method is called only once by Initialize(). If the user calls Initialize() multiple times, DoInitialize() is called only the first time.

Subclasses are expected to override this method and chain up to their parent's implementation once they are done. It is safe to call GetObject() and AggregateObject() from within this method.

Reimplemented from ns3::Object.

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

References ns3::Txop::GenerateBackoff(), NS_LOG_FUNCTION, and ns3::Txop::ResetCw().

+ Here is the call graph for this function:

◆ GetAccessCategory()

AcIndex ns3::QosTxop::GetAccessCategory ( void  ) const
overridevirtual

Get the access category.

Returns
the access category.

Reimplemented from ns3::Txop.

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

References m_ac.

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

+ Here is the caller graph for this function:

◆ GetAddBaResponseTimeout()

Time ns3::QosTxop::GetAddBaResponseTimeout ( void  ) const

Get the timeout for ADDBA response.

Returns
the timeout to wait for ADDBA response

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

References m_addBaResponseTimeout.

Referenced by GetTypeId(), and ns3::HtFrameExchangeManager::NotifyReceivedNormalAck().

+ Here is the caller graph for this function:

◆ GetBaAgreementEstablished()

bool ns3::QosTxop::GetBaAgreementEstablished ( Mac48Address  address,
uint8_t  tid 
) const
Parameters
addressrecipient address of the peer station
tidtraffic ID.
Returns
true if a block ack agreement is established, false otherwise.

Checks if a block ack agreement is established with station addressed by recipient for TID tid.

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

References first::address, ns3::OriginatorBlockAckAgreement::ESTABLISHED, and m_baManager.

Referenced by CompleteMpduTx(), ns3::WifiDefaultAckManager::GetMaxDistFromStartingSeq(), ns3::MpduAggregator::GetNextAmpdu(), GetNextMpdu(), IsQosOldPacket(), NotifyInternalCollision(), ns3::HtFrameExchangeManager::NotifyReceivedNormalAck(), PeekNextMpdu(), ns3::HeFrameExchangeManager::ReceiveBasicTrigger(), ns3::HtFrameExchangeManager::RetransmitMpduAfterMissedAck(), ns3::HtFrameExchangeManager::RetransmitMpduAfterMissedCts(), and ns3::HeFrameExchangeManager::StartFrameExchange().

+ Here is the caller 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 167 of file qos-txop.cc.

References first::address, and m_baManager.

Referenced by ns3::MpduAggregator::GetNextAmpdu(), GetNextMpdu(), ns3::WifiDefaultAckManager::IsResponseNeeded(), and PeekNextMpdu().

+ Here is the caller graph for this function:

◆ GetBaManager()

◆ 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 173 of file qos-txop.cc.

References first::address, and m_baManager.

Referenced by ns3::WifiDefaultAckManager::GetMaxDistFromStartingSeq(), ns3::MpduAggregator::GetNextAmpdu(), GetNextMpdu(), IsQosOldPacket(), PeekNextMpdu(), and ns3::HtFrameExchangeManager::RetransmitMpduAfterMissedCts().

+ Here is the caller graph for this function:

◆ GetBlockAckInactivityTimeout()

uint16_t ns3::QosTxop::GetBlockAckInactivityTimeout ( void  ) const

Get the BlockAck inactivity timeout.

Returns
the BlockAck inactivity timeout.

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

References m_blockAckInactivityTimeout.

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

+ Here is the caller graph for this function:

◆ GetBlockAckReqType()

BlockAckReqType ns3::QosTxop::GetBlockAckReqType ( Mac48Address  recipient,
uint8_t  tid 
) const
Parameters
recipientMAC address of recipient
tidtraffic ID
Returns
the type of Block Ack Requests sent to the recipient

This function returns the type of Block Ack Requests sent to the recipient.

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

References m_baManager.

Referenced by ns3::WifiDefaultAckManager::GetAckInfoIfAggregatedMuBar(), ns3::WifiDefaultAckManager::GetAckInfoIfBarBaSequence(), and ns3::WifiDefaultAckManager::GetAckInfoIfTfMuBar().

+ Here is the caller graph for this function:

◆ GetBlockAckThreshold()

uint8_t ns3::QosTxop::GetBlockAckThreshold ( void  ) const

Return the current threshold for block ack mechanism.

Returns
the current threshold for block ack mechanism.

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

References m_blockAckThreshold, and NS_LOG_FUNCTION.

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

+ Here is the caller graph for this function:

◆ GetBlockAckType()

BlockAckType ns3::QosTxop::GetBlockAckType ( Mac48Address  recipient,
uint8_t  tid 
) const
Parameters
recipientMAC address
tidtraffic ID
Returns
the type of Block Acks sent by the recipient

This function returns the type of Block Acks sent by the recipient.

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

References m_baManager.

Referenced by ns3::WifiDefaultAckManager::GetAckInfoIfAggregatedMuBar(), ns3::WifiDefaultAckManager::GetAckInfoIfBarBaSequence(), and ns3::WifiDefaultAckManager::GetAckInfoIfTfMuBar().

+ Here is the caller graph for this function:

◆ GetFailedAddBaTimeout()

Time ns3::QosTxop::GetFailedAddBaTimeout ( void  ) const

Get the timeout for failed BA agreement.

Returns
the timeout for failed BA agreement

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

References m_failedAddBaTimeout.

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

+ Here is the caller graph for this function:

◆ GetNextMpdu()

Ptr< WifiMacQueueItem > ns3::QosTxop::GetNextMpdu ( Ptr< const WifiMacQueueItem peekedItem,
WifiTxParameters txParams,
Time  availableTime,
bool  initialFrame,
WifiMacQueueItem::QueueIteratorPair queueIt 
)

Prepare the frame to transmit 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
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
[out]queueIta QueueIteratorPair pointing to the queue item following the last item used to prepare the returned MPDU, if any; if no MPDU is returned, its value is unchanged
Returns
the frame to transmit or a null pointer if no frame meets the time constraints

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

References AssignSequenceNumber(), GetBaAgreementEstablished(), GetBaBufferSize(), GetBaStartingSequence(), ns3::WifiRemoteStationManager::GetHtSupported(), ns3::WifiTxParameters::GetSize(), ns3::Mac48Address::IsBroadcast(), ns3::IsInWindow(), ns3::WifiMacQueueItem::QueueIteratorPair::it, m_baManager, m_qosFem, ns3::Txop::m_queue, ns3::Txop::m_stationManager, ns3::Time::Min(), NS_ASSERT, NS_ASSERT_MSG, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::PeekPointer(), and ns3::QosUtilsIsOldPacket().

Referenced by AmpduAggregationTest::DoRun(), TwoLevelAggregationTest::DoRun(), HeAggregationTest::DoRunSubTest(), ns3::MpduAggregator::GetNextAmpdu(), ns3::HeFrameExchangeManager::ReceiveBasicTrigger(), ns3::HtFrameExchangeManager::SendDataFrame(), and ns3::QosFrameExchangeManager::StartFrameExchange().

+ 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 239 of file qos-txop.cc.

References ns3::Txop::m_txMiddle.

◆ GetRemainingTxop()

◆ GetTypeId()

◆ 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 631 of file qos-txop.cc.

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

+ Here is the call 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 666 of file qos-txop.cc.

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

+ Here is the call graph for this function:

◆ HasFramesToTransmit()

bool ns3::QosTxop::HasFramesToTransmit ( void  )
overridevirtual

Check if the Txop has frames to transmit.

Returns
true if the Txop has frames to transmit.

Reimplemented from ns3::Txop.

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

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

Referenced by AddBaResponseTimeout(), GotAddBaResponse(), NotifyInternalCollision(), and PushFront().

+ Here is the caller graph for this function:

◆ IsQosOldPacket()

bool ns3::QosTxop::IsQosOldPacket ( Ptr< const WifiMacQueueItem 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 251 of file qos-txop.cc.

References GetBaAgreementEstablished(), GetBaStartingSequence(), 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 ( void  ) const
overridevirtual

Check for QoS TXOP.

Returns
true if QoS TXOP.

Reimplemented from ns3::Txop.

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

◆ IsTxopStarted()

bool ns3::QosTxop::IsTxopStarted ( void  ) const
virtual

Return true if a TXOP has started.

Returns
true if a TXOP has started, false otherwise.

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

References ns3::Time::IsZero(), m_startTxop, 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:

◆ NotifyChannelAccessed()

void ns3::QosTxop::NotifyChannelAccessed ( Time  txopDuration)
overridevirtual

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

Parameters
txopDurationthe duration of the TXOP gained (zero for DCF)

Reimplemented from ns3::Txop.

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

References m_startTxop, m_txopDuration, ns3::Time::Min(), ns3::Txop::NotifyChannelAccessed(), ns3::Simulator::Now(), NS_ASSERT, and NS_LOG_FUNCTION.

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 ( void  )
overridevirtual

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

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

Reimplemented from ns3::Txop.

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

References ns3::Time::IsStrictlyPositive(), m_startTxop, m_txopTrace, ns3::Txop::NotifyChannelReleased(), ns3::Simulator::Now(), NS_LOG_DEBUG, NS_LOG_FUNCTION, and ns3::Seconds().

Referenced by ns3::QosFrameExchangeManager::CancelPifsRecovery(), ns3::QosFrameExchangeManager::PifsRecovery(), ns3::QosFrameExchangeManager::SendCfEndIfNeeded(), ns3::QosFrameExchangeManager::StartTransmission(), ns3::QosFrameExchangeManager::TransmissionFailed(), and ns3::QosFrameExchangeManager::TransmissionSucceeded().

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

◆ NotifyInternalCollision()

◆ PeekNextMpdu() [1/2]

Ptr< const WifiMacQueueItem > ns3::QosTxop::PeekNextMpdu ( uint8_t  tid = 8,
Mac48Address  recipient = Mac48Address::GetBroadcast () 
)

Peek the next frame to transmit to the given receiver and of the given TID from the block ack manager retransmit queue first and, if not found, from the EDCA queue.

If tid is equal to 8 (invalid value) and recipient is the broadcast address, the first available frame is returned. Note that A-MSDU aggregation is never attempted (this is relevant if the frame is peeked from the EDCA queue). If the frame is peeked from the EDCA queue, it is assigned a sequence number peeked from MacTxMiddle.

Parameters
tidtraffic ID.
recipientthe receiver station address.
Returns
the peeked frame.

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

References ns3::WifiMacQueue::EMPTY.

Referenced by AmpduAggregationTest::DoRun(), TwoLevelAggregationTest::DoRun(), HeAggregationTest::DoRunSubTest(), ns3::MpduAggregator::GetNextAmpdu(), NotifyInternalCollision(), ns3::HeFrameExchangeManager::ReceiveBasicTrigger(), ns3::HtFrameExchangeManager::StartFrameExchange(), ns3::HeFrameExchangeManager::StartFrameExchange(), ns3::QosFrameExchangeManager::StartFrameExchange(), and ns3::RrMultiUserScheduler::TrySendingDlMuPpdu().

+ Here is the caller graph for this function:

◆ PeekNextMpdu() [2/2]

Ptr< const WifiMacQueueItem > ns3::QosTxop::PeekNextMpdu ( WifiMacQueueItem::QueueIteratorPair  queueIt,
uint8_t  tid = 8,
Mac48Address  recipient = Mac48Address::GetBroadcast () 
)

Peek the next frame to transmit to the given receiver and of the given TID from the block ack manager retransmit queue first and, if not found, from the EDCA queue.

If tid is equal to 8 (invalid value) and recipient is the broadcast address, the first available frame is returned. Note that A-MSDU aggregation is never attempted (this is relevant if the frame is peeked from the EDCA queue). If the frame is peeked from the EDCA queue, it is assigned a sequence number peeked from MacTxMiddle.

Parameters
queueItthe QueueIteratorPair pointing to the queue item from which the search for an MPDU starts, if the QueueIteratorPair is valid
tidtraffic ID.
recipientthe receiver station address.
Returns
the peeked frame.

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

References ns3::WifiMacQueue::EMPTY, GetBaAgreementEstablished(), GetBaBufferSize(), GetBaStartingSequence(), ns3::IsInWindow(), IsQosOldPacket(), ns3::WifiMacHeader::IsRetry(), ns3::WifiMacQueueItem::QueueIteratorPair::it, m_baManager, m_qosBlockedDestinations, ns3::Txop::m_queue, ns3::Txop::m_txMiddle, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::WifiMacQueue::PeekByTidAndAddress(), ns3::WifiMacQueue::PeekFirstAvailable(), ns3::PeekPointer(), ns3::WifiMacQueueItem::QueueIteratorPair::queue, and ns3::WifiMacHeader::SetSequenceNumber().

+ Here is the call 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 245 of file qos-txop.cc.

References ns3::Txop::m_txMiddle.

◆ PrepareBlockAckRequest()

Ptr< const WifiMacQueueItem > ns3::QosTxop::PrepareBlockAckRequest ( Mac48Address  recipient,
uint8_t  tid 
) const
Parameters
recipientAddress of recipient.
tidtraffic ID.
Returns
the BlockAckRequest to send

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 179 of file qos-txop.cc.

References ns3::Packet::AddHeader(), ns3::WifiRemoteStationManager::GetMac(), m_ac, m_baManager, ns3::Txop::m_stationManager, 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::MissedBlockAck(), ns3::HtFrameExchangeManager::SendPsdu(), and ns3::HeFrameExchangeManager::SendPsduMap().

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

◆ PushFront()

void ns3::QosTxop::PushFront ( Ptr< const Packet packet,
const WifiMacHeader hdr 
)
Parameters
packetpacket to send.
hdrheader of packet to send.

Store the packet in the front of the internal queue until it can be sent safely.

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

References HasFramesToTransmit(), ns3::Txop::m_access, ns3::Txop::m_channelAccessManager, ns3::Txop::m_queue, ns3::Txop::NOT_REQUESTED, and NS_LOG_FUNCTION.

+ Here is the call 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 738 of file qos-txop.cc.

References ns3::OriginatorBlockAckAgreement::ESTABLISHED, m_baManager, and NS_LOG_FUNCTION.

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

+ Here is the caller graph for this function:

◆ ScheduleBar()

void ns3::QosTxop::ScheduleBar ( Ptr< const WifiMacQueueItem bar,
bool  skipIfNoDataQueued = false 
)
Parameters
barthe BlockAckRequest to schedule
skipIfNoDataQueueddo not send if there is no data queued

Request the block ack manager to schedule the transmission of the given BlockAckRequest.

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

References m_baManager.

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

+ Here is the caller graph for this function:

◆ SetAccessCategory()

void ns3::QosTxop::SetAccessCategory ( AcIndex  ac)

Set the access category of this EDCAF.

Parameters
acaccess category.

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

References m_ac, and NS_LOG_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 753 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 693 of file qos-txop.cc.

References m_blockAckInactivityTimeout, NS_LOG_FUNCTION, and timeout.

Referenced by ns3::RegularWifiMac::SetBeBlockAckInactivityTimeout(), ns3::RegularWifiMac::SetBkBlockAckInactivityTimeout(), ns3::RegularWifiMac::SetViBlockAckInactivityTimeout(), and ns3::RegularWifiMac::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 685 of file qos-txop.cc.

References m_baManager, m_blockAckThreshold, and NS_LOG_FUNCTION.

Referenced by ns3::RegularWifiMac::SetBeBlockAckThreshold(), ns3::RegularWifiMac::SetBkBlockAckThreshold(), ns3::RegularWifiMac::SetViBlockAckThreshold(), and ns3::RegularWifiMac::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 145 of file qos-txop.cc.

References m_baManager, ns3::Txop::m_droppedMpduCallback, NS_LOG_FUNCTION, ns3::Txop::SetDroppedMpduCallback(), and ns3::WIFI_MAC_DROP_EXPIRED_LIFETIME.

+ 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 766 of file qos-txop.cc.

References m_failedAddBaTimeout, and NS_LOG_FUNCTION.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

◆ SetQosFrameExchangeManager()

void ns3::QosTxop::SetQosFrameExchangeManager ( const Ptr< QosFrameExchangeManager qosFem)

Set the Frame Exchange Manager associated with this QoS STA.

Parameters
qosFemthe associated QoS Frame Exchange Manager.

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

References m_qosFem, and NS_LOG_FUNCTION.

◆ SetQosQueueSize()

void ns3::QosTxop::SetQosQueueSize ( Ptr< WifiMacQueueItem mpdu)

Set the Queue Size subfield of the QoS Control field of the given QoS data frame.

Parameters
mpduthe given QoS data frame

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

References ns3::WifiMacHeader::GetAddr1(), ns3::WifiMacQueueItem::GetHeader(), ns3::WifiMacHeader::GetQosTid(), ns3::WifiMacHeader::IsQosData(), m_baManager, ns3::Txop::m_queue, min, NS_ASSERT, NS_LOG_DEBUG, NS_LOG_FUNCTION, and ns3::WifiMacHeader::SetQosQueueSize().

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

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

◆ SetWifiRemoteStationManager()

void ns3::QosTxop::SetWifiRemoteStationManager ( const Ptr< WifiRemoteStationManager remoteManager)
overridevirtual

Set WifiRemoteStationsManager this Txop is associated to.

Parameters
remoteManagerWifiRemoteStationManager to associate.

Reimplemented from ns3::Txop.

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

References m_baManager, ns3::Txop::m_stationManager, NS_LOG_FUNCTION, and ns3::Txop::SetWifiRemoteStationManager().

+ Here is the call graph for this function:

◆ UseExplicitBarAfterMissedBlockAck()

bool ns3::QosTxop::UseExplicitBarAfterMissedBlockAck ( void  ) 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 215 of file qos-txop.cc.

References m_useExplicitBarAfterMissedBlockAck.

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

+ Here is the caller graph for this function:

Friends And Related Function Documentation

◆ AggregationCapableTransmissionListener

friend class AggregationCapableTransmissionListener
friend

allow AggregationCapableTransmissionListener class access

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

Member Data Documentation

◆ m_ac

AcIndex ns3::QosTxop::m_ac
private

the access category

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

Referenced by GetAccessCategory(), PrepareBlockAckRequest(), and SetAccessCategory().

◆ m_addBaResponseTimeout

Time ns3::QosTxop::m_addBaResponseTimeout
private

timeout for ADDBA response

Definition at line 421 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 418 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 414 of file qos-txop.h.

Referenced by GetBlockAckThreshold(), and SetBlockAckThreshold().

◆ m_currentPacketTimestamp

Time ns3::QosTxop::m_currentPacketTimestamp
private

the current packet timestamp

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

◆ m_failedAddBaTimeout

Time ns3::QosTxop::m_failedAddBaTimeout
private

timeout after failed BA agreement

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

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

◆ m_qosBlockedDestinations

Ptr<QosBlockedDestinations> ns3::QosTxop::m_qosBlockedDestinations
private

the QoS blocked destinations

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

Referenced by DoDispose(), HasFramesToTransmit(), NotifyInternalCollision(), PeekNextMpdu(), and QosTxop().

◆ m_qosFem

Ptr<QosFrameExchangeManager> ns3::QosTxop::m_qosFem
private

the QoS Frame Exchange Manager

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

Referenced by DoDispose(), GetNextMpdu(), and SetQosFrameExchangeManager().

◆ m_startTxop

Time ns3::QosTxop::m_startTxop
private

the start TXOP time

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

Referenced by GetRemainingTxop(), IsTxopStarted(), NotifyChannelAccessed(), and NotifyChannelReleased().

◆ m_txopDuration

Time ns3::QosTxop::m_txopDuration
private

the duration of a TXOP

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

Referenced by GetRemainingTxop(), and NotifyChannelAccessed().

◆ m_txopTrace

TracedCallback<Time, Time> ns3::QosTxop::m_txopTrace
private

TXOP trace callback.

Definition at line 425 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 423 of file qos-txop.h.

Referenced by GetTypeId(), and UseExplicitBarAfterMissedBlockAck().


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