A Discrete-Event Network Simulator
API
ns3::Txop Class Reference

Handle packet fragmentation and retransmissions for data and management frames. More...

#include "txop.h"

+ Inheritance diagram for ns3::Txop:
+ Collaboration diagram for ns3::Txop:

Public Types

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

Public Member Functions

 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 AcIndex GetAccessCategory (void) const
 Get the access category. More...
 
virtual ChannelAccessStatus GetAccessStatus (void) const
 
virtual uint8_t GetAifsn (void) const
 Return the number of slots that make up an AIFS. More...
 
virtual uint32_t GetMaxCw (void) const
 Return the maximum contention window size. More...
 
virtual 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 bool IsQosTxop () const
 Check for QoS TXOP. More...
 
virtual void NotifyChannelAccessed (Time txopDuration=Seconds(0))
 Called by the FrameExchangeManager to notify that channel access has been granted for the given amount of time. More...
 
virtual void NotifyChannelReleased (void)
 Called by the FrameExchangeManager to notify the completion of the transmissions. 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...
 
virtual void SetDroppedMpduCallback (DroppedMpdu callback)
 
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...
 
virtual void SetWifiMac (const Ptr< RegularWifiMac > mac)
 Set the wifi MAC this Txop is associated to. 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<>
Ptr< ObjectGetObject () const
 Specialization of () for objects of type ns3::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 (TypeId tid) const
 Specialization of (TypeId tid) for objects of type ns3::Object. More...
 
template<typename T >
Ptr< T > GetObject (void) const
 Get a pointer to the requested aggregated 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::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...
 
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 bool HasFramesToTransmit (void)
 Check if the Txop has frames to transmit. More...
 
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...
 

Protected Attributes

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< RegularWifiMacm_mac
 the wifi MAC More...
 
Ptr< WifiMacQueuem_queue
 the wifi MAC queue More...
 
Ptr< UniformRandomVariablem_rng
 the random stream More...
 
Ptr< MacTxMiddlem_txMiddle
 the MacTxMiddle More...
 
Time m_txopLimit
 the TXOP limit time More...
 

Friends

class ChannelAccessManager
 < ChannelAccessManager associated class More...
 
class MacLowTransmissionListener
 allow MacLowTransmissionListener class access More...
 

Additional Inherited Members

Detailed Description

Handle packet fragmentation and retransmissions for data and management frames.

This class implements the packet fragmentation and retransmission policy for data and management 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.

The policy currently implemented uses a simple fragmentation 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::Txop is accessible through the following paths with Config::Set and Config::Connect:

  • "/NodeList/[i]/DeviceList/[i]/$ns3::WifiNetDevice/Mac/$ns3::RegularWifiMac/Txop"

Attributes

  • 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

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

Definition at line 65 of file txop.h.

Member Typedef Documentation

◆ DroppedMpdu

typedef for a callback to invoke when an MPDU is dropped.

Definition at line 83 of file txop.h.

Member Enumeration Documentation

◆ ChannelAccessStatus

Enumeration for channel access status.

Enumerator
NOT_REQUESTED 
REQUESTED 
GRANTED 

Definition at line 88 of file txop.h.

Constructor & Destructor Documentation

◆ Txop()

ns3::Txop::Txop ( )

Definition at line 85 of file txop.cc.

References m_queue, m_rng, and NS_LOG_FUNCTION.

◆ ~Txop()

ns3::Txop::~Txop ( )
virtual

Definition at line 100 of file txop.cc.

References NS_LOG_FUNCTION.

Member Function Documentation

◆ AssignStreams()

int64_t ns3::Txop::AssignStreams ( int64_t  stream)

Assign a fixed random variable stream number to the random variables used by this model.

Return the number of streams (possibly zero) that have been assigned.

Parameters
streamfirst stream index to use.
Returns
the number of stream indices assigned by this model.

Definition at line 304 of file txop.cc.

References m_rng, NS_LOG_FUNCTION, and ns3::RandomVariableStream::SetStream().

Referenced by ns3::MeshHelper::AssignStreams(), ns3::WaveHelper::AssignStreams(), ns3::WifiHelper::AssignStreams(), and AssignWifiRandomStreams().

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

◆ DoDispose()

void ns3::Txop::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 106 of file txop.cc.

