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 () | |
virtual | ~QosTxop () |
void | BaTxFailed (const WifiMacHeader &hdr) |
The packet we sent was successfully received by the receiver. More... | |
void | BaTxOk (const WifiMacHeader &hdr) |
The packet we sent was successfully received by the receiver. More... | |
void | CompleteAmpduTransfer (Mac48Address recipient, uint8_t tid) |
void | CompleteConfig (void) |
Complete block ACK configuration. More... | |
void | CompleteMpduTx (Ptr< const Packet > packet, WifiMacHeader hdr, Time tstamp) |
Stores an MPDU (part of an A-MPDU) in blockackagreement (i.e. More... | |
void | EndTxNoAck (void) |
Event handler when a transmission that does not require an ACK has completed. More... | |
bool | GetAmpduExist (Mac48Address dest) const |
Return whether A-MPDU is used to transmit data to a peer station. More... | |
bool | GetBaAgreementExists (Mac48Address address, uint8_t tid) const |
uint8_t | GetBlockAckThreshold (void) const |
Return the current threshold for block ACK mechanism. More... | |
Ptr< Packet > | GetFragmentPacket (WifiMacHeader *hdr) |
Get the next fragment from the packet with appropriate Wifi header for the fragment. More... | |
Ptr< MpduAggregator > | GetMpduAggregator (void) const |
Returns the aggregator used to construct A-MPDU subframes. More... | |
Ptr< MsduAggregator > | GetMsduAggregator (void) const |
Returns the aggregator used to construct A-MSDU subframes. More... | |
uint16_t | GetNextSequenceNumberFor (WifiMacHeader *hdr) |
Return the next sequence number for the given header. More... | |
TypeOfStation | GetTypeOfStation (void) const |
Return type of station. More... | |
void | GotAck (void) |
Event handler when an ACK is received. More... | |
void | GotAddBaResponse (const MgtAddBaResponseHeader *respHdr, Mac48Address recipient) |
Event handler when an ADDBA response is received. More... | |
void | GotBlockAck (const CtrlBAckResponseHeader *blockAck, Mac48Address recipient, double rxSnr, WifiMode txMode, double dataSnr) |
Event handler when a Block ACK is received. More... | |
void | GotDelBaFrame (const MgtDelBaHeader *delBaHdr, Mac48Address recipient) |
Event handler when a DELBA frame is received. More... | |
bool | IsQosTxop () const |
Check for QoS TXOP. More... | |
Mac48Address | MapDestAddressForAggregation (const WifiMacHeader &hdr) |
This functions are used only to correctly set destination address in A-MSDU subframes. More... | |
Mac48Address | MapSrcAddressForAggregation (const WifiMacHeader &hdr) |
This functions are used only to correctly set source address in A-MSDU subframes. More... | |
void | MissedAck (void) |
Event handler when an ACK is missed. More... | |
void | MissedBlockAck (uint8_t nMpdus) |
Event handler when a Block ACK timeout has occurred. More... | |
void | MissedCts (void) |
Event handler when a CTS timeout has occurred. More... | |
bool | NeedBarRetransmission (void) |
Check if Block ACK Request should be re-transmitted. More... | |
bool | NeedFragmentation (void) const |
Check if the current packet should be fragmented. More... | |
void | NotifyAccessGranted (void) |
Notify the EDCAF that access has been granted. More... | |
void | NotifyCollision (void) |
Notify the EDCAF that collision has occurred. More... | |
void | NotifyInternalCollision (void) |
Notify the EDCAF that internal collision has occurred. More... | |
Ptr< const Packet > | PeekNextRetransmitPacket (WifiMacHeader &header, uint8_t tid, Time *timestamp) |
Peek in retransmit queue and get the next packet without removing it from the queue. More... | |
uint16_t | PeekNextSequenceNumberFor (WifiMacHeader *hdr) |
Return the next sequence number for the Traffic ID and destination, but do not pick it (i.e. More... | |
void | PushFront (Ptr< const Packet > packet, const WifiMacHeader &hdr) |
void | RemoveRetransmitPacket (uint8_t tid, Mac48Address recipient, uint16_t seqnumber) |
Remove a packet after you peek in the retransmit queue and get it. More... | |
void | RestartAccessIfNeeded (void) |
Restart access request if needed. More... | |
void | SendDelbaFrame (Mac48Address addr, uint8_t tid, bool byOriginator) |
Sends DELBA frame to cancel a block ack agreement with sta addressed by addr for tid tid. More... | |
void | SetAccessCategory (AcIndex ac) |
Set the access category of this EDCAF. More... | |
void | SetAmpduExist (Mac48Address dest, bool enableAmpdu) |
Set indication whether A-MPDU is used to transmit data to a peer station. More... | |
void | SetBlockAckInactivityTimeout (uint16_t timeout) |
Set the Block Ack inactivity timeout. More... | |
void | SetBlockAckThreshold (uint8_t threshold) |
Set threshold for block ACK mechanism. More... | |
void | SetMpduAggregator (const Ptr< MpduAggregator > aggr) |
Set the aggregator used to construct A-MPDU subframes. More... | |
void | SetMsduAggregator (const Ptr< MsduAggregator > aggr) |
Set the aggregator used to construct A-MSDU subframes. More... | |
void | SetTypeOfStation (TypeOfStation type) |
Set type of station with the given type. More... | |
void | SetWifiRemoteStationManager (const Ptr< WifiRemoteStationManager > remoteManager) |
Set WifiRemoteStationsManager this QosTxop is associated to. More... | |
void | StartAccessIfNeeded (void) |
Request access from DCF manager if needed. More... | |
void | StartNextPacket (void) |
Start transmission for the next packet if allowed by the TxopLimit. More... | |
![]() | |
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 void | Cancel (void) |
Cancel the transmission. More... | |
bool | CanStartNextPolling (void) const |
Check if the next PCF transmission can fit in the remaining CFP duration. More... | |
uint8_t | GetAifsn (void) const |
Return the number of slots that make up an AIFS. More... | |
Ptr< MacLow > | GetLow (void) const |
Return the MacLow associated with this Txop. More... | |
uint32_t | GetMaxCw (void) const |
Return the maximum contention window size. More... | |
uint32_t | GetMinCw (void) const |
Return the minimum contention window size. More... | |
Time | GetTxopLimit (void) const |
Return the TXOP limit. More... | |
Ptr< WifiMacQueue > | GetWifiMacQueue () const |
Return the packet queue associated with this Txop. More... | |
void | GotCfEnd (void) |
Event handler when a CF-END frame is received. More... | |
virtual bool | IsAccessRequested (void) const |
void | MissedCfPollResponse (bool expectedCfAck) |
Event handler when a response to a CF-POLL frame is missed. 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< const Packet > packet, const WifiMacHeader &hdr) |
void | SendCfFrame (WifiMacType frameType, Mac48Address addr) |
Sends CF frame to sta with address addr. 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 | SetMacLow (const Ptr< MacLow > low) |
Set MacLow associated with this Txop. 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 | SetTxDroppedCallback (TxDropped callback) |
void | SetTxFailedCallback (TxFailed callback) |
void | SetTxMiddle (const Ptr< MacTxMiddle > txMiddle) |
Set MacTxMiddle this Txop is associated to. More... | |
void | SetTxOkCallback (TxOk callback) |
void | SetTxopLimit (Time txopLimit) |
Set the TXOP limit. More... | |
void | StartBackoffNow (uint32_t nSlots) |
virtual void | StartNextFragment (void) |
Start transmission for the next fragment. More... | |
![]() | |
Object () | |
Constructor. More... | |
virtual | ~Object () |
Destructor. More... | |
void | AggregateObject (Ptr< Object > other) |
Aggregate two Objects together. More... | |
void | Dispose (void) |
Dispose of this Object. More... | |
AggregateIterator | GetAggregateIterator (void) const |
Get an iterator to the Objects aggregated to this one. More... | |
virtual TypeId | GetInstanceTypeId (void) const |
Get the most derived TypeId for this Object. More... | |
template<typename T > | |
Ptr< T > | GetObject (void) const |
Get a pointer to the requested aggregated Object. More... | |
template<typename T > | |
Ptr< T > | GetObject (TypeId tid) const |
Get a pointer to the requested aggregated Object by TypeId. More... | |
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... | |
![]() | |
SimpleRefCount () | |
Default constructor. More... | |
SimpleRefCount (const SimpleRefCount &o) | |
Copy constructor. More... | |
uint32_t | GetReferenceCount (void) const |
Get the reference count of the object. More... | |
SimpleRefCount & | operator= (const SimpleRefCount &o) |
Assignment operator. More... | |
void | Ref (void) const |
Increment the reference count. More... | |
void | Unref (void) const |
Decrement the reference count. More... | |
![]() | |
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 TypeId | GetTypeId (void) |
Get the type ID. More... | |
![]() | |
static TypeId | GetTypeId (void) |
Register this type. More... | |
![]() | |
static TypeId | GetTypeId (void) |
Get the type ID. More... | |
Public Attributes | |
std::map< Mac48Address, bool > | m_aMpduEnabled |
list containing flags whether A-MPDU is enabled for a given destination address More... | |
Private Member Functions | |
void | CompleteTx (void) |
For now is typically invoked to complete transmission of a packets sent with ack policy Block Ack: the packet is buffered and dcf is reset. More... | |
void | DoDispose (void) |
Destructor implementation. More... | |
void | DoInitialize (void) |
Initialize() implementation. More... | |
uint32_t | GetFragmentOffset (void) const |
Calculate the offset for the current fragment. More... | |
uint32_t | GetFragmentSize (void) const |
Calculate the size of the current fragment. More... | |
uint32_t | GetNextFragmentSize (void) const |
Calculate the size of the next fragment. More... | |
uint32_t | GetNextTxopFragmentSize (uint32_t fragmentNumber) const |
Calculate the size of the next TXOP fragment. More... | |
uint32_t | GetNTxopFragment () const |
Calculate the number of TXOP fragments needed for the transmission of the current packet. More... | |
uint32_t | GetTxopFragmentOffset (uint32_t fragmentNumber) const |
Calculate the offset for the fragment. More... | |
uint32_t | GetTxopFragmentSize () const |
Calculate the size of the current TXOP fragment. More... | |
Time | GetTxopRemaining (void) const |
Return the remaining duration in the current TXOP. More... | |
bool | HasTxop (void) const |
Check if the station has TXOP granted for the next MPDU. More... | |
bool | IsLastFragment (void) const |
Check if the current fragment is the last fragment. More... | |
bool | IsTxopFragmentation () const |
Check if the current packet is fragmented because of an exceeded TXOP duration. More... | |
void | SendAddBaRequest (Mac48Address recipient, uint8_t tid, uint16_t startSeq, uint16_t timeout, bool immediateBAck) |
Sends an ADDBA Request to establish a block ack agreement with sta addressed by recipient for tid tid. More... | |
void | SendBlockAckRequest (const Bar &bar) |
After that all packets, for which a block ack agreement was established, have been transmitted, we have to send a block ack request. More... | |
bool | SetupBlockAckIfNeeded () |
If number of packets in the queue reaches m_blockAckThreshold value, an ADDBA Request frame is sent to destination in order to setup a block ack. More... | |
void | VerifyBlockAck (void) |
Verifies if dequeued packet has to be transmitted with ack policy Block Ack. More... | |
Private Attributes | |
AcIndex | m_ac |
the access category More... | |
TracedValue< uint32_t > | m_backoffTrace |
backoff trace value More... | |
Ptr< BlockAckManager > | m_baManager |
the Block ACK manager More... | |
uint16_t | m_blockAckInactivityTimeout |
the Block ACK inactivity timeout More... | |
uint8_t | m_blockAckThreshold |
the Block ACK threshold More... | |
BlockAckType | m_blockAckType |
the Block ACK type More... | |
Bar | m_currentBar |
the current BAR More... | |
bool | m_currentIsFragmented |
flag whether current packet is fragmented More... | |
Time | m_currentPacketTimestamp |
the current packet timestamp More... | |
TracedValue< uint32_t > | m_cwTrace |
CW trace value. More... | |
bool | m_isAccessRequestedForRts |
flag whether access is requested to transmit a RTS frame More... | |
Ptr< MpduAggregator > | m_mpduAggregator |
A-MPDU aggregator. More... | |
Ptr< MsduAggregator > | m_msduAggregator |
A-MSDU aggregator. More... | |
Ptr< QosBlockedDestinations > | m_qosBlockedDestinations |
QOS blocked destinations. More... | |
Time | m_startTxop |
the start TXOP time More... | |
TracedCallback< Time, Time > | m_txopTrace |
TXOP trace callback. More... | |
TypeOfStation | m_typeOfStation |
the type of station More... | |
Friends | |
class | ::AmpduAggregationTest |
Allow test cases to access private members. More... | |
class | AggregationCapableTransmissionListener |
allow AggregationCapableTransmissionListener class access More... | |
Additional Inherited Members | |
![]() | |
typedef Callback< void, Ptr< const Packet > > | TxDropped |
typedef for a callback to invoke when a packet is dropped. More... | |
typedef Callback< void, const WifiMacHeader & > | TxFailed |
typedef for a callback to invoke when a packet transmission was failed. More... | |
typedef Callback< void, const WifiMacHeader & > | TxOk |
typedef for a callback to invoke when a packet transmission was completed successfully. 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 |
bool | NeedDataRetransmission (Ptr< const Packet > packet, const WifiMacHeader &hdr) |
Check if DATA should be re-transmitted if ACK was missed. More... | |
bool | NeedRtsRetransmission (Ptr< const Packet > packet, const WifiMacHeader &hdr) |
Check if RTS should be re-transmitted if CTS was missed. More... | |
void | NextFragment (void) |
Continue to the next fragment. More... | |
virtual void | NotifyAccessRequested (void) |
Notify that access request has been received. More... | |
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 | TxDroppedPacket (Ptr< const WifiMacQueueItem > item) |
Pass the packet included in the wifi MAC queue item to the packet dropped callback. More... | |
void | UpdateBackoffSlotsNow (uint32_t nSlots, Time backoffUpdateBound) |
Update backoff slots that nSlots has passed. More... | |
void | UpdateFailedCw (void) |
Update the value of the CW variable to take into account a transmission failure. More... | |
![]() | |
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... | |
![]() | |
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... | |
![]() | |
bool | m_accessRequested |
flag whether channel access is already requested More... | |
uint8_t | m_aifsn |
the AIFSN More... | |
uint32_t | m_backoffSlots |
the 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... | |
Ptr< ChannelAccessManager > | m_channelAccessManager |
the channel access manager More... | |
WifiMacHeader | m_currentHdr |
the current header More... | |
Ptr< const Packet > | m_currentPacket |
the current packet More... | |
MacLowTransmissionParameters | m_currentParams |
current transmission parameters More... | |
uint32_t | m_cw |
the current CW More... | |
uint32_t | m_cwMax |
the CW maximum More... | |
uint32_t | m_cwMin |
the CW minimum More... | |
uint8_t | m_fragmentNumber |
the fragment number More... | |
Ptr< MacLow > | m_low |
the MacLow More... | |
Ptr< WifiMacQueue > | m_queue |
the wifi MAC queue More... | |
Ptr< UniformRandomVariable > | m_rng |
the random stream More... | |
Ptr< WifiRemoteStationManager > | m_stationManager |
the wifi remote station manager More... | |
TxDropped | m_txDroppedCallback |
the packet dropped callback More... | |
TxFailed | m_txFailedCallback |
the transmit failed callback More... | |
Ptr< MacTxMiddle > | m_txMiddle |
the MacTxMiddle More... | |
TxOk | m_txOkCallback |
the transmit OK callback More... | |
Time | m_txopLimit |
the txop limit time More... | |
![]() | |
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::MacLow and ns3::ChannelAccessManager helper classes to respectively send packets and decide when to send them. Packets are stored in a ns3::WifiMacQueue until they can be sent.
This queue contains packets for a particular access class. Possibles access classes are:
This class also implements block ack sessions and MSDU aggregation (A-MSDU). If A-MSDU is enabled for that access class, it picks several packets from the queue instead of a single one and sends the aggregated packet to ns3::MacLow.
The fragmentation policy currently implemented uses a simple threshold: any packet bigger than this threshold is fragmented in fragments whose size is smaller than the threshold.
The retransmission policy is also very simple: every packet is retransmitted until it is either successfully transmitted or it has been retransmitted up until the ssrc or slrc thresholds.
The rts/cts policy is similar to the fragmentation policy: when a packet is bigger than a threshold, the rts/cts protocol is used.
ns3::QosTxop is accessible through the following paths with Config::Set and Config::Connect:
No Attributes are defined for this type.
Size of this type is 448 bytes (on a 64-bit architecture).
Definition at line 90 of file qos-txop.h.
ns3::QosTxop::QosTxop | ( | ) |
Definition at line 71 of file qos-txop.cc.
References BaTxFailed(), BaTxOk(), ns3::QosBlockedDestinations::Block(), m_baManager, m_blockAckType, m_qosBlockedDestinations, ns3::Txop::m_queue, ns3::MakeCallback(), NS_LOG_FUNCTION, and ns3::QosBlockedDestinations::Unblock().
|
virtual |
Definition at line 92 of file qos-txop.cc.
References NS_LOG_FUNCTION.
void ns3::QosTxop::BaTxFailed | ( | const WifiMacHeader & | hdr | ) |
The packet we sent was successfully received by the receiver.
hdr | the header of the packet that we failed to sent. |
Definition at line 1553 of file qos-txop.cc.
References ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), ns3::Txop::m_currentHdr, ns3::Txop::m_txFailedCallback, and NS_LOG_FUNCTION.
Referenced by QosTxop().
void ns3::QosTxop::BaTxOk | ( | const WifiMacHeader & | hdr | ) |
The packet we sent was successfully received by the receiver.
hdr | the header of the packet that we successfully sent. |
Definition at line 1543 of file qos-txop.cc.
References ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), ns3::Txop::m_currentHdr, ns3::Txop::m_txOkCallback, and NS_LOG_FUNCTION.
Referenced by QosTxop().
void ns3::QosTxop::CompleteAmpduTransfer | ( | Mac48Address | recipient, |
uint8_t | tid | ||
) |
recipient | address of peer station involved in block ack mechanism. |
tid | Ttraffic ID of transmitted packet. |
This function resets the status of OriginatorBlockAckAgreement after the transfer of an A-MPDU with ImmediateBlockAck policy (i.e. no BAR is scheduled).
Definition at line 115 of file qos-txop.cc.
References m_baManager.
void ns3::QosTxop::CompleteConfig | ( | void | ) |
Complete block ACK configuration.
Definition at line 1404 of file qos-txop.cc.
References m_ac, m_baManager, ns3::Txop::m_low, ns3::Txop::m_txMiddle, ns3::MakeCallback(), NS_LOG_FUNCTION, ns3::MacLow::RegisterEdcaForAc(), and SendDelbaFrame().
Referenced by AmpduAggregationTest::DoRun(), and TwoLevelAggregationTest::DoRun().
void ns3::QosTxop::CompleteMpduTx | ( | Ptr< const Packet > | packet, |
WifiMacHeader | hdr, | ||
Time | tstamp | ||
) |
Stores an MPDU (part of an A-MPDU) in blockackagreement (i.e.
the sender is waiting for a blockack containing the sequence number of this MPDU). It also calls NotifyMpdu transmission that updates the status of OriginatorBlockAckAgreement.
packet | received packet. |
hdr | received Wi-Fi header. |
tstamp | timestamp. |
Definition at line 1332 of file qos-txop.cc.
References ns3::WifiMacHeader::GetAddr1(), ns3::MacTxMiddle::GetNextSeqNumberByTidAndAddress(), ns3::WifiMacHeader::GetQosTid(), ns3::WifiMacHeader::IsQosData(), m_baManager, ns3::Txop::m_txMiddle, ns3::WifiMacHeader::NORMAL_ACK, and NS_ASSERT.
|
private |
For now is typically invoked to complete transmission of a packets sent with ack policy Block Ack: the packet is buffered and dcf is reset.
Definition at line 1316 of file qos-txop.cc.
References ns3::WifiMacHeader::BLOCK_ACK, ns3::WifiMacHeader::GetAddr1(), ns3::MacTxMiddle::GetNextSeqNumberByTidAndAddress(), ns3::WifiMacHeader::GetQosTid(), ns3::WifiMacHeader::IsQosBlockAck(), ns3::WifiMacHeader::IsQosData(), ns3::WifiMacHeader::IsRetry(), m_baManager, ns3::Txop::m_currentHdr, ns3::Txop::m_currentPacket, m_currentPacketTimestamp, ns3::Txop::m_txMiddle, and NS_LOG_FUNCTION.
Referenced by NotifyAccessGranted(), and StartNextPacket().
|
privatevirtual |
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::Txop.
Definition at line 98 of file qos-txop.cc.
References ns3::Txop::DoDispose(), m_baManager, m_mpduAggregator, m_msduAggregator, m_qosBlockedDestinations, and NS_LOG_FUNCTION.
|
privatevirtual |
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::Txop.
Definition at line 1533 of file qos-txop.cc.
References ns3::Txop::GetCw(), ns3::RandomVariableStream::GetInteger(), m_backoffTrace, m_cwTrace, ns3::Txop::m_rng, NS_LOG_FUNCTION, ns3::Txop::ResetCw(), and ns3::Txop::StartBackoffNow().
|
virtual |
Event handler when a transmission that does not require an ACK has completed.
Reimplemented from ns3::Txop.
Definition at line 933 of file qos-txop.cc.
References ns3::Txop::GetCw(), ns3::RandomVariableStream::GetInteger(), ns3::Txop::GetTxopLimit(), ns3::WifiMacHeader::IsQosBlockAck(), ns3::WifiMacHeader::IsQosData(), ns3::Time::IsStrictlyPositive(), m_backoffTrace, ns3::Txop::m_currentHdr, ns3::Txop::m_currentPacket, m_cwTrace, ns3::Txop::m_rng, m_startTxop, m_txopTrace, ns3::Simulator::Now(), NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::Txop::ResetCw(), StartAccessIfNeeded(), and ns3::Txop::StartBackoffNow().
bool ns3::QosTxop::GetAmpduExist | ( | Mac48Address | dest | ) | const |
Return whether A-MPDU is used to transmit data to a peer station.
dest | address of peer station |
Definition at line 1298 of file qos-txop.cc.
References m_aMpduEnabled, and NS_LOG_FUNCTION.
Referenced by MissedAck(), MissedBlockAck(), MissedCts(), NeedFragmentation(), NotifyAccessGranted(), and StartNextPacket().
bool ns3::QosTxop::GetBaAgreementExists | ( | Mac48Address | address, |
uint8_t | tid | ||
) | const |
address | recipient address of the peer station |
tid | traffic ID. |
Checks if a block ack agreement exists with station addressed by recipient for tid tid.
Definition at line 109 of file qos-txop.cc.
References first::address, and m_baManager.
Referenced by MissedAck(), MissedCts(), and NeedFragmentation().
uint8_t ns3::QosTxop::GetBlockAckThreshold | ( | void | ) | const |
Return the current threshold for block ACK mechanism.
Definition at line 1428 of file qos-txop.cc.
References m_blockAckThreshold, and NS_LOG_FUNCTION.
Referenced by NotifyAccessGranted(), and SetupBlockAckIfNeeded().
|
privatevirtual |
Calculate the offset for the current fragment.
Reimplemented from ns3::Txop.
Definition at line 1110 of file qos-txop.cc.
References ns3::WifiMacHeader::GetAddr1(), ns3::WifiRemoteStationManager::GetFragmentOffset(), GetTxopFragmentOffset(), IsTxopFragmentation(), ns3::Txop::m_currentHdr, ns3::Txop::m_currentPacket, ns3::Txop::m_fragmentNumber, and ns3::Txop::m_stationManager.
Referenced by GetFragmentPacket().
|
virtual |
Get the next fragment from the packet with appropriate Wifi header for the fragment.
hdr | Wi-Fi header. |
Reimplemented from ns3::Txop.
Definition at line 1142 of file qos-txop.cc.
References ns3::Packet::CreateFragment(), GetFragmentOffset(), GetFragmentSize(), IsLastFragment(), ns3::Txop::m_currentHdr, ns3::Txop::m_currentPacket, ns3::Txop::m_fragmentNumber, NS_LOG_FUNCTION, ns3::WifiMacHeader::SetFragmentNumber(), ns3::WifiMacHeader::SetMoreFragments(), and ns3::WifiMacHeader::SetNoMoreFragments().
Referenced by NotifyAccessGranted().
|
privatevirtual |
Calculate the size of the current fragment.
Reimplemented from ns3::Txop.
Definition at line 1080 of file qos-txop.cc.
References ns3::WifiMacHeader::GetAddr1(), ns3::WifiRemoteStationManager::GetFragmentSize(), GetNextTxopFragmentSize(), IsTxopFragmentation(), ns3::Txop::m_currentHdr, ns3::Txop::m_currentPacket, ns3::Txop::m_fragmentNumber, and ns3::Txop::m_stationManager.
Referenced by GetFragmentPacket().
Ptr< MpduAggregator > ns3::QosTxop::GetMpduAggregator | ( | void | ) | const |
Returns the aggregator used to construct A-MPDU subframes.
Definition at line 702 of file qos-txop.cc.
References m_mpduAggregator.
Referenced by ns3::RegularWifiMac::ConfigureAggregation(), NeedFragmentation(), and VerifyBlockAck().
Ptr< MsduAggregator > ns3::QosTxop::GetMsduAggregator | ( | void | ) | const |
Returns the aggregator used to construct A-MSDU subframes.
Definition at line 696 of file qos-txop.cc.
References m_msduAggregator.
Referenced by ns3::RegularWifiMac::ConfigureAggregation().
|
privatevirtual |
Calculate the size of the next fragment.
Reimplemented from ns3::Txop.
Definition at line 1095 of file qos-txop.cc.
References ns3::WifiMacHeader::GetAddr1(), ns3::WifiRemoteStationManager::GetFragmentSize(), GetNextTxopFragmentSize(), IsTxopFragmentation(), ns3::Txop::m_currentHdr, ns3::Txop::m_currentPacket, ns3::Txop::m_fragmentNumber, and ns3::Txop::m_stationManager.
Referenced by NotifyAccessGranted().
uint16_t ns3::QosTxop::GetNextSequenceNumberFor | ( | WifiMacHeader * | hdr | ) |
Return the next sequence number for the given header.
hdr | Wi-Fi header. |
Definition at line 142 of file qos-txop.cc.
References ns3::MacTxMiddle::GetNextSequenceNumberFor(), and ns3::Txop::m_txMiddle.
|
private |
Calculate the size of the next TXOP fragment.
fragmentNumber | number of the next fragment |
Definition at line 1061 of file qos-txop.cc.
References GetNTxopFragment(), ns3::Packet::GetSize(), GetTxopFragmentSize(), ns3::Txop::m_currentPacket, NS_LOG_DEBUG, and NS_LOG_FUNCTION.
Referenced by GetFragmentSize(), and GetNextFragmentSize().
|
private |
Calculate the number of TXOP fragments needed for the transmission of the current packet.
Definition at line 1022 of file qos-txop.cc.
References ns3::Packet::GetSize(), GetTxopFragmentSize(), ns3::Txop::m_currentPacket, and NS_LOG_DEBUG.
Referenced by GetNextTxopFragmentSize(), and IsLastFragment().
|
private |
Calculate the offset for the fragment.
fragmentNumber | number of the fragment |
Definition at line 1035 of file qos-txop.cc.
References ns3::Packet::GetSize(), GetTxopFragmentSize(), ns3::Txop::m_currentPacket, NS_ASSERT, and NS_LOG_DEBUG.
Referenced by GetFragmentOffset().
|
private |
Calculate the size of the current TXOP fragment.
Definition at line 989 of file qos-txop.cc.
References ns3::MacLow::CalculateOverallTxTime(), ns3::Txop::GetLow(), ns3::Packet::GetSize(), ns3::Txop::GetTxopLimit(), ns3::Time::IsZero(), ns3::Txop::m_currentHdr, ns3::Txop::m_currentPacket, ns3::Txop::m_currentParams, and NS_ASSERT.
Referenced by GetNextTxopFragmentSize(), GetNTxopFragment(), GetTxopFragmentOffset(), and IsTxopFragmentation().
|
private |
Return the remaining duration in the current TXOP.
Definition at line 882 of file qos-txop.cc.
References ns3::Txop::GetTxopLimit(), ns3::Time::IsStrictlyNegative(), m_startTxop, ns3::Simulator::Now(), NS_LOG_FUNCTION, and ns3::Seconds().
Referenced by HasTxop().
|
static |
Get the type ID.
Definition at line 49 of file qos-txop.cc.
References m_backoffTrace, m_cwTrace, m_txopTrace, ns3::MakeTraceSourceAccessor(), and ns3::TypeId::SetParent().
TypeOfStation ns3::QosTxop::GetTypeOfStation | ( | void | ) | const |
Return type of station.
Definition at line 136 of file qos-txop.cc.
References m_typeOfStation.
Referenced by MapDestAddressForAggregation(), and MapSrcAddressForAggregation().
|
virtual |
Event handler when an ACK is received.
Reimplemented from ns3::Txop.
Definition at line 490 of file qos-txop.cc.
References ns3::WifiActionHeader::BLOCK_ACK, ns3::WifiActionHeader::BLOCK_ACK_DELBA, ns3::WifiActionHeader::ActionValue::blockAck, ns3::Packet::Copy(), ns3::MacLow::DestroyBlockAckAgreement(), ns3::WifiActionHeader::GetAction(), ns3::WifiMacHeader::GetAddr1(), ns3::WifiActionHeader::GetCategory(), ns3::Txop::GetCw(), ns3::RandomVariableStream::GetInteger(), ns3::Packet::GetSize(), ns3::MgtDelBaHeader::GetTid(), ns3::Txop::GetTxopLimit(), ns3::MacLowTransmissionParameters::HasNextPacket(), HasTxop(), ns3::WifiMacHeader::IsAction(), ns3::MgtDelBaHeader::IsByOriginator(), ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), ns3::WifiMacHeader::IsQosAmsdu(), ns3::WifiMacHeader::IsQosData(), ns3::Time::IsStrictlyPositive(), m_backoffTrace, m_baManager, ns3::Txop::m_currentHdr, m_currentIsFragmented, ns3::Txop::m_currentPacket, ns3::Txop::m_currentParams, m_cwTrace, ns3::Txop::m_fragmentNumber, ns3::Txop::m_low, ns3::Txop::m_rng, m_startTxop, ns3::Txop::m_txOkCallback, m_txopTrace, ns3::Simulator::Now(), NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::Packet::PeekHeader(), ns3::Packet::RemoveHeader(), ns3::Txop::ResetCw(), RestartAccessIfNeeded(), and ns3::Txop::StartBackoffNow().
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 1226 of file qos-txop.cc.
References ns3::MgtAddBaResponseHeader::GetStatusCode(), ns3::MgtAddBaResponseHeader::GetTid(), ns3::StatusCode::IsSuccess(), m_baManager, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::OriginatorBlockAckAgreement::PENDING, and RestartAccessIfNeeded().
|
virtual |
Event handler when a Block ACK is received.
blockAck | block ack. |
recipient | address of the recipient. |
rxSnr | SNR of the block ack itself. |
txMode | wifi mode. |
dataSnr | reported data SNR from the peer. |
Reimplemented from ns3::Txop.
Definition at line 1256 of file qos-txop.cc.
References ns3::Txop::GetCw(), ns3::RandomVariableStream::GetInteger(), ns3::Txop::GetTxopLimit(), ns3::WifiMode::GetUniqueName(), HasTxop(), ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), ns3::WifiMacHeader::IsQosData(), ns3::Time::IsStrictlyPositive(), m_backoffTrace, m_baManager, ns3::Txop::m_currentHdr, ns3::Txop::m_currentPacket, m_cwTrace, ns3::Txop::m_rng, m_startTxop, ns3::Txop::m_txOkCallback, m_txopTrace, ns3::Simulator::Now(), NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::Txop::ResetCw(), RestartAccessIfNeeded(), and ns3::Txop::StartBackoffNow().
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 1248 of file qos-txop.cc.
References ns3::MgtDelBaHeader::GetTid(), m_baManager, NS_LOG_DEBUG, and NS_LOG_FUNCTION.
|
privatevirtual |
Check if the station has TXOP granted for the next MPDU.
Reimplemented from ns3::Txop.
Definition at line 895 of file qos-txop.cc.
References ns3::MacLow::CalculateOverallTxTime(), ns3::MacLowTransmissionParameters::DisableAck(), ns3::MacLowTransmissionParameters::EnableAck(), ns3::WifiMacHeader::GetAddr1(), ns3::Txop::GetLow(), ns3::WifiMacHeader::GetQosTid(), ns3::Txop::GetTxopLimit(), GetTxopRemaining(), ns3::WifiMacHeader::IsQosBlockAck(), ns3::WifiMacHeader::IsQosData(), ns3::Time::IsZero(), ns3::Txop::m_currentHdr, ns3::Txop::m_currentPacket, ns3::Txop::m_currentParams, ns3::Txop::m_queue, and NS_LOG_FUNCTION.
Referenced by GotAck(), and GotBlockAck().
|
privatevirtual |
Check if the current fragment is the last fragment.
Reimplemented from ns3::Txop.
Definition at line 1126 of file qos-txop.cc.
References ns3::WifiMacHeader::GetAddr1(), GetNTxopFragment(), ns3::WifiRemoteStationManager::IsLastFragment(), IsTxopFragmentation(), ns3::Txop::m_currentHdr, ns3::Txop::m_currentPacket, ns3::Txop::m_fragmentNumber, and ns3::Txop::m_stationManager.
Referenced by GetFragmentPacket(), and NotifyAccessGranted().
|
virtual |
Check for QoS TXOP.
Reimplemented from ns3::Txop.
Definition at line 1563 of file qos-txop.cc.
|
private |
Check if the current packet is fragmented because of an exceeded TXOP duration.
Definition at line 974 of file qos-txop.cc.
References ns3::WifiMacHeader::GetAddr1(), ns3::WifiRemoteStationManager::GetFragmentSize(), GetTxopFragmentSize(), ns3::Txop::GetTxopLimit(), ns3::Txop::m_currentHdr, ns3::Txop::m_currentPacket, ns3::Txop::m_stationManager, and ns3::WifiRemoteStationManager::NeedFragmentation().
Referenced by GetFragmentOffset(), GetFragmentSize(), GetNextFragmentSize(), and IsLastFragment().
Mac48Address ns3::QosTxop::MapDestAddressForAggregation | ( | const WifiMacHeader & | hdr | ) |
This functions are used only to correctly set destination address in A-MSDU subframes.
If aggregating sta is a STA (in an infrastructured network): DA = Address3 If aggregating sta is an AP DA = Address1
hdr | Wi-Fi header |
Definition at line 1186 of file qos-txop.cc.
References ns3::ADHOC_STA, ns3::AP, ns3::WifiMacHeader::GetAddr1(), ns3::WifiMacHeader::GetAddr3(), GetTypeOfStation(), and NS_LOG_FUNCTION.
Referenced by NotifyAccessGranted().
Mac48Address ns3::QosTxop::MapSrcAddressForAggregation | ( | const WifiMacHeader & | hdr | ) |
This functions are used only to correctly set source address in A-MSDU subframes.
If aggregating sta is a STA (in an infrastructured network): SA = Address2 If aggregating sta is an AP SA = Address3
hdr | Wi-Fi header |
Definition at line 1170 of file qos-txop.cc.
References ns3::ADHOC_STA, ns3::WifiMacHeader::GetAddr2(), ns3::WifiMacHeader::GetAddr3(), GetTypeOfStation(), NS_LOG_FUNCTION, and ns3::STA.
Referenced by NotifyAccessGranted().
|
virtual |
Event handler when an ACK is missed.
Reimplemented from ns3::Txop.
Definition at line 556 of file qos-txop.cc.
References ns3::Packet::AddHeader(), ns3::COMPRESSED_BLOCK_ACK, ns3::WifiMacHeader::GetAddr1(), ns3::MacLow::GetAddress(), GetAmpduExist(), GetBaAgreementExists(), ns3::MacLow::GetBssid(), ns3::Txop::GetCw(), ns3::RandomVariableStream::GetInteger(), ns3::Packet::GetSize(), ns3::GetTid(), ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), ns3::WifiMacHeader::IsQosData(), m_backoffTrace, m_currentBar, ns3::Txop::m_currentHdr, ns3::Txop::m_currentPacket, m_cwTrace, ns3::Txop::m_low, ns3::Txop::m_rng, ns3::Txop::m_stationManager, ns3::Txop::m_txFailedCallback, ns3::Txop::m_txMiddle, ns3::CtrlBAckRequestHeader::MustSendHtImmediateAck(), ns3::Txop::NeedDataRetransmission(), NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::MacTxMiddle::PeekNextSequenceNumberFor(), ns3::WifiRemoteStationManager::ReportFinalDataFailed(), ns3::Txop::ResetCw(), RestartAccessIfNeeded(), ns3::WifiMacHeader::SetAddr1(), ns3::WifiMacHeader::SetAddr2(), ns3::WifiMacHeader::SetAddr3(), ns3::WifiMacHeader::SetDsNotFrom(), ns3::WifiMacHeader::SetDsNotTo(), ns3::CtrlBAckRequestHeader::SetHtImmediateAck(), ns3::WifiMacHeader::SetNoMoreFragments(), ns3::WifiMacHeader::SetNoRetry(), ns3::WifiMacHeader::SetRetry(), ns3::CtrlBAckRequestHeader::SetStartingSequence(), ns3::CtrlBAckRequestHeader::SetTidInfo(), ns3::CtrlBAckRequestHeader::SetType(), ns3::WifiMacHeader::SetType(), ns3::Txop::StartBackoffNow(), ns3::Txop::UpdateFailedCw(), and ns3::WIFI_MAC_CTL_BACKREQ.
Referenced by AmpduAggregationTest::DoRun().
|
virtual |
Event handler when a Block ACK timeout has occurred.
nMpdus | number of MPDUs sent in the A-MPDU transmission that results in a Block ACK timeout. |
Reimplemented from ns3::Txop.
Definition at line 622 of file qos-txop.cc.
References ns3::Packet::AddHeader(), ns3::COMPRESSED_BLOCK_ACK, ns3::WifiMacHeader::GetAddr1(), ns3::MacLow::GetAddress(), GetAmpduExist(), ns3::MacLow::GetBssid(), ns3::Txop::GetCw(), ns3::RandomVariableStream::GetInteger(), ns3::WifiMacHeader::GetSequenceNumber(), ns3::CtrlBAckRequestHeader::GetStartingSequence(), ns3::GetTid(), ns3::WifiMacHeader::IsBlockAck(), ns3::WifiMacHeader::IsBlockAckReq(), ns3::WifiMacHeader::IsQosData(), m_backoffTrace, m_currentBar, ns3::Txop::m_currentHdr, ns3::Txop::m_currentPacket, m_cwTrace, ns3::Txop::m_low, ns3::Txop::m_rng, ns3::Txop::m_stationManager, ns3::CtrlBAckRequestHeader::MustSendHtImmediateAck(), NeedBarRetransmission(), NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::Packet::PeekHeader(), ns3::WifiRemoteStationManager::ReportAmpduTxStatus(), ns3::Txop::ResetCw(), RestartAccessIfNeeded(), ns3::WifiMacHeader::SetAddr1(), ns3::WifiMacHeader::SetAddr2(), ns3::WifiMacHeader::SetAddr3(), ns3::WifiMacHeader::SetDsNotFrom(), ns3::WifiMacHeader::SetDsNotTo(), ns3::CtrlBAckRequestHeader::SetHtImmediateAck(), ns3::WifiMacHeader::SetNoMoreFragments(), ns3::WifiMacHeader::SetNoRetry(), ns3::WifiMacHeader::SetRetry(), ns3::CtrlBAckRequestHeader::SetStartingSequence(), ns3::CtrlBAckRequestHeader::SetTidInfo(), ns3::CtrlBAckRequestHeader::SetType(), ns3::WifiMacHeader::SetType(), ns3::Txop::StartBackoffNow(), ns3::Txop::UpdateFailedCw(), and ns3::WIFI_MAC_CTL_BACKREQ.
|
virtual |
Event handler when a CTS timeout has occurred.
Reimplemented from ns3::Txop.
Definition at line 427 of file qos-txop.cc.
References ns3::Packet::AddHeader(), ns3::COMPRESSED_BLOCK_ACK, ns3::MacLow::FlushAggregateQueue(), ns3::WifiMacHeader::GetAddr1(), ns3::MacLow::GetAddress(), GetAmpduExist(), GetBaAgreementExists(), ns3::MacLow::GetBssid(), ns3::Txop::GetCw(), ns3::RandomVariableStream::GetInteger(), ns3::GetTid(), ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), ns3::WifiMacHeader::IsQosData(), m_backoffTrace, m_currentBar, ns3::Txop::m_currentHdr, ns3::Txop::m_currentPacket, m_cwTrace, ns3::Txop::m_low, ns3::Txop::m_rng, ns3::Txop::m_stationManager, ns3::Txop::m_txFailedCallback, ns3::Txop::m_txMiddle, ns3::CtrlBAckRequestHeader::MustSendHtImmediateAck(), ns3::Txop::NeedRtsRetransmission(), NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::MacTxMiddle::PeekNextSequenceNumberFor(), ns3::WifiRemoteStationManager::ReportFinalRtsFailed(), ns3::Txop::ResetCw(), RestartAccessIfNeeded(), ns3::WifiMacHeader::SetAddr1(), ns3::WifiMacHeader::SetAddr2(), ns3::WifiMacHeader::SetAddr3(), ns3::WifiMacHeader::SetDsNotFrom(), ns3::WifiMacHeader::SetDsNotTo(), ns3::CtrlBAckRequestHeader::SetHtImmediateAck(), ns3::WifiMacHeader::SetNoMoreFragments(), ns3::WifiMacHeader::SetNoRetry(), ns3::CtrlBAckRequestHeader::SetStartingSequence(), ns3::CtrlBAckRequestHeader::SetTidInfo(), ns3::CtrlBAckRequestHeader::SetType(), ns3::WifiMacHeader::SetType(), ns3::Txop::StartBackoffNow(), ns3::Txop::UpdateFailedCw(), and ns3::WIFI_MAC_CTL_BACKREQ.
bool ns3::QosTxop::NeedBarRetransmission | ( | void | ) |
Check if Block ACK Request should be re-transmitted.
Definition at line 785 of file qos-txop.cc.
References ns3::WifiMacHeader::GetAddr1(), ns3::WifiMacHeader::GetQosTid(), ns3::WifiMacHeader::GetSequenceNumber(), ns3::CtrlBAckRequestHeader::GetStartingSequence(), ns3::CtrlBAckRequestHeader::GetTidInfo(), ns3::CtrlBAckResponseHeader::GetTidInfo(), ns3::WifiMacHeader::IsBlockAck(), ns3::WifiMacHeader::IsBlockAckReq(), ns3::WifiMacHeader::IsQosData(), m_baManager, ns3::Txop::m_currentHdr, ns3::Txop::m_currentPacket, and ns3::Packet::PeekHeader().
Referenced by MissedBlockAck().
|
virtual |
Check if the current packet should be fragmented.
Reimplemented from ns3::Txop.
Definition at line 950 of file qos-txop.cc.
References ns3::MacLow::CalculateOverallTxTime(), ns3::WifiMacHeader::GetAddr1(), GetAmpduExist(), GetBaAgreementExists(), ns3::Txop::GetLow(), ns3::MpduAggregator::GetMaxAmpduSize(), GetMpduAggregator(), ns3::Packet::GetSize(), ns3::GetTid(), ns3::Txop::GetTxopLimit(), ns3::WifiRemoteStationManager::HasHeSupported(), ns3::WifiRemoteStationManager::HasHtSupported(), ns3::WifiRemoteStationManager::HasVhtSupported(), ns3::WifiMacHeader::IsData(), ns3::WifiMacHeader::IsQosData(), ns3::Time::IsStrictlyPositive(), ns3::Txop::m_currentHdr, ns3::Txop::m_currentPacket, ns3::Txop::m_currentParams, ns3::Txop::m_stationManager, ns3::WifiRemoteStationManager::NeedFragmentation(), and NS_LOG_FUNCTION.
Referenced by NotifyAccessGranted().
|
virtual |
Notify the EDCAF that access has been granted.
Reimplemented from ns3::Txop.
Definition at line 166 of file qos-txop.cc.
References ns3::MsduAggregator::Aggregate(), ns3::BASIC_BLOCK_ACK, CompleteTx(), ns3::MacLowTransmissionParameters::DisableAck(), ns3::MacLowTransmissionParameters::DisableNextData(), ns3::MacLowTransmissionParameters::DisableRts(), ns3::MacLowTransmissionParameters::EnableAck(), ns3::MacLowTransmissionParameters::EnableNextData(), ns3::WifiMacHeader::GetAddr1(), GetAmpduExist(), GetBlockAckThreshold(), ns3::MacLow::GetBssid(), GetFragmentPacket(), GetNextFragmentSize(), ns3::MacTxMiddle::GetNextSequenceNumberFor(), ns3::WifiRemoteStationManager::GetQosSupported(), ns3::WifiMacHeader::GetQosTid(), ns3::WifiMacHeader::GetSequenceControl(), ns3::Packet::GetSize(), ns3::WifiMacHeader::GetType(), ns3::Mac48Address::IsBroadcast(), ns3::WifiMacHeader::IsData(), ns3::Mac48Address::IsGroup(), IsLastFragment(), ns3::WifiMacHeader::IsQosAmsdu(), ns3::WifiMacHeader::IsQosBlockAck(), ns3::WifiMacHeader::IsQosData(), ns3::WifiMacHeader::IsRetry(), ns3::Txop::m_accessRequested, m_baManager, m_blockAckType, m_currentBar, ns3::Txop::m_currentHdr, m_currentIsFragmented, ns3::Txop::m_currentPacket, m_currentPacketTimestamp, ns3::Txop::m_currentParams, ns3::Txop::m_fragmentNumber, m_isAccessRequestedForRts, ns3::Txop::m_low, m_msduAggregator, m_qosBlockedDestinations, ns3::Txop::m_queue, m_startTxop, ns3::Txop::m_stationManager, ns3::Txop::m_txMiddle, MapDestAddressForAggregation(), MapSrcAddressForAggregation(), NeedFragmentation(), ns3::Simulator::Now(), NS_ASSERT, NS_LOG_DEBUG, NS_LOG_FUNCTION, SendBlockAckRequest(), ns3::WifiMacHeader::SetAddr3(), ns3::WifiMacHeader::SetFragmentNumber(), ns3::WifiMacHeader::SetNoMoreFragments(), ns3::WifiMacHeader::SetNoRetry(), ns3::WifiMacHeader::SetQosAmsdu(), ns3::WifiMacHeader::SetSequenceNumber(), SetupBlockAckIfNeeded(), ns3::MacLow::StartTransmission(), ns3::WifiRemoteStationManager::UpdateFragmentationThreshold(), VerifyBlockAck(), and ns3::WIFI_MAC_CTL_BACKREQ.
|
virtual |
Notify the EDCAF that collision has occurred.
Reimplemented from ns3::Txop.
Definition at line 418 of file qos-txop.cc.
References ns3::Txop::GetCw(), ns3::RandomVariableStream::GetInteger(), m_backoffTrace, ns3::Txop::m_rng, NS_LOG_FUNCTION, RestartAccessIfNeeded(), and ns3::Txop::StartBackoffNow().
|
virtual |
Notify the EDCAF that internal collision has occurred.
Reimplemented from ns3::Txop.
Definition at line 328 of file qos-txop.cc.
References ns3::WifiMacHeader::GetAddr1(), ns3::Mac48Address::GetBroadcast(), ns3::Txop::GetCw(), ns3::RandomVariableStream::GetInteger(), ns3::Packet::GetSize(), ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), m_backoffTrace, m_baManager, ns3::Txop::m_currentHdr, ns3::Txop::m_currentPacket, m_isAccessRequestedForRts, ns3::Txop::m_queue, ns3::Txop::m_rng, ns3::Txop::m_stationManager, ns3::Txop::m_txFailedCallback, ns3::Txop::NeedDataRetransmission(), ns3::Txop::NeedRtsRetransmission(), NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::WifiRemoteStationManager::ReportDataFailed(), ns3::WifiRemoteStationManager::ReportFinalDataFailed(), ns3::WifiRemoteStationManager::ReportFinalRtsFailed(), ns3::WifiRemoteStationManager::ReportRtsFailed(), ns3::Txop::ResetCw(), RestartAccessIfNeeded(), ns3::Txop::StartBackoffNow(), and ns3::Txop::UpdateFailedCw().
Ptr< const Packet > ns3::QosTxop::PeekNextRetransmitPacket | ( | WifiMacHeader & | header, |
uint8_t | tid, | ||
Time * | timestamp | ||
) |
Peek in retransmit queue and get the next packet without removing it from the queue.
header | Wi-Fi header. |
tid | traffic ID. |
timestamp | the timestamp. |
Definition at line 154 of file qos-txop.cc.
References m_baManager.
uint16_t ns3::QosTxop::PeekNextSequenceNumberFor | ( | 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 148 of file qos-txop.cc.
References ns3::Txop::m_txMiddle, and ns3::MacTxMiddle::PeekNextSequenceNumberFor().
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 1216 of file qos-txop.cc.
References ns3::WifiMacHeader::GetAddr1(), ns3::Txop::m_queue, ns3::Txop::m_stationManager, NS_LOG_FUNCTION, ns3::WifiRemoteStationManager::PrepareForQueue(), and StartAccessIfNeeded().
Referenced by SendDelbaFrame().
void ns3::QosTxop::RemoveRetransmitPacket | ( | uint8_t | tid, |
Mac48Address | recipient, | ||
uint16_t | seqnumber | ||
) |
Remove a packet after you peek in the retransmit queue and get it.
tid | traffic ID of the packet to be removed. |
recipient | address of the recipient the packet was intended for. |
seqnumber | sequence number of the packet to be removed. |
Definition at line 160 of file qos-txop.cc.
References m_baManager.
|
virtual |
Restart access request if needed.
Reimplemented from ns3::Txop.
Definition at line 708 of file qos-txop.cc.
References ns3::WifiMacHeader::GetAddr1(), ns3::MacLow::GetDataTxVector(), ns3::Txop::IsAccessRequested(), m_baManager, ns3::Txop::m_channelAccessManager, ns3::Txop::m_currentHdr, ns3::Txop::m_currentPacket, m_currentPacketTimestamp, m_isAccessRequestedForRts, ns3::Txop::m_low, m_qosBlockedDestinations, ns3::Txop::m_queue, ns3::Txop::m_stationManager, ns3::WifiRemoteStationManager::NeedRts(), NS_LOG_FUNCTION, and ns3::ChannelAccessManager::RequestAccess().
Referenced by GotAck(), GotAddBaResponse(), GotBlockAck(), MissedAck(), MissedBlockAck(), MissedCts(), NotifyCollision(), and NotifyInternalCollision().
|
private |
Sends an ADDBA Request to establish a block ack agreement with sta addressed by recipient for tid tid.
recipient | address of the recipient. |
tid | traffic ID. |
startSeq | starting sequence. |
timeout | timeout value. |
immediateBAck | flag to indicate whether immediate block ack is used. |
Definition at line 1435 of file qos-txop.cc.
References ns3::Packet::AddHeader(), ns3::WifiActionHeader::BLOCK_ACK, ns3::WifiActionHeader::BLOCK_ACK_ADDBA_REQUEST, ns3::WifiActionHeader::ActionValue::blockAck, ns3::MacLowTransmissionParameters::DisableNextData(), ns3::MacLowTransmissionParameters::DisableRts(), ns3::MacLowTransmissionParameters::EnableAck(), ns3::MacLow::GetAddress(), ns3::MacTxMiddle::GetNextSequenceNumberFor(), m_baManager, ns3::Txop::m_currentHdr, ns3::Txop::m_currentPacket, ns3::Txop::m_currentParams, ns3::Txop::m_low, ns3::Txop::m_stationManager, ns3::Txop::m_txMiddle, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::WifiActionHeader::SetAction(), ns3::WifiMacHeader::SetAddr1(), ns3::WifiMacHeader::SetAddr2(), ns3::WifiMacHeader::SetAddr3(), ns3::MgtAddBaRequestHeader::SetAmsduSupport(), ns3::WifiMacHeader::SetDsNotFrom(), ns3::WifiMacHeader::SetDsNotTo(), ns3::WifiMacHeader::SetFragmentNumber(), ns3::WifiMacHeader::SetNoMoreFragments(), ns3::WifiMacHeader::SetNoRetry(), ns3::WifiMacHeader::SetSequenceNumber(), ns3::WifiMacHeader::SetType(), ns3::MacLow::StartTransmission(), timeout, ns3::WifiRemoteStationManager::UpdateFragmentationThreshold(), and ns3::WIFI_MAC_MGT_ACTION.
Referenced by SetupBlockAckIfNeeded().
|
private |
After that all packets, for which a block ack agreement was established, have been transmitted, we have to send a block ack request.
bar | the block ack request. |
Definition at line 1362 of file qos-txop.cc.
References ns3::Bar::bar, ns3::BASIC_BLOCK_ACK, ns3::COMPRESSED_BLOCK_ACK, ns3::MacLowTransmissionParameters::DisableNextData(), ns3::MacLowTransmissionParameters::DisableRts(), ns3::MacLowTransmissionParameters::EnableAck(), ns3::MacLowTransmissionParameters::EnableBasicBlockAck(), ns3::MacLowTransmissionParameters::EnableCompressedBlockAck(), ns3::MacLow::GetAddress(), ns3::MacLow::GetBssid(), ns3::Bar::immediate, m_blockAckType, ns3::Txop::m_currentHdr, ns3::Txop::m_currentPacket, ns3::Txop::m_currentParams, ns3::Txop::m_low, ns3::MULTI_TID_BLOCK_ACK, NS_FATAL_ERROR, NS_LOG_FUNCTION, ns3::Bar::recipient, ns3::WifiMacHeader::SetAddr1(), ns3::WifiMacHeader::SetAddr2(), ns3::WifiMacHeader::SetAddr3(), ns3::WifiMacHeader::SetDsNotFrom(), ns3::WifiMacHeader::SetDsNotTo(), ns3::WifiMacHeader::SetNoMoreFragments(), ns3::WifiMacHeader::SetNoRetry(), ns3::WifiMacHeader::SetType(), ns3::MacLow::StartTransmission(), and ns3::WIFI_MAC_CTL_BACKREQ.
Referenced by NotifyAccessGranted(), and StartNextPacket().
void ns3::QosTxop::SendDelbaFrame | ( | Mac48Address | addr, |
uint8_t | tid, | ||
bool | byOriginator | ||
) |
Sends DELBA frame to cancel a block ack agreement with sta addressed by addr for tid tid.
addr | address of the recipient. |
tid | traffic ID. |
byOriginator | flag to indicate whether this is set by the originator. |
Definition at line 1496 of file qos-txop.cc.
References ns3::Packet::AddHeader(), ns3::WifiActionHeader::BLOCK_ACK, ns3::WifiActionHeader::BLOCK_ACK_DELBA, ns3::WifiActionHeader::ActionValue::blockAck, ns3::MacLow::DestroyBlockAckAgreement(), ns3::MacLow::GetAddress(), m_baManager, ns3::Txop::m_low, NS_LOG_FUNCTION, PushFront(), ns3::WifiActionHeader::SetAction(), ns3::WifiMacHeader::SetAddr1(), ns3::WifiMacHeader::SetAddr2(), ns3::WifiMacHeader::SetAddr3(), ns3::MgtDelBaHeader::SetByOriginator(), ns3::MgtDelBaHeader::SetByRecipient(), ns3::WifiMacHeader::SetDsNotFrom(), ns3::WifiMacHeader::SetDsNotTo(), ns3::MgtDelBaHeader::SetTid(), ns3::WifiMacHeader::SetType(), and ns3::WIFI_MAC_MGT_ACTION.
Referenced by CompleteConfig(), ns3::MacLow::CreateBlockAckAgreement(), and ns3::MacLow::ResetBlockAckInactivityTimerIfNeeded().
void ns3::QosTxop::SetAccessCategory | ( | AcIndex | ac | ) |
Set the access category of this EDCAF.
ac | access category. |
Definition at line 1163 of file qos-txop.cc.
References m_ac, and NS_LOG_FUNCTION.
Referenced by AmpduAggregationTest::DoRun(), and TwoLevelAggregationTest::DoRun().
void ns3::QosTxop::SetAmpduExist | ( | Mac48Address | dest, |
bool | enableAmpdu | ||
) |
Set indication whether A-MPDU is used to transmit data to a peer station.
dest | address of peer station. |
enableAmpdu | flag whether A-MPDU is used or not. |
Definition at line 1309 of file qos-txop.cc.
References m_aMpduEnabled, and NS_LOG_FUNCTION.
void ns3::QosTxop::SetBlockAckInactivityTimeout | ( | uint16_t | timeout | ) |
Set the Block Ack inactivity timeout.
timeout | the Block Ack inactivity timeout. |
Definition at line 1421 of file qos-txop.cc.
References m_blockAckInactivityTimeout, NS_LOG_FUNCTION, and timeout.
Referenced by ns3::RegularWifiMac::SetBeBlockAckInactivityTimeout(), ns3::RegularWifiMac::SetBkBlockAckInactivityTimeout(), ns3::RegularWifiMac::SetViBlockAckInactivityTimeout(), and ns3::RegularWifiMac::SetVoBlockAckInactivityTimeout().
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 1413 of file qos-txop.cc.
References m_baManager, m_blockAckThreshold, and NS_LOG_FUNCTION.
Referenced by ns3::RegularWifiMac::SetBeBlockAckThreshold(), ns3::RegularWifiMac::SetBkBlockAckThreshold(), ns3::RegularWifiMac::SetViBlockAckThreshold(), and ns3::RegularWifiMac::SetVoBlockAckThreshold().
void ns3::QosTxop::SetMpduAggregator | ( | const Ptr< MpduAggregator > | aggr | ) |
Set the aggregator used to construct A-MPDU subframes.
aggr | pointer to the MPDU aggregator. |
Definition at line 1209 of file qos-txop.cc.
References m_mpduAggregator, and NS_LOG_FUNCTION.
Referenced by AmpduAggregationTest::DoRun(), and TwoLevelAggregationTest::DoRun().
void ns3::QosTxop::SetMsduAggregator | ( | const Ptr< MsduAggregator > | aggr | ) |
Set the aggregator used to construct A-MSDU subframes.
aggr | pointer to the MSDU aggregator. |
Definition at line 1202 of file qos-txop.cc.
References m_msduAggregator, and NS_LOG_FUNCTION.
Referenced by TwoLevelAggregationTest::DoRun().
void ns3::QosTxop::SetTypeOfStation | ( | TypeOfStation | type | ) |
Set type of station with the given type.
type | the type of station. |
Definition at line 129 of file qos-txop.cc.
References m_typeOfStation, and NS_LOG_FUNCTION.
|
private |
If number of packets in the queue reaches m_blockAckThreshold value, an ADDBA Request frame is sent to destination in order to setup a block ack.
Definition at line 1342 of file qos-txop.cc.
References ns3::WifiMacHeader::GetAddr1(), GetBlockAckThreshold(), ns3::MpduAggregator::GetMaxAmpduSize(), ns3::MacTxMiddle::GetNextSeqNumberByTidAndAddress(), ns3::WifiMacHeader::GetQosTid(), ns3::WifiRemoteStationManager::HasHeSupported(), ns3::WifiRemoteStationManager::HasVhtSupported(), m_blockAckInactivityTimeout, ns3::Txop::m_currentHdr, m_mpduAggregator, ns3::Txop::m_queue, ns3::Txop::m_stationManager, ns3::Txop::m_txMiddle, NS_LOG_FUNCTION, and SendAddBaRequest().
Referenced by NotifyAccessGranted().
|
virtual |
Set WifiRemoteStationsManager this QosTxop is associated to.
remoteManager | WifiRemoteStationManager. |
Reimplemented from ns3::Txop.
Definition at line 121 of file qos-txop.cc.
References m_baManager, ns3::Txop::m_stationManager, NS_LOG_FUNCTION, and ns3::Txop::SetWifiRemoteStationManager().
Referenced by AmpduAggregationTest::DoRun(), and TwoLevelAggregationTest::DoRun().
|
virtual |
Request access from DCF manager if needed.
Reimplemented from ns3::Txop.
Definition at line 749 of file qos-txop.cc.
References ns3::WifiMacHeader::GetAddr1(), ns3::MacLow::GetDataTxVector(), ns3::Txop::IsAccessRequested(), m_baManager, ns3::Txop::m_channelAccessManager, ns3::Txop::m_currentPacket, m_currentPacketTimestamp, m_isAccessRequestedForRts, ns3::Txop::m_low, m_qosBlockedDestinations, ns3::Txop::m_queue, ns3::Txop::m_stationManager, ns3::WifiRemoteStationManager::NeedRts(), and ns3::ChannelAccessManager::RequestAccess().
Referenced by EndTxNoAck(), and PushFront().
|
virtual |
Start transmission for the next packet if allowed by the TxopLimit.
Reimplemented from ns3::Txop.
Definition at line 812 of file qos-txop.cc.
References CompleteTx(), ns3::MacLowTransmissionParameters::DisableAck(), ns3::MacLowTransmissionParameters::DisableNextData(), ns3::MacLowTransmissionParameters::EnableAck(), ns3::WifiMacHeader::GetAddr1(), GetAmpduExist(), ns3::Txop::GetLow(), ns3::MacTxMiddle::GetNextSequenceNumberFor(), ns3::WifiMacHeader::GetQosTid(), ns3::Txop::GetTxopLimit(), ns3::WifiMacHeader::IsQosBlockAck(), ns3::WifiMacHeader::IsQosData(), ns3::Time::IsStrictlyPositive(), ns3::Time::IsZero(), m_baManager, m_currentBar, ns3::Txop::m_currentHdr, ns3::Txop::m_currentPacket, ns3::Txop::m_currentParams, ns3::Txop::m_fragmentNumber, ns3::Txop::m_queue, m_startTxop, ns3::Txop::m_stationManager, ns3::Txop::m_txMiddle, m_txopTrace, ns3::Simulator::Now(), NS_ASSERT, NS_LOG_DEBUG, NS_LOG_FUNCTION, SendBlockAckRequest(), ns3::WifiMacHeader::SetFragmentNumber(), ns3::WifiMacHeader::SetNoMoreFragments(), ns3::WifiMacHeader::SetNoRetry(), ns3::WifiMacHeader::SetSequenceNumber(), ns3::MacLow::StartTransmission(), ns3::WifiRemoteStationManager::UpdateFragmentationThreshold(), and VerifyBlockAck().
|
private |
Verifies if dequeued packet has to be transmitted with ack policy Block Ack.
This happens if an established block ack agreement exists with the receiver.
Definition at line 1281 of file qos-txop.cc.
References ns3::WifiMacHeader::BLOCK_ACK, ns3::OriginatorBlockAckAgreement::ESTABLISHED, ns3::WifiMacHeader::GetAddr1(), ns3::MpduAggregator::GetMaxAmpduSize(), GetMpduAggregator(), ns3::WifiMacHeader::GetQosTid(), ns3::WifiMacHeader::GetSequenceNumber(), ns3::OriginatorBlockAckAgreement::INACTIVE, m_baManager, ns3::Txop::m_currentHdr, NS_LOG_FUNCTION, and ns3::WifiMacHeader::SetQosAckPolicy().
Referenced by NotifyAccessGranted(), and StartNextPacket().
|
friend |
Allow test cases to access private members.
Definition at line 94 of file qos-txop.h.
|
friend |
allow AggregationCapableTransmissionListener class access
Definition at line 425 of file qos-txop.h.
|
private |
the access category
Definition at line 540 of file qos-txop.h.
Referenced by CompleteConfig(), and SetAccessCategory().
std::map<Mac48Address, bool> ns3::QosTxop::m_aMpduEnabled |
list containing flags whether A-MPDU is enabled for a given destination address
Definition at line 96 of file qos-txop.h.
Referenced by GetAmpduExist(), and SetAmpduExist().
|
private |
backoff trace value
Definition at line 555 of file qos-txop.h.
Referenced by DoInitialize(), EndTxNoAck(), GetTypeId(), GotAck(), GotBlockAck(), MissedAck(), MissedBlockAck(), MissedCts(), NotifyCollision(), and NotifyInternalCollision().
|
private |
the Block ACK manager
Definition at line 545 of file qos-txop.h.
Referenced by CompleteAmpduTransfer(), CompleteConfig(), CompleteMpduTx(), CompleteTx(), DoDispose(), AmpduAggregationTest::DoRun(), GetBaAgreementExists(), GotAck(), GotAddBaResponse(), GotBlockAck(), GotDelBaFrame(), NeedBarRetransmission(), NotifyAccessGranted(), NotifyInternalCollision(), PeekNextRetransmitPacket(), QosTxop(), RemoveRetransmitPacket(), RestartAccessIfNeeded(), SendAddBaRequest(), SendDelbaFrame(), SetBlockAckThreshold(), SetWifiRemoteStationManager(), StartAccessIfNeeded(), StartNextPacket(), and VerifyBlockAck().
|
private |
the Block ACK inactivity timeout
Definition at line 549 of file qos-txop.h.
Referenced by SetBlockAckInactivityTimeout(), and SetupBlockAckIfNeeded().
|
private |
the Block ACK threshold
Definition at line 546 of file qos-txop.h.
Referenced by GetBlockAckThreshold(), and SetBlockAckThreshold().
|
private |
the Block ACK type
Definition at line 547 of file qos-txop.h.
Referenced by NotifyAccessGranted(), QosTxop(), and SendBlockAckRequest().
|
private |
the current BAR
Definition at line 550 of file qos-txop.h.
Referenced by MissedAck(), MissedBlockAck(), MissedCts(), NotifyAccessGranted(), and StartNextPacket().
|
private |
flag whether current packet is fragmented
Definition at line 553 of file qos-txop.h.
Referenced by GotAck(), and NotifyAccessGranted().
|
private |
the current packet timestamp
Definition at line 548 of file qos-txop.h.
Referenced by CompleteTx(), NotifyAccessGranted(), RestartAccessIfNeeded(), and StartAccessIfNeeded().
|
private |
CW trace value.
Definition at line 556 of file qos-txop.h.
Referenced by DoInitialize(), EndTxNoAck(), GetTypeId(), GotAck(), GotBlockAck(), MissedAck(), MissedBlockAck(), and MissedCts().
|
private |
flag whether access is requested to transmit a RTS frame
Definition at line 552 of file qos-txop.h.
Referenced by NotifyAccessGranted(), NotifyInternalCollision(), RestartAccessIfNeeded(), and StartAccessIfNeeded().
|
private |
A-MPDU aggregator.
Definition at line 542 of file qos-txop.h.
Referenced by DoDispose(), GetMpduAggregator(), SetMpduAggregator(), and SetupBlockAckIfNeeded().
|
private |
A-MSDU aggregator.
Definition at line 541 of file qos-txop.h.
Referenced by DoDispose(), GetMsduAggregator(), NotifyAccessGranted(), and SetMsduAggregator().
|
private |
QOS blocked destinations.
Definition at line 544 of file qos-txop.h.
Referenced by DoDispose(), NotifyAccessGranted(), QosTxop(), RestartAccessIfNeeded(), and StartAccessIfNeeded().
|
private |
the start TXOP time
Definition at line 551 of file qos-txop.h.
Referenced by EndTxNoAck(), GetTxopRemaining(), GotAck(), GotBlockAck(), NotifyAccessGranted(), and StartNextPacket().
|
private |
TXOP trace callback.
Definition at line 557 of file qos-txop.h.
Referenced by EndTxNoAck(), GetTypeId(), GotAck(), GotBlockAck(), and StartNextPacket().
|
private |
the type of station
Definition at line 543 of file qos-txop.h.
Referenced by GetTypeOfStation(), and SetTypeOfStation().