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

This queue contains packets for a particular access class. More...

#include "edca-txop-n.h"

+ Inheritance diagram for ns3::EdcaTxopN:
+ Collaboration diagram for ns3::EdcaTxopN:

Classes

class  AggregationCapableTransmissionListener
 
class  Dcf
 
class  TransmissionListener
 

Public Types

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

Public Member Functions

 EdcaTxopN ()
 
virtual ~EdcaTxopN ()
 
int64_t AssignStreams (int64_t stream)
 Assign a fixed random variable stream number to the random variables used by this model. More...
 
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 Cancel (void)
 Cancel the transmission. 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)
 
void DoDispose ()
 Destructor implementation. More...
 
void EndTxNoAck (void)
 Event handler when a transmission that does not require an ACK has completed. More...
 
virtual uint32_t GetAifsn (void) const
 Return the number of slots that make up an AIFS. More...
 
bool GetAmpduExist (Mac48Address dest) const
 
bool GetBaAgreementExists (Mac48Address address, uint8_t tid) const
 
uint8_t GetBlockAckThreshold (void) const
 Return the current threshold for block ACK mechanism. More...
 
Ptr< WifiMacQueueGetEdcaQueue () const
 Return the packet queue associated with this EdcaTxopN. More...
 
uint32_t GetFragmentOffset (void)
 Calculate the offset for the current fragment. More...
 
Ptr< PacketGetFragmentPacket (WifiMacHeader *hdr)
 Get the next fragment from the packet with appropriate Wifi header for the fragment. More...
 
uint32_t GetFragmentSize (void)
 Calculate the size of the current fragment. More...
 
virtual uint32_t GetMaxCw (void) const
 Return the maximum contention window size. More...
 
virtual uint32_t GetMinCw (void) const
 Return the minimum contention window size. More...
 
Ptr< MpduAggregatorGetMpduAggregator (void) const
 
Ptr< MsduAggregatorGetMsduAggregator (void) const
 
uint32_t GetNextFragmentSize (void)
 Calculate the size of the next fragment. More...
 
uint16_t GetNextSequenceNumberfor (WifiMacHeader *hdr)
 Return the next sequence number for the given header. More...
 
uint32_t GetNOutstandingPacketsInBa (Mac48Address address, uint8_t tid)
 
uint32_t GetNRetryNeededPackets (Mac48Address recipient, uint8_t tid) const
 
virtual Time GetTxopLimit (void) const
 Return the TXOP limit. More...
 
enum TypeOfStation GetTypeOfStation (void) const
 Return type of station. More...
 
void GotAck (double snr, WifiMode txMode)
 Event handler when an ACK is received. More...
 
void GotAddBaResponse (const MgtAddBaResponseHeader *respHdr, Mac48Address recipient)
 
void GotBlockAck (const CtrlBAckResponseHeader *blockAck, Mac48Address recipient, double rxSnr, WifiMode txMode, double dataSnr)
 Event handler when a Block ACK is received. More...
 
void GotCts (double snr, WifiMode txMode)
 Event handler when a CTS is received. More...
 
void GotDelBaFrame (const MgtDelBaHeader *delBaHdr, Mac48Address recipient)
 
bool IsLastFragment (void) const
 Check if the current fragment is the last fragment. More...
 
Ptr< MacLowLow (void)
 Return the MacLow associated with this EdcaTxopN. More...
 
void MissedAck (void)
 Event handler when an ACK is missed. More...
 
void MissedBlockAck (uint32_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 NeedDataRetransmission (Ptr< const Packet > packet, const WifiMacHeader &hdr)
 Check if DATA should be re-transmitted if ACK was missed. More...
 
bool NeedFragmentation (void) const
 Check if the current packet should be fragmented. More...
 
bool NeedRtsRetransmission (Ptr< const Packet > packet, const WifiMacHeader &hdr)
 Check if RTS should be re-transmitted if CTS was missed. More...
 
bool NeedsAccess (void) const
 Check if the EDCAF requires access. More...
 
void NextFragment (void)
 Continue to the next fragment. More...
 
void NotifyAccessGranted (void)
 Notify the EDCAF that access has been granted. More...
 
void NotifyChannelSwitching (void)
 When a channel switching occurs, enqueued packets are removed. More...
 
void NotifyCollision (void)
 Notify the EDCAF that collision has occurred. More...
 
void NotifyInternalCollision (void)
 Notify the EDCAF that internal collision has occurred. More...
 
void NotifySleep (void)
 When sleep operation occurs, re-insert pending packet into front of the queue. More...
 
void NotifyWakeUp (void)
 When wake up operation occurs, restart channel access. More...
 
Ptr< const PacketPeekNextRetransmitPacket (WifiMacHeader &header, Mac48Address recipient, uint8_t tid, Time *timestamp)
 
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 Queue (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)
 
void SetAccessCategory (enum AcIndex ac)
 Set the access category of this EDCAF. More...
 
virtual void SetAifsn (uint32_t aifsn)
 
void SetAmpduExist (Mac48Address dest, bool enableAmpdu)
 
void SetBlockAckInactivityTimeout (uint16_t timeout)
 
void SetBlockAckThreshold (uint8_t threshold)
 Set threshold for block ACK mechanism. More...
 
void SetLow (Ptr< MacLow > low)
 Set MacLow associated with this EdcaTxopN. More...
 
void SetManager (DcfManager *manager)
 Set DcfManager this EdcaTxopN is associated to. More...
 
virtual void SetMaxCw (uint32_t maxCw)
 Set the maximum contention window size. More...
 
virtual void SetMinCw (uint32_t minCw)
 Set the minimum contention window size. More...
 
void SetMpduAggregator (Ptr< MpduAggregator > aggr)
 
void SetMsduAggregator (Ptr< MsduAggregator > aggr)
 
void SetTxFailedCallback (TxFailed callback)
 
void SetTxMiddle (MacTxMiddle *txMiddle)
 
void SetTxOkCallback (TxOk callback)
 
virtual void SetTxopLimit (Time txopLimit)
 
void SetTypeOfStation (enum TypeOfStation type)
 Set type of station with the given type. More...
 
void SetWifiRemoteStationManager (Ptr< WifiRemoteStationManager > remoteManager)
 Set WifiRemoteStationsManager this EdcaTxopN is associated to. More...
 
void StartAccessIfNeeded (void)
 Request access from DCF manager if needed. More...
 
void StartNext (void)
 Start transmission for the next packet if allowed by the TxopLimit. More...
 
void StartNextFragment (void)
 Start transmission for the next fragment. More...
 
- Public Member Functions inherited from ns3::Object
 Object ()
 Constructor. More...
 
virtual ~Object ()
 Destructor. More...
 
void AggregateObject (Ptr< Object > other)
 Aggregate two Objects together. More...
 
void Dispose (void)
 Dispose of this Object. More...
 
AggregateIterator GetAggregateIterator (void) const
 Get an iterator to the Objects aggregated to this one. More...
 
virtual TypeId GetInstanceTypeId (void) const
 Implement the GetInstanceTypeId method defined in ObjectBase. 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...
 
- Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
 SimpleRefCount ()
 Constructor. More...
 
 SimpleRefCount (const SimpleRefCount &o)
 Copy constructor. More...
 
uint32_t GetReferenceCount (void) const
 Get the reference count of the object. More...
 
SimpleRefCountoperator= (const SimpleRefCount &o)
 Assignment. More...
 
void Ref (void) const
 Increment the reference count. More...
 
void Unref (void) const
 Decrement the reference count. More...
 
- Public Member Functions inherited from ns3::ObjectBase
virtual ~ObjectBase ()
 Virtual destructor. More...
 
void GetAttribute (std::string name, AttributeValue &value) const
 Get the value of an attribute, raising fatal errors if unsuccessful. More...
 
bool GetAttributeFailSafe (std::string name, AttributeValue &value) const
 Get the value of an attribute without raising erros. More...
 
void SetAttribute (std::string name, const AttributeValue &value)
 Set a single attribute, raising fatal errors if unsuccessful. More...
 
bool SetAttributeFailSafe (std::string name, const AttributeValue &value)
 Set a single attribute without raising errors. More...
 
bool TraceConnect (std::string name, std::string context, const CallbackBase &cb)
 Connect a TraceSource to a Callback with a context. More...
 
bool TraceConnectWithoutContext (std::string name, const CallbackBase &cb)
 Connect a TraceSource to a Callback without a context. More...
 
bool TraceDisconnect (std::string name, std::string context, const CallbackBase &cb)
 Disconnect from a TraceSource a Callback previously connected with a context. More...
 
bool TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb)
 Disconnect from a TraceSource a Callback previously connected without a context. More...
 

