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"
Public Member Functions | |
QosTxop (AcIndex ac=AC_UNDEF) | |
Constructor. More... | |
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... | |
bool | EdcaDisabled (void) const |
Return true if the EDCA is disabled (the MU EDCA Timer is running and the MU AIFSN is zero), false otherwise. More... | |
AcIndex | GetAccessCategory (void) const |
Get the access category of this object. More... | |
Time | GetAddBaResponseTimeout (void) const |
Get the timeout for ADDBA response. More... | |
uint8_t | GetAifsn (void) const override |
Return the number of slots that make up an AIFS according to the EDCA Parameter Set or the MU EDCA Parameter Set, depending on whether the MU EDCA Timer is running or not. More... | |
bool | GetBaAgreementEstablished (Mac48Address address, uint8_t tid) const |
uint16_t | GetBaBufferSize (Mac48Address address, uint8_t tid) const |
Ptr< BlockAckManager > | GetBaManager (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... | |
uint32_t | GetMaxCw (void) const override |
Return the maximum contention window size from the EDCA Parameter Set or the MU EDCA Parameter Set, depending on whether the MU EDCA Timer is running or not. More... | |
uint32_t | GetMinCw (void) const override |
Return the minimum contention window size from the EDCA Parameter Set or the MU EDCA Parameter Set, depending on whether the MU EDCA Timer is running or not. More... | |
Ptr< WifiMacQueueItem > | GetNextMpdu (Ptr< const WifiMacQueueItem > peekedItem, WifiTxParameters &txParams, Time availableTime, bool initialFrame) |
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... | |
uint8_t | GetQosQueueSize (uint8_t tid, Mac48Address receiver) const |
Get the value for the Queue Size subfield of the QoS Control field of a QoS data frame of the given TID and addressed to the given receiver. 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... | |
bool | MuEdcaTimerRunning (void) const |
Return true if the MU EDCA Timer is running, false otherwise. 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... | |
Ptr< const WifiMacQueueItem > | PeekNextMpdu (uint8_t tid=8, Mac48Address recipient=Mac48Address::GetBroadcast(), Ptr< const WifiMacQueueItem > item=nullptr) |
Peek the next frame to transmit to the given receiver and of the given TID 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 WifiMacQueueItem > | PrepareBlockAckRequest (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 | 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 | SetMuAifsn (uint8_t aifsn) |
Set the number of slots that make up an AIFS while the MU EDCA Timer is running. More... | |
void | SetMuCwMax (uint16_t cwMax) |
Set the maximum contention window size to use while the MU EDCA Timer is running. More... | |
void | SetMuCwMin (uint16_t cwMin) |
Set the minimum contention window size to use while the MU EDCA Timer is running. More... | |
void | SetMuEdcaTimer (Time timer) |
Set the MU EDCA Timer. More... | |
void | SetQosFrameExchangeManager (const Ptr< QosFrameExchangeManager > qosFem) |
Set the Frame Exchange Manager associated with this QoS STA. More... | |
void | StartMuEdcaTimerNow (void) |
Start the MU EDCA Timer. 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 () | |
Txop (Ptr< WifiMacQueue > queue) | |
Constructor. More... | |
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 |
Time | GetTxopLimit (void) const |
Return the TXOP limit. More... | |
Ptr< WifiMacQueue > | GetWifiMacQueue () const |
Return the packet queue associated with this Txop. 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... | |
virtual void | SetWifiMac (const Ptr< WifiMac > 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< Object > | GetObject () 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< Object > | GetObject (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[[maybe_unused]]) | |
Copy constructor. More... | |
uint32_t | GetReferenceCount (void) const |
Get the reference count of the object. More... | |
SimpleRefCount & | operator= ([[maybe_unused]] 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< BlockAckManager > | m_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_failedAddBaTimeout |
timeout after failed BA agreement More... | |
uint8_t | m_muAifsn |
the MU AIFSN More... | |
uint32_t | m_muCwMax |
the MU CW maximum More... | |
uint32_t | m_muCwMin |
the MU CW minimum More... | |
Time | m_muEdcaTimer |
the MU EDCA Timer More... | |
Time | m_muEdcaTimerStartTime |
last start time of the MU EDCA Timer More... | |
Ptr< QosBlockedDestinations > | m_qosBlockedDestinations |
the QoS blocked destinations More... | |
Ptr< QosFrameExchangeManager > | m_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, Time > | m_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< ChannelAccessManager > | m_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< WifiMac > | m_mac |
the wifi MAC More... | |
Ptr< WifiMacQueue > | m_queue |
the wifi MAC queue More... | |
Ptr< UniformRandomVariable > | m_rng |
the random stream More... | |
Ptr< MacTxMiddle > | m_txMiddle |
the MacTxMiddle More... | |
Time | m_txopLimit |
the TXOP limit time More... | |
Related Functions inherited from ns3::ObjectBase | |
static TypeId | GetObjectIid (void) |
Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. More... | |
Handle packet fragmentation and retransmissions for QoS data frames as well as MSDU aggregation (A-MSDU) and block ack sessions, for a given access class.
This class implements the packet fragmentation and retransmission policy for QoS data frames. It uses the ns3::ChannelAccessManager helper class to decide when to send a packet. Packets are stored in a ns3::WifiMacQueue until they can be sent.
This queue contains packets for a particular access class. Possibles access classes are:
This class also implements block ack sessions and MSDU aggregation (A-MSDU).
The fragmentation policy currently implemented uses a simple threshold: any packet bigger than this threshold is fragmented in fragments whose size is smaller than the threshold.
The retransmission policy is also very simple: every packet is retransmitted until it is either successfully transmitted or it has been retransmitted up until the SSRC or SLRC thresholds.
The RTS/CTS policy is similar to the fragmentation policy: when a packet is bigger than a threshold, the RTS/CTS protocol is used.
ns3::QosTxop is accessible through the following paths with Config::Set and Config::Connect:
Size of this type is 312 bytes (on a 64-bit architecture).
Definition at line 71 of file qos-txop.h.
Constructor.
ac | the Access Category |
Definition at line 93 of file qos-txop.cc.
References ns3::QosBlockedDestinations::Block(), m_baManager, m_qosBlockedDestinations, ns3::Txop::m_queue, ns3::MakeCallback(), ns3::BlockAckManager::NotifyDiscardedMpdu(), NS_LOG_FUNCTION, and ns3::QosBlockedDestinations::Unblock().
|
virtual |
Definition at line 113 of file qos-txop.cc.
References NS_LOG_FUNCTION.
void ns3::QosTxop::AddBaResponseTimeout | ( | Mac48Address | recipient, |
uint8_t | tid | ||
) |
Callback when ADDBA response is not received after timeout.
recipient | MAC address of recipient |
tid | traffic ID |
Definition at line 681 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().
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.
mpdu | the MPDU |
Definition at line 509 of file qos-txop.cc.
References ns3::Txop::m_txMiddle, and NS_LOG_FUNCTION.
Referenced by GetNextMpdu().
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).
mpdu | received MPDU. |
Definition at line 634 of file qos-txop.cc.
References GetBaAgreementEstablished(), m_baManager, and NS_ASSERT.
Referenced by ns3::HtFrameExchangeManager::NotifyTxToEdca().
|
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 119 of file qos-txop.cc.
References ns3::Txop::DoDispose(), m_baManager, m_qosBlockedDestinations, m_qosFem, and NS_LOG_FUNCTION.
|
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 673 of file qos-txop.cc.
References ns3::Txop::GenerateBackoff(), NS_LOG_FUNCTION, and ns3::Txop::ResetCw().
bool ns3::QosTxop::EdcaDisabled | ( | void | ) | const |
Return true if the EDCA is disabled (the MU EDCA Timer is running and the MU AIFSN is zero), false otherwise.
Definition at line 205 of file qos-txop.cc.
References m_muAifsn, and MuEdcaTimerRunning().
Referenced by GetMaxCw(), GetMinCw(), and StartMuEdcaTimerNow().
AcIndex ns3::QosTxop::GetAccessCategory | ( | void | ) | const |
Get the access category of this object.
Definition at line 745 of file qos-txop.cc.
References m_ac.
Referenced by ns3::RrMultiUserScheduler::TrySendingBasicTf(), and ns3::RrMultiUserScheduler::TrySendingDlMuPpdu().
Time ns3::QosTxop::GetAddBaResponseTimeout | ( | void | ) | const |
Get the timeout for ADDBA response.
Definition at line 720 of file qos-txop.cc.
References m_addBaResponseTimeout.
Referenced by GetTypeId(), and ns3::HtFrameExchangeManager::NotifyReceivedNormalAck().
|
overridevirtual |
Return the number of slots that make up an AIFS according to the EDCA Parameter Set or the MU EDCA Parameter Set, depending on whether the MU EDCA Timer is running or not.
Reimplemented from ns3::Txop.
Definition at line 233 of file qos-txop.cc.
References ns3::Txop::m_aifsn, m_muAifsn, and MuEdcaTimerRunning().
Referenced by OfdmaAckSequenceTest::DoRun(), and ns3::ApWifiMac::GetEdcaParameterSet().
bool ns3::QosTxop::GetBaAgreementEstablished | ( | Mac48Address | address, |
uint8_t | tid | ||
) | const |
address | recipient address of the peer station |
tid | traffic ID. |
Checks if a block ack agreement is established with station addressed by recipient for TID tid.
Definition at line 249 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(), ns3::HtFrameExchangeManager::NotifyReceivedNormalAck(), PeekNextMpdu(), ns3::HeFrameExchangeManager::ReceiveBasicTrigger(), ns3::HtFrameExchangeManager::ReleaseSequenceNumber(), ns3::HtFrameExchangeManager::RetransmitMpduAfterMissedAck(), and ns3::HeFrameExchangeManager::StartFrameExchange().
uint16_t ns3::QosTxop::GetBaBufferSize | ( | Mac48Address | address, |
uint8_t | tid | ||
) | const |
address | recipient address of the peer station |
tid | traffic ID. |
Returns the negotiated buffer size during ADDBA handshake with station addressed by recipient for TID tid.
Definition at line 255 of file qos-txop.cc.
References first::address, and m_baManager.
Referenced by ns3::MpduAggregator::GetNextAmpdu(), GetNextMpdu(), ns3::WifiDefaultAckManager::IsResponseNeeded(), and PeekNextMpdu().
Ptr< BlockAckManager > ns3::QosTxop::GetBaManager | ( | void | ) |
Get the Block Ack Manager associated with this QosTxop.
Definition at line 243 of file qos-txop.cc.
References m_baManager.
Referenced by AmpduAggregationTest::DoRun(), TwoLevelAggregationTest::DoRun(), HeAggregationTest::DoRunSubTest(), ns3::WifiDefaultAckManager::GetAckInfoIfAggregatedMuBar(), ns3::WifiDefaultAckManager::GetAckInfoIfBarBaSequence(), ns3::WifiDefaultAckManager::GetAckInfoIfTfMuBar(), ns3::WifiDefaultAckManager::IsResponseNeeded(), ns3::HtFrameExchangeManager::NeedSetupBlockAck(), ns3::HtFrameExchangeManager::NotifyReceivedNormalAck(), ns3::WifiMac::Receive(), ns3::HeFrameExchangeManager::ReceiveBasicTrigger(), ns3::HtFrameExchangeManager::RetransmitMpduAfterMissedAck(), ns3::HtFrameExchangeManager::SendMpduFromBaManager(), ns3::HeFrameExchangeManager::SendMpduFromBaManager(), ns3::WifiMac::SetupEdcaQueue(), ns3::HeFrameExchangeManager::StartFrameExchange(), and ns3::HtFrameExchangeManager::TransmissionSucceeded().
uint16_t ns3::QosTxop::GetBaStartingSequence | ( | Mac48Address | address, |
uint8_t | tid | ||
) | const |
address | recipient address of the peer station |
tid | traffic ID. |
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 261 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::ReleaseSequenceNumber().
uint16_t ns3::QosTxop::GetBlockAckInactivityTimeout | ( | void | ) | const |
Get the BlockAck inactivity timeout.
Definition at line 667 of file qos-txop.cc.
References m_blockAckInactivityTimeout.
Referenced by ns3::HtFrameExchangeManager::StartFrameExchange().
BlockAckReqType ns3::QosTxop::GetBlockAckReqType | ( | Mac48Address | recipient, |
uint8_t | tid | ||
) | const |
recipient | MAC address of recipient |
tid | traffic ID |
This function returns the type of Block Ack Requests sent to the recipient.
Definition at line 521 of file qos-txop.cc.
References m_baManager.
Referenced by ns3::WifiDefaultAckManager::GetAckInfoIfAggregatedMuBar(), ns3::WifiDefaultAckManager::GetAckInfoIfBarBaSequence(), and ns3::WifiDefaultAckManager::GetAckInfoIfTfMuBar().
uint8_t ns3::QosTxop::GetBlockAckThreshold | ( | void | ) | const |
Return the current threshold for block ack mechanism.
Definition at line 660 of file qos-txop.cc.
References m_blockAckThreshold, and NS_LOG_FUNCTION.
Referenced by ns3::HtFrameExchangeManager::NeedSetupBlockAck().
BlockAckType ns3::QosTxop::GetBlockAckType | ( | Mac48Address | recipient, |
uint8_t | tid | ||
) | const |
recipient | MAC address |
tid | traffic ID |
This function returns the type of Block Acks sent by the recipient.
Definition at line 527 of file qos-txop.cc.
References m_baManager.
Referenced by ns3::WifiDefaultAckManager::GetAckInfoIfAggregatedMuBar(), ns3::WifiDefaultAckManager::GetAckInfoIfBarBaSequence(), and ns3::WifiDefaultAckManager::GetAckInfoIfTfMuBar().
Time ns3::QosTxop::GetFailedAddBaTimeout | ( | void | ) | const |
Get the timeout for failed BA agreement.
Definition at line 733 of file qos-txop.cc.
References m_failedAddBaTimeout.
Referenced by GetTypeId(), and ns3::HtFrameExchangeManager::NotifyPacketDiscarded().
|
overridevirtual |
Return the maximum contention window size from the EDCA Parameter Set or the MU EDCA Parameter Set, depending on whether the MU EDCA Timer is running or not.
Reimplemented from ns3::Txop.
Definition at line 222 of file qos-txop.cc.
References EdcaDisabled(), ns3::Txop::m_cwMax, m_muCwMax, MuEdcaTimerRunning(), and NS_ASSERT.
Referenced by ns3::ApWifiMac::GetEdcaParameterSet().
|
overridevirtual |
Return the minimum contention window size from the EDCA Parameter Set or the MU EDCA Parameter Set, depending on whether the MU EDCA Timer is running or not.
Reimplemented from ns3::Txop.
Definition at line 211 of file qos-txop.cc.
References EdcaDisabled(), ns3::Txop::m_cwMin, m_muCwMin, MuEdcaTimerRunning(), and NS_ASSERT.
Referenced by ns3::ApWifiMac::GetEdcaParameterSet().
Ptr< WifiMacQueueItem > ns3::QosTxop::GetNextMpdu | ( | Ptr< const WifiMacQueueItem > | peekedItem, |
WifiTxParameters & | txParams, | ||
Time | availableTime, | ||
bool | initialFrame | ||
) |
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.
peekedItem | the peeked frame. |
txParams | the TX parameters for the frame |
availableTime | the time available for the transmission of the frame (including protection and acknowledgment); a value of Time::Min() indicates no time constraint |
initialFrame | true if the frame is the initial PPDU of a TXOP |
Definition at line 443 of file qos-txop.cc.
References AssignSequenceNumber(), GetBaAgreementEstablished(), GetBaBufferSize(), GetBaStartingSequence(), ns3::WifiTxParameters::GetSize(), ns3::Mac48Address::IsBroadcast(), ns3::IsInWindow(), ns3::Txop::m_mac, m_qosFem, ns3::Time::Min(), NS_ASSERT, NS_LOG_DEBUG, and NS_LOG_FUNCTION.
Referenced by AmpduAggregationTest::DoRun(), TwoLevelAggregationTest::DoRun(), HeAggregationTest::DoRunSubTest(), ns3::MpduAggregator::GetNextAmpdu(), ns3::HeFrameExchangeManager::ReceiveBasicTrigger(), ns3::HtFrameExchangeManager::SendDataFrame(), and ns3::QosFrameExchangeManager::StartFrameExchange().
uint16_t ns3::QosTxop::GetNextSequenceNumberFor | ( | const WifiMacHeader * | hdr | ) |
Return the next sequence number for the given header.
hdr | Wi-Fi header. |
Definition at line 319 of file qos-txop.cc.
References ns3::Txop::m_txMiddle.
uint8_t ns3::QosTxop::GetQosQueueSize | ( | uint8_t | tid, |
Mac48Address | receiver | ||
) | const |
Get the value for the Queue Size subfield of the QoS Control field of a QoS data frame of the given TID and addressed to the given receiver.
tid | the Traffic ID |
receiver | the address of the given receiver |
Definition at line 133 of file qos-txop.cc.
References ns3::Txop::m_queue, min, and NS_LOG_DEBUG.
Referenced by ns3::HtFrameExchangeManager::NotifyTxToEdca().
|
virtual |
Return the remaining duration in the current TXOP.
Definition at line 565 of file qos-txop.cc.
References ns3::Time::IsStrictlyNegative(), ns3::Time::IsStrictlyPositive(), m_startTxop, m_txopDuration, ns3::Simulator::Now(), NS_ASSERT, NS_LOG_FUNCTION, and ns3::Seconds().
Referenced by ns3::QosFrameExchangeManager::GetCtsToSelfDurationId(), ns3::QosFrameExchangeManager::GetFrameDurationId(), ns3::HtFrameExchangeManager::GetPsduDurationId(), ns3::QosFrameExchangeManager::GetRtsDurationId(), ns3::WifiDefaultAckManager::IsResponseNeeded(), ns3::QosFrameExchangeManager::SendCfEndIfNeeded(), ns3::QosFrameExchangeManager::StartTransmission(), and ns3::QosFrameExchangeManager::TransmissionSucceeded().
|
static |
Get the type ID.
Definition at line 53 of file qos-txop.cc.
References GetAddBaResponseTimeout(), GetFailedAddBaTimeout(), m_baManager, m_txopTrace, m_useExplicitBarAfterMissedBlockAck, ns3::MakeBooleanAccessor(), ns3::MakeBooleanChecker(), ns3::MakePointerAccessor(), ns3::MakeTimeAccessor(), ns3::MakeTimeChecker(), ns3::MakeTraceSourceAccessor(), ns3::MilliSeconds(), SetAddBaResponseTimeout(), SetFailedAddBaTimeout(), and ns3::TypeId::SetParent().
void ns3::QosTxop::GotAddBaResponse | ( | const MgtAddBaResponseHeader * | respHdr, |
Mac48Address | recipient | ||
) |
Event handler when an ADDBA response is received.
respHdr | ADDBA response header. |
recipient | address of the recipient. |
Definition at line 591 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.
Referenced by ns3::WifiMac::Receive().
void ns3::QosTxop::GotDelBaFrame | ( | const MgtDelBaHeader * | delBaHdr, |
Mac48Address | recipient | ||
) |
Event handler when a DELBA frame is received.
delBaHdr | DELBA header. |
recipient | address of the recipient. |
Definition at line 626 of file qos-txop.cc.
References ns3::MgtDelBaHeader::GetTid(), m_baManager, NS_LOG_DEBUG, and NS_LOG_FUNCTION.
Referenced by ns3::WifiMac::Receive().
|
overridevirtual |
Check if the Txop has frames to transmit.
Reimplemented from ns3::Txop.
Definition at line 301 of file qos-txop.cc.
References m_baManager, m_qosBlockedDestinations, ns3::Txop::m_queue, and NS_LOG_FUNCTION.
Referenced by AddBaResponseTimeout(), GotAddBaResponse(), and PushFront().
|
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.
mpdu | the given MPDU |
Definition at line 331 of file qos-txop.cc.
References GetBaAgreementEstablished(), GetBaStartingSequence(), NS_LOG_FUNCTION, and ns3::QosUtilsIsOldPacket().
Referenced by PeekNextMpdu().
|
overridevirtual |
Check for QoS TXOP.
Reimplemented from ns3::Txop.
Definition at line 739 of file qos-txop.cc.
|
virtual |
Return true if a TXOP has started.
Definition at line 544 of file qos-txop.cc.
References ns3::Time::IsZero(), m_startTxop, and NS_LOG_FUNCTION.
Referenced by ns3::QosFrameExchangeManager::PifsRecovery(), and ns3::QosFrameExchangeManager::StartTransmission().
bool ns3::QosTxop::MuEdcaTimerRunning | ( | void | ) | const |
Return true if the MU EDCA Timer is running, false otherwise.
Definition at line 198 of file qos-txop.cc.
References ns3::Time::IsStrictlyPositive(), m_muEdcaTimer, m_muEdcaTimerStartTime, and ns3::Simulator::Now().
Referenced by EdcaDisabled(), GetAifsn(), GetMaxCw(), and GetMinCw().
|
overridevirtual |
Called by the FrameExchangeManager to notify that channel access has been granted for the given amount of time.
txopDuration | the duration of the TXOP gained (zero for DCF) |
Reimplemented from ns3::Txop.
Definition at line 533 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().
|
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 551 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().
Ptr< const WifiMacQueueItem > ns3::QosTxop::PeekNextMpdu | ( | uint8_t | tid = 8 , |
Mac48Address | recipient = Mac48Address::GetBroadcast () , |
||
Ptr< const WifiMacQueueItem > | item = nullptr |
||
) |
Peek the next frame to transmit to the given receiver and of the given TID from the EDCA queue.
If tid is equal to 8 (invalid value) and recipient is the broadcast address, the first available frame is returned. If item is not a null pointer, the search starts from the packet following item in the queue; otherwise, the search starts from the head of the queue. Note that A-MSDU aggregation is never attempted. If the frame has never been transmitted, it is assigned a sequence number peeked from MacTxMiddle.
tid | traffic ID. |
recipient | the receiver station address. |
item | the item after which the search starts from |
Definition at line 357 of file qos-txop.cc.
References ns3::WifiMacHeader::GetAddr1(), GetBaAgreementEstablished(), GetBaBufferSize(), GetBaStartingSequence(), ns3::WifiMacHeader::GetQosTid(), ns3::WifiMacHeader::GetSequenceNumber(), ns3::Mac48Address::IsBroadcast(), ns3::IsInWindow(), ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), ns3::WifiMacHeader::IsQosData(), IsQosOldPacket(), ns3::WifiMacHeader::IsRetry(), ns3::Txop::m_droppedMpduCallback, ns3::Txop::m_mac, m_qosBlockedDestinations, ns3::Txop::m_queue, ns3::Txop::m_txMiddle, NS_ASSERT, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::WifiMacHeader::SetSequenceNumber(), and ns3::WIFI_MAC_DROP_QOS_OLD_PACKET.
Referenced by AmpduAggregationTest::DoRun(), TwoLevelAggregationTest::DoRun(), HeAggregationTest::DoRunSubTest(), ns3::MpduAggregator::GetNextAmpdu(), ns3::FrameExchangeManager::NotifyInternalCollision(), ns3::HeFrameExchangeManager::ReceiveBasicTrigger(), ns3::RrMultiUserScheduler::SelectTxFormat(), ns3::QosFrameExchangeManager::StartFrameExchange(), ns3::HeFrameExchangeManager::StartFrameExchange(), ns3::HtFrameExchangeManager::StartFrameExchange(), and ns3::RrMultiUserScheduler::TrySendingDlMuPpdu().
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).
hdr | Wi-Fi header. |
Definition at line 325 of file qos-txop.cc.
References ns3::Txop::m_txMiddle.
Ptr< const WifiMacQueueItem > ns3::QosTxop::PrepareBlockAckRequest | ( | Mac48Address | recipient, |
uint8_t | tid | ||
) | const |
recipient | Address of recipient. |
tid | traffic ID. |
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 267 of file qos-txop.cc.
References ns3::Packet::AddHeader(), m_ac, m_baManager, ns3::Txop::m_mac, NS_ASSERT, NS_LOG_FUNCTION, ns3::QosUtilsMapTidToAc(), ns3::WifiMacHeader::SetAddr1(), ns3::WifiMacHeader::SetAddr2(), ns3::WifiMacHeader::SetDsNotFrom(), ns3::WifiMacHeader::SetDsNotTo(), ns3::WifiMacHeader::SetNoMoreFragments(), ns3::WifiMacHeader::SetNoRetry(), ns3::WifiMacHeader::SetType(), and ns3::WIFI_MAC_CTL_BACKREQ.
Referenced by ns3::HtFrameExchangeManager::MissedBlockAck(), and ns3::HtFrameExchangeManager::SendPsdu().
void ns3::QosTxop::PushFront | ( | Ptr< const Packet > | packet, |
const WifiMacHeader & | hdr | ||
) |
packet | packet to send. |
hdr | header of packet to send. |
Store the packet in the front of the internal queue until it can be sent safely.
Definition at line 579 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.
void ns3::QosTxop::ResetBa | ( | Mac48Address | recipient, |
uint8_t | tid | ||
) |
Reset BA agreement after BA negotiation failed.
recipient | MAC address of recipient |
tid | traffic ID |
Definition at line 698 of file qos-txop.cc.
References ns3::OriginatorBlockAckAgreement::ESTABLISHED, m_baManager, and NS_LOG_FUNCTION.
Referenced by AddBaResponseTimeout(), and ns3::HtFrameExchangeManager::NotifyPacketDiscarded().
void ns3::QosTxop::ScheduleBar | ( | Ptr< const WifiMacQueueItem > | bar, |
bool | skipIfNoDataQueued = false |
||
) |
bar | the BlockAckRequest to schedule |
skipIfNoDataQueued | do not send if there is no data queued |
Request the block ack manager to schedule the transmission of the given BlockAckRequest.
Definition at line 289 of file qos-txop.cc.
References m_baManager.
Referenced by ns3::HtFrameExchangeManager::MissedBlockAck(), ns3::HtFrameExchangeManager::SendPsdu(), and ns3::HeFrameExchangeManager::SendPsduMap().
void ns3::QosTxop::SetAddBaResponseTimeout | ( | Time | addBaResponseTimeout | ) |
Set the timeout to wait for ADDBA response.
addBaResponseTimeout | the timeout to wait for ADDBA response |
Definition at line 713 of file qos-txop.cc.
References m_addBaResponseTimeout, and NS_LOG_FUNCTION.
Referenced by GetTypeId().
void ns3::QosTxop::SetBlockAckInactivityTimeout | ( | uint16_t | timeout | ) |
Set the BlockAck inactivity timeout.
timeout | the BlockAck inactivity timeout. |
Definition at line 653 of file qos-txop.cc.
References m_blockAckInactivityTimeout, NS_LOG_FUNCTION, and timeout.
Referenced by ns3::WifiMac::SetBeBlockAckInactivityTimeout(), ns3::WifiMac::SetBkBlockAckInactivityTimeout(), ns3::WifiMac::SetViBlockAckInactivityTimeout(), and ns3::WifiMac::SetVoBlockAckInactivityTimeout().
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.
threshold | block ack threshold value. |
Definition at line 645 of file qos-txop.cc.
References m_baManager, m_blockAckThreshold, and NS_LOG_FUNCTION.
Referenced by ns3::WifiMac::SetBeBlockAckThreshold(), ns3::WifiMac::SetBkBlockAckThreshold(), ns3::WifiMac::SetViBlockAckThreshold(), and ns3::WifiMac::SetVoBlockAckThreshold().
|
overridevirtual |
callback | the callback to invoke when an MPDU is dropped |
Reimplemented from ns3::Txop.
Definition at line 150 of file qos-txop.cc.
References ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::Bind(), m_baManager, NS_LOG_FUNCTION, ns3::Txop::SetDroppedMpduCallback(), and ns3::WIFI_MAC_DROP_QOS_OLD_PACKET.
Referenced by ns3::WifiMac::SetupEdcaQueue().
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.
failedAddBaTimeout | the timeout for failed BA agreement |
Definition at line 726 of file qos-txop.cc.
References m_failedAddBaTimeout, and NS_LOG_FUNCTION.
Referenced by GetTypeId().
void ns3::QosTxop::SetMuAifsn | ( | uint8_t | aifsn | ) |
Set the number of slots that make up an AIFS while the MU EDCA Timer is running.
aifsn | the number of slots that make up an AIFS. |
Definition at line 172 of file qos-txop.cc.
References m_muAifsn, and NS_LOG_FUNCTION.
Referenced by ns3::StaWifiMac::SetMuEdcaParameters().
void ns3::QosTxop::SetMuCwMax | ( | uint16_t | cwMax | ) |
Set the maximum contention window size to use while the MU EDCA Timer is running.
cwMax | the maximum contention window size. |
Definition at line 165 of file qos-txop.cc.
References m_muCwMax, and NS_LOG_FUNCTION.
Referenced by ns3::StaWifiMac::SetMuEdcaParameters().
void ns3::QosTxop::SetMuCwMin | ( | uint16_t | cwMin | ) |
Set the minimum contention window size to use while the MU EDCA Timer is running.
cwMin | the minimum contention window size. |
Definition at line 158 of file qos-txop.cc.
References m_muCwMin, and NS_LOG_FUNCTION.
Referenced by ns3::StaWifiMac::SetMuEdcaParameters().
void ns3::QosTxop::SetMuEdcaTimer | ( | Time | timer | ) |
Set the MU EDCA Timer.
timer | the timer duration. |
Definition at line 179 of file qos-txop.cc.
References m_muEdcaTimer, and NS_LOG_FUNCTION.
Referenced by ns3::StaWifiMac::SetMuEdcaParameters().
void ns3::QosTxop::SetQosFrameExchangeManager | ( | const Ptr< QosFrameExchangeManager > | qosFem | ) |
Set the Frame Exchange Manager associated with this QoS STA.
qosFem | the associated QoS Frame Exchange Manager. |
Definition at line 143 of file qos-txop.cc.
References m_qosFem, and NS_LOG_FUNCTION.
Referenced by ns3::OcbWifiMac::ConfigureStandard().
void ns3::QosTxop::StartMuEdcaTimerNow | ( | void | ) |
Start the MU EDCA Timer.
Definition at line 186 of file qos-txop.cc.
References ns3::Time::As(), EdcaDisabled(), ns3::Txop::m_channelAccessManager, m_muEdcaTimer, m_muEdcaTimerStartTime, ns3::Time::MS, ns3::Simulator::Now(), NS_LOG_DEBUG, and NS_LOG_FUNCTION.
bool ns3::QosTxop::UseExplicitBarAfterMissedBlockAck | ( | void | ) | const |
Return true if an explicit BlockAckRequest is sent after a missed BlockAck.
Definition at line 295 of file qos-txop.cc.
References m_useExplicitBarAfterMissedBlockAck.
Referenced by ns3::HtFrameExchangeManager::MissedBlockAck().
|
friend |
allow AggregationCapableTransmissionListener class access
Definition at line 448 of file qos-txop.h.
|
private |
the access category
Definition at line 462 of file qos-txop.h.
Referenced by GetAccessCategory(), and PrepareBlockAckRequest().
|
private |
timeout for ADDBA response
Definition at line 472 of file qos-txop.h.
Referenced by GetAddBaResponseTimeout(), and SetAddBaResponseTimeout().
|
private |
the block ack manager
Definition at line 465 of file qos-txop.h.
Referenced by QosTxop(), AddBaResponseTimeout(), CompleteMpduTx(), DoDispose(), GetBaAgreementEstablished(), GetBaBufferSize(), GetBaManager(), GetBaStartingSequence(), GetBlockAckReqType(), GetBlockAckType(), GetTypeId(), GotAddBaResponse(), GotDelBaFrame(), HasFramesToTransmit(), PrepareBlockAckRequest(), ResetBa(), ScheduleBar(), SetBlockAckThreshold(), and SetDroppedMpduCallback().
|
private |
the BlockAck inactivity timeout value (in TUs, i.e.
blocks of 1024 microseconds)
Definition at line 469 of file qos-txop.h.
Referenced by GetBlockAckInactivityTimeout(), and SetBlockAckInactivityTimeout().
|
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 466 of file qos-txop.h.
Referenced by GetBlockAckThreshold(), and SetBlockAckThreshold().
|
private |
timeout after failed BA agreement
Definition at line 473 of file qos-txop.h.
Referenced by AddBaResponseTimeout(), GetFailedAddBaTimeout(), and SetFailedAddBaTimeout().
|
private |
the MU AIFSN
Definition at line 478 of file qos-txop.h.
Referenced by EdcaDisabled(), GetAifsn(), and SetMuAifsn().
|
private |
the MU CW maximum
Definition at line 477 of file qos-txop.h.
Referenced by GetMaxCw(), and SetMuCwMax().
|
private |
the MU CW minimum
Definition at line 476 of file qos-txop.h.
Referenced by GetMinCw(), and SetMuCwMin().
|
private |
the MU EDCA Timer
Definition at line 479 of file qos-txop.h.
Referenced by MuEdcaTimerRunning(), SetMuEdcaTimer(), and StartMuEdcaTimerNow().
|
private |
last start time of the MU EDCA Timer
Definition at line 480 of file qos-txop.h.
Referenced by MuEdcaTimerRunning(), and StartMuEdcaTimerNow().
|
private |
the QoS blocked destinations
Definition at line 464 of file qos-txop.h.
Referenced by QosTxop(), DoDispose(), HasFramesToTransmit(), and PeekNextMpdu().
|
private |
the QoS Frame Exchange Manager
Definition at line 463 of file qos-txop.h.
Referenced by DoDispose(), GetNextMpdu(), and SetQosFrameExchangeManager().
|
private |
the start TXOP time
Definition at line 470 of file qos-txop.h.
Referenced by GetRemainingTxop(), IsTxopStarted(), NotifyChannelAccessed(), and NotifyChannelReleased().
|
private |
the duration of a TXOP
Definition at line 471 of file qos-txop.h.
Referenced by GetRemainingTxop(), and NotifyChannelAccessed().
|
private |
TXOP trace callback.
Definition at line 482 of file qos-txop.h.
Referenced by GetTypeId(), and NotifyChannelReleased().
|
private |
flag whether explicit BlockAckRequest should be sent upon missed BlockAck Response
Definition at line 474 of file qos-txop.h.
Referenced by GetTypeId(), and UseExplicitBarAfterMissedBlockAck().