References m_channelAccessManager, m_mac, m_queue, m_rng, m_txMiddle, and NS_LOG_FUNCTION.

Referenced by ns3::QosTxop::DoDispose().

+ Here is the caller graph for this function:

◆ DoInitialize()

void ns3::Txop::DoInitialize ( void  )
overrideprotectedvirtual

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

References GenerateBackoff(), NS_LOG_FUNCTION, and ResetCw().

+ Here is the call graph for this function:

◆ GenerateBackoff()

void ns3::Txop::GenerateBackoff ( void  )
protectedvirtual

Generate a new backoff now.

Definition at line 371 of file txop.cc.

References GetCw(), ns3::UniformRandomVariable::GetInteger(), m_backoff, m_backoffTrace, m_rng, NS_LOG_FUNCTION, and StartBackoffNow().

Referenced by ns3::QosTxop::AddBaResponseTimeout(), ns3::QosTxop::DoInitialize(), DoInitialize(), NotifyChannelReleased(), and Queue().

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

◆ GetAccessCategory()

AcIndex ns3::Txop::GetAccessCategory ( void  ) const
virtual

Get the access category.

Returns
the access category.

Reimplemented in ns3::QosTxop.

Definition at line 420 of file txop.cc.

References ns3::AC_BE_NQOS.

◆ GetAccessStatus()

Txop::ChannelAccessStatus ns3::Txop::GetAccessStatus ( void  ) const
virtual
Returns
the current channel access status.

Definition at line 330 of file txop.cc.

References m_access.

Referenced by ns3::ChannelAccessManager::DoGrantDcfAccess(), ns3::ChannelAccessManager::NeedBackoffUponAccess(), and ns3::ChannelAccessManager::RequestAccess().

+ Here is the caller graph for this function:

◆ GetAifsn()

uint8_t ns3::Txop::GetAifsn ( void  ) const
virtual

Return the number of slots that make up an AIFS.

Returns
the number of slots that make up an AIFS.

Reimplemented in ns3::QosTxop.

Definition at line 269 of file txop.cc.

References m_aifsn.

Referenced by ns3::ChannelAccessManager::GetBackoffStartFor(), GetTypeId(), ns3::ChannelAccessManager::NeedBackoffUponAccess(), and ns3::ChannelAccessManager::RequestAccess().

+ Here is the caller graph for this function:

◆ GetBackoffSlots()

uint32_t ns3::Txop::GetBackoffSlots ( void  ) const
protected

Return the current number of backoff slots.

Returns
the current number of backoff slots

Definition at line 205 of file txop.cc.

References m_backoffSlots.

Referenced by ns3::ChannelAccessManager::DisableEdcaFor(), ns3::ChannelAccessManager::DoGrantDcfAccess(), ns3::ChannelAccessManager::GetBackoffEndFor(), and ns3::ChannelAccessManager::NeedBackoffUponAccess().

+ Here is the caller graph for this function:

◆ GetBackoffStart()

Time ns3::Txop::GetBackoffStart ( void  ) const
protected

Return the time when the backoff procedure started.

Returns
the time when the backoff procedure started

Definition at line 211 of file txop.cc.

References m_backoffStart.

Referenced by ns3::ChannelAccessManager::GetBackoffStartFor(), and ns3::ChannelAccessManager::RequestAccess().

+ Here is the caller graph for this function:

◆ GetCw()

uint32_t ns3::Txop::GetCw ( void  ) const
protected
Returns
the current value of the CW variable. The initial value is minCW.

Definition at line 180 of file txop.cc.

References m_cw.

Referenced by GenerateBackoff().

+ Here is the caller graph for this function:

◆ GetMaxCw()

uint32_t ns3::Txop::GetMaxCw ( void  ) const
virtual

Return the maximum contention window size.

Returns
the maximum contention window size.

Reimplemented in ns3::QosTxop.

Definition at line 263 of file txop.cc.

References m_cwMax.

Referenced by GetTypeId(), and UpdateFailedCw().

+ Here is the caller graph for this function:

◆ GetMinCw()

uint32_t ns3::Txop::GetMinCw ( void  ) const
virtual

Return the minimum contention window size.

Returns
the minimum contention window size.

Reimplemented in ns3::QosTxop.