Static Public Member Functions

static TypeId GetTypeId (void)
 
- Static Public Member Functions inherited from ns3::Dcf
static TypeId GetTypeId (void)
 
- Static Public Member Functions inherited from ns3::Object
static TypeId GetTypeId (void)
 Register this type. More...
 
- Static Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
static void Cleanup (void)
 Noop. More...
 
- Static Public Member Functions inherited from ns3::ObjectBase
static TypeId GetTypeId (void)
 Get the type ID. More...
 

Public Attributes

std::map< Mac48Address, bool > m_aMpduEnabled
 

Private Member Functions

 EdcaTxopN (const EdcaTxopN &)
 
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 DoInitialize ()
 Initialize() implementation. More...
 
uint8_t GetCurrentTid () const
 Get Traffic ID of the current packet. More...
 
Time GetTxopRemaining (void)
 
bool HasTxop (void)
 
Mac48Address MapDestAddressForAggregation (const WifiMacHeader &hdr)
 
Mac48Address MapSrcAddressForAggregation (const WifiMacHeader &hdr)
 This functions are used only to correctly set addresses in a-msdu subframe. More...
 
EdcaTxopNoperator= (const EdcaTxopN &)
 
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 struct 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
 
TracedValue< uint32_t > m_backoffTrace
 
BlockAckManagerm_baManager
 
uint16_t m_blockAckInactivityTimeout
 
AggregationCapableTransmissionListenerm_blockAckListener
 
uint8_t m_blockAckThreshold
 
enum BlockAckType m_blockAckType
 
struct Bar m_currentBar
 
WifiMacHeader m_currentHdr
 
Ptr< const Packetm_currentPacket
 
Time m_currentPacketTimestamp
 
TracedValue< uint32_t > m_cwTrace
 
Dcfm_dcf
 
uint8_t m_fragmentNumber
 
bool m_isAccessRequestedForRts
 
Ptr< MacLowm_low
 
DcfManagerm_manager
 
Ptr< MpduAggregatorm_mpduAggregator
 
Ptr< MsduAggregatorm_msduAggregator
 
QosBlockedDestinationsm_qosBlockedDestinations
 
Ptr< WifiMacQueuem_queue
 
RandomStreamm_rng
 
Time m_startTxop
 
Ptr< WifiRemoteStationManagerm_stationManager
 
TransmissionListenerm_transmissionListener
 
TxFailed m_txFailedCallback
 
MacTxMiddlem_txMiddle
 
TxOk m_txOkCallback
 
TypeOfStation m_typeOfStation
 

Friends

class ::AmpduAggregationTest
 
class Dcf
 
class TransmissionListener
 

Additional Inherited Members

- Protected Member Functions inherited from ns3::Object
 Object (const Object &o)
 Copy an Object. More...
 
virtual void NotifyNewAggregate (void)
 Notify all Objects aggregated to this one of a new Object being aggregated. More...
 
- Protected Member Functions inherited from ns3::ObjectBase
void ConstructSelf (const AttributeConstructionList &attributes)
 Complete construction of ObjectBase; invoked by derived classes. More...
 
virtual void NotifyConstructionCompleted (void)
 Notifier called once the ObjectBase is fully constructed. More...
 

Detailed Description

This queue contains packets for a particular access class.

possibles access classes are:

-AC_VO : voice, tid = 6,7 ^ -AC_VI : video, tid = 4,5 | -AC_BE : best-effort, tid = 0,3 | priority -AC_BK : background, tid = 1,2 |

For more details see section 9.1.3.1 in 802.11 standard.

Config Paths

ns3::EdcaTxopN is accessible through the following paths with Config::Set and Config::Connect:

  • "/NodeList/[i]/DeviceList/[i]/$ns3::WifiNetDevice/Mac/$ns3::RegularWifiMac/VO_EdcaTxopN"
  • "/NodeList/[i]/DeviceList/[i]/$ns3::WifiNetDevice/Mac/$ns3::RegularWifiMac/VI_EdcaTxopN"
  • "/NodeList/[i]/DeviceList/[i]/$ns3::WifiNetDevice/Mac/$ns3::RegularWifiMac/BE_EdcaTxopN"
  • "/NodeList/[i]/DeviceList/[i]/$ns3::WifiNetDevice/Mac/$ns3::RegularWifiMac/BK_EdcaTxopN"

Attributes

Attributes defined in parent class ns3::Dcf

  • MinCw: The minimum value of the contention window.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint32_t 0:4294967295
    • Initial value: 15
    • Flags: construct write read
  • MaxCw: The maximum value of the contention window.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint32_t 0:4294967295
    • Initial value: 1023
    • Flags: construct write read
  • Aifsn: The AIFSN: the default value conforms to simple DCA.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint32_t 0:4294967295
    • Initial value: 2
    • Flags: construct write read
  • TxopLimit: The TXOP limit: the default value conforms to simple DCA.
    • Set with class: ns3::TimeValue
    • Underlying type: Time –9223372036854775808.0ns:+9223372036854775807.0ns
    • Initial value: +0.0ns
    • Flags: construct write read

TraceSources

  • BackoffTrace: Trace source for backoff values
    Callback signature: ns3::TracedValue::Uint32Callback
  • CwTrace: Trace source for contention window values
    Callback signature: ns3::TracedValue::Uint32Callback

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

Definition at line 86 of file edca-txop-n.h.

Member Typedef Documentation

typedef for a callback to invoke when a packet transmission was failed.

Definition at line 101 of file edca-txop-n.h.

typedef for a callback to invoke when a packet transmission was completed successfully.

Definition at line 96 of file edca-txop-n.h.

Constructor & Destructor Documentation

ns3::EdcaTxopN::~EdcaTxopN ( )
virtual

Definition at line 287 of file edca-txop-n.cc.

