This queue contains packets for a particular access class. More...
#include "edca-txop-n.h"
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) |
bool | GetBaAgreementExists (Mac48Address address, uint8_t tid) |
uint8_t | GetBlockAckThreshold (void) const |
Return the current threshold for block ACK mechanism. More... | |
Ptr< WifiMacQueue > | GetEdcaQueue () const |
Return the packet queue associated with this EdcaTxopN. More... | |
uint32_t | GetFragmentOffset (void) |
Calculate the offset for the current fragment. More... | |
Ptr< Packet > | GetFragmentPacket (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< MpduAggregator > | GetMpduAggregator (void) const |
Ptr< MsduAggregator > | GetMsduAggregator (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 |
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< MacLow > | Low (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 (void) |
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 (void) |
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 Packet > | PeekNextRetransmitPacket (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) |
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 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 |
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... | |
![]() | |
SimpleRefCount () | |
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. 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) |
![]() | |
static TypeId | GetTypeId (void) |
![]() | |
static TypeId | GetTypeId (void) |
Register this type. More... | |
![]() | |
static void | Cleanup (void) |
Noop. More... | |
![]() | |
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... | |
Mac48Address | MapDestAddressForAggregation (const WifiMacHeader &hdr) |
Mac48Address | MapSrcAddressForAggregation (const WifiMacHeader &hdr) |
This functions are used only to correctly set addresses in a-msdu subframe. More... | |
EdcaTxopN & | operator= (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... | |
Friends | |
class | ::AmpduAggregationTest |
class | Dcf |
class | TransmissionListener |
Additional Inherited Members | |
![]() | |
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... | |
![]() | |
static TypeId | GetObjectIid (void) |
Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. More... | |
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.
ns3::EdcaTxopN is accessible through the following paths with Config::Set and Config::Connect:
No TraceSources are defined for this type.
Size of this type is 328 bytes (on a 64-bit architecture).
Definition at line 85 of file edca-txop-n.h.
typedef Callback<void, const WifiMacHeader&> ns3::EdcaTxopN::TxFailed |
typedef for a callback to invoke when a packet transmission was failed.
Definition at line 100 of file edca-txop-n.h.
typedef Callback<void, const WifiMacHeader&> ns3::EdcaTxopN::TxOk |
typedef for a callback to invoke when a packet transmission was completed successfully.
Definition at line 95 of file edca-txop-n.h.
ns3::EdcaTxopN::EdcaTxopN | ( | ) |
Definition at line 247 of file edca-txop-n.cc.
References BaTxFailed(), BaTxOk(), ns3::QosBlockedDestinations::Block(), Dcf, m_baManager, m_blockAckListener, m_blockAckType, m_dcf, m_qosBlockedDestinations, m_queue, m_rng, m_transmissionListener, ns3::MakeCallback(), NS_LOG_FUNCTION, ns3::BlockAckManager::SetBlockAckType(), ns3::BlockAckManager::SetBlockDestinationCallback(), ns3::BlockAckManager::SetMaxPacketDelay(), ns3::BlockAckManager::SetQueue(), ns3::BlockAckManager::SetTxFailedCallback(), ns3::BlockAckManager::SetTxOkCallback(), ns3::BlockAckManager::SetUnblockDestinationCallback(), TransmissionListener, and ns3::QosBlockedDestinations::Unblock().
|
virtual |
Definition at line 272 of file edca-txop-n.cc.
References NS_LOG_FUNCTION.
|
private |
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.
stream | first stream index to use |
Definition at line 1519 of file edca-txop-n.cc.
References ns3::RandomStream::AssignStreams(), m_rng, and NS_LOG_FUNCTION.
Referenced by ns3::WifiHelper::AssignStreams(), ns3::MeshHelper::AssignStreams(), ns3::WaveHelper::AssignStreams(), and AssignWifiRandomStreams().
void ns3::EdcaTxopN::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 1546 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().
void ns3::EdcaTxopN::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 1536 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().
void ns3::EdcaTxopN::Cancel | ( | void | ) |
Cancel the transmission.
Definition at line 1071 of file edca-txop-n.cc.
References NS_LOG_DEBUG, and NS_LOG_FUNCTION.
Referenced by ns3::EdcaTxopN::TransmissionListener::Cancel().
void ns3::EdcaTxopN::CompleteAmpduTransfer | ( | Mac48Address | recipient, |
uint8_t | tid | ||
) |
recipient | address of peer station involved in block ack mechanism. |
tid | Ttraffic ID of transmitted packet. |
This function resets the status of OriginatorBlockAckAgreement after the transfer of an A-MPDU with ImmediateBlockAck policy (i.e. no BAR is scheduled)
Definition at line 320 of file edca-txop-n.cc.
References ns3::BlockAckManager::CompleteAmpduExchange(), and m_baManager.
Referenced by ns3::EdcaTxopN::AggregationCapableTransmissionListener::CompleteTransfer().
void ns3::EdcaTxopN::CompleteConfig | ( | void | ) |
Complete block ACK configuration.
Definition at line 1389 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().
void ns3::EdcaTxopN::CompleteMpduTx | ( | Ptr< const Packet > | packet, |
WifiMacHeader | hdr, | ||
Time | tstamp | ||
) |
Definition at line 1316 of file edca-txop-n.cc.
References ns3::WifiMacHeader::GetAddr1(), ns3::MacTxMiddle::GetNextSeqNumberByTidAndAddress(), ns3::WifiMacHeader::GetQosTid(), ns3::WifiMacHeader::IsQosData(), m_baManager, m_txMiddle, ns3::WifiMacHeader::NORMAL_ACK, ns3::BlockAckManager::NotifyMpduTransmission(), NS_ASSERT, and ns3::BlockAckManager::StorePacket().
Referenced by ns3::EdcaTxopN::AggregationCapableTransmissionListener::CompleteMpduTx().
|
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 1300 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().
|
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 278 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.
|
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 1527 of file edca-txop-n.cc.
References ns3::Object::DoInitialize(), ns3::DcfState::GetCw(), ns3::RandomStream::GetNext(), m_dcf, m_rng, NS_LOG_FUNCTION, ns3::DcfState::ResetCw(), and ns3::DcfState::StartBackoffNow().
void ns3::EdcaTxopN::EndTxNoAck | ( | void | ) |
Event handler when a transmission that does not require an ACK has completed.
Definition at line 1078 of file edca-txop-n.cc.
References ns3::DcfState::GetCw(), ns3::RandomStream::GetNext(), m_currentPacket, m_dcf, m_rng, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::DcfState::ResetCw(), StartAccessIfNeeded(), and ns3::DcfState::StartBackoffNow().
Referenced by ns3::EdcaTxopN::TransmissionListener::EndTxNoAck().
|
virtual |
Return the number of slots that make up an AIFS.
Implements ns3::Dcf.
Definition at line 412 of file edca-txop-n.cc.
References ns3::DcfState::GetAifsn(), m_dcf, and NS_LOG_FUNCTION.
bool ns3::EdcaTxopN::GetAmpduExist | ( | Mac48Address | dest | ) |
Definition at line 1276 of file edca-txop-n.cc.
References m_aMpduEnabled, and NS_LOG_FUNCTION.
Referenced by MissedAck(), MissedBlockAck(), MissedCts(), and NotifyAccessGranted().
bool ns3::EdcaTxopN::GetBaAgreementExists | ( | Mac48Address | address, |
uint8_t | tid | ||
) |
recipient | address of the peer station |
tid | traffic ID. |
Checks if a block ack agreement exists with station addressed by recipient for tid tid.
Definition at line 302 of file edca-txop-n.cc.
References ns3::BlockAckManager::ExistsAgreement(), and m_baManager.
Referenced by ns3::EdcaTxopN::AggregationCapableTransmissionListener::GetBlockAckAgreementExists(), MissedAck(), and MissedCts().
uint8_t ns3::EdcaTxopN::GetBlockAckThreshold | ( | void | ) | const |
Return the current threshold for block ACK mechanism.
Definition at line 1413 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.
Definition at line 370 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().
uint32_t ns3::EdcaTxopN::GetFragmentOffset | ( | void | ) |
Calculate the offset for the current fragment.
Definition at line 1113 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().
Ptr< Packet > ns3::EdcaTxopN::GetFragmentPacket | ( | WifiMacHeader * | hdr | ) |
Get the next fragment from the packet with appropriate Wifi header for the fragment.
hdr |
Definition at line 1130 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 StartNext().
uint32_t ns3::EdcaTxopN::GetFragmentSize | ( | void | ) |
Calculate the size of the current fragment.
Definition at line 1097 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().
|
virtual |
Return the maximum contention window size.
Implements ns3::Dcf.
Definition at line 405 of file edca-txop-n.cc.
References ns3::DcfState::GetCwMax(), m_dcf, and NS_LOG_FUNCTION.
|
virtual |
Return the minimum contention window size.
Implements ns3::Dcf.
Definition at line 398 of file edca-txop-n.cc.
References ns3::DcfState::GetCwMin(), m_dcf, and NS_LOG_FUNCTION.
Ptr< MpduAggregator > ns3::EdcaTxopN::GetMpduAggregator | ( | void | ) | const |
Definition at line 967 of file edca-txop-n.cc.
References m_mpduAggregator.
Referenced by ns3::RegularWifiMac::ConfigureAggregation(), ns3::EdcaTxopN::AggregationCapableTransmissionListener::GetMpduAggregator(), and VerifyBlockAck().
Ptr< MsduAggregator > ns3::EdcaTxopN::GetMsduAggregator | ( | void | ) | const |
Definition at line 961 of file edca-txop-n.cc.
References m_msduAggregator.
Referenced by ns3::RegularWifiMac::ConfigureAggregation(), and ns3::EdcaTxopN::AggregationCapableTransmissionListener::GetMsduAggregator().
uint32_t ns3::EdcaTxopN::GetNextFragmentSize | ( | void | ) |
Calculate the size of the next fragment.
Definition at line 1105 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 StartNext().
uint16_t ns3::EdcaTxopN::GetNextSequenceNumberfor | ( | WifiMacHeader * | hdr | ) |
Return the next sequence number for the given header.
hdr | Wi-Fi header |
Definition at line 446 of file edca-txop-n.cc.
References ns3::MacTxMiddle::GetNextSequenceNumberfor(), and m_txMiddle.
Referenced by ns3::EdcaTxopN::AggregationCapableTransmissionListener::GetNextSequenceNumberfor().
uint32_t ns3::EdcaTxopN::GetNOutstandingPacketsInBa | ( | Mac48Address | address, |
uint8_t | tid | ||
) |
recipient | address of peer station involved in block ack mechanism. |
tid | traffic ID. |
Returns number of packets buffered for a specified agreement.
Definition at line 308 of file edca-txop-n.cc.
References ns3::BlockAckManager::GetNBufferedPackets(), and m_baManager.
Referenced by ns3::EdcaTxopN::AggregationCapableTransmissionListener::GetNOutstandingPackets().
uint32_t ns3::EdcaTxopN::GetNRetryNeededPackets | ( | Mac48Address | recipient, |
uint8_t | tid | ||
) | const |
recipient | address of peer station involved in block ack mechanism. |
tid | traffic ID. |
Returns number of packets for a specific agreement that need retransmission.
Definition at line 314 of file edca-txop-n.cc.
References ns3::BlockAckManager::GetNRetryNeededPackets(), and m_baManager.
Referenced by ns3::EdcaTxopN::AggregationCapableTransmissionListener::GetNRetryNeededPackets().
|
static |
Definition at line 232 of file edca-txop-n.cc.
References GetEdcaQueue(), ns3::MakePointerAccessor(), and ns3::TypeId::SetParent().
enum TypeOfStation ns3::EdcaTxopN::GetTypeOfStation | ( | void | ) | const |
Return type of station.
Definition at line 363 of file edca-txop-n.cc.
References m_typeOfStation, and NS_LOG_FUNCTION.
void ns3::EdcaTxopN::GotAck | ( | double | snr, |
WifiMode | txMode | ||
) |
Event handler when an ACK is received.
snr | |
txMode |
Definition at line 757 of file edca-txop-n.cc.
References ns3::WifiActionHeader::BLOCK_ACK, ns3::WifiActionHeader::BLOCK_ACK_DELBA, ns3::WifiActionHeader::ActionValue::blockAck, ns3::Packet::Copy(), ns3::MacLow::DestroyBlockAckAgreement(), ns3::WifiActionHeader::GetAction(), ns3::WifiMacHeader::GetAddr1(), ns3::WifiActionHeader::GetCategory(), ns3::DcfState::GetCw(), ns3::RandomStream::GetNext(), ns3::Packet::GetSize(), ns3::MgtDelBaHeader::GetTid(), ns3::WifiMacHeader::IsAction(), ns3::MgtDelBaHeader::IsByOriginator(), IsLastFragment(), ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), ns3::WifiMacHeader::IsQosAmsdu(), m_baManager, m_currentHdr, m_currentPacket, m_dcf, m_low, m_rng, m_txOkCallback, NeedFragmentation(), NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::Packet::PeekHeader(), ns3::Packet::RemoveHeader(), ns3::DcfState::ResetCw(), RestartAccessIfNeeded(), ns3::DcfState::StartBackoffNow(), and ns3::BlockAckManager::TearDownBlockAck().
Referenced by ns3::EdcaTxopN::TransmissionListener::GotAck().
void ns3::EdcaTxopN::GotAddBaResponse | ( | const MgtAddBaResponseHeader * | respHdr, |
Mac48Address | recipient | ||
) |
Definition at line 1214 of file edca-txop-n.cc.
References ns3::BlockAckManager::ExistsAgreementInState(), ns3::MgtAddBaResponseHeader::GetStatusCode(), ns3::MgtAddBaResponseHeader::GetTid(), ns3::StatusCode::IsSuccess(), m_baManager, ns3::BlockAckManager::NotifyAgreementUnsuccessful(), NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::OriginatorBlockAckAgreement::PENDING, RestartAccessIfNeeded(), and ns3::BlockAckManager::UpdateAgreement().
void ns3::EdcaTxopN::GotBlockAck | ( | const CtrlBAckResponseHeader * | blockAck, |
Mac48Address | recipient, | ||
double | rxSnr, | ||
WifiMode | txMode, | ||
double | dataSnr | ||
) |
Event handler when a Block ACK is received.
blockAck | |
recipient | |
rxSnr | SNR of the block ack itself |
txMode | |
dataSnr | reported data SNR from the peer |
Definition at line 1244 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_baManager, m_currentHdr, m_currentPacket, 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().
void ns3::EdcaTxopN::GotCts | ( | double | snr, |
WifiMode | txMode | ||
) |
Event handler when a CTS is received.
snr | |
txMode |
Definition at line 640 of file edca-txop-n.cc.
References NS_LOG_DEBUG, and NS_LOG_FUNCTION.
Referenced by ns3::EdcaTxopN::TransmissionListener::GotCts().
void ns3::EdcaTxopN::GotDelBaFrame | ( | const MgtDelBaHeader * | delBaHdr, |
Mac48Address | recipient | ||
) |
Definition at line 1236 of file edca-txop-n.cc.
References ns3::MgtDelBaHeader::GetTid(), m_baManager, NS_LOG_DEBUG, NS_LOG_FUNCTION, and ns3::BlockAckManager::TearDownBlockAck().
bool ns3::EdcaTxopN::IsLastFragment | ( | void | ) | const |
Check if the current fragment is the last fragment.
Definition at line 1122 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 StartNext().
Return the MacLow associated with this EdcaTxopN.
Definition at line 426 of file edca-txop-n.cc.
References m_low, and NS_LOG_FUNCTION.
Referenced by StartNext().
|
private |
Definition at line 1174 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().
|
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
hdr |
Definition at line 1158 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().
void ns3::EdcaTxopN::MissedAck | ( | void | ) |
Event handler when an ACK is missed.
Definition at line 803 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(), ns3::DcfState::GetCw(), ns3::RandomStream::GetNext(), ns3::WifiMacHeader::GetQosTid(), ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), ns3::WifiMacHeader::IsQosData(), m_currentBar, m_currentHdr, m_currentPacket, m_dcf, m_low, m_rng, m_stationManager, m_txFailedCallback, m_txMiddle, ns3::CtrlBAckRequestHeader::MustSendHtImmediateAck(), NeedDataRetransmission(), NS_FATAL_ERROR, 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().
void ns3::EdcaTxopN::MissedBlockAck | ( | uint32_t | nMpdus | ) |
Event handler when a Block ACK timeout has occurred.
Definition at line 873 of file edca-txop-n.cc.
References ns3::Packet::AddHeader(), ns3::COMPRESSED_BLOCK_ACK, ns3::WifiMacHeader::GetAddr1(), ns3::MacLow::GetAddress(), GetAmpduExist(), ns3::MacLow::GetBssid(), ns3::DcfState::GetCw(), ns3::RandomStream::GetNext(), ns3::WifiMacHeader::GetQosTid(), ns3::WifiMacHeader::GetSequenceNumber(), ns3::CtrlBAckRequestHeader::GetStartingSequence(), ns3::CtrlBAckRequestHeader::GetTidInfo(), ns3::CtrlBAckResponseHeader::GetTidInfo(), ns3::WifiMacHeader::IsBlockAck(), ns3::WifiMacHeader::IsBlockAckReq(), ns3::WifiMacHeader::IsQosData(), m_currentBar, m_currentHdr, m_currentPacket, 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().
void ns3::EdcaTxopN::MissedCts | ( | void | ) |
Event handler when a CTS timeout has occurred.
Definition at line 647 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(), ns3::DcfState::GetCw(), ns3::RandomStream::GetNext(), ns3::WifiMacHeader::GetQosTid(), ns3::CtrlBAckRequestHeader::GetTidInfo(), ns3::WifiMacHeader::IsBlockAckReq(), ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), ns3::WifiMacHeader::IsQosData(), m_currentBar, m_currentHdr, m_currentPacket, m_dcf, m_low, m_rng, m_stationManager, m_txFailedCallback, m_txMiddle, ns3::CtrlBAckRequestHeader::MustSendHtImmediateAck(), NeedRtsRetransmission(), NS_FATAL_ERROR, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::Packet::PeekHeader(), 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().
bool ns3::EdcaTxopN::NeedBarRetransmission | ( | void | ) |
Check if Block ACK Request should be re-transmitted.
Definition at line 1013 of file edca-txop-n.cc.
References ns3::WifiMacHeader::GetAddr1(), ns3::WifiMacHeader::GetQosTid(), ns3::WifiMacHeader::GetSequenceNumber(), ns3::CtrlBAckRequestHeader::GetStartingSequence(), ns3::CtrlBAckRequestHeader::GetTidInfo(), ns3::CtrlBAckResponseHeader::GetTidInfo(), ns3::WifiMacHeader::IsBlockAck(), ns3::WifiMacHeader::IsBlockAckReq(), ns3::WifiMacHeader::IsQosData(), m_baManager, m_currentHdr, m_currentPacket, ns3::BlockAckManager::NeedBarRetransmission(), and ns3::Packet::PeekHeader().
Referenced by MissedBlockAck().
bool ns3::EdcaTxopN::NeedDataRetransmission | ( | void | ) |
Check if DATA should be re-transmitted if ACK was missed.
Definition at line 1005 of file edca-txop-n.cc.
References ns3::WifiMacHeader::GetAddr1(), m_currentHdr, m_currentPacket, m_stationManager, ns3::WifiRemoteStationManager::NeedDataRetransmission(), and NS_LOG_FUNCTION.
Referenced by MissedAck().
bool ns3::EdcaTxopN::NeedFragmentation | ( | void | ) | const |
Check if the current packet should be fragmented.
Definition at line 1089 of file edca-txop-n.cc.
References ns3::WifiMacHeader::GetAddr1(), m_currentHdr, m_currentPacket, m_stationManager, ns3::WifiRemoteStationManager::NeedFragmentation(), and NS_LOG_FUNCTION.
Referenced by GotAck(), and NotifyAccessGranted().
bool ns3::EdcaTxopN::NeedRtsRetransmission | ( | void | ) |
Check if RTS should be re-transmitted if CTS was missed.
Definition at line 997 of file edca-txop-n.cc.
References ns3::WifiMacHeader::GetAddr1(), m_currentHdr, m_currentPacket, m_stationManager, ns3::WifiRemoteStationManager::NeedRtsRetransmission(), and NS_LOG_FUNCTION.
Referenced by MissedCts().
bool ns3::EdcaTxopN::NeedsAccess | ( | void | ) | const |
Check if the EDCAF requires access.
Definition at line 440 of file edca-txop-n.cc.
References ns3::BlockAckManager::HasPackets(), m_baManager, m_currentPacket, m_queue, and NS_LOG_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 1040 of file edca-txop-n.cc.
References m_fragmentNumber, and NS_LOG_FUNCTION.
Referenced by StartNext().
void ns3::EdcaTxopN::NotifyAccessGranted | ( | void | ) |
Notify the EDCAF that access has been granted.
Definition at line 469 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_low, m_msduAggregator, m_qosBlockedDestinations, m_queue, m_stationManager, m_transmissionListener, m_txMiddle, MapDestAddressForAggregation(), MapSrcAddressForAggregation(), NeedFragmentation(), 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().
void ns3::EdcaTxopN::NotifyChannelSwitching | ( | void | ) |
When a channel switching occurs, enqueued packets are removed.
Definition at line 721 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().
void ns3::EdcaTxopN::NotifyCollision | ( | void | ) |
Notify the EDCAF that collision has occurred.
Definition at line 632 of file edca-txop-n.cc.
References ns3::DcfState::GetCw(), ns3::RandomStream::GetNext(), m_dcf, m_rng, NS_LOG_FUNCTION, RestartAccessIfNeeded(), and ns3::DcfState::StartBackoffNow().
Referenced by ns3::EdcaTxopN::Dcf::DoNotifyCollision(), and NotifyInternalCollision().
void ns3::EdcaTxopN::NotifyInternalCollision | ( | void | ) |
Notify the EDCAF that internal collision has occurred.
Definition at line 625 of file edca-txop-n.cc.
References NotifyCollision(), and NS_LOG_FUNCTION.
Referenced by ns3::EdcaTxopN::Dcf::DoNotifyInternalCollision().
void ns3::EdcaTxopN::NotifySleep | ( | void | ) |
When sleep operation occurs, re-insert pending packet into front of the queue.
Definition at line 729 of file edca-txop-n.cc.
References m_currentHdr, m_currentPacket, m_queue, and NS_LOG_FUNCTION.
Referenced by ns3::EdcaTxopN::Dcf::DoNotifySleep().
void ns3::EdcaTxopN::NotifyWakeUp | ( | void | ) |
When wake up operation occurs, restart channel access.
Definition at line 740 of file edca-txop-n.cc.
References NS_LOG_FUNCTION, and RestartAccessIfNeeded().
Referenced by ns3::EdcaTxopN::Dcf::DoNotifyWakeUp().
Ptr< const Packet > ns3::EdcaTxopN::PeekNextRetransmitPacket | ( | WifiMacHeader & | header, |
Mac48Address | recipient, | ||
uint8_t | tid, | ||
Time * | timestamp | ||
) |
Definition at line 457 of file edca-txop-n.cc.
References m_baManager, and ns3::BlockAckManager::PeekNextPacket().
Referenced by ns3::EdcaTxopN::AggregationCapableTransmissionListener::PeekNextPacketInBaQueue().
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).
hdr | Wi-Fi header |
Definition at line 451 of file edca-txop-n.cc.
References m_txMiddle, and ns3::MacTxMiddle::PeekNextSequenceNumberfor().
Referenced by ns3::EdcaTxopN::AggregationCapableTransmissionListener::PeekNextSequenceNumberfor().
void ns3::EdcaTxopN::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 1204 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().
void ns3::EdcaTxopN::Queue | ( | Ptr< const Packet > | packet, |
const WifiMacHeader & | hdr | ||
) |
packet | packet to send |
hdr | header of packet to send. |
Store the packet in the internal queue until it can be sent safely.
Definition at line 747 of file edca-txop-n.cc.
References ns3::WifiMacHeader::GetAddr1(), m_queue, m_stationManager, NS_LOG_FUNCTION, ns3::WifiRemoteStationManager::PrepareForQueue(), and StartAccessIfNeeded().
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 463 of file edca-txop-n.cc.
References m_baManager, and ns3::BlockAckManager::RemovePacket().
Referenced by ns3::EdcaTxopN::AggregationCapableTransmissionListener::RemoveFromBaQueue().
void ns3::EdcaTxopN::RestartAccessIfNeeded | ( | void | ) |
Restart access request if needed.
Definition at line 973 of file edca-txop-n.cc.
References ns3::BlockAckManager::HasPackets(), ns3::DcfState::IsAccessRequested(), m_baManager, m_currentPacket, m_dcf, m_manager, m_queue, NS_LOG_FUNCTION, and ns3::DcfManager::RequestAccess().
Referenced by GotAck(), GotAddBaResponse(), GotBlockAck(), MissedAck(), MissedBlockAck(), MissedCts(), NotifyCollision(), and NotifyWakeUp().
|
private |
Sends an ADDBA Request to establish a block ack agreement with sta addressed by recipient for tid tid.
recipient | |
tid | |
startSeq | |
timeout | |
immediateBAck |
Definition at line 1420 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().
|
private |
After that all packets, for which a block ack agreement was established, have been transmitted, we have to send a block ack request.
bar |
Definition at line 1345 of file edca-txop-n.cc.
References ns3::Bar::bar, ns3::BASIC_BLOCK_ACK, ns3::COMPRESSED_BLOCK_ACK, ns3::MacLowTransmissionParameters::DisableNextData(), ns3::MacLowTransmissionParameters::DisableOverrideDurationId(), ns3::MacLowTransmissionParameters::DisableRts(), ns3::MacLowTransmissionParameters::EnableAck(), ns3::MacLowTransmissionParameters::EnableBasicBlockAck(), ns3::MacLowTransmissionParameters::EnableCompressedBlockAck(), ns3::MacLow::GetAddress(), ns3::MacLow::GetBssid(), ns3::Bar::immediate, m_blockAckType, m_currentHdr, m_currentPacket, m_low, m_transmissionListener, ns3::MULTI_TID_BLOCK_ACK, NS_FATAL_ERROR, NS_LOG_FUNCTION, ns3::Bar::recipient, ns3::WifiMacHeader::SetAddr1(), ns3::WifiMacHeader::SetAddr2(), ns3::WifiMacHeader::SetAddr3(), ns3::WifiMacHeader::SetDsNotFrom(), ns3::WifiMacHeader::SetDsNotTo(), ns3::WifiMacHeader::SetNoMoreFragments(), ns3::WifiMacHeader::SetNoRetry(), ns3::WifiMacHeader::SetType(), ns3::MacLow::StartTransmission(), and ns3::WIFI_MAC_CTL_BACKREQ.
Referenced by NotifyAccessGranted().
void ns3::EdcaTxopN::SendDelbaFrame | ( | Mac48Address | addr, |
uint8_t | tid, | ||
bool | byOriginator | ||
) |
Definition at line 1484 of file edca-txop-n.cc.
References ns3::Packet::AddHeader(), ns3::WifiActionHeader::BLOCK_ACK, ns3::WifiActionHeader::BLOCK_ACK_DELBA, ns3::WifiActionHeader::ActionValue::blockAck, ns3::MacLow::GetAddress(), m_low, NS_LOG_FUNCTION, PushFront(), ns3::WifiMacHeader::SetAction(), ns3::WifiActionHeader::SetAction(), ns3::WifiMacHeader::SetAddr1(), ns3::WifiMacHeader::SetAddr2(), ns3::WifiMacHeader::SetAddr3(), ns3::MgtDelBaHeader::SetByOriginator(), ns3::MgtDelBaHeader::SetByRecipient(), ns3::WifiMacHeader::SetDsNotFrom(), ns3::WifiMacHeader::SetDsNotTo(), and ns3::MgtDelBaHeader::SetTid().
Referenced by ns3::EdcaTxopN::AggregationCapableTransmissionListener::BlockAckInactivityTimeout(), and CompleteConfig().
void ns3::EdcaTxopN::SetAccessCategory | ( | enum AcIndex | ac | ) |
Set the access category of this EDCAF.
ac |
Definition at line 1151 of file edca-txop-n.cc.
References m_ac, and NS_LOG_FUNCTION.
Referenced by AmpduAggregationTest::DoRun(), and TwoLevelAggregationTest::DoRun().
|
virtual |
aifsn | the 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 391 of file edca-txop-n.cc.
References m_dcf, NS_LOG_FUNCTION, and ns3::DcfState::SetAifsn().
void ns3::EdcaTxopN::SetAmpduExist | ( | Mac48Address | dest, |
bool | enableAmpdu | ||
) |
Definition at line 1286 of file edca-txop-n.cc.
References m_aMpduEnabled, and NS_LOG_FUNCTION.
Referenced by ns3::EdcaTxopN::AggregationCapableTransmissionListener::SetAmpdu().
void ns3::EdcaTxopN::SetBlockAckInactivityTimeout | ( | uint16_t | timeout | ) |
Definition at line 1406 of file edca-txop-n.cc.
References m_blockAckInactivityTimeout, NS_LOG_FUNCTION, and timeout.
Referenced by ns3::RegularWifiMac::SetBeBlockAckInactivityTimeout(), ns3::RegularWifiMac::SetBkBlockAckInactivityTimeout(), ns3::QosWifiMacHelper::Setup(), ns3::RegularWifiMac::SetViBlockAckInactivityTimeout(), and ns3::RegularWifiMac::SetVoBlockAckInactivityTimeout().
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.
threshold |
Definition at line 1398 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().
Set MacLow associated with this EdcaTxopN.
low | MacLow |
Definition at line 433 of file edca-txop-n.cc.
References m_low, and NS_LOG_FUNCTION.
Referenced by AmpduAggregationTest::DoRun(), TwoLevelAggregationTest::DoRun(), and ns3::RegularWifiMac::SetupEdcaQueue().
void ns3::EdcaTxopN::SetManager | ( | DcfManager * | manager | ) |
Set DcfManager this EdcaTxopN is associated to.
manager | DcfManager |
Definition at line 326 of file edca-txop-n.cc.
References ns3::DcfManager::Add(), m_dcf, m_manager, and NS_LOG_FUNCTION.
Referenced by AmpduAggregationTest::DoRun().
|
virtual |
Set the maximum contention window size.
maxCw | the maximum contention window size |
Implements ns3::Dcf.
Definition at line 384 of file edca-txop-n.cc.
References m_dcf, NS_LOG_FUNCTION, and ns3::DcfState::SetCwMax().
|
virtual |
Set the minimum contention window size.
minCw | the minimum contention window size |
Implements ns3::Dcf.
Definition at line 377 of file edca-txop-n.cc.
References m_dcf, NS_LOG_FUNCTION, and ns3::DcfState::SetCwMin().
void ns3::EdcaTxopN::SetMpduAggregator | ( | Ptr< MpduAggregator > | aggr | ) |
Definition at line 1197 of file edca-txop-n.cc.
References m_mpduAggregator, and NS_LOG_FUNCTION.
Referenced by AmpduAggregationTest::DoRun(), TwoLevelAggregationTest::DoRun(), and ns3::QosWifiMacHelper::Setup().
void ns3::EdcaTxopN::SetMsduAggregator | ( | Ptr< MsduAggregator > | aggr | ) |
Definition at line 1190 of file edca-txop-n.cc.
References m_msduAggregator, and NS_LOG_FUNCTION.
Referenced by TwoLevelAggregationTest::DoRun(), and ns3::QosWifiMacHelper::Setup().
void ns3::EdcaTxopN::SetTxFailedCallback | ( | TxFailed | callback | ) |
callback | the callback to invoke when a packet transmission was completed unsuccessfully. |
Definition at line 341 of file edca-txop-n.cc.
References m_txFailedCallback, and NS_LOG_FUNCTION.
void ns3::EdcaTxopN::SetTxMiddle | ( | MacTxMiddle * | txMiddle | ) |
Definition at line 419 of file edca-txop-n.cc.
References m_txMiddle, and NS_LOG_FUNCTION.
Referenced by AmpduAggregationTest::DoRun().
void ns3::EdcaTxopN::SetTxOkCallback | ( | TxOk | callback | ) |
callback | the callback to invoke when a packet transmission was completed successfully. |
Definition at line 334 of file edca-txop-n.cc.
References m_txOkCallback, and NS_LOG_FUNCTION.
void ns3::EdcaTxopN::SetTypeOfStation | ( | enum TypeOfStation | type | ) |
Set type of station with the given type.
type |
Definition at line 356 of file edca-txop-n.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 1326 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().
void ns3::EdcaTxopN::SetWifiRemoteStationManager | ( | Ptr< WifiRemoteStationManager > | remoteManager | ) |
Set WifiRemoteStationsManager this EdcaTxopN is associated to.
remoteManager | WifiRemoteStationManager |
Definition at line 348 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().
void ns3::EdcaTxopN::StartAccessIfNeeded | ( | void | ) |
Request access from DCF manager if needed.
Definition at line 985 of file edca-txop-n.cc.
References ns3::BlockAckManager::HasPackets(), ns3::DcfState::IsAccessRequested(), m_baManager, m_currentPacket, m_dcf, m_manager, m_queue, NS_LOG_FUNCTION, and ns3::DcfManager::RequestAccess().
Referenced by EndTxNoAck(), PushFront(), and Queue().
void ns3::EdcaTxopN::StartNext | ( | void | ) |
Start transmission for the next fragment.
This is called for fragment only.
Definition at line 1047 of file edca-txop-n.cc.
References ns3::MacLowTransmissionParameters::DisableNextData(), ns3::MacLowTransmissionParameters::DisableOverrideDurationId(), ns3::MacLowTransmissionParameters::DisableRts(), ns3::MacLowTransmissionParameters::EnableAck(), ns3::MacLowTransmissionParameters::EnableNextData(), GetFragmentPacket(), GetNextFragmentSize(), IsLastFragment(), Low(), m_transmissionListener, NextFragment(), NS_LOG_DEBUG, NS_LOG_FUNCTION, and ns3::MacLow::StartTransmission().
Referenced by ns3::EdcaTxopN::TransmissionListener::StartNext().
|
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 1260 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().
|
friend |
Definition at line 89 of file edca-txop-n.h.
|
friend |
Definition at line 530 of file edca-txop-n.h.
Referenced by EdcaTxopN().
|
friend |
Definition at line 532 of file edca-txop-n.h.
Referenced by EdcaTxopN().
|
private |
Definition at line 527 of file edca-txop-n.h.
Referenced by CompleteConfig(), and SetAccessCategory().
std::map<Mac48Address, bool> ns3::EdcaTxopN::m_aMpduEnabled |
Definition at line 102 of file edca-txop-n.h.
Referenced by GetAmpduExist(), and SetAmpduExist().
|
private |
Definition at line 556 of file edca-txop-n.h.
Referenced by CompleteAmpduTransfer(), CompleteConfig(), CompleteMpduTx(), CompleteTx(), DoDispose(), AmpduAggregationTest::DoRun(), EdcaTxopN(), GetBaAgreementExists(), GetNOutstandingPacketsInBa(), GetNRetryNeededPackets(), GotAck(), GotAddBaResponse(), GotBlockAck(), GotDelBaFrame(), NeedBarRetransmission(), NeedsAccess(), NotifyAccessGranted(), PeekNextRetransmitPacket(), RemoveRetransmitPacket(), RestartAccessIfNeeded(), SendAddBaRequest(), SetBlockAckThreshold(), SetWifiRemoteStationManager(), StartAccessIfNeeded(), and VerifyBlockAck().
|
private |
Definition at line 563 of file edca-txop-n.h.
Referenced by SetBlockAckInactivityTimeout(), and SetupBlockAckIfNeeded().
|
private |
Definition at line 541 of file edca-txop-n.h.
Referenced by CompleteConfig(), DoDispose(), and EdcaTxopN().
|
private |
Definition at line 560 of file edca-txop-n.h.
Referenced by GetBlockAckThreshold(), NotifyAccessGranted(), SetBlockAckThreshold(), and SetupBlockAckIfNeeded().
|
private |
Definition at line 561 of file edca-txop-n.h.
Referenced by EdcaTxopN(), NotifyAccessGranted(), and SendBlockAckRequest().
|
private |
Definition at line 564 of file edca-txop-n.h.
Referenced by MissedAck(), MissedBlockAck(), MissedCts(), and NotifyAccessGranted().
|
private |
Definition at line 551 of file edca-txop-n.h.
Referenced by BaTxFailed(), BaTxOk(), CompleteTx(), AmpduAggregationTest::DoRun(), GetFragmentOffset(), GetFragmentPacket(), GetFragmentSize(), GetNextFragmentSize(), GotAck(), GotBlockAck(), IsLastFragment(), MissedAck(), MissedBlockAck(), MissedCts(), NeedBarRetransmission(), NeedDataRetransmission(), NeedFragmentation(), NeedRtsRetransmission(), NotifyAccessGranted(), NotifySleep(), SendAddBaRequest(), SendBlockAckRequest(), SetupBlockAckIfNeeded(), and VerifyBlockAck().
Definition at line 549 of file edca-txop-n.h.
Referenced by CompleteTx(), AmpduAggregationTest::DoRun(), EndTxNoAck(), GetFragmentOffset(), GetFragmentPacket(), GetFragmentSize(), GetNextFragmentSize(), GotAck(), GotBlockAck(), IsLastFragment(), MissedAck(), MissedBlockAck(), MissedCts(), NeedBarRetransmission(), NeedDataRetransmission(), NeedFragmentation(), NeedRtsRetransmission(), NeedsAccess(), NotifyAccessGranted(), NotifyChannelSwitching(), NotifySleep(), RestartAccessIfNeeded(), SendAddBaRequest(), SendBlockAckRequest(), and StartAccessIfNeeded().
|
private |
Definition at line 562 of file edca-txop-n.h.
Referenced by CompleteTx(), and NotifyAccessGranted().
|
private |
Definition at line 533 of file edca-txop-n.h.
Referenced by DoDispose(), DoInitialize(), EdcaTxopN(), EndTxNoAck(), GetAifsn(), GetMaxCw(), GetMinCw(), GotAck(), GotBlockAck(), MissedAck(), MissedBlockAck(), MissedCts(), NotifyCollision(), RestartAccessIfNeeded(), SetAifsn(), SetManager(), SetMaxCw(), SetMinCw(), and StartAccessIfNeeded().
|
private |
Definition at line 544 of file edca-txop-n.h.
Referenced by GetFragmentOffset(), GetFragmentPacket(), GetFragmentSize(), GetNextFragmentSize(), IsLastFragment(), NextFragment(), and NotifyAccessGranted().
Definition at line 538 of file edca-txop-n.h.
Referenced by CompleteConfig(), DoDispose(), GotAck(), Low(), MissedAck(), MissedBlockAck(), MissedCts(), NotifyAccessGranted(), SendAddBaRequest(), SendBlockAckRequest(), SendDelbaFrame(), and SetLow().
|
private |
Definition at line 534 of file edca-txop-n.h.
Referenced by RestartAccessIfNeeded(), SetManager(), and StartAccessIfNeeded().
|
private |
Definition at line 553 of file edca-txop-n.h.
Referenced by DoDispose(), GetMpduAggregator(), SetMpduAggregator(), and SetupBlockAckIfNeeded().
|
private |
Definition at line 552 of file edca-txop-n.h.
Referenced by DoDispose(), GetMsduAggregator(), NotifyAccessGranted(), and SetMsduAggregator().
|
private |
Definition at line 555 of file edca-txop-n.h.
Referenced by DoDispose(), EdcaTxopN(), and NotifyAccessGranted().
|
private |
Definition at line 535 of file edca-txop-n.h.
Referenced by DoDispose(), EdcaTxopN(), GetEdcaQueue(), NeedsAccess(), NotifyAccessGranted(), NotifyChannelSwitching(), NotifySleep(), PushFront(), Queue(), RestartAccessIfNeeded(), SetupBlockAckIfNeeded(), and StartAccessIfNeeded().
|
private |
Definition at line 542 of file edca-txop-n.h.
Referenced by AssignStreams(), DoDispose(), DoInitialize(), EdcaTxopN(), EndTxNoAck(), GotAck(), GotBlockAck(), MissedAck(), MissedBlockAck(), MissedCts(), and NotifyCollision().
|
private |
Definition at line 543 of file edca-txop-n.h.
Referenced by DoDispose(), GetFragmentOffset(), GetFragmentSize(), GetNextFragmentSize(), IsLastFragment(), MissedAck(), MissedBlockAck(), MissedCts(), NeedDataRetransmission(), NeedFragmentation(), NeedRtsRetransmission(), NotifyAccessGranted(), PushFront(), Queue(), SendAddBaRequest(), SetupBlockAckIfNeeded(), and SetWifiRemoteStationManager().
|
private |
Definition at line 540 of file edca-txop-n.h.
Referenced by DoDispose(), EdcaTxopN(), NotifyAccessGranted(), SendAddBaRequest(), SendBlockAckRequest(), and StartNext().
|
private |
Definition at line 537 of file edca-txop-n.h.
Referenced by BaTxFailed(), MissedAck(), MissedCts(), and SetTxFailedCallback().
|
private |
Definition at line 539 of file edca-txop-n.h.
Referenced by CompleteConfig(), CompleteMpduTx(), CompleteTx(), DoDispose(), GetNextSequenceNumberfor(), MissedAck(), MissedCts(), NotifyAccessGranted(), PeekNextSequenceNumberfor(), SendAddBaRequest(), SetTxMiddle(), and SetupBlockAckIfNeeded().
|
private |
Definition at line 536 of file edca-txop-n.h.
Referenced by BaTxOk(), GotAck(), GotBlockAck(), and SetTxOkCallback().
|
private |
Definition at line 554 of file edca-txop-n.h.
Referenced by GetTypeOfStation(), MapDestAddressForAggregation(), MapSrcAddressForAggregation(), and SetTypeOfStation().