Definition at line 257 of file txop.cc.

References m_cwMin.

Referenced by GetTypeId(), ResetCw(), and UpdateFailedCw().

+ Here is the caller graph for this function:

◆ GetTxopLimit()

◆ GetTypeId()

◆ GetWifiMacQueue()

◆ HasFramesToTransmit()

bool ns3::Txop::HasFramesToTransmit ( void  )
protectedvirtual

Check if the Txop has frames to transmit.

Returns
true if the Txop has frames to transmit.

Reimplemented in ns3::QosTxop.

Definition at line 281 of file txop.cc.

References m_queue, and NS_LOG_FUNCTION.

Referenced by ns3::ChannelAccessManager::NeedBackoffUponAccess(), NotifyChannelReleased(), and StartAccessIfNeeded().

+ Here is the caller graph for this function:

◆ IsQosTxop()

bool ns3::Txop::IsQosTxop ( void  ) const
virtual

◆ NotifyAccessRequested()

void ns3::Txop::NotifyAccessRequested ( void  )
protectedvirtual

Notify that access request has been received.

Definition at line 336 of file txop.cc.

References m_access, NS_LOG_FUNCTION, and REQUESTED.

Referenced by ns3::ChannelAccessManager::RequestAccess().

+ Here is the caller graph for this function:

◆ NotifyChannelAccessed()

void ns3::Txop::NotifyChannelAccessed ( Time  txopDuration = Seconds (0))
virtual

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 in ns3::QosTxop.

Definition at line 343 of file txop.cc.

References GRANTED, m_access, and NS_LOG_FUNCTION.

Referenced by ns3::QosTxop::NotifyChannelAccessed(), ns3::WaveFrameExchangeManager::StartTransmission(), ns3::FrameExchangeManager::StartTransmission(), and FrameExchangeManagerStub< TxopType >::StartTransmission().

+ Here is the caller graph for this function:

◆ NotifyChannelReleased()

void ns3::Txop::NotifyChannelReleased ( void  )
virtual

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

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

Reimplemented in ns3::QosTxop.

Definition at line 350 of file txop.cc.

References GenerateBackoff(), HasFramesToTransmit(), m_access, NOT_REQUESTED, NS_LOG_FUNCTION, RequestAccess(), and ns3::Simulator::ScheduleNow().

Referenced by ns3::QosTxop::NotifyChannelReleased(), ns3::QosFrameExchangeManager::SendCfEndIfNeeded(), ns3::WaveFrameExchangeManager::StartTransmission(), ns3::FrameExchangeManager::StartTransmission(), ns3::FrameExchangeManager::TransmissionFailed(), and ns3::FrameExchangeManager::TransmissionSucceeded().

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

◆ NotifyChannelSwitching()

void ns3::Txop::NotifyChannelSwitching ( void  )
virtual

When a channel switching occurs, enqueued packets are removed.

Definition at line 380 of file txop.cc.

References m_queue, and NS_LOG_FUNCTION.

Referenced by ns3::OcbWifiMac::CancleTx().

+ Here is the caller graph for this function:

◆ NotifyOff()

void ns3::Txop::NotifyOff ( void  )
virtual

When off operation occurs, the queue gets cleaned up.

Definition at line 393 of file txop.cc.

References m_queue, and NS_LOG_FUNCTION.

◆ NotifyOn()

void ns3::Txop::NotifyOn ( void  )
virtual

When on operation occurs, channel access will be started.

Definition at line 407 of file txop.cc.

References NS_LOG_FUNCTION, and StartAccessIfNeeded().

+ Here is the call graph for this function:

◆ NotifySleep()

void ns3::Txop::NotifySleep ( void  )
virtual

When sleep operation occurs, if there is a pending packet transmission, it will be reinserted to the front of the queue.

Definition at line 387 of file txop.cc.

References NS_LOG_FUNCTION.

◆ NotifyWakeUp()

void ns3::Txop::NotifyWakeUp ( void  )
virtual

When wake up operation occurs, channel access will be restarted.

Definition at line 400 of file txop.cc.

References NS_LOG_FUNCTION, and StartAccessIfNeeded().

+ Here is the call graph for this function:

◆ Queue()

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

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

Definition at line 289 of file txop.cc.

