Handle packet fragmentation and retransmissions for data and management frames. More...
#include "txop.h"
Inheritance diagram for ns3::Txop:
Collaboration diagram for ns3::Txop:Classes | |
| struct | LinkEntity |
| Structure holding information specific to a single link. More... | |
Public Types | |
| 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. | |
Public Member Functions | |
| 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_t > | GetMaxCws () 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_t > | GetMinCws () 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< Time > | GetTxopLimits () const |
| Return the TXOP limit for each link. | |
| Ptr< WifiMacQueue > | GetWifiMacQueue () 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 | StartBackoffNow (uint32_t nSlots, uint8_t linkId) |
| 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< Object > | GetObject () 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< Object > | GetObject (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. | |
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. | |
| SimpleRefCount & | operator= (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::Object | |
| static TypeId | GetTypeId () |
| Register this type. | |
Static Public Member Functions inherited from ns3::ObjectBase | |
| static TypeId | GetTypeId () |
| Get the type ID. | |
Protected Types | |
| 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 Member Functions | |
| 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. | |
| LinkEntity & | GetLink (uint8_t linkId) const |
| Get a reference to the link associated with the given ID. | |
| uint8_t | GetNLinks () const |
| Get the number of links. | |
| 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. | |
| virtual void | StartAccessIfNeeded (uint8_t linkId) |
| Request access from Txop on the given link if needed. | |
| 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. | |
Protected Attributes | |
| BackoffValueTracedCallback | m_backoffTrace |
| backoff trace value | |
| CwValueTracedCallback | m_cwTrace |
| CW trace value. | |
| DroppedMpdu | m_droppedMpduCallback |
| the dropped MPDU callback | |
| Ptr< WifiMac > | m_mac |
| the wifi MAC | |
| Ptr< WifiMacQueue > | m_queue |
| the wifi MAC queue | |
| Ptr< UniformRandomVariable > | m_rng |
| the random stream | |
| Ptr< MacTxMiddle > | m_txMiddle |
| the MacTxMiddle | |
Private Member Functions | |
| virtual std::unique_ptr< LinkEntity > | CreateLinkEntity () const |
| Create a LinkEntity object. | |
Private Attributes | |
| std::vector< std::unique_ptr< LinkEntity > > | m_links |
| vector of LinkEntity objects | |
Friends | |
| class | ChannelAccessManager |
| < ChannelAccessManager associated class | |
Additional Inherited Members | |
Related Functions inherited from ns3::ObjectBase | |
| static TypeId | GetObjectIid () |
| Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. | |
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::ChannelAccessManager helper class to decide when to send a packet. 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.
ns3::Txop is accessible through the following paths with Config::Set and Config::Connect:
ns3::Ptr<N3ns313UintegerValueE> ns3::Ptr<N3ns313UintegerValueE> ns3::Ptr<N3ns313UintegerValueE> Time +9.22337e+18ns:+9.22337e+18ns ns3::Ptr<N3ns39TimeValueE> Size of this type is 128 bytes (on a 64-bit architecture).
|
protected |
TracedCallback for backoff trace value typedef.
|
protected |
TracedCallback for CW trace value typedef.
| typedef Callback<void, WifiMacDropReason, Ptr<const WifiMpdu> > ns3::Txop::DroppedMpdu |
| ns3::Txop::Txop | ( | Ptr< WifiMacQueue > | queue | ) |
Constructor.
| queue | the wifi MAC queue |
Definition at line 140 of file txop.cc.
References m_rng, and NS_LOG_FUNCTION.
|
override |
Definition at line 147 of file txop.cc.
References NS_LOG_FUNCTION.
| 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.
| stream | first stream index to use. |
Definition at line 530 of file txop.cc.
References m_rng, NS_LOG_FUNCTION, and ns3::RandomVariableStream::SetStream().
Here is the call graph for this function:
|
privatevirtual |
Create a LinkEntity object.
Reimplemented in ns3::QosTxop.
Definition at line 164 of file txop.cc.
Referenced by SetWifiMac().
Here is the caller graph for this function:
|
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 153 of file txop.cc.
References m_links, 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:
|
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 548 of file txop.cc.
References GenerateBackoff(), m_links, NS_LOG_FUNCTION, and ResetCw().
Here is the call graph for this function:
|
protectedvirtual |
Generate a new backoff for the given link now.
| linkId | the ID of the given link |
Definition at line 601 of file txop.cc.
References GetCw(), ns3::UniformRandomVariable::GetInteger(), m_backoffTrace, m_rng, NS_LOG_FUNCTION, and StartBackoffNow().
Referenced by DoInitialize(), NotifyChannelReleased(), and Queue().
Here is the call graph for this function:
Here is the caller graph for this function:
|
virtual |
| linkId | the ID of the given link |
Definition at line 559 of file txop.cc.
References ns3::Txop::LinkEntity::access, and GetLink().
Here is the call graph for this function:| uint8_t ns3::Txop::GetAifsn | ( | ) | const |
Return the number of slots that make up an AIFS.
For 11be multi-link devices, return the number of slots that make up an AIFS on the first link.
Definition at line 446 of file txop.cc.
References GetAifsn().
Referenced by WifiTxopTest::DoRun(), GetAifsn(), GetAifsns(), and GetTypeId().
Here is the call graph for this function:
Here is the caller graph for this function:
|
virtual |
Return the number of slots that make up an AIFS for the given link.
| linkId | the ID of the given link |
Reimplemented in ns3::QosTxop.
Definition at line 463 of file txop.cc.
References ns3::Txop::LinkEntity::aifsn, and GetLink().
Here is the call graph for this function:| std::vector< uint8_t > ns3::Txop::GetAifsns | ( | ) | const |
Return the number of slots that make up an AIFS for each link.
Definition at line 452 of file txop.cc.
References GetAifsn(), and m_links.
Referenced by GetTypeId().
Here is the call graph for this function:
Here is the caller graph for this function:
|
protected |
Return the current number of backoff slots on the given link.
| linkId | the ID of the given link |
Definition at line 308 of file txop.cc.
References ns3::Txop::LinkEntity::backoffSlots, and GetLink().
Here is the call graph for this function:
|
protected |
Return the time when the backoff procedure started on the given link.
| linkId | the ID of the given link |
Definition at line 314 of file txop.cc.
References ns3::Txop::LinkEntity::backoffStart, and GetLink().
Here is the call graph for this function:
|
protected |
Get the current value of the CW variable for the given link.
The initial value is minCw.
| linkId | the ID of the given link |
Definition at line 281 of file txop.cc.
References ns3::Txop::LinkEntity::cw, and GetLink().
Referenced by GenerateBackoff().
Here is the call graph for this function:
Here is the caller graph for this function:
|
protected |
Get a reference to the link associated with the given ID.
| linkId | the given link ID |
Definition at line 170 of file txop.cc.
References m_links, and NS_ASSERT.
Referenced by GetAccessStatus(), GetAifsn(), GetBackoffSlots(), GetBackoffStart(), GetCw(), ns3::QosTxop::GetLink(), GetMaxCw(), GetMinCw(), GetTxopLimit(), NotifyAccessRequested(), NotifyChannelAccessed(), TxopTest< TxopType >::NotifyChannelAccessed(), NotifyChannelReleased(), RequestAccess(), ResetCw(), SetAifsn(), SetMaxCw(), SetMinCw(), SetTxopLimit(), StartAccessIfNeeded(), StartBackoffNow(), UpdateBackoffSlotsNow(), and UpdateFailedCw().
Here is the caller graph for this function:| uint32_t ns3::Txop::GetMaxCw | ( | ) | const |
Return the maximum contention window size.
For 11be multi-link devices, return the maximum contention window size on the first link.
Definition at line 423 of file txop.cc.
References GetMaxCw().
Referenced by GetMaxCw(), GetMaxCws(), GetTypeId(), and UpdateFailedCw().
Here is the call graph for this function:
Here is the caller graph for this function:
|
virtual |
Return the maximum contention window size for the given link.
| linkId | the ID of the given link |
Reimplemented in ns3::QosTxop.
Definition at line 440 of file txop.cc.
References ns3::Txop::LinkEntity::cwMax, and GetLink().
Here is the call graph for this function:| std::vector< uint32_t > ns3::Txop::GetMaxCws | ( | ) | const |
Return the maximum contention window size for each link.
Definition at line 429 of file txop.cc.
References GetMaxCw(), and m_links.
Referenced by GetTypeId().
Here is the call graph for this function:
Here is the caller graph for this function:| uint32_t ns3::Txop::GetMinCw | ( | ) | const |
Return the minimum contention window size.
For 11be multi-link devices, return the minimum contention window size on the first link.
Definition at line 400 of file txop.cc.
References GetMinCw().
Referenced by WifiTxopTest::DoRun(), GetMinCw(), GetMinCws(), GetTypeId(), ResetCw(), and UpdateFailedCw().
Here is the call graph for this function:
Here is the caller graph for this function:
|
virtual |
Return the minimum contention window size for the given link.
| linkId | the ID of the given link |
Reimplemented in ns3::QosTxop.
Definition at line 417 of file txop.cc.
References ns3::Txop::LinkEntity::cwMin, and GetLink().
Here is the call graph for this function:| std::vector< uint32_t > ns3::Txop::GetMinCws | ( | ) | const |
Return the minimum contention window size for each link.
Definition at line 406 of file txop.cc.
References GetMinCw(), and m_links.
Referenced by GetTypeId().
Here is the call graph for this function:
Here is the caller graph for this function:
|
protected |
Get the number of links.
Definition at line 178 of file txop.cc.
References m_links.
Referenced by ns3::QosTxop::GotAddBaResponse(), and ns3::QosTxop::NotifyOriginatorAgreementNoReply().
Here is the caller graph for this function:| Time ns3::Txop::GetTxopLimit | ( | ) | const |
Return the TXOP limit.
Definition at line 469 of file txop.cc.
References GetTxopLimit().
Referenced by TwoLevelAggregationTest::DoRun(), ns3::QosFrameExchangeManager::GetCtsToSelfDurationId(), ns3::QosFrameExchangeManager::GetFrameDurationId(), ns3::HeFrameExchangeManager::GetMuRtsDurationId(), ns3::HtFrameExchangeManager::GetPsduDurationId(), ns3::QosFrameExchangeManager::GetRtsDurationId(), GetTxopLimit(), GetTxopLimits(), GetTypeId(), ns3::QosFrameExchangeManager::SendCfEndIfNeeded(), ns3::QosFrameExchangeManager::StartTransmission(), ns3::QosFrameExchangeManager::TransmissionFailed(), ns3::HtFrameExchangeManager::TransmissionSucceeded(), and ns3::QosFrameExchangeManager::TransmissionSucceeded().
Here is the call graph for this function:
Here is the caller graph for this function:| Time ns3::Txop::GetTxopLimit | ( | uint8_t | linkId | ) | const |
Return the TXOP limit for the given link.
| linkId | the ID of the given link |
Definition at line 486 of file txop.cc.
References GetLink(), and ns3::Txop::LinkEntity::txopLimit.
Here is the call graph for this function:| std::vector< Time > ns3::Txop::GetTxopLimits | ( | ) | const |
Return the TXOP limit for each link.
Definition at line 475 of file txop.cc.
References GetTxopLimit(), and m_links.
Referenced by GetTypeId().
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Get the type ID.
Definition at line 51 of file txop.cc.
References ns3::TypeId::ATTR_GET, ns3::TypeId::ATTR_SET, GetAifsn(), GetAifsns(), GetMaxCw(), GetMaxCws(), GetMinCw(), GetMinCws(), GetTxopLimit(), GetTxopLimits(), GetWifiMacQueue(), m_backoffTrace, m_cwTrace, ns3::MakePointerAccessor(), ns3::MakeTimeAccessor(), ns3::MakeTimeChecker(), ns3::MakeTraceSourceAccessor(), ns3::MakeUintegerAccessor(), ns3::MilliSeconds(), SetAifsn(), SetAifsns(), SetMaxCw(), SetMaxCws(), SetMinCw(), SetMinCws(), ns3::TypeId::SetParent(), SetTxopLimit(), and SetTxopLimits().
Here is the call graph for this function:| Ptr< WifiMacQueue > ns3::Txop::GetWifiMacQueue | ( | ) | const |
Return the packet queue associated with this Txop.
Definition at line 216 of file txop.cc.
References m_queue, and NS_LOG_FUNCTION.
Referenced by AmpduAggregationTest::DoRun(), TwoLevelAggregationTest::DoRun(), HeAggregationTest::DoRunSubTest(), ns3::ApWifiMac::GetTxopQueue(), GetTypeId(), ns3::FrameExchangeManager::ReceivedNormalAck(), ns3::HtFrameExchangeManager::SendAddBaRequest(), ns3::HtFrameExchangeManager::SendDelbaFrame(), and OfdmaAckSequenceTest::Transmit().
Here is the caller graph for this function:
|
virtual |
Check if the Txop has frames to transmit over the given link.
| linkId | the ID of the given link. |
Reimplemented in ns3::QosTxop.
Definition at line 492 of file txop.cc.
References m_queue, and NS_LOG_FUNCTION.
Referenced by ns3::WifiMac::HasFramesToTransmit(), NotifyChannelReleased(), and StartAccessIfNeeded().
Here is the caller graph for this function:
|
virtual |
|
protectedvirtual |
Notify that access request has been received for the given link.
| linkId | the ID of the given link |
Definition at line 565 of file txop.cc.
References ns3::Txop::LinkEntity::access, GetLink(), NS_LOG_FUNCTION, and REQUESTED.
Here is the call graph for this function:Called by the FrameExchangeManager to notify that channel access has been granted on the given link for the given amount of time.
| linkId | the ID of the given link |
| txopDuration | the duration of the TXOP gained (zero for DCF) |
Reimplemented in ns3::QosTxop.
Definition at line 572 of file txop.cc.
References ns3::Txop::LinkEntity::access, GetLink(), GRANTED, and NS_LOG_FUNCTION.
Referenced by ns3::QosTxop::NotifyChannelAccessed(), and ns3::FrameExchangeManager::StartTransmission().
Here is the call graph for this function:
Here is the caller graph for this function:
|
virtual |
Called by the FrameExchangeManager to notify the completion of the transmissions.
This method generates a new backoff and restarts access if needed.
| linkId | the ID of the link the FrameExchangeManager is operating on |
Reimplemented in ns3::QosTxop.
Definition at line 579 of file txop.cc.
References ns3::Txop::LinkEntity::access, GenerateBackoff(), GetLink(), HasFramesToTransmit(), NOT_REQUESTED, NS_LOG_FUNCTION, RequestAccess(), and ns3::Simulator::ScheduleNow().
Referenced by ns3::QosTxop::NotifyChannelReleased().
Here is the call graph for this function:
Here is the caller graph for this function:
|
virtual |
When off operation occurs, the queue gets cleaned up.
Definition at line 616 of file txop.cc.
References m_queue, and NS_LOG_FUNCTION.
|
virtual |
When on operation occurs, channel access will be started.
Definition at line 630 of file txop.cc.
References m_links, NS_LOG_FUNCTION, and StartAccessIfNeeded().
Here is the call graph for this function:
|
virtual |
Notify that the given link switched to sleep mode.
| linkId | the ID of the given link |
Definition at line 610 of file txop.cc.
References NS_LOG_FUNCTION.
|
virtual |
When wake up operation occurs on a link, channel access on that link will be restarted.
| linkId | the ID of the link |
Definition at line 623 of file txop.cc.
References NS_LOG_FUNCTION, and StartAccessIfNeeded().
Here is the call graph for this function:
|
virtual |
| packet | packet to send. |
| hdr | header of packet to send. |
Store the packet in the internal queue until it can be sent safely.
Definition at line 501 of file txop.cc.
References NS_LOG_FUNCTION.
Referenced by ns3::AdhocWifiMac::Enqueue(), ns3::StaWifiMac::Enqueue(), ns3::MeshWifiInterfaceMac::ForwardDown(), ns3::ApWifiMac::ForwardDown(), ns3::HtFrameExchangeManager::SendAddBaResponse(), ns3::StaWifiMac::SendAssociationRequest(), ns3::ApWifiMac::SendAssocResp(), ns3::MeshWifiInterfaceMac::SendBeacon(), ns3::MeshWifiInterfaceMac::SendManagementFrame(), ns3::ApWifiMac::SendOneBeacon(), ns3::StaWifiMac::SendProbeRequest(), ns3::ApWifiMac::SendProbeResp(), and ns3::StaWifiMac::SetPowerSaveMode().
Here is the caller graph for this function:| mpdu | the given MPDU |
Store the given MPDU in the internal queue until it can be sent safely.
Definition at line 511 of file txop.cc.
References GenerateBackoff(), ns3::WifiMac::GetChannelAccessManager(), ns3::WifiMac::GetMacQueueScheduler(), m_mac, m_queue, ns3::ChannelAccessManager::NeedBackoffUponAccess(), NS_LOG_FUNCTION, and StartAccessIfNeeded().
Here is the call graph for this function:
|
protected |
Request access to the ChannelAccessManager associated with the given link.
| linkId | the ID of the given link |
Definition at line 591 of file txop.cc.
References ns3::WifiMac::GetChannelAccessManager(), GetLink(), m_mac, NOT_REQUESTED, NS_LOG_FUNCTION, and ns3::ChannelAccessManager::RequestAccess().
Referenced by NotifyChannelReleased().
Here is the call graph for this function:
Here is the caller graph for this function:| void ns3::Txop::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).
By default, this resets the CW variable to minCW.
| linkId | the ID of the given link |
Definition at line 287 of file txop.cc.
References GetLink(), GetMinCw(), m_cwTrace, and NS_LOG_FUNCTION.
Referenced by ns3::HtFrameExchangeManager::BlockAckTimeout(), ns3::HeFrameExchangeManager::CtsAfterMuRtsTimeout(), ns3::FrameExchangeManager::DoCtsTimeout(), DoInitialize(), ns3::FrameExchangeManager::NormalAckTimeout(), 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:| void ns3::Txop::SetAifsn | ( | uint8_t | aifsn | ) |
Set the number of slots that make up an AIFS.
For 11be multi-link devices, set the number of slots that make up an AIFS on the first link.
| aifsn | the number of slots that make up an AIFS. |
Definition at line 349 of file txop.cc.
References SetAifsn().
Referenced by ns3::MeshWifiInterfaceMac::ConfigureContentionWindow(), GetTypeId(), SetAifsn(), and SetAifsns().
Here is the call graph for this function:
Here is the caller graph for this function:| void ns3::Txop::SetAifsn | ( | uint8_t | aifsn, |
| uint8_t | linkId | ||
| ) |
Set the number of slots that make up an AIFS for the given link.
| aifsn | the number of slots that make up an AIFS. |
| linkId | the ID of the given link |
Definition at line 365 of file txop.cc.
References ns3::Txop::LinkEntity::aifsn, GetLink(), and NS_LOG_FUNCTION.
Here is the call graph for this function:| void ns3::Txop::SetAifsns | ( | std::vector< uint8_t > | aifsns | ) |
Set the number of slots that make up an AIFS for each link.
Note that the size of aifsns must match the number of links.
| aifsns | the number of slots that make up an AIFS for each link. |
Definition at line 355 of file txop.cc.
References m_links, NS_ABORT_IF, and SetAifsn().
Referenced by ns3::ApWifiMac::ConfigureStandard(), and GetTypeId().
Here is the call graph for this function:
Here is the caller graph for this function:
|
virtual |
| callback | the callback to invoke when an MPDU is dropped |
Reimplemented in ns3::QosTxop.
Definition at line 205 of file txop.cc.
References ns3::Callback< R, UArgs >::Bind(), m_droppedMpduCallback, m_queue, NS_LOG_FUNCTION, ns3::WIFI_MAC_DROP_EXPIRED_LIFETIME, and ns3::WIFI_MAC_DROP_FAILED_ENQUEUE.
Referenced by ns3::QosTxop::SetDroppedMpduCallback(), and ns3::WifiMac::SetQosSupported().
Here is the call graph for this function:
Here is the caller graph for this function:| void ns3::Txop::SetMaxCw | ( | uint32_t | maxCw | ) |
Set the maximum contention window size.
For 11be multi-link devices, set the maximum contention window size on the first link.
| maxCw | the maximum contention window size. |
Definition at line 252 of file txop.cc.
References SetMaxCw().
Referenced by ns3::MeshWifiInterfaceMac::ConfigureContentionWindow(), GetTypeId(), SetMaxCw(), and SetMaxCws().
Here is the call graph for this function:
Here is the caller graph for this function:| void ns3::Txop::SetMaxCw | ( | uint32_t | maxCw, |
| uint8_t | linkId | ||
| ) |
Set the maximum contention window size for the given link.
| maxCw | the maximum contention window size. |
| linkId | the ID of the given link |
Definition at line 268 of file txop.cc.
References GetLink(), NS_LOG_FUNCTION, and ResetCw().
Here is the call graph for this function:| void ns3::Txop::SetMaxCws | ( | std::vector< uint32_t > | maxCws | ) |
Set the maximum contention window size for each link.
Note that the size of maxCws must match the number of links.
| maxCws | the maximum contention window size values. |
Definition at line 258 of file txop.cc.
References m_links, NS_ABORT_IF, and SetMaxCw().
Referenced by ns3::ApWifiMac::ConfigureStandard(), and GetTypeId().
Here is the call graph for this function:
Here is the caller graph for this function:| void ns3::Txop::SetMinCw | ( | uint32_t | minCw | ) |
Set the minimum contention window size.
For 11be multi-link devices, set the minimum contention window size on the first link.
| minCw | the minimum contention window size. |
Definition at line 223 of file txop.cc.
References SetMinCw().
Referenced by ns3::MeshWifiInterfaceMac::ConfigureContentionWindow(), GetTypeId(), SetMinCw(), and SetMinCws().
Here is the call graph for this function:
Here is the caller graph for this function:| void ns3::Txop::SetMinCw | ( | uint32_t | minCw, |
| uint8_t | linkId | ||
| ) |
Set the minimum contention window size for the given link.
| minCw | the minimum contention window size. |
| linkId | the ID of the given link |
Definition at line 239 of file txop.cc.
References GetLink(), NS_LOG_FUNCTION, and ResetCw().
Here is the call graph for this function:| void ns3::Txop::SetMinCws | ( | std::vector< uint32_t > | minCws | ) |
Set the minimum contention window size for each link.
Note that the size of minCws must match the number of links.
| minCws | the minimum contention window size values. |
Definition at line 229 of file txop.cc.
References m_links, NS_ABORT_IF, and SetMinCw().
Referenced by ns3::ApWifiMac::ConfigureStandard(), and GetTypeId().
Here is the call graph for this function:
Here is the caller graph for this function:| void ns3::Txop::SetTxMiddle | ( | const Ptr< MacTxMiddle > | txMiddle | ) |
Set MacTxMiddle this Txop is associated to.
| txMiddle | MacTxMiddle to associate. |
Definition at line 184 of file txop.cc.
References m_txMiddle, and NS_LOG_FUNCTION.
Referenced by ns3::ApWifiMac::ApWifiMac(), ns3::MeshWifiInterfaceMac::ConfigureContentionWindow(), and ns3::WifiMac::SetQosSupported().
Here is the caller graph for this function:| void ns3::Txop::SetTxopLimit | ( | Time | txopLimit | ) |
Set the TXOP limit.
| txopLimit | the TXOP limit. Value zero corresponds to default Txop. |
Definition at line 372 of file txop.cc.
References SetTxopLimit().
Referenced by GetTypeId(), SetTxopLimit(), and SetTxopLimits().
Here is the call graph for this function:
Here is the caller graph for this function:| void ns3::Txop::SetTxopLimit | ( | Time | txopLimit, |
| uint8_t | linkId | ||
| ) |
Set the TXOP limit for the given link.
| txopLimit | the TXOP limit. Value zero corresponds to default Txop. |
| linkId | the ID of the given link |
Definition at line 391 of file txop.cc.
References GetLink(), ns3::Time::GetMicroSeconds(), NS_ASSERT_MSG, NS_LOG_FUNCTION, and ns3::Txop::LinkEntity::txopLimit.
Here is the call graph for this function:| void ns3::Txop::SetTxopLimits | ( | const std::vector< Time > & | txopLimits | ) |
Set the TXOP limit for each link.
Note that the size of txopLimits must match the number of links.
| txopLimits | the TXOP limit for each link. |
Definition at line 378 of file txop.cc.
References m_links, NS_ABORT_MSG_IF, and SetTxopLimit().
Referenced by EmlsrDlTxopTest::DoSetup(), and GetTypeId().
Here is the call graph for this function:
Here is the caller graph for this function:Set the wifi MAC this Txop is associated to.
| mac | associated wifi MAC |
Definition at line 191 of file txop.cc.
References CreateLinkEntity(), ns3::WifiMac::GetNLinks(), m_links, m_mac, and NS_LOG_FUNCTION.
Referenced by ns3::MeshWifiInterfaceMac::ConfigureContentionWindow(), ns3::WifiMac::ConfigureStandard(), and ns3::ApWifiMac::ConfigureStandard().
Here is the call graph for this function:
Here is the caller graph for this function:
|
protectedvirtual |
Request access from Txop on the given link if needed.
| linkId | the ID of the given link |
Definition at line 538 of file txop.cc.
References ns3::WifiMac::GetChannelAccessManager(), GetLink(), HasFramesToTransmit(), m_mac, NOT_REQUESTED, NS_LOG_FUNCTION, and ns3::ChannelAccessManager::RequestAccess().
Referenced by ns3::QosTxop::GotAddBaResponse(), NotifyOn(), ns3::QosTxop::NotifyOriginatorAgreementNoReply(), NotifyWakeUp(), and Queue().
Here is the call graph for this function:
Here is the caller graph for this function:| void ns3::Txop::StartBackoffNow | ( | uint32_t | nSlots, |
| uint8_t | linkId | ||
| ) |
| nSlots | the number of slots of the backoff. |
| linkId | the ID of the given link |
Start a backoff for the given link by initializing the backoff counter to the number of slots specified.
Definition at line 331 of file txop.cc.
References GetLink(), 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:
|
protected |
Update backoff slots for the given link that nSlots has passed.
| nSlots | the number of slots to decrement |
| backoffUpdateBound | the time at which backoff should start |
| linkId | the ID of the given link |
Definition at line 320 of file txop.cc.
References GetLink(), NS_LOG_DEBUG, and NS_LOG_FUNCTION.
Here is the call graph for this function:| void ns3::Txop::UpdateFailedCw | ( | uint8_t | linkId | ) |
Update the value of the CW variable for the given link to take into account a transmission failure.
By default, this triggers a doubling of CW (capped by maxCW).
| linkId | the ID of the given link |
Definition at line 296 of file txop.cc.
References GetLink(), GetMaxCw(), GetMinCw(), m_cwTrace, and NS_LOG_FUNCTION.
Referenced by ns3::HtFrameExchangeManager::BlockAckTimeout(), ns3::HeFrameExchangeManager::CtsAfterMuRtsTimeout(), ns3::FrameExchangeManager::DoCtsTimeout(), and ns3::FrameExchangeManager::NormalAckTimeout().
Here is the call graph for this function:
Here is the caller graph for this function:
|
friend |
< ChannelAccessManager associated class
|
protected |
backoff trace value
Definition at line 525 of file txop.h.
Referenced by GenerateBackoff(), and GetTypeId().
|
protected |
CW trace value.
Definition at line 526 of file txop.h.
Referenced by GetTypeId(), ResetCw(), and UpdateFailedCw().
|
protected |
the dropped MPDU callback
Definition at line 514 of file txop.h.
Referenced by ns3::QosTxop::PeekNextMpdu(), and SetDroppedMpduCallback().
|
private |
vector of LinkEntity objects
Definition at line 536 of file txop.h.
Referenced by DoDispose(), DoInitialize(), GetAifsns(), GetLink(), GetMaxCws(), GetMinCws(), GetNLinks(), GetTxopLimits(), NotifyOn(), SetAifsns(), SetMaxCws(), SetMinCws(), SetTxopLimits(), and SetWifiMac().
the wifi MAC
Definition at line 517 of file txop.h.
Referenced by ns3::QosTxop::QosTxop(), ns3::QosTxop::CompleteMpduTx(), DoDispose(), ns3::QosTxop::GetNextMpdu(), ns3::QosTxop::IsQosOldPacket(), ns3::QosTxop::PeekNextMpdu(), ns3::QosTxop::PrepareBlockAckRequest(), Queue(), RequestAccess(), SetWifiMac(), StartAccessIfNeeded(), and ns3::QosTxop::StartMuEdcaTimerNow().
|
protected |
the wifi MAC queue
Definition at line 515 of file txop.h.
Referenced by ns3::QosTxop::QosTxop(), ns3::QosTxop::AssignSequenceNumber(), ns3::QosTxop::CompleteMpduTx(), DoDispose(), ns3::QosTxop::GetQosQueueSize(), GetWifiMacQueue(), ns3::QosTxop::GotAddBaResponse(), HasFramesToTransmit(), ns3::QosTxop::HasFramesToTransmit(), NotifyOff(), ns3::QosTxop::PeekNextMpdu(), Queue(), and SetDroppedMpduCallback().
|
protected |
the random stream
Definition at line 518 of file txop.h.
Referenced by Txop(), AssignStreams(), DoDispose(), and GenerateBackoff().
|
protected |
the MacTxMiddle
Definition at line 516 of file txop.h.
Referenced by ns3::QosTxop::AssignSequenceNumber(), DoDispose(), ns3::QosTxop::GetNextSequenceNumberFor(), ns3::QosTxop::GotAddBaResponse(), ns3::QosTxop::PeekNextMpdu(), ns3::QosTxop::PeekNextSequenceNumberFor(), and SetTxMiddle().