References NS_LOG_FUNCTION.

ns3::EdcaTxopN::EdcaTxopN ( const EdcaTxopN )
private

Member Function Documentation

int64_t ns3::EdcaTxopN::AssignStreams ( int64_t  stream)

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

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

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

Definition at line 1824 of file edca-txop-n.cc.

References ns3::RandomStream::AssignStreams(), m_rng, and NS_LOG_FUNCTION.

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

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::EdcaTxopN::BaTxFailed ( const WifiMacHeader hdr)

The packet we sent was successfully received by the receiver.

Parameters
hdrthe header of the packet that we failed to sent

Definition at line 1853 of file edca-txop-n.cc.

References ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), m_currentHdr, m_txFailedCallback, and NS_LOG_FUNCTION.

Referenced by EdcaTxopN().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::EdcaTxopN::BaTxOk ( const WifiMacHeader hdr)

The packet we sent was successfully received by the receiver.

Parameters
hdrthe header of the packet that we successfully sent

Definition at line 1843 of file edca-txop-n.cc.

References ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), m_currentHdr, m_txOkCallback, and NS_LOG_FUNCTION.

Referenced by EdcaTxopN().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::EdcaTxopN::Cancel ( void  )

Cancel the transmission.

Definition at line 1361 of file edca-txop-n.cc.

References NS_LOG_DEBUG, and NS_LOG_FUNCTION.

Referenced by ns3::EdcaTxopN::TransmissionListener::Cancel().

+ Here is the caller graph for this function:

void ns3::EdcaTxopN::CompleteAmpduTransfer ( Mac48Address  recipient,
uint8_t  tid 
)
Parameters
recipientaddress of peer station involved in block ack mechanism.
tidTtraffic 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 335 of file edca-txop-n.cc.

References ns3::BlockAckManager::CompleteAmpduExchange(), and m_baManager.

Referenced by ns3::EdcaTxopN::AggregationCapableTransmissionListener::CompleteTransfer().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::EdcaTxopN::CompleteConfig ( void  )

Complete block ACK configuration.

Definition at line 1694 of file edca-txop-n.cc.

References m_ac, m_baManager, m_blockAckListener, m_low, m_txMiddle, ns3::MakeCallback(), NS_LOG_FUNCTION, ns3::MacLow::RegisterBlockAckListenerForAc(), SendDelbaFrame(), ns3::BlockAckManager::SetBlockAckInactivityCallback(), and ns3::BlockAckManager::SetTxMiddle().

Referenced by AmpduAggregationTest::DoRun(), and TwoLevelAggregationTest::DoRun().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::EdcaTxopN::CompleteTx ( void  )
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 1605 of file edca-txop-n.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, m_currentHdr, m_currentPacket, m_currentPacketTimestamp, m_txMiddle, ns3::BlockAckManager::NotifyMpduTransmission(), NS_LOG_FUNCTION, and ns3::BlockAckManager::StorePacket().

Referenced by NotifyAccessGranted().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::EdcaTxopN::DoDispose ( void  )
virtual

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 overriden version of this method and chain up to their parent's implementation once they are done. i.e, for simplicity, the destructor of every subclass should be empty and its content should be moved to the associated DoDispose() method.

It is safe to call GetObject() from within this method.

Reimplemented from ns3::Object.

Definition at line 293 of file edca-txop-n.cc.

References m_baManager, m_blockAckListener, m_dcf, m_low, m_mpduAggregator, m_msduAggregator, m_qosBlockedDestinations, m_queue, m_rng, m_stationManager, m_transmissionListener, m_txMiddle, and NS_LOG_FUNCTION.

void ns3::EdcaTxopN::DoInitialize ( void  )
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::Object.

Definition at line 1832 of file edca-txop-n.cc.

References ns3::Object::DoInitialize(), ns3::DcfState::GetCw(), ns3::RandomStream::GetNext(), m_backoffTrace, m_cwTrace, m_dcf, m_rng, NS_LOG_FUNCTION, ns3::DcfState::ResetCw(), and ns3::DcfState::StartBackoffNow().

+ Here is the call graph for this function:

void ns3::EdcaTxopN::EndTxNoAck ( void  )

Event handler when a transmission that does not require an ACK has completed.

Definition at line 1368 of file edca-txop-n.cc.

References ns3::DcfState::GetCw(), ns3::RandomStream::GetNext(), m_backoffTrace, m_currentPacket, m_cwTrace, m_dcf, m_rng, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::DcfState::ResetCw(), StartAccessIfNeeded(), and ns3::DcfState::StartBackoffNow().

Referenced by ns3::EdcaTxopN::TransmissionListener::EndTxNoAck().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

uint32_t ns3::EdcaTxopN::GetAifsn ( void  ) const
virtual

Return the number of slots that make up an AIFS.

Returns
the number of slots that make up an AIFS

Implements ns3::Dcf.

Definition at line 434 of file edca-txop-n.cc.

References ns3::DcfState::GetAifsn(), m_dcf, and NS_LOG_FUNCTION.

Referenced by ns3::ApWifiMac::GetEdcaParameterSet().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool ns3::EdcaTxopN::GetAmpduExist ( Mac48Address  dest) const

Definition at line 1581 of file edca-txop-n.cc.

References m_aMpduEnabled, and NS_LOG_FUNCTION.

Referenced by MissedAck(), MissedBlockAck(), MissedCts(), NeedFragmentation(), and NotifyAccessGranted().

+ Here is the caller graph for this function:

bool ns3::EdcaTxopN::GetBaAgreementExists ( Mac48Address  address,
uint8_t  tid 
) const
Parameters
recipientaddress of the peer station
tidtraffic ID.
Returns
true if a block ack agreement exists, false otherwise

Checks if a block ack agreement exists with station addressed by recipient for tid tid.

Definition at line 317 of file edca-txop-n.cc.

References ns3::BlockAckManager::ExistsAgreement(), and m_baManager.

Referenced by ns3::EdcaTxopN::AggregationCapableTransmissionListener::GetBlockAckAgreementExists(), MissedAck(), MissedCts(), and NeedFragmentation().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

uint8_t ns3::EdcaTxopN::GetBlockAckThreshold ( void  ) const

Return the current threshold for block ACK mechanism.

Returns
the current threshold for block ACK mechanism

Definition at line 1718 of file edca-txop-n.cc.

References m_blockAckThreshold, and NS_LOG_FUNCTION.

Ptr< WifiMacQueue > ns3::EdcaTxopN::GetEdcaQueue ( ) const

Return the packet queue associated with this EdcaTxopN.

Returns
WifiMacQueue

Definition at line 385 of file edca-txop-n.cc.

References m_queue, and NS_LOG_FUNCTION.

Referenced by AmpduAggregationTest::DoRun(), TwoLevelAggregationTest::DoRun(), ns3::EdcaTxopN::TransmissionListener::GetQueue(), ns3::EdcaTxopN::AggregationCapableTransmissionListener::GetQueue(), and GetTypeId().

+ Here is the caller graph for this function:

uint32_t ns3::EdcaTxopN::GetFragmentOffset ( void  )

Calculate the offset for the current fragment.

Returns
the offset for the current fragment

Definition at line 1416 of file edca-txop-n.cc.