References GenerateBackoff(), m_channelAccessManager, m_queue, NS_LOG_FUNCTION, ns3::Packet::RemovePacketTag(), and StartAccessIfNeeded().

Referenced by ns3::OcbWifiMac::Enqueue(), ns3::AdhocWifiMac::Enqueue(), ns3::StaWifiMac::Enqueue(), ns3::ApWifiMac::ForwardDown(), ns3::StaWifiMac::SendAssociationRequest(), ns3::ApWifiMac::SendAssocResp(), ns3::MeshWifiInterfaceMac::SendBeacon(), ns3::ApWifiMac::SendOneBeacon(), ns3::StaWifiMac::SendProbeRequest(), ns3::ApWifiMac::SendProbeResp(), and ns3::OcbWifiMac::SendVsc().

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

◆ RequestAccess()

void ns3::Txop::RequestAccess ( void  )
protected

Request access to the ChannelAccessManager.

Definition at line 362 of file txop.cc.

References m_access, m_channelAccessManager, and NOT_REQUESTED.

Referenced by NotifyChannelReleased().

+ Here is the caller graph for this function:

◆ ResetCw()

void ns3::Txop::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).

By default, this resets the CW variable to minCW.

Definition at line 186 of file txop.cc.

References GetMinCw(), m_cw, m_cwTrace, and NS_LOG_FUNCTION.

Referenced by ns3::HtFrameExchangeManager::BlockAckTimeout(), ns3::FrameExchangeManager::CtsTimeout(), ns3::HtFrameExchangeManager::CtsTimeout(), ns3::QosTxop::DoInitialize(), DoInitialize(), ns3::FrameExchangeManager::NormalAckTimeout(), ns3::FrameExchangeManager::NotifyInternalCollision(), ns3::FrameExchangeManager::ReceivedNormalAck(), ns3::HtFrameExchangeManager::ReceiveMpdu(), SetMaxCw(), and SetMinCw().

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

◆ SetAifsn()

void ns3::Txop::SetAifsn ( uint8_t  aifsn)

Set the number of slots that make up an AIFS.

Parameters
aifsnthe number of slots that make up an AIFS.

Definition at line 242 of file txop.cc.

References m_aifsn, and NS_LOG_FUNCTION.

Referenced by ns3::ApWifiMac::ApWifiMac(), ns3::WifiMac::ConfigureDcf(), ns3::OcbWifiMac::ConfigureEdca(), ns3::MeshWifiInterfaceMac::ConfigureStandard(), GetTypeId(), and ns3::StaWifiMac::SetEdcaParameters().

+ Here is the caller graph for this function:

◆ SetChannelAccessManager()

void ns3::Txop::SetChannelAccessManager ( const Ptr< ChannelAccessManager manager)

Set ChannelAccessManager this Txop is associated to.

Parameters
managerChannelAccessManager to associate.

Definition at line 117 of file txop.cc.

References m_channelAccessManager, and NS_LOG_FUNCTION.

Referenced by ns3::ApWifiMac::ApWifiMac(), ns3::RegularWifiMac::RegularWifiMac(), and ns3::RegularWifiMac::SetupEdcaQueue().

+ Here is the caller graph for this function:

◆ SetDroppedMpduCallback()

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

Reimplemented in ns3::QosTxop.

Definition at line 138 of file txop.cc.

References ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::Bind(), m_droppedMpduCallback, m_queue, NS_LOG_FUNCTION, ns3::WIFI_MAC_DROP_EXPIRED_LIFETIME, and ns3::WIFI_MAC_DROP_FAILED_ENQUEUE.

Referenced by ns3::RegularWifiMac::RegularWifiMac(), and ns3::QosTxop::SetDroppedMpduCallback().

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

◆ SetMaxCw()

void ns3::Txop::SetMaxCw ( uint32_t  maxCw)

Set the maximum contention window size.

Parameters
maxCwthe maximum contention window size.

Definition at line 168 of file txop.cc.

References m_cwMax, NS_LOG_FUNCTION, and ResetCw().

Referenced by ns3::ApWifiMac::ApWifiMac(), ns3::WifiMac::ConfigureDcf(), ns3::OcbWifiMac::ConfigureEdca(), ns3::MeshWifiInterfaceMac::ConfigureStandard(), GetTypeId(), and ns3::StaWifiMac::SetEdcaParameters().

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

◆ SetMinCw()

void ns3::Txop::SetMinCw ( uint32_t  minCw)

Set the minimum contention window size.

Parameters
minCwthe minimum contention window size.

Definition at line 156 of file txop.cc.

References m_cwMin, NS_LOG_FUNCTION, and ResetCw().

Referenced by ns3::ApWifiMac::ApWifiMac(), ns3::WifiMac::ConfigureDcf(), ns3::OcbWifiMac::ConfigureEdca(), ns3::MeshWifiInterfaceMac::ConfigureStandard(), GetTypeId(), and ns3::StaWifiMac::SetEdcaParameters().

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

◆ SetTxMiddle()

void ns3::Txop::SetTxMiddle ( const Ptr< MacTxMiddle txMiddle)

Set MacTxMiddle this Txop is associated to.

Parameters
txMiddleMacTxMiddle to associate.

Definition at line 124 of file txop.cc.

References m_txMiddle, and NS_LOG_FUNCTION.

Referenced by ns3::ApWifiMac::ApWifiMac(), ns3::RegularWifiMac::RegularWifiMac(), and ns3::RegularWifiMac::SetupEdcaQueue().

+ Here is the caller graph for this function:

◆ SetTxopLimit()

void ns3::Txop::SetTxopLimit ( Time  txopLimit)

Set the TXOP limit.

Parameters
txopLimitthe TXOP limit. Value zero corresponds to default Txop.

Definition at line 249 of file txop.cc.

References ns3::Time::GetMicroSeconds(), m_txopLimit, NS_ASSERT_MSG, and NS_LOG_FUNCTION.

Referenced by ns3::WifiMac::ConfigureDcf(), OfdmaAckSequenceTest::DoRun(), GetTypeId(), Experiment::Run(), and ns3::StaWifiMac::SetEdcaParameters().

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

◆ SetWifiMac()

void ns3::Txop::SetWifiMac ( const Ptr< RegularWifiMac mac)
virtual

Set the wifi MAC this Txop is associated to.

Parameters
macassociated wifi MAC

Definition at line 131 of file txop.cc.

References m_mac, third::mac, and NS_LOG_FUNCTION.

Referenced by ns3::ApWifiMac::ApWifiMac(), ns3::RegularWifiMac::RegularWifiMac(), and ns3::RegularWifiMac::SetupEdcaQueue().

+ Here is the caller graph for this function:

◆ StartAccessIfNeeded()

void ns3::Txop::StartAccessIfNeeded ( void  )
protectedvirtual

Request access from Txop if needed.

Definition at line 312 of file txop.cc.

References HasFramesToTransmit(), m_access, m_channelAccessManager, NOT_REQUESTED, and NS_LOG_FUNCTION.

Referenced by NotifyOn(), NotifyWakeUp(), and Queue().

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

◆ StartBackoffNow()

void ns3::Txop::StartBackoffNow ( uint32_t  nSlots)
Parameters
nSlotsthe number of slots of the backoff.

Start a backoff by initializing the backoff counter to the number of slots specified.

Definition at line 226 of file txop.cc.

References m_backoffSlots, m_backoffStart, ns3::Simulator::Now(), NS_LOG_DEBUG, and NS_LOG_FUNCTION.

Referenced by GenerateBackoff().

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

◆ UpdateBackoffSlotsNow()

void ns3::Txop::UpdateBackoffSlotsNow ( uint32_t  nSlots,
Time  backoffUpdateBound 
)
protected

Update backoff slots that nSlots has passed.

Parameters
nSlotsthe number of slots to decrement
backoffUpdateBoundthe time at which backoff should start

Definition at line 217 of file txop.cc.

References m_backoffSlots, m_backoffStart, NS_LOG_DEBUG, and NS_LOG_FUNCTION.

Referenced by ns3::ChannelAccessManager::DisableEdcaFor(), ns3::ChannelAccessManager::NeedBackoffUponAccess(), and ns3::ChannelAccessManager::RequestAccess().

+ Here is the caller graph for this function:

◆ UpdateFailedCw()

void ns3::Txop::UpdateFailedCw ( void  )

Update the value of the CW variable to take into account a transmission failure.

By default, this triggers a doubling of CW (capped by maxCW).

Definition at line 194 of file txop.cc.

References GetMaxCw(), GetMinCw(), m_cw, m_cwTrace, max, min, and NS_LOG_FUNCTION.

Referenced by ns3::HtFrameExchangeManager::BlockAckTimeout(), ns3::FrameExchangeManager::CtsTimeout(), ns3::HtFrameExchangeManager::CtsTimeout(), ns3::FrameExchangeManager::NormalAckTimeout(), and ns3::FrameExchangeManager::NotifyInternalCollision().

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

Friends And Related Function Documentation

◆ ChannelAccessManager

friend class ChannelAccessManager
friend

< ChannelAccessManager associated class

Definition at line 273 of file txop.h.

◆ MacLowTransmissionListener

friend class MacLowTransmissionListener
friend

allow MacLowTransmissionListener class access

Definition at line 69 of file txop.h.

Member Data Documentation

◆ m_access

◆ m_aifsn

uint8_t ns3::Txop::m_aifsn
protected

the AIFSN

Definition at line 347 of file txop.h.

Referenced by GetAifsn(), ns3::QosTxop::GetAifsn(), and SetAifsn().

◆ m_backoff

uint32_t ns3::Txop::m_backoff
protected

the current backoff

Definition at line 337 of file txop.h.

Referenced by GenerateBackoff().

◆ m_backoffSlots

uint32_t ns3::Txop::m_backoffSlots
protected

the number of backoff slots

Definition at line 339 of file txop.h.

Referenced by GetBackoffSlots(), StartBackoffNow(), and UpdateBackoffSlotsNow().

◆ m_backoffStart

Time ns3::Txop::m_backoffStart
protected

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.

Definition at line 345 of file txop.h.

Referenced by GetBackoffStart(), StartBackoffNow(), and UpdateBackoffSlotsNow().

◆ m_backoffTrace

TracedCallback<uint32_t> ns3::Txop::m_backoffTrace
protected

backoff trace value

Definition at line 350 of file txop.h.

Referenced by GenerateBackoff(), and GetTypeId().

◆ m_channelAccessManager

◆ m_cw

uint32_t ns3::Txop::m_cw
protected

the current contention window

Definition at line 336 of file txop.h.

Referenced by GetCw(), ResetCw(), and UpdateFailedCw().

◆ m_cwMax

uint32_t ns3::Txop::m_cwMax
protected

the maximum contention window

Definition at line 335 of file txop.h.

Referenced by GetMaxCw(), ns3::QosTxop::GetMaxCw(), and SetMaxCw().

◆ m_cwMin

uint32_t ns3::Txop::m_cwMin
protected

the minimum contention window

Definition at line 334 of file txop.h.

Referenced by GetMinCw(), ns3::QosTxop::GetMinCw(), and SetMinCw().

◆ m_cwTrace

TracedValue<uint32_t> ns3::Txop::m_cwTrace
protected

CW trace value.

Definition at line 351 of file txop.h.

Referenced by GetTypeId(), ResetCw(), and UpdateFailedCw().

◆ m_droppedMpduCallback

DroppedMpdu ns3::Txop::m_droppedMpduCallback
protected

the dropped MPDU callback

Definition at line 328 of file txop.h.

Referenced by SetDroppedMpduCallback(), and ns3::QosTxop::SetDroppedMpduCallback().

◆ m_mac

Ptr<RegularWifiMac> ns3::Txop::m_mac
protected

the wifi MAC

Definition at line 331 of file txop.h.

Referenced by DoDispose(), ns3::QosTxop::GetNextMpdu(), ns3::QosTxop::PrepareBlockAckRequest(), and SetWifiMac().

◆ m_queue

◆ m_rng

Ptr<UniformRandomVariable> ns3::Txop::m_rng
protected

the random stream

Definition at line 332 of file txop.h.

Referenced by Txop(), AssignStreams(), DoDispose(), and GenerateBackoff().

◆ m_txMiddle

◆ m_txopLimit

Time ns3::Txop::m_txopLimit
protected

the TXOP limit time

Definition at line 348 of file txop.h.

Referenced by GetTxopLimit(), and SetTxopLimit().


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