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 | CompleteConfig (void) |
Complete block ack configuration. More... | |
void | CompleteMpduTx (Ptr< WifiMacQueueItem > mpdu) |
Stores an MPDU (part of an A-MPDU) in block ack agreement (i.e. More... | |
Ptr< WifiMacQueueItem > | DequeuePeekedFrame (Ptr< const WifiMacQueueItem > peekedItem, WifiTxVector txVector, bool aggregate=true, uint32_t ampduSize=0, Time ppduDurationLimit=Time::Min()) |
Dequeue the frame that has been previously peeked by calling PeekNextFrame. More... | |
void | EndTxNoAck (void) |
Event handler when a transmission that does not require an Ack has completed. More... | |
Ptr< WifiAckPolicySelector > | GetAckPolicySelector (void) const |
Return the ack policy selector. More... | |
Time | GetAddBaResponseTimeout (void) const |
Get the timeout for ADDBA response. More... | |
bool | GetAmpduExist (Mac48Address dest) const |
Return whether A-MPDU is used to transmit data to a peer station. More... | |
bool | GetBaAgreementEstablished (Mac48Address address, uint8_t tid) const |
uint16_t | GetBaBufferSize (Mac48Address address, uint8_t tid) const |
uint16_t | GetBaStartingSequence (Mac48Address address, uint8_t tid) const |
uint8_t | GetBlockAckThreshold (void) const |
Return the current threshold for block ack mechanism. More... | |
Time | GetFailedAddBaTimeout (void) const |
Get the timeout for failed BA agreement. More... | |
Ptr< Packet > | GetFragmentPacket (WifiMacHeader *hdr) |
Get the next fragment from the packet with appropriate Wifi header for the fragment. More... | |
uint16_t | GetNextSequenceNumberFor (const WifiMacHeader *hdr) |
Return the next sequence number for the given header. More... | |
MacLowTransmissionParameters | GetTransmissionParameters (Ptr< const WifiMacQueueItem > frame) const |
Compute the MacLow transmission parameters for the given frame. More... | |
Time | GetTxopRemaining (void) const |
Return the remaining duration in the current TXOP. 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, double dataSnr, WifiTxVector dataTxVector) |
Event handler when a BlockAck is received. More... | |
void | GotDelBaFrame (const MgtDelBaHeader *delBaHdr, Mac48Address recipient) |
Event handler when a DELBA frame is received. More... | |
virtual bool | HasFramesToTransmit (void) |
Check if the Txop has frames to transmit. More... | |
bool | IsQosTxop (void) 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 BlockAck timeout has occurred. More... | |
bool | NeedBarRetransmission (void) |
Check if BlockAckRequest should be re-transmitted. More... | |
bool | NeedFragmentation (void) const |
Check if the current packet should be fragmented. More... | |
void | NotifyAccessGranted (void) |
Notify the Txop that access has been granted. More... | |
void | NotifyInternalCollision (void) |
Notify the Txop that internal collision has occurred. More... | |
void | NotifyMissedCts (std::list< Ptr< WifiMacQueueItem >> mpduList) |
Event handler when a CTS timeout has occurred. More... | |
Ptr< const WifiMacQueueItem > | PeekNextFrame (uint8_t tid=8, Mac48Address recipient=Mac48Address::GetBroadcast()) |
Peek the next frame to transmit to the given receiver and of the given TID from the block ack manager retransmit queue first and, if not found, from the EDCA queue. More... | |
uint16_t | PeekNextSequenceNumberFor (const WifiMacHeader *hdr) |
Return the next sequence number for the Traffic ID and destination, but do not pick it (i.e. More... | |
Ptr< const WifiMacQueueItem > | PrepareBlockAckRequest (Mac48Address recipient, uint8_t tid) const |
void | PushFront (Ptr< const Packet > packet, const WifiMacHeader &hdr) |
void | RestartAccessIfNeeded (void) |
Restart access request if needed. More... | |
void | ScheduleBar (Ptr< const WifiMacQueueItem > bar, bool skipIfNoDataQueued=false) |
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 | SetAckPolicySelector (Ptr< WifiAckPolicySelector > ackSelector) |
Set the ack policy selector. More... | |
void | SetAddBaResponseTimeout (Time addBaResponseTimeout) |
Set the timeout to wait for ADDBA response. 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 BlockAck inactivity timeout. More... | |
void | SetBlockAckThreshold (uint8_t threshold) |
Set threshold for block ack mechanism. More... | |
void | SetFailedAddBaTimeout (Time failedAddBaTimeout) |
Set the timeout for failed BA agreement. More... | |
void | SetTypeOfStation (TypeOfStation type) |
Set type of station with the given type. More... | |
void | SetWifiRemoteStationManager (const Ptr< WifiRemoteStationManager > remoteManager) |
Set WifiRemoteStationsManager this Txop is associated to. More... | |
void | StartAccessIfNeeded (void) |
Request access from Txop if needed. More... | |
void | StartNextPacket (void) |
Start transmission for the next packet if allowed by the TxopLimit. More... | |
void | UpdateCurrentPacket (Ptr< WifiMacQueueItem > mpdu) |
Update the current packet this QosTxop is trying to transmit. 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 | MissedCts (void) |
Event handler when a CTS timeout has occurred. More... | |
virtual void | NotifyChannelSwitching (void) |
When a channel switching occurs, enqueued packets are removed. More... | |
virtual void | NotifyOff (void) |
When off operation occurs, the queue gets cleaned up. More... | |
virtual void | NotifyOn (void) |
When on operation occurs, channel access will be started. More... | |
virtual void | NotifySleep (void) |
When sleep operation occurs, if there is a pending packet transmission, it will be reinserted to the front of the queue. More... | |
virtual void | NotifyWakeUp (void) |
When wake up operation occurs, channel access will be restarted. More... | |
virtual void | Queue (Ptr< Packet > packet, const WifiMacHeader &hdr) |
void | 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... | |
template<> | |
Ptr< Object > | GetObject () const |
template<> | |
Ptr< Object > | GetObject (TypeId tid) const |
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 | AddBaResponseTimeout (Mac48Address recipient, uint8_t tid) |
Callback when ADDBA response is not received after timeout. 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 (void) 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 (void) const |
Calculate the size of the current TXOP fragment. More... | |
bool | IsLastFragment (void) const |
Check if the current fragment is the last fragment. 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... | |
bool | IsTxopFragmentation (void) const |
Check if the current packet is fragmented because of an exceeded TXOP duration. More... | |
void | ResetBa (Mac48Address recipient, uint8_t tid) |
Reset BA agreement after BA negotiation failed. 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... | |
bool | SetupBlockAckIfNeeded (void) |
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 | TerminateTxop (void) |
Update backoff and restart access if needed. More... | |
Private Attributes | |
AcIndex | m_ac |
the access category More... | |
Ptr< WifiAckPolicySelector > | m_ackPolicySelector |
the ack policy selector 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... | |
BlockAckType | m_blockAckType |
the BlockAck type More... | |
bool | m_currentIsFragmented |
flag whether current packet is fragmented More... | |
Time | m_currentPacketTimestamp |
the current packet timestamp More... | |
Time | m_failedAddBaTimeout |
timeout after failed BA agreement More... | |
bool | m_isAccessRequestedForRts |
flag whether access is requested to transmit a RTS frame More... | |
Ptr< QosBlockedDestinations > | m_qosBlockedDestinations |
the 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... | |
bool | m_useExplicitBarAfterMissedBlockAck |
flag whether explicit BlockAckRequest should be sent upon missed BlockAck Response More... | |
Friends | |
class | ::AmpduAggregationTest |
allow AmpduAggregationTest class access More... | |
class | ::HeAggregationTest |
allow HeAggregationTest class access More... | |
class | ::TwoLevelAggregationTest |
allow TwoLevelAggregationTest class access 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... | |
![]() | |
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 |
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_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... | |
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 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... | |
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:
Size of this type is 440 bytes (on a 64-bit architecture).
Definition at line 92 of file qos-txop.h.
ns3::QosTxop::QosTxop | ( | ) |
Definition at line 94 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 112 of file qos-txop.cc.
References NS_LOG_FUNCTION.
|
private |
Callback when ADDBA response is not received after timeout.
recipient | MAC address of recipient |
tid | traffic ID |
Definition at line 1708 of file qos-txop.cc.
References ns3::Txop::GenerateBackoff(), m_baManager, m_failedAddBaTimeout, NS_LOG_FUNCTION, ns3::OriginatorBlockAckAgreement::PENDING, ResetBa(), RestartAccessIfNeeded(), and ns3::Simulator::Schedule().
Referenced by GotAck().
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 1698 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 1688 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::CompleteConfig | ( | void | ) |
Complete block ack configuration.
Definition at line 1550 of file qos-txop.cc.
References m_ac, m_baManager, ns3::Txop::m_low, ns3::Txop::m_txMiddle, ns3::MakeCallback(), NS_LOG_FUNCTION, and SendDelbaFrame().
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 1519 of file qos-txop.cc.
References GetBaAgreementEstablished(), m_baManager, and NS_ASSERT.
Ptr< WifiMacQueueItem > ns3::QosTxop::DequeuePeekedFrame | ( | Ptr< const WifiMacQueueItem > | peekedItem, |
WifiTxVector | txVector, | ||
bool | aggregate = true , |
||
uint32_t | ampduSize = 0 , |
||
Time | ppduDurationLimit = Time::Min () |
||
) |
Dequeue the frame that has been previously peeked by calling PeekNextFrame.
If the peeked frame is a QoS Data frame, it is actually dequeued 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 of the given size) and its transmission time does not exceed the given PPDU duration limit (if distinct from Time::Min ()). If the peeked frame is a unicast QoS Data frame stored in the EDCA queue, attempt to perform A-MSDU aggregation (while meeting the constraints mentioned above) if aggregate is true and assign a sequence number to the dequeued frame.
peekedItem | the peeked frame. |
txVector | the TX vector used to transmit the peeked frame |
aggregate | whether to attempt A-MSDU aggregation |
ampduSize | the size of the existing A-MPDU in bytes, if any |
ppduDurationLimit | the limit on the PPDU duration |
Definition at line 318 of file qos-txop.cc.
References GetBaAgreementEstablished(), GetBaBufferSize(), GetBaStartingSequence(), ns3::Mac48Address::IsBroadcast(), ns3::IsInWindow(), m_baManager, ns3::Txop::m_low, m_qosBlockedDestinations, ns3::Txop::m_queue, ns3::Txop::m_txMiddle, NS_ASSERT, NS_LOG_DEBUG, NS_LOG_FUNCTION, and ns3::QosUtilsIsOldPacket().
Referenced by NotifyAccessGranted(), StartNextPacket(), and ns3::MacLow::StartTransmission().
|
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 118 of file qos-txop.cc.
References ns3::Txop::DoDispose(), m_ackPolicySelector, m_baManager, 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 1679 of file qos-txop.cc.
References ns3::Txop::GenerateBackoff(), ns3::Txop::GetCw(), ns3::Txop::m_cwTrace, NS_LOG_FUNCTION, and ns3::Txop::ResetCw().
|
virtual |
Event handler when a transmission that does not require an Ack has completed.
Reimplemented from ns3::Txop.
Definition at line 1173 of file qos-txop.cc.
References ns3::Txop::m_currentPacket, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::Txop::ResetCw(), and TerminateTxop().
Ptr< WifiAckPolicySelector > ns3::QosTxop::GetAckPolicySelector | ( | void | ) | const |
Return the ack policy selector.
Definition at line 188 of file qos-txop.cc.
References m_ackPolicySelector.
Referenced by ns3::MacLow::StartTransmission().
Time ns3::QosTxop::GetAddBaResponseTimeout | ( | void | ) | const |
Get the timeout for ADDBA response.
Definition at line 1744 of file qos-txop.cc.
References m_addBaResponseTimeout.
Referenced by GetTypeId().
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 1501 of file qos-txop.cc.
References m_aMpduEnabled, and NS_LOG_FUNCTION.
Referenced by MissedAck(), MissedBlockAck(), and NeedFragmentation().
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 128 of file qos-txop.cc.
References first::address, ns3::OriginatorBlockAckAgreement::ESTABLISHED, and m_baManager.
Referenced by CompleteMpduTx(), DequeuePeekedFrame(), GotAck(), IsQosOldPacket(), MissedAck(), NeedFragmentation(), NotifyAccessGranted(), NotifyMissedCts(), PeekNextFrame(), and ns3::ConstantWifiAckPolicySelector::UpdateTxParams().
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 134 of file qos-txop.cc.
References first::address, and m_baManager.
Referenced by DequeuePeekedFrame(), GetTransmissionParameters(), PeekNextFrame(), and ns3::ConstantWifiAckPolicySelector::UpdateTxParams().
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 140 of file qos-txop.cc.
References first::address, and m_baManager.
Referenced by DequeuePeekedFrame(), IsQosOldPacket(), PeekNextFrame(), and ns3::ConstantWifiAckPolicySelector::UpdateTxParams().
uint8_t ns3::QosTxop::GetBlockAckThreshold | ( | void | ) | const |
Return the current threshold for block ack mechanism.
Definition at line 1574 of file qos-txop.cc.
References m_blockAckThreshold, and NS_LOG_FUNCTION.
Referenced by NotifyAccessGranted(), and SetupBlockAckIfNeeded().
Time ns3::QosTxop::GetFailedAddBaTimeout | ( | void | ) | const |
Get the timeout for failed BA agreement.
Definition at line 1757 of file qos-txop.cc.
References m_failedAddBaTimeout.
Referenced by GetTypeId().
|
privatevirtual |
Calculate the offset for the current fragment.
Reimplemented from ns3::Txop.
Definition at line 1345 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 1377 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 1315 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().
|
privatevirtual |
Calculate the size of the next fragment.
Reimplemented from ns3::Txop.
Definition at line 1330 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 | ( | const WifiMacHeader * | hdr | ) |
Return the next sequence number for the given header.
hdr | Wi-Fi header. |
Definition at line 215 of file qos-txop.cc.
References ns3::Txop::m_txMiddle.
|
private |
Calculate the size of the next TXOP fragment.
fragmentNumber | number of the next fragment |
Definition at line 1296 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 1257 of file qos-txop.cc.
References ns3::Packet::GetSize(), GetTxopFragmentSize(), ns3::Txop::m_currentPacket, and NS_LOG_DEBUG.
Referenced by GetNextTxopFragmentSize(), and IsLastFragment().
MacLowTransmissionParameters ns3::QosTxop::GetTransmissionParameters | ( | Ptr< const WifiMacQueueItem > | frame | ) | const |
Compute the MacLow transmission parameters for the given frame.
Allowed frames are those handled by a QosTxop (QoS data frames, BlockAckReq frames, ADDBA Request/Response, DELBA Request).
frame | the given frame |
Definition at line 419 of file qos-txop.cc.
References ns3::BASIC_BLOCK_ACK, ns3::COMPRESSED_BLOCK_ACK, ns3::MacLowTransmissionParameters::DisableAck(), ns3::MacLowTransmissionParameters::DisableNextData(), ns3::MacLowTransmissionParameters::DisableRts(), ns3::MacLowTransmissionParameters::EnableAck(), ns3::MacLowTransmissionParameters::EnableBlockAck(), ns3::MacLowTransmissionParameters::EnableRts(), ns3::EXTENDED_COMPRESSED_BLOCK_ACK, GetBaBufferSize(), ns3::CtrlBAckRequestHeader::GetTidInfo(), ns3::Mac48Address::IsBroadcast(), m_blockAckType, ns3::Txop::m_low, ns3::Txop::m_stationManager, ns3::MULTI_TID_BLOCK_ACK, ns3::WifiRemoteStationManager::NeedRts(), NS_FATAL_ERROR, and NS_LOG_FUNCTION.
Referenced by NotifyAccessGranted(), and StartNextPacket().
|
private |
Calculate the offset for the fragment.
fragmentNumber | number of the fragment |
Definition at line 1270 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 1224 of file qos-txop.cc.
References 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().
|
virtual |
Return the remaining duration in the current TXOP.
Reimplemented from ns3::Txop.
Definition at line 1160 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 NotifyAccessGranted(), StartNextPacket(), and ns3::ConstantWifiAckPolicySelector::UpdateTxParams().
|
static |
Get the type ID.
Definition at line 54 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().
TypeOfStation ns3::QosTxop::GetTypeOfStation | ( | void | ) | const |
Return type of station.
Definition at line 201 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 758 of file qos-txop.cc.
References AddBaResponseTimeout(), ns3::WifiActionHeader::BLOCK_ACK, ns3::WifiActionHeader::BLOCK_ACK_ADDBA_REQUEST, ns3::WifiActionHeader::BLOCK_ACK_DELBA, ns3::WifiActionHeader::ActionValue::blockAck, ns3::Packet::Copy(), ns3::WifiActionHeader::GetAction(), ns3::WifiMacHeader::GetAddr1(), GetBaAgreementEstablished(), ns3::WifiActionHeader::GetCategory(), ns3::WifiMacHeader::GetQosTid(), ns3::Packet::GetSize(), ns3::MgtAddBaRequestHeader::GetTid(), ns3::MgtDelBaHeader::GetTid(), ns3::MacLowTransmissionParameters::HasNextPacket(), 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(), m_addBaResponseTimeout, m_baManager, ns3::Txop::m_currentHdr, m_currentIsFragmented, ns3::Txop::m_currentPacket, m_currentPacketTimestamp, ns3::Txop::m_currentParams, ns3::Txop::m_low, ns3::Txop::m_txOkCallback, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::Packet::PeekHeader(), ns3::Packet::RemoveHeader(), ns3::Txop::ResetCw(), and ns3::Simulator::Schedule().
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 1446 of file qos-txop.cc.
References ns3::WifiMacHeader::GetAddr1(), ns3::WifiMacHeader::GetQosTid(), ns3::MgtAddBaResponseHeader::GetStatusCode(), ns3::MgtAddBaResponseHeader::GetTid(), ns3::WifiMacHeader::IsQosData(), ns3::StatusCode::IsSuccess(), m_baManager, ns3::Txop::m_currentHdr, ns3::Txop::m_currentPacket, m_currentPacketTimestamp, NS_LOG_DEBUG, NS_LOG_FUNCTION, and RestartAccessIfNeeded().
|
virtual |
Event handler when a BlockAck is received.
blockAck | BlockAck header. |
recipient | address of the recipient. |
rxSnr | SNR of the BlockAck itself in linear scale. |
dataSnr | reported data SNR from the peer in linear scale. |
dataTxVector | TXVECTOR used to send the Data. |
Reimplemented from ns3::Txop.
Definition at line 1488 of file qos-txop.cc.
References ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), m_baManager, ns3::Txop::m_currentHdr, ns3::Txop::m_currentPacket, ns3::Txop::m_txOkCallback, NS_LOG_DEBUG, NS_LOG_FUNCTION, and ns3::Txop::ResetCw().
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 1480 of file qos-txop.cc.
References ns3::MgtDelBaHeader::GetTid(), m_baManager, NS_LOG_DEBUG, and NS_LOG_FUNCTION.
|
virtual |
Check if the Txop has frames to transmit.
Reimplemented from ns3::Txop.
Definition at line 207 of file qos-txop.cc.
References m_baManager, ns3::Txop::m_currentPacket, ns3::Txop::m_queue, and NS_LOG_FUNCTION.
|
privatevirtual |
Check if the current fragment is the last fragment.
Reimplemented from ns3::Txop.
Definition at line 1361 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().
|
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 227 of file qos-txop.cc.
References GetBaAgreementEstablished(), GetBaStartingSequence(), NS_LOG_FUNCTION, and ns3::QosUtilsIsOldPacket().
Referenced by PeekNextFrame().
|
virtual |
Check for QoS TXOP.
Reimplemented from ns3::Txop.
Definition at line 1763 of file qos-txop.cc.
|
private |
Check if the current packet is fragmented because of an exceeded TXOP duration.
Definition at line 1209 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 non-AP STA (in an infrastructure network): DA = Address3 If aggregating STA is an AP DA = Address1
hdr | Wi-Fi header |
Definition at line 1421 of file qos-txop.cc.
References ns3::ADHOC_STA, ns3::AP, ns3::WifiMacHeader::GetAddr1(), ns3::WifiMacHeader::GetAddr3(), GetTypeOfStation(), and NS_LOG_FUNCTION.
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 non-AP STA (in an infrastructure network): SA = Address2 If aggregating STA is an AP SA = Address3
hdr | Wi-Fi header |
Definition at line 1405 of file qos-txop.cc.
References ns3::ADHOC_STA, ns3::WifiMacHeader::GetAddr2(), ns3::WifiMacHeader::GetAddr3(), GetTypeOfStation(), NS_LOG_FUNCTION, and ns3::STA.
|
virtual |
Event handler when an Ack is missed.
Reimplemented from ns3::Txop.
Definition at line 818 of file qos-txop.cc.
References ns3::WifiActionHeader::BLOCK_ACK, ns3::Txop::GenerateBackoff(), ns3::WifiMacHeader::GetAddr1(), GetAmpduExist(), GetBaAgreementEstablished(), ns3::WifiActionHeader::GetCategory(), ns3::Txop::GetCw(), ns3::WifiMacHeader::GetQosTid(), ns3::Packet::GetSize(), ns3::GetTid(), ns3::WifiMacHeader::IsAction(), ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), ns3::WifiMacHeader::IsQosData(), m_baManager, ns3::Txop::m_currentHdr, ns3::Txop::m_currentPacket, m_currentPacketTimestamp, ns3::Txop::m_cwTrace, m_failedAddBaTimeout, ns3::Txop::m_stationManager, ns3::Txop::m_txFailedCallback, ns3::Txop::NeedDataRetransmission(), NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::Packet::PeekHeader(), ns3::OriginatorBlockAckAgreement::PENDING, ns3::WifiRemoteStationManager::ReportDataFailed(), ns3::WifiRemoteStationManager::ReportFinalDataFailed(), ResetBa(), ns3::Txop::ResetCw(), RestartAccessIfNeeded(), ns3::Simulator::Schedule(), ns3::WifiMacHeader::SetRetry(), and ns3::Txop::UpdateFailedCw().
Referenced by AmpduAggregationTest::DoRun().
|
virtual |
Event handler when a BlockAck timeout has occurred.
nMpdus | the number of MPDUs sent in the A-MPDU transmission that results in a BlockAck timeout. |
Reimplemented from ns3::Txop.
Definition at line 876 of file qos-txop.cc.
References ns3::WifiActionHeader::BLOCK_ACK, ns3::OriginatorBlockAckAgreement::ESTABLISHED, ns3::Txop::GenerateBackoff(), ns3::WifiMacHeader::GetAddr1(), GetAmpduExist(), ns3::WifiActionHeader::GetCategory(), ns3::Txop::GetCw(), ns3::Packet::GetSize(), ns3::GetTid(), ns3::WifiMacHeader::IsAction(), ns3::WifiMacHeader::IsBlockAckReq(), ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), m_baManager, ns3::Txop::m_currentHdr, ns3::Txop::m_currentPacket, ns3::Txop::m_cwTrace, m_failedAddBaTimeout, ns3::Txop::m_stationManager, ns3::Txop::m_txFailedCallback, m_useExplicitBarAfterMissedBlockAck, NeedBarRetransmission(), ns3::Txop::NeedDataRetransmission(), NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::Packet::PeekHeader(), ns3::OriginatorBlockAckAgreement::PENDING, PrepareBlockAckRequest(), ns3::WifiRemoteStationManager::ReportAmpduTxStatus(), ns3::WifiRemoteStationManager::ReportDataFailed(), ns3::WifiRemoteStationManager::ReportFinalDataFailed(), ResetBa(), ns3::Txop::ResetCw(), RestartAccessIfNeeded(), ns3::Simulator::Schedule(), ScheduleBar(), ns3::WifiMacHeader::SetRetry(), and ns3::Txop::UpdateFailedCw().
bool ns3::QosTxop::NeedBarRetransmission | ( | void | ) |
Check if BlockAckRequest should be re-transmitted.
Definition at line 1052 of file qos-txop.cc.
References ns3::WifiMacHeader::GetAddr1(), ns3::WifiMacHeader::GetQosTid(), 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 1183 of file qos-txop.cc.
References ns3::WifiMacHeader::GetAddr1(), GetAmpduExist(), GetBaAgreementEstablished(), ns3::WifiRemoteStationManager::GetHeSupported(), ns3::WifiRemoteStationManager::GetHtSupported(), ns3::Txop::GetLow(), ns3::Packet::GetSize(), ns3::GetTid(), ns3::Txop::GetTxopLimit(), ns3::WifiRemoteStationManager::GetVhtSupported(), 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(), NS_LOG_FUNCTION, and ns3::WIFI_MOD_CLASS_HT.
Referenced by NotifyAccessGranted().
|
virtual |
Notify the Txop that access has been granted.
Reimplemented from ns3::Txop.
Definition at line 502 of file qos-txop.cc.
References ns3::BASIC_BLOCK_ACK, ns3::Copy(), DequeuePeekedFrame(), ns3::MacLowTransmissionParameters::DisableNextData(), ns3::MacLowTransmissionParameters::DisableRts(), ns3::MacLowTransmissionParameters::EnableNextData(), ns3::WifiMacHeader::GetAddr1(), GetBaAgreementEstablished(), GetBlockAckThreshold(), GetFragmentPacket(), GetNextFragmentSize(), ns3::WifiRemoteStationManager::GetQosSupported(), ns3::WifiMacHeader::GetQosTid(), ns3::Packet::GetSize(), GetTransmissionParameters(), ns3::Txop::GetTxopLimit(), GetTxopRemaining(), ns3::Mac48Address::IsBroadcast(), ns3::WifiMacHeader::IsData(), ns3::Mac48Address::IsGroup(), IsLastFragment(), ns3::WifiMacHeader::IsQosAmsdu(), ns3::WifiMacHeader::IsQosData(), ns3::Time::IsStrictlyPositive(), ns3::Txop::m_accessRequested, m_baManager, m_blockAckType, 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, ns3::Txop::m_queue, m_startTxop, ns3::Txop::m_stationManager, ns3::Time::Min(), NeedFragmentation(), ns3::Simulator::Now(), NS_ASSERT, NS_LOG_DEBUG, NS_LOG_FUNCTION, PeekNextFrame(), ns3::OriginatorBlockAckAgreement::RESET, SetupBlockAckIfNeeded(), and ns3::WifiRemoteStationManager::UpdateFragmentationThreshold().
|
virtual |
Notify the Txop that internal collision has occurred.
Reimplemented from ns3::Txop.
Definition at line 630 of file qos-txop.cc.
References ns3::Txop::GenerateBackoff(), ns3::WifiMacHeader::GetAddr1(), ns3::Mac48Address::GetBroadcast(), ns3::Packet::GetSize(), ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), ns3::Txop::m_currentHdr, ns3::Txop::m_currentPacket, m_isAccessRequestedForRts, ns3::Txop::m_queue, ns3::Txop::m_stationManager, ns3::Txop::m_txFailedCallback, ns3::Txop::NeedDataRetransmission(), ns3::Txop::NeedRtsRetransmission(), NS_LOG_DEBUG, NS_LOG_FUNCTION, PeekNextFrame(), ns3::WifiRemoteStationManager::ReportDataFailed(), ns3::WifiRemoteStationManager::ReportFinalDataFailed(), ns3::WifiRemoteStationManager::ReportFinalRtsFailed(), ns3::WifiRemoteStationManager::ReportRtsFailed(), ns3::Txop::ResetCw(), RestartAccessIfNeeded(), and ns3::Txop::UpdateFailedCw().
void ns3::QosTxop::NotifyMissedCts | ( | std::list< Ptr< WifiMacQueueItem >> | mpduList | ) |
Event handler when a CTS timeout has occurred.
mpduList | the list of MPDUs that were not transmitted |
Definition at line 712 of file qos-txop.cc.
References ns3::Txop::GenerateBackoff(), ns3::WifiMacHeader::GetAddr1(), GetBaAgreementEstablished(), ns3::Txop::GetCw(), ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), m_baManager, ns3::Txop::m_currentHdr, ns3::Txop::m_currentPacket, ns3::Txop::m_cwTrace, ns3::Txop::m_stationManager, ns3::Txop::m_txFailedCallback, ns3::Txop::NeedRtsRetransmission(), NS_ASSERT, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::WifiRemoteStationManager::ReportFinalRtsFailed(), ns3::Txop::ResetCw(), RestartAccessIfNeeded(), and ns3::Txop::UpdateFailedCw().
Referenced by ns3::MacLow::CtsTimeout().
Ptr< const WifiMacQueueItem > ns3::QosTxop::PeekNextFrame | ( | uint8_t | tid = 8 , |
Mac48Address | recipient = Mac48Address::GetBroadcast () |
||
) |
Peek the next frame to transmit to the given receiver and of the given TID from the block ack manager retransmit queue first and, if not found, from the EDCA queue.
If tid is equal to 8 (invalid value) and recipient is the broadcast address, the first available frame is returned. Note that A-MSDU aggregation is never attempted (this is relevant if the frame is peeked from the EDCA queue). If the frame is peeked from the EDCA queue, it is assigned a sequence number peeked from MacTxMiddle.
tid | traffic ID. |
recipient | the receiver station address. |
Definition at line 253 of file qos-txop.cc.
References ns3::WifiMacQueue::EMPTY, GetBaAgreementEstablished(), GetBaBufferSize(), GetBaStartingSequence(), ns3::IsInWindow(), IsQosOldPacket(), m_baManager, m_qosBlockedDestinations, ns3::Txop::m_queue, ns3::Txop::m_txMiddle, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::WifiMacHeader::SetFragmentNumber(), ns3::WifiMacHeader::SetNoMoreFragments(), ns3::WifiMacHeader::SetNoRetry(), and ns3::WifiMacHeader::SetSequenceNumber().
Referenced by NotifyAccessGranted(), NotifyInternalCollision(), RestartAccessIfNeeded(), StartAccessIfNeeded(), StartNextPacket(), ns3::MacLow::StartTransmission(), and ns3::ConstantWifiAckPolicySelector::UpdateTxParams().
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 221 of file qos-txop.cc.
References ns3::Txop::m_txMiddle.
Ptr< const WifiMacQueueItem > ns3::QosTxop::PrepareBlockAckRequest | ( | Mac48Address | recipient, |
uint8_t | tid | ||
) | const |
address | recipient address |
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 146 of file qos-txop.cc.
References ns3::Packet::AddHeader(), ns3::Txop::m_low, NS_LOG_FUNCTION, 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 MissedBlockAck(), ns3::MacLow::SendDataAfterCts(), and ns3::MacLow::SendDataPacket().
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 1437 of file qos-txop.cc.
References ns3::Txop::m_queue, NS_LOG_FUNCTION, and StartAccessIfNeeded().
Referenced by SendDelbaFrame().
|
private |
Reset BA agreement after BA negotiation failed.
recipient | MAC address of recipient |
tid | traffic ID |
Definition at line 1722 of file qos-txop.cc.
References ns3::OriginatorBlockAckAgreement::ESTABLISHED, m_baManager, and NS_LOG_FUNCTION.
Referenced by AddBaResponseTimeout(), MissedAck(), and MissedBlockAck().
|
virtual |
Restart access request if needed.
Reimplemented from ns3::Txop.
Definition at line 987 of file qos-txop.cc.
References ns3::Txop::IsAccessRequested(), m_baManager, ns3::Txop::m_channelAccessManager, ns3::Txop::m_currentHdr, ns3::Txop::m_currentPacket, m_isAccessRequestedForRts, ns3::Txop::m_queue, ns3::Txop::m_stationManager, ns3::WifiRemoteStationManager::NeedRts(), NS_LOG_FUNCTION, PeekNextFrame(), and ns3::ChannelAccessManager::RequestAccess().
Referenced by AddBaResponseTimeout(), GotAddBaResponse(), MissedAck(), MissedBlockAck(), NotifyInternalCollision(), NotifyMissedCts(), and TerminateTxop().
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 167 of file qos-txop.cc.
References m_baManager.
Referenced by MissedBlockAck(), ns3::MacLow::SendDataAfterCts(), and ns3::MacLow::SendDataPacket().
|
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 BlockAck is used. |
Definition at line 1581 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(), 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(), timeout, ns3::WifiRemoteStationManager::UpdateFragmentationThreshold(), and ns3::WIFI_MAC_MGT_ACTION.
Referenced by SetupBlockAckIfNeeded().
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 1642 of file qos-txop.cc.
References ns3::Packet::AddHeader(), ns3::WifiActionHeader::BLOCK_ACK, ns3::WifiActionHeader::BLOCK_ACK_DELBA, ns3::WifiActionHeader::ActionValue::blockAck, 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 1398 of file qos-txop.cc.
References m_ac, and NS_LOG_FUNCTION.
void ns3::QosTxop::SetAckPolicySelector | ( | Ptr< WifiAckPolicySelector > | ackSelector | ) |
Set the ack policy selector.
ackSelector | the ack policy selector. |
Definition at line 181 of file qos-txop.cc.
References m_ackPolicySelector, and NS_LOG_FUNCTION.
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 1737 of file qos-txop.cc.
References m_addBaResponseTimeout, and NS_LOG_FUNCTION.
Referenced by GetTypeId().
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 1512 of file qos-txop.cc.
References m_aMpduEnabled, and NS_LOG_FUNCTION.
Referenced by ns3::MacLow::StartTransmission().
void ns3::QosTxop::SetBlockAckInactivityTimeout | ( | uint16_t | timeout | ) |
Set the BlockAck inactivity timeout.
timeout | the BlockAck inactivity timeout. |
Definition at line 1567 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 1559 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::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 1750 of file qos-txop.cc.
References m_failedAddBaTimeout, and NS_LOG_FUNCTION.
Referenced by GetTypeId().
void ns3::QosTxop::SetTypeOfStation | ( | TypeOfStation | type | ) |
Set type of station with the given type.
type | the type of station. |
Definition at line 194 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 1530 of file qos-txop.cc.
References ns3::WifiMacHeader::GetAddr1(), GetBlockAckThreshold(), ns3::WifiRemoteStationManager::GetHeSupported(), ns3::Txop::GetLow(), ns3::WifiMacHeader::GetQosTid(), ns3::WifiRemoteStationManager::GetVhtSupported(), m_blockAckInactivityTimeout, ns3::Txop::m_currentHdr, ns3::Txop::m_queue, ns3::Txop::m_stationManager, ns3::Txop::m_txMiddle, NS_LOG_FUNCTION, SendAddBaRequest(), and ns3::WIFI_MOD_CLASS_HT.
Referenced by NotifyAccessGranted(), and StartNextPacket().
|
virtual |
Set WifiRemoteStationsManager this Txop is associated to.
remoteManager | WifiRemoteStationManager to associate. |
Reimplemented from ns3::Txop.
Definition at line 173 of file qos-txop.cc.
References m_baManager, ns3::Txop::m_stationManager, NS_LOG_FUNCTION, and ns3::Txop::SetWifiRemoteStationManager().
|
virtual |
Request access from Txop if needed.
Reimplemented from ns3::Txop.
Definition at line 1023 of file qos-txop.cc.
References ns3::Txop::IsAccessRequested(), m_baManager, ns3::Txop::m_channelAccessManager, ns3::Txop::m_currentPacket, m_isAccessRequestedForRts, ns3::Txop::m_queue, ns3::Txop::m_stationManager, ns3::WifiRemoteStationManager::NeedRts(), NS_LOG_FUNCTION, PeekNextFrame(), and ns3::ChannelAccessManager::RequestAccess().
Referenced by PushFront().
|
virtual |
Start transmission for the next packet if allowed by the TxopLimit.
Reimplemented from ns3::Txop.
Definition at line 1075 of file qos-txop.cc.
References ns3::Copy(), DequeuePeekedFrame(), ns3::WifiMacHeader::GetAddr1(), ns3::Txop::GetLow(), ns3::WifiRemoteStationManager::GetQosSupported(), ns3::WifiMacHeader::GetQosTid(), GetTransmissionParameters(), ns3::Txop::GetTxopLimit(), GetTxopRemaining(), ns3::Mac48Address::IsBroadcast(), ns3::WifiMacHeader::IsQosData(), m_baManager, ns3::Txop::m_currentHdr, ns3::Txop::m_currentPacket, m_currentPacketTimestamp, ns3::Txop::m_currentParams, ns3::Txop::m_fragmentNumber, ns3::Txop::m_low, ns3::Txop::m_stationManager, NS_ASSERT, NS_LOG_DEBUG, NS_LOG_FUNCTION, PeekNextFrame(), ns3::OriginatorBlockAckAgreement::RESET, SetupBlockAckIfNeeded(), TerminateTxop(), and ns3::WifiRemoteStationManager::UpdateFragmentationThreshold().
|
privatevirtual |
Update backoff and restart access if needed.
Reimplemented from ns3::Txop.
Definition at line 1147 of file qos-txop.cc.
References ns3::Txop::GenerateBackoff(), ns3::Txop::GetTxopLimit(), m_startTxop, m_txopTrace, ns3::Simulator::Now(), NS_LOG_DEBUG, NS_LOG_FUNCTION, and RestartAccessIfNeeded().
Referenced by EndTxNoAck(), and StartNextPacket().
void ns3::QosTxop::UpdateCurrentPacket | ( | Ptr< WifiMacQueueItem > | mpdu | ) |
Update the current packet this QosTxop is trying to transmit.
This method is typically called by MacLow when it changes (i.e., by performing A-MSDU aggregation) the packet received from this QosTxop.
mpdu | the MPDU that MacLow is forwarding down to the PHY. |
Definition at line 493 of file qos-txop.cc.
References ns3::Txop::m_currentHdr, ns3::Txop::m_currentPacket, m_currentPacketTimestamp, and NS_LOG_FUNCTION.
Referenced by ns3::MacLow::StartTransmission().
|
friend |
allow AmpduAggregationTest class access
Definition at line 96 of file qos-txop.h.
|
friend |
allow HeAggregationTest class access
Definition at line 100 of file qos-txop.h.
|
friend |
allow TwoLevelAggregationTest class access
Definition at line 98 of file qos-txop.h.
|
friend |
allow AggregationCapableTransmissionListener class access
Definition at line 443 of file qos-txop.h.
|
private |
the access category
Definition at line 531 of file qos-txop.h.
Referenced by CompleteConfig(), and SetAccessCategory().
|
private |
the ack policy selector
Definition at line 533 of file qos-txop.h.
Referenced by DoDispose(), GetAckPolicySelector(), and SetAckPolicySelector().
|
private |
timeout for ADDBA response
Definition at line 545 of file qos-txop.h.
Referenced by GetAddBaResponseTimeout(), GotAck(), and SetAddBaResponseTimeout().
std::map<Mac48Address, bool> ns3::QosTxop::m_aMpduEnabled |
list containing flags whether A-MPDU is enabled for a given destination address
Definition at line 102 of file qos-txop.h.
Referenced by GetAmpduExist(), and SetAmpduExist().
|
private |
the block ack manager
Definition at line 535 of file qos-txop.h.
Referenced by AddBaResponseTimeout(), CompleteConfig(), CompleteMpduTx(), DequeuePeekedFrame(), DoDispose(), AmpduAggregationTest::DoRun(), TwoLevelAggregationTest::DoRun(), HeAggregationTest::DoRunSubTest(), GetBaAgreementEstablished(), GetBaBufferSize(), GetBaStartingSequence(), GetTypeId(), GotAck(), GotAddBaResponse(), GotBlockAck(), GotDelBaFrame(), HasFramesToTransmit(), MissedAck(), MissedBlockAck(), NeedBarRetransmission(), NotifyAccessGranted(), NotifyMissedCts(), PeekNextFrame(), QosTxop(), ResetBa(), RestartAccessIfNeeded(), ScheduleBar(), SendAddBaRequest(), SendDelbaFrame(), SetBlockAckThreshold(), SetWifiRemoteStationManager(), StartAccessIfNeeded(), and StartNextPacket().
|
private |
the BlockAck inactivity timeout value (in TUs, i.e.
blocks of 1024 microseconds)
Definition at line 541 of file qos-txop.h.
Referenced by SetBlockAckInactivityTimeout(), and SetupBlockAckIfNeeded().
|
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 536 of file qos-txop.h.
Referenced by GetBlockAckThreshold(), and SetBlockAckThreshold().
|
private |
the BlockAck type
Definition at line 539 of file qos-txop.h.
Referenced by GetTransmissionParameters(), NotifyAccessGranted(), and QosTxop().
|
private |
flag whether current packet is fragmented
Definition at line 544 of file qos-txop.h.
Referenced by GotAck(), and NotifyAccessGranted().
|
private |
the current packet timestamp
Definition at line 540 of file qos-txop.h.
Referenced by GotAck(), GotAddBaResponse(), MissedAck(), NotifyAccessGranted(), StartNextPacket(), and UpdateCurrentPacket().
|
private |
timeout after failed BA agreement
Definition at line 546 of file qos-txop.h.
Referenced by AddBaResponseTimeout(), GetFailedAddBaTimeout(), MissedAck(), MissedBlockAck(), and SetFailedAddBaTimeout().
|
private |
flag whether access is requested to transmit a RTS frame
Definition at line 543 of file qos-txop.h.
Referenced by NotifyAccessGranted(), NotifyInternalCollision(), RestartAccessIfNeeded(), and StartAccessIfNeeded().
|
private |
the QoS blocked destinations
Definition at line 534 of file qos-txop.h.
Referenced by DequeuePeekedFrame(), DoDispose(), PeekNextFrame(), and QosTxop().
|
private |
the start TXOP time
Definition at line 542 of file qos-txop.h.
Referenced by GetTxopRemaining(), NotifyAccessGranted(), and TerminateTxop().
|
private |
TXOP trace callback.
Definition at line 549 of file qos-txop.h.
Referenced by GetTypeId(), and TerminateTxop().
|
private |
the type of station
Definition at line 532 of file qos-txop.h.
Referenced by GetTypeOfStation(), and SetTypeOfStation().
|
private |
flag whether explicit BlockAckRequest should be sent upon missed BlockAck Response
Definition at line 547 of file qos-txop.h.
Referenced by GetTypeId(), and MissedBlockAck().