References ns3::WifiMacHeader::GetAddr1(), ns3::WifiRemoteStationManager::GetFragmentOffset(), m_currentHdr, m_currentPacket, m_fragmentNumber, m_stationManager, and NS_LOG_FUNCTION.

Referenced by GetFragmentPacket().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Ptr< Packet > ns3::EdcaTxopN::GetFragmentPacket ( WifiMacHeader hdr)

Get the next fragment from the packet with appropriate Wifi header for the fragment.

Parameters
hdr
Returns
the fragment with the current fragment number

Definition at line 1433 of file edca-txop-n.cc.

References ns3::Packet::CreateFragment(), GetFragmentOffset(), GetFragmentSize(), IsLastFragment(), m_currentHdr, m_currentPacket, m_fragmentNumber, NS_LOG_FUNCTION, ns3::WifiMacHeader::SetFragmentNumber(), ns3::WifiMacHeader::SetMoreFragments(), and ns3::WifiMacHeader::SetNoMoreFragments().

Referenced by NotifyAccessGranted(), and StartNextFragment().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

uint32_t ns3::EdcaTxopN::GetFragmentSize ( void  )

Calculate the size of the current fragment.

Returns
the size of the current fragment

Definition at line 1400 of file edca-txop-n.cc.

References ns3::WifiMacHeader::GetAddr1(), ns3::WifiRemoteStationManager::GetFragmentSize(), m_currentHdr, m_currentPacket, m_fragmentNumber, m_stationManager, and NS_LOG_FUNCTION.

Referenced by GetFragmentPacket().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Return the maximum contention window size.

Returns
the maximum contention window size

Implements ns3::Dcf.

Definition at line 427 of file edca-txop-n.cc.

References ns3::DcfState::GetCwMax(), m_dcf, and NS_LOG_FUNCTION.

Referenced by ns3::ApWifiMac::GetEdcaParameterSet().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Return the minimum contention window size.

Returns
the minimum contention window size

Implements ns3::Dcf.

Definition at line 420 of file edca-txop-n.cc.

References ns3::DcfState::GetCwMin(), m_dcf, and NS_LOG_FUNCTION.

Referenced by ns3::ApWifiMac::GetEdcaParameterSet().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Ptr< MpduAggregator > ns3::EdcaTxopN::GetMpduAggregator ( void  ) const
Ptr< MsduAggregator > ns3::EdcaTxopN::GetMsduAggregator ( void  ) const

Definition at line 1100 of file edca-txop-n.cc.

References m_msduAggregator.

Referenced by ns3::RegularWifiMac::ConfigureAggregation(), and ns3::EdcaTxopN::AggregationCapableTransmissionListener::GetMsduAggregator().

+ Here is the caller graph for this function:

uint32_t ns3::EdcaTxopN::GetNextFragmentSize ( void  )

Calculate the size of the next fragment.

Returns
the size of the next fragment

Definition at line 1408 of file edca-txop-n.cc.

References ns3::WifiMacHeader::GetAddr1(), ns3::WifiRemoteStationManager::GetFragmentSize(), m_currentHdr, m_currentPacket, m_fragmentNumber, m_stationManager, and NS_LOG_FUNCTION.

Referenced by NotifyAccessGranted(), and StartNextFragment().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

uint16_t ns3::EdcaTxopN::GetNextSequenceNumberfor ( WifiMacHeader hdr)

Return the next sequence number for the given header.

Parameters
hdrWi-Fi header
Returns
the next sequence number

Definition at line 474 of file edca-txop-n.cc.

References ns3::MacTxMiddle::GetNextSequenceNumberfor(), and m_txMiddle.

Referenced by ns3::EdcaTxopN::AggregationCapableTransmissionListener::GetNextSequenceNumberfor().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

uint32_t ns3::EdcaTxopN::GetNOutstandingPacketsInBa ( Mac48Address  address,
uint8_t  tid 
)
Parameters
recipientaddress of peer station involved in block ack mechanism.
tidtraffic ID.
Returns
the number of packets buffered for a specified agreement

Returns number of packets buffered for a specified agreement.

Definition at line 323 of file edca-txop-n.cc.

References ns3::BlockAckManager::GetNBufferedPackets(), and m_baManager.

Referenced by ns3::EdcaTxopN::AggregationCapableTransmissionListener::GetNOutstandingPackets().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

uint32_t ns3::EdcaTxopN::GetNRetryNeededPackets ( Mac48Address  recipient,
uint8_t  tid 
) const
Parameters
recipientaddress of peer station involved in block ack mechanism.
tidtraffic ID.
Returns
the number of packets for a specific agreement that need retransmission

Returns number of packets for a specific agreement that need retransmission.

Definition at line 329 of file edca-txop-n.cc.

References ns3::BlockAckManager::GetNRetryNeededPackets(), and m_baManager.

Referenced by ns3::EdcaTxopN::AggregationCapableTransmissionListener::GetNRetryNeededPackets().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Time ns3::EdcaTxopN::GetTxopLimit ( void  ) const
virtual

Return the TXOP limit.

Returns
the TXOP limit

Implements ns3::Dcf.

Definition at line 441 of file edca-txop-n.cc.

References ns3::DcfState::GetTxopLimit(), m_dcf, and NS_LOG_FUNCTION.

Referenced by ns3::ApWifiMac::GetEdcaParameterSet(), and GetTxopRemaining().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Time ns3::EdcaTxopN::GetTxopRemaining ( void  )
private

Definition at line 1303 of file edca-txop-n.cc.

References GetTxopLimit(), m_startTxop, ns3::MicroSeconds(), ns3::Simulator::Now(), and NS_LOG_FUNCTION.

Referenced by HasTxop(), and StartNext().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

TypeId ns3::EdcaTxopN::GetTypeId ( void  )
static

Definition at line 237 of file edca-txop-n.cc.

References GetEdcaQueue(), m_backoffTrace, m_cwTrace, ns3::MakePointerAccessor(), ns3::MakeTraceSourceAccessor(), and ns3::TypeId::SetParent().

+ Here is the call graph for this function:

enum TypeOfStation ns3::EdcaTxopN::GetTypeOfStation ( void  ) const

Return type of station.

Returns
type of station

Definition at line 378 of file edca-txop-n.cc.

References m_typeOfStation, and NS_LOG_FUNCTION.

void ns3::EdcaTxopN::GotBlockAck ( const CtrlBAckResponseHeader blockAck,
Mac48Address  recipient,
double  rxSnr,
WifiMode  txMode,
double  dataSnr 
)

Event handler when a Block ACK is received.

Parameters
blockAck
recipient
rxSnrSNR of the block ack itself
txMode
dataSnrreported data SNR from the peer

Definition at line 1547 of file edca-txop-n.cc.

References ns3::DcfState::GetCw(), ns3::RandomStream::GetNext(), ns3::WifiMode::GetUniqueName(), ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), m_backoffTrace, m_baManager, m_currentHdr, m_currentPacket, m_cwTrace, m_dcf, m_rng, m_txOkCallback, ns3::BlockAckManager::NotifyGotBlockAck(), NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::DcfState::ResetCw(), RestartAccessIfNeeded(), and ns3::DcfState::StartBackoffNow().

Referenced by ns3::EdcaTxopN::TransmissionListener::GotBlockAck().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::EdcaTxopN::GotCts ( double  snr,
WifiMode  txMode 
)

Event handler when a CTS is received.

Parameters
snr
txMode

Definition at line 740 of file edca-txop-n.cc.

References NS_LOG_DEBUG, and NS_LOG_FUNCTION.

Referenced by ns3::EdcaTxopN::TransmissionListener::GotCts().

+ Here is the caller graph for this function:

void ns3::EdcaTxopN::GotDelBaFrame ( const MgtDelBaHeader delBaHdr,
Mac48Address  recipient 
)

Definition at line 1539 of file edca-txop-n.cc.

References ns3::MgtDelBaHeader::GetTid(), m_baManager, NS_LOG_DEBUG, NS_LOG_FUNCTION, and ns3::BlockAckManager::TearDownBlockAck().

+ Here is the call graph for this function:

bool ns3::EdcaTxopN::IsLastFragment ( void  ) const

Check if the current fragment is the last fragment.

Returns
true if the current fragment is the last fragment, false otherwise

Definition at line 1425 of file edca-txop-n.cc.

References ns3::WifiMacHeader::GetAddr1(), ns3::WifiRemoteStationManager::IsLastFragment(), m_currentHdr, m_currentPacket, m_fragmentNumber, m_stationManager, and NS_LOG_FUNCTION.

Referenced by GetFragmentPacket(), GotAck(), NotifyAccessGranted(), and StartNextFragment().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Ptr< MacLow > ns3::EdcaTxopN::Low ( void  )

Return the MacLow associated with this EdcaTxopN.

Returns
MacLow

Definition at line 455 of file edca-txop-n.cc.

References m_low.

Referenced by HasTxop(), StartNext(), and StartNextFragment().

+ Here is the caller graph for this function:

Mac48Address ns3::EdcaTxopN::MapDestAddressForAggregation ( const WifiMacHeader hdr)
private

Definition at line 1477 of file edca-txop-n.cc.

References ns3::ADHOC_STA, ns3::AP, ns3::WifiMacHeader::GetAddr1(), ns3::WifiMacHeader::GetAddr3(), m_typeOfStation, and NS_LOG_FUNCTION.

Referenced by ns3::EdcaTxopN::AggregationCapableTransmissionListener::GetDestAddressForAggregation(), and NotifyAccessGranted().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Mac48Address ns3::EdcaTxopN::MapSrcAddressForAggregation ( const WifiMacHeader hdr)
private

This functions are used only to correctly set addresses in a-msdu subframe.

If aggregating sta is a STA (in an infrastructured network): SA = Address2 DA = Address3 If aggregating sta is an AP SA = Address3 DA = Address1

Parameters
hdr
Returns
Mac48Address

Definition at line 1461 of file edca-txop-n.cc.

References ns3::ADHOC_STA, ns3::WifiMacHeader::GetAddr2(), ns3::WifiMacHeader::GetAddr3(), m_typeOfStation, NS_LOG_FUNCTION, and ns3::STA.

Referenced by ns3::EdcaTxopN::AggregationCapableTransmissionListener::GetSrcAddressForAggregation(), and NotifyAccessGranted().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::EdcaTxopN::MissedAck ( void  )

Event handler when an ACK is missed.

Definition at line 960 of file edca-txop-n.cc.

References ns3::Packet::AddHeader(), ns3::COMPRESSED_BLOCK_ACK, ns3::WifiMacHeader::GetAddr1(), ns3::MacLow::GetAddress(), GetAmpduExist(), GetBaAgreementExists(), ns3::MacLow::GetBssid(), GetCurrentTid(), ns3::DcfState::GetCw(), ns3::RandomStream::GetNext(), ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), ns3::WifiMacHeader::IsQosData(), m_backoffTrace, m_currentBar, m_currentHdr, m_currentPacket, m_cwTrace, m_dcf, m_low, m_rng, m_stationManager, m_txFailedCallback, m_txMiddle, ns3::CtrlBAckRequestHeader::MustSendHtImmediateAck(), NeedDataRetransmission(), NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::MacTxMiddle::PeekNextSequenceNumberfor(), ns3::WifiRemoteStationManager::ReportFinalDataFailed(), ns3::DcfState::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::DcfState::StartBackoffNow(), ns3::DcfState::UpdateFailedCw(), and ns3::WIFI_MAC_CTL_BACKREQ.

Referenced by AmpduAggregationTest::DoRun(), and ns3::EdcaTxopN::TransmissionListener::MissedAck().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::EdcaTxopN::MissedBlockAck ( uint32_t  nMpdus)

Event handler when a Block ACK timeout has occurred.

Definition at line 1025 of file edca-txop-n.cc.

References ns3::Packet::AddHeader(), ns3::COMPRESSED_BLOCK_ACK, ns3::WifiMacHeader::GetAddr1(), ns3::MacLow::GetAddress(), GetAmpduExist(), ns3::MacLow::GetBssid(), GetCurrentTid(), ns3::DcfState::GetCw(), ns3::RandomStream::GetNext(), ns3::WifiMacHeader::GetSequenceNumber(), ns3::CtrlBAckRequestHeader::GetStartingSequence(), ns3::WifiMacHeader::IsBlockAck(), ns3::WifiMacHeader::IsBlockAckReq(), ns3::WifiMacHeader::IsQosData(), m_backoffTrace, m_currentBar, m_currentHdr, m_currentPacket, m_cwTrace, m_dcf, m_low, m_rng, m_stationManager, ns3::CtrlBAckRequestHeader::MustSendHtImmediateAck(), NeedBarRetransmission(), NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::Packet::PeekHeader(), ns3::WifiRemoteStationManager::ReportAmpduTxStatus(), ns3::DcfState::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::DcfState::StartBackoffNow(), ns3::DcfState::UpdateFailedCw(), and ns3::WIFI_MAC_CTL_BACKREQ.

Referenced by ns3::EdcaTxopN::TransmissionListener::MissedBlockAck().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::EdcaTxopN::MissedCts ( void  )

Event handler when a CTS timeout has occurred.

Definition at line 812 of file edca-txop-n.cc.

References ns3::Packet::AddHeader(), ns3::COMPRESSED_BLOCK_ACK, ns3::MacLow::FlushAggregateQueue(), ns3::WifiMacHeader::GetAddr1(), ns3::MacLow::GetAddress(), GetAmpduExist(), GetBaAgreementExists(), ns3::MacLow::GetBssid(), GetCurrentTid(), ns3::DcfState::GetCw(), ns3::RandomStream::GetNext(), ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), ns3::WifiMacHeader::IsQosData(), m_backoffTrace, m_currentBar, m_currentHdr, m_currentPacket, m_cwTrace, m_dcf, m_low, m_rng, m_stationManager, m_txFailedCallback, m_txMiddle, ns3::CtrlBAckRequestHeader::MustSendHtImmediateAck(), NeedRtsRetransmission(), NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::MacTxMiddle::PeekNextSequenceNumberfor(), ns3::WifiRemoteStationManager::ReportFinalRtsFailed(), ns3::DcfState::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::DcfState::StartBackoffNow(), ns3::DcfState::UpdateFailedCw(), and ns3::WIFI_MAC_CTL_BACKREQ.

Referenced by ns3::EdcaTxopN::TransmissionListener::MissedCts().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool ns3::EdcaTxopN::NeedBarRetransmission ( void  )
bool ns3::EdcaTxopN::NeedDataRetransmission ( Ptr< const Packet packet,
const WifiMacHeader hdr 
)

Check if DATA should be re-transmitted if ACK was missed.

Parameters
packetcurrent packet being transmitted
hdrcurrent header being transmitted
Returns
true if DATA should be re-transmitted, false otherwise

Definition at line 1189 of file edca-txop-n.cc.

References ns3::WifiMacHeader::GetAddr1(), m_stationManager, ns3::WifiRemoteStationManager::NeedDataRetransmission(), and NS_LOG_FUNCTION.

Referenced by MissedAck(), and NotifyInternalCollision().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool ns3::EdcaTxopN::NeedFragmentation ( void  ) const

Check if the current packet should be fragmented.

Returns
true if the current packet should be fragmented, false otherwise

Definition at line 1381 of file edca-txop-n.cc.

References ns3::WifiMacHeader::GetAddr1(), GetAmpduExist(), GetBaAgreementExists(), GetCurrentTid(), ns3::MpduAggregator::GetMaxAmpduSize(), GetMpduAggregator(), ns3::Packet::GetSize(), ns3::WifiRemoteStationManager::HasHtSupported(), ns3::WifiRemoteStationManager::HasVhtSupported(), ns3::WifiMacHeader::IsQosData(), m_currentHdr, m_currentPacket, m_stationManager, ns3::WifiRemoteStationManager::NeedFragmentation(), and NS_LOG_FUNCTION.

Referenced by GotAck(), and NotifyAccessGranted().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool ns3::EdcaTxopN::NeedRtsRetransmission ( Ptr< const Packet packet,
const WifiMacHeader hdr 
)

Check if RTS should be re-transmitted if CTS was missed.

Parameters
packetcurrent packet being transmitted
hdrcurrent header being transmitted
Returns
true if RTS should be re-transmitted, false otherwise

Definition at line 1182 of file edca-txop-n.cc.

References ns3::WifiMacHeader::GetAddr1(), m_stationManager, ns3::WifiRemoteStationManager::NeedRtsRetransmission(), and NS_LOG_FUNCTION.

Referenced by MissedCts(), and NotifyInternalCollision().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool ns3::EdcaTxopN::NeedsAccess ( void  ) const

Check if the EDCAF requires access.

Returns
true if the EDCAF requires access, false otherwise

Definition at line 468 of file edca-txop-n.cc.

References ns3::BlockAckManager::HasPackets(), m_baManager, m_currentPacket, m_queue, and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

void ns3::EdcaTxopN::NextFragment ( void  )

Continue to the next fragment.

This method simply increments the internal variable that keep track of the current fragment number.

Definition at line 1223 of file edca-txop-n.cc.

References m_fragmentNumber, and NS_LOG_FUNCTION.

Referenced by StartNextFragment().

+ Here is the caller graph for this function:

void ns3::EdcaTxopN::NotifyAccessGranted ( void  )

Notify the EDCAF that access has been granted.

Definition at line 497 of file edca-txop-n.cc.

References ns3::WifiMacHeader::ADDR1, ns3::MsduAggregator::Aggregate(), ns3::BASIC_BLOCK_ACK, CompleteTx(), ns3::MacLowTransmissionParameters::DisableAck(), ns3::MacLowTransmissionParameters::DisableNextData(), ns3::MacLowTransmissionParameters::DisableOverrideDurationId(), ns3::MacLowTransmissionParameters::DisableRts(), ns3::MacLowTransmissionParameters::EnableAck(), ns3::MacLowTransmissionParameters::EnableNextData(), ns3::BlockAckManager::ExistsAgreement(), ns3::WifiMacHeader::GetAddr1(), GetAmpduExist(), ns3::MacLow::GetBssid(), GetFragmentPacket(), GetNextFragmentSize(), ns3::BlockAckManager::GetNextPacket(), ns3::MacTxMiddle::GetNextSequenceNumberfor(), ns3::WifiMacHeader::GetQosTid(), ns3::WifiMacHeader::GetSequenceControl(), ns3::Packet::GetSize(), ns3::WifiMacHeader::GetType(), ns3::BlockAckManager::HasBar(), ns3::BlockAckManager::HasPackets(), ns3::Mac48Address::IsBroadcast(), ns3::WifiMacHeader::IsData(), ns3::Mac48Address::IsGroup(), IsLastFragment(), ns3::WifiMacHeader::IsQosAmsdu(), ns3::WifiMacHeader::IsQosBlockAck(), ns3::WifiMacHeader::IsQosData(), ns3::WifiMacHeader::IsRetry(), m_baManager, m_blockAckThreshold, m_blockAckType, m_currentBar, m_currentHdr, m_currentPacket, m_currentPacketTimestamp, m_fragmentNumber, m_isAccessRequestedForRts, m_low, m_msduAggregator, m_qosBlockedDestinations, m_queue, m_startTxop, m_stationManager, m_transmissionListener, 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.

Referenced by ns3::EdcaTxopN::Dcf::DoNotifyAccessGranted().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::EdcaTxopN::NotifyChannelSwitching ( void  )

When a channel switching occurs, enqueued packets are removed.

Definition at line 875 of file edca-txop-n.cc.

References m_currentPacket, m_queue, and NS_LOG_FUNCTION.

Referenced by ns3::OcbWifiMac::CancleTx(), and ns3::EdcaTxopN::Dcf::DoNotifyChannelSwitching().

+ Here is the caller graph for this function:

void ns3::EdcaTxopN::NotifyCollision ( void  )

Notify the EDCAF that collision has occurred.

Definition at line 731 of file edca-txop-n.cc.

References ns3::DcfState::GetCw(), ns3::RandomStream::GetNext(), m_backoffTrace, m_dcf, m_rng, NS_LOG_FUNCTION, RestartAccessIfNeeded(), and ns3::DcfState::StartBackoffNow().

Referenced by ns3::EdcaTxopN::Dcf::DoNotifyCollision().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::EdcaTxopN::NotifySleep ( void  )

When sleep operation occurs, re-insert pending packet into front of the queue.

Definition at line 883 of file edca-txop-n.cc.

References m_currentHdr, m_currentPacket, m_queue, and NS_LOG_FUNCTION.

Referenced by ns3::EdcaTxopN::Dcf::DoNotifySleep().

+ Here is the caller graph for this function:

void ns3::EdcaTxopN::NotifyWakeUp ( void  )

When wake up operation occurs, restart channel access.

Definition at line 894 of file edca-txop-n.cc.

References NS_LOG_FUNCTION, and RestartAccessIfNeeded().

Referenced by ns3::EdcaTxopN::Dcf::DoNotifyWakeUp().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

EdcaTxopN& ns3::EdcaTxopN::operator= ( const EdcaTxopN )
private
Ptr< const Packet > ns3::EdcaTxopN::PeekNextRetransmitPacket ( WifiMacHeader header,
Mac48Address  recipient,
uint8_t  tid,
Time timestamp 
)

Definition at line 485 of file edca-txop-n.cc.

References m_baManager, and ns3::BlockAckManager::PeekNextPacketByTidAndAddress().

Referenced by ns3::EdcaTxopN::AggregationCapableTransmissionListener::PeekNextPacketInBaQueue().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

uint16_t ns3::EdcaTxopN::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).

Parameters
hdrWi-Fi header
Returns
the next sequence number

Definition at line 479 of file edca-txop-n.cc.

References m_txMiddle, and ns3::MacTxMiddle::PeekNextSequenceNumberfor().

Referenced by ns3::EdcaTxopN::AggregationCapableTransmissionListener::PeekNextSequenceNumberfor().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

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

Definition at line 1507 of file edca-txop-n.cc.

References ns3::WifiMacHeader::GetAddr1(), m_queue, m_stationManager, NS_LOG_FUNCTION, ns3::WifiRemoteStationManager::PrepareForQueue(), and StartAccessIfNeeded().

Referenced by SendDelbaFrame().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

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

Definition at line 901 of file edca-txop-n.cc.

References ns3::WifiMacHeader::GetAddr1(), m_queue, m_stationManager, NS_LOG_FUNCTION, ns3::WifiRemoteStationManager::PrepareForQueue(), and StartAccessIfNeeded().

+ Here is the call graph for this function:

void ns3::EdcaTxopN::RemoveRetransmitPacket ( uint8_t  tid,
Mac48Address  recipient,
uint16_t  seqnumber 
)

Remove a packet after you peek in the retransmit queue and get it.

Definition at line 491 of file edca-txop-n.cc.

References m_baManager, and ns3::BlockAckManager::RemovePacket().

Referenced by ns3::EdcaTxopN::AggregationCapableTransmissionListener::RemoveFromBaQueue().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::EdcaTxopN::SendAddBaRequest ( Mac48Address  recipient,
uint8_t  tid,
uint16_t  startSeq,
uint16_t  timeout,
bool  immediateBAck 
)
private

Sends an ADDBA Request to establish a block ack agreement with sta addressed by recipient for tid tid.

Parameters
recipient
tid
startSeq
timeout
immediateBAck

Definition at line 1725 of file edca-txop-n.cc.

References ns3::Packet::AddHeader(), ns3::WifiActionHeader::BLOCK_ACK, ns3::WifiActionHeader::BLOCK_ACK_ADDBA_REQUEST, ns3::WifiActionHeader::ActionValue::blockAck, ns3::BlockAckManager::CreateAgreement(), ns3::MacLowTransmissionParameters::DisableNextData(), ns3::MacLowTransmissionParameters::DisableOverrideDurationId(), ns3::MacLowTransmissionParameters::DisableRts(), ns3::MacLowTransmissionParameters::EnableAck(), ns3::MacLow::GetAddress(), ns3::MacTxMiddle::GetNextSequenceNumberfor(), m_baManager, m_currentHdr, m_currentPacket, m_low, m_stationManager, m_transmissionListener, m_txMiddle, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::WifiMacHeader::SetAction(), 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::MacLow::StartTransmission(), and ns3::WifiRemoteStationManager::UpdateFragmentationThreshold().

Referenced by SetupBlockAckIfNeeded().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::EdcaTxopN::SetAccessCategory ( enum AcIndex  ac)

Set the access category of this EDCAF.

Parameters
ac

Definition at line 1454 of file edca-txop-n.cc.

References m_ac, and NS_LOG_FUNCTION.

Referenced by AmpduAggregationTest::DoRun(), and TwoLevelAggregationTest::DoRun().

+ Here is the caller graph for this function:

void ns3::EdcaTxopN::SetAifsn ( uint32_t  aifsn)
virtual
Parameters
aifsnthe number of slots which make up an AIFS for a specific DCF. a DIFS corresponds to an AIFSN = 2.

Calling this method after DcfManager::Add has been called is not recommended.

Implements ns3::Dcf.

Definition at line 406 of file edca-txop-n.cc.

References m_dcf, NS_LOG_FUNCTION, and ns3::DcfState::SetAifsn().

Referenced by ns3::StaWifiMac::SetEdcaParameters().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::EdcaTxopN::SetAmpduExist ( Mac48Address  dest,
bool  enableAmpdu 
)

Definition at line 1591 of file edca-txop-n.cc.

References m_aMpduEnabled, and NS_LOG_FUNCTION.

Referenced by ns3::EdcaTxopN::AggregationCapableTransmissionListener::SetAmpdu().

+ Here is the caller graph for this function:

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

Parameters
threshold

Definition at line 1703 of file edca-txop-n.cc.

References m_baManager, m_blockAckThreshold, NS_LOG_FUNCTION, and ns3::BlockAckManager::SetBlockAckThreshold().

Referenced by ns3::RegularWifiMac::SetBeBlockAckThreshold(), ns3::RegularWifiMac::SetBkBlockAckThreshold(), ns3::QosWifiMacHelper::Setup(), ns3::RegularWifiMac::SetViBlockAckThreshold(), and ns3::RegularWifiMac::SetVoBlockAckThreshold().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::EdcaTxopN::SetLow ( Ptr< MacLow low)

Set MacLow associated with this EdcaTxopN.

Parameters
lowMacLow

Definition at line 461 of file edca-txop-n.cc.

References m_low, and NS_LOG_FUNCTION.

Referenced by AmpduAggregationTest::DoRun(), TwoLevelAggregationTest::DoRun(), and ns3::RegularWifiMac::SetupEdcaQueue().

+ Here is the caller graph for this function:

void ns3::EdcaTxopN::SetManager ( DcfManager manager)

Set DcfManager this EdcaTxopN is associated to.

Parameters
managerDcfManager

Definition at line 341 of file edca-txop-n.cc.

References ns3::DcfManager::Add(), m_dcf, m_manager, and NS_LOG_FUNCTION.

Referenced by AmpduAggregationTest::DoRun().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::EdcaTxopN::SetMaxCw ( uint32_t  maxCw)
virtual

Set the maximum contention window size.

Parameters
maxCwthe maximum contention window size

Implements ns3::Dcf.

Definition at line 399 of file edca-txop-n.cc.

References m_dcf, NS_LOG_FUNCTION, and ns3::DcfState::SetCwMax().

Referenced by ns3::StaWifiMac::SetEdcaParameters().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::EdcaTxopN::SetMinCw ( uint32_t  minCw)
virtual

Set the minimum contention window size.

Parameters
minCwthe minimum contention window size

Implements ns3::Dcf.

Definition at line 392 of file edca-txop-n.cc.

References m_dcf, NS_LOG_FUNCTION, and ns3::DcfState::SetCwMin().

Referenced by ns3::StaWifiMac::SetEdcaParameters().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::EdcaTxopN::SetMpduAggregator ( Ptr< MpduAggregator aggr)

Definition at line 1500 of file edca-txop-n.cc.

References m_mpduAggregator, and NS_LOG_FUNCTION.

Referenced by AmpduAggregationTest::DoRun(), TwoLevelAggregationTest::DoRun(), and ns3::QosWifiMacHelper::Setup().

+ Here is the caller graph for this function:

void ns3::EdcaTxopN::SetMsduAggregator ( Ptr< MsduAggregator aggr)

Definition at line 1493 of file edca-txop-n.cc.

References m_msduAggregator, and NS_LOG_FUNCTION.

Referenced by TwoLevelAggregationTest::DoRun(), and ns3::QosWifiMacHelper::Setup().

+ Here is the caller graph for this function:

void ns3::EdcaTxopN::SetTxFailedCallback ( TxFailed  callback)
Parameters
callbackthe callback to invoke when a packet transmission was completed unsuccessfully.

Definition at line 356 of file edca-txop-n.cc.

References m_txFailedCallback, and NS_LOG_FUNCTION.

void ns3::EdcaTxopN::SetTxMiddle ( MacTxMiddle txMiddle)

Definition at line 448 of file edca-txop-n.cc.

References m_txMiddle, and NS_LOG_FUNCTION.

Referenced by AmpduAggregationTest::DoRun().

+ Here is the caller graph for this function:

void ns3::EdcaTxopN::SetTxOkCallback ( TxOk  callback)
Parameters
callbackthe callback to invoke when a packet transmission was completed successfully.

Definition at line 349 of file edca-txop-n.cc.

References m_txOkCallback, and NS_LOG_FUNCTION.

void ns3::EdcaTxopN::SetTxopLimit ( Time  txopLimit)
virtual

Implements ns3::Dcf.

Definition at line 413 of file edca-txop-n.cc.

References m_dcf, NS_LOG_FUNCTION, and ns3::DcfState::SetTxopLimit().

Referenced by ns3::StaWifiMac::SetEdcaParameters().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::EdcaTxopN::SetTypeOfStation ( enum TypeOfStation  type)

Set type of station with the given type.

Parameters
type

Definition at line 371 of file edca-txop-n.cc.

References m_typeOfStation, and NS_LOG_FUNCTION.

bool ns3::EdcaTxopN::SetupBlockAckIfNeeded ( )
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.

Returns
true if we tried to set up block ACK, false otherwise

Definition at line 1631 of file edca-txop-n.cc.

References ns3::WifiMacHeader::ADDR1, ns3::WifiMacHeader::GetAddr1(), ns3::MacTxMiddle::GetNextSeqNumberByTidAndAddress(), ns3::WifiMacHeader::GetQosTid(), ns3::WifiRemoteStationManager::HasVhtSupported(), m_blockAckInactivityTimeout, m_blockAckThreshold, m_currentHdr, m_mpduAggregator, m_queue, m_stationManager, m_txMiddle, NS_LOG_FUNCTION, and SendAddBaRequest().

Referenced by NotifyAccessGranted().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::EdcaTxopN::SetWifiRemoteStationManager ( Ptr< WifiRemoteStationManager remoteManager)

Set WifiRemoteStationsManager this EdcaTxopN is associated to.

Parameters
remoteManagerWifiRemoteStationManager

Definition at line 363 of file edca-txop-n.cc.

References m_baManager, m_stationManager, NS_LOG_FUNCTION, and ns3::BlockAckManager::SetWifiRemoteStationManager().

Referenced by AmpduAggregationTest::DoRun(), and TwoLevelAggregationTest::DoRun().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::EdcaTxopN::VerifyBlockAck ( void  )
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 1565 of file edca-txop-n.cc.

References ns3::WifiMacHeader::BLOCK_ACK, ns3::OriginatorBlockAckAgreement::ESTABLISHED, ns3::BlockAckManager::ExistsAgreementInState(), ns3::WifiMacHeader::GetAddr1(), GetMpduAggregator(), ns3::WifiMacHeader::GetQosTid(), ns3::WifiMacHeader::GetSequenceNumber(), ns3::OriginatorBlockAckAgreement::INACTIVE, m_baManager, m_currentHdr, NS_LOG_FUNCTION, ns3::WifiMacHeader::SetQosAckPolicy(), and ns3::BlockAckManager::SwitchToBlockAckIfNeeded().

Referenced by NotifyAccessGranted().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Friends And Related Function Documentation

friend class ::AmpduAggregationTest
friend

Definition at line 90 of file edca-txop-n.h.

friend class Dcf
friend

Definition at line 558 of file edca-txop-n.h.

Referenced by EdcaTxopN().

friend class TransmissionListener
friend

Definition at line 560 of file edca-txop-n.h.

Referenced by EdcaTxopN().

Member Data Documentation

AcIndex ns3::EdcaTxopN::m_ac
private

Definition at line 555 of file edca-txop-n.h.

Referenced by CompleteConfig(), and SetAccessCategory().

std::map<Mac48Address, bool> ns3::EdcaTxopN::m_aMpduEnabled

Definition at line 103 of file edca-txop-n.h.

Referenced by GetAmpduExist(), and SetAmpduExist().

TracedValue<uint32_t> ns3::EdcaTxopN::m_backoffTrace
private
uint16_t ns3::EdcaTxopN::m_blockAckInactivityTimeout
private

Definition at line 591 of file edca-txop-n.h.

Referenced by SetBlockAckInactivityTimeout(), and SetupBlockAckIfNeeded().

AggregationCapableTransmissionListener* ns3::EdcaTxopN::m_blockAckListener
private

Definition at line 569 of file edca-txop-n.h.

Referenced by CompleteConfig(), DoDispose(), and EdcaTxopN().

uint8_t ns3::EdcaTxopN::m_blockAckThreshold
private
enum BlockAckType ns3::EdcaTxopN::m_blockAckType
private

Definition at line 589 of file edca-txop-n.h.

Referenced by EdcaTxopN(), NotifyAccessGranted(), and SendBlockAckRequest().

struct Bar ns3::EdcaTxopN::m_currentBar
private

Definition at line 592 of file edca-txop-n.h.

Referenced by MissedAck(), MissedBlockAck(), MissedCts(), and NotifyAccessGranted().

Time ns3::EdcaTxopN::m_currentPacketTimestamp
private
TracedValue<uint32_t> ns3::EdcaTxopN::m_cwTrace
private
uint8_t ns3::EdcaTxopN::m_fragmentNumber
private
bool ns3::EdcaTxopN::m_isAccessRequestedForRts
private
DcfManager* ns3::EdcaTxopN::m_manager
private

Definition at line 562 of file edca-txop-n.h.

Referenced by RestartAccessIfNeeded(), SetManager(), and StartAccessIfNeeded().

Ptr<MpduAggregator> ns3::EdcaTxopN::m_mpduAggregator
private
Ptr<MsduAggregator> ns3::EdcaTxopN::m_msduAggregator
private
QosBlockedDestinations* ns3::EdcaTxopN::m_qosBlockedDestinations
private
Time ns3::EdcaTxopN::m_startTxop
private

Definition at line 593 of file edca-txop-n.h.

Referenced by GetTxopRemaining(), and NotifyAccessGranted().

TransmissionListener* ns3::EdcaTxopN::m_transmissionListener
private
TxFailed ns3::EdcaTxopN::m_txFailedCallback
private
TxOk ns3::EdcaTxopN::m_txOkCallback
private

Definition at line 564 of file edca-txop-n.h.

Referenced by BaTxOk(), GotAck(), GotBlockAck(), and SetTxOkCallback().

TypeOfStation ns3::EdcaTxopN::m_typeOfStation
private

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