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 (void) |
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 congestion window size. More... | |
virtual uint32_t | GetMinCw (void) const |
Return the minimum congestion window size. More... | |
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, WifiMode txMode) |
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 received. More... | |
void | MissedBlockAck (void) |
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 | NeedRts (void) |
Check if the current packet should be sent with a RTS protection. 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 (bool ampdu) |
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 congestion window size. More... | |
virtual void | SetMinCw (uint32_t minCw) |
Set the minimum congestion window size. More... | |
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... | |
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 | 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 272 bytes (on a 64-bit architecture).
Definition at line 82 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 94 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 89 of file edca-txop-n.h.
ns3::EdcaTxopN::EdcaTxopN | ( | ) |
Definition at line 252 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 277 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 1499 of file edca-txop-n.cc.
References ns3::RandomStream::AssignStreams(), m_rng, and NS_LOG_FUNCTION.
Referenced by ns3::MeshHelper::AssignStreams(), ns3::WifiHelper::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 1526 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 1516 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 1070 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 324 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 1370 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 TwoLevelAggregationTest::DoRun().
void ns3::EdcaTxopN::CompleteMpduTx | ( | Ptr< const Packet > | packet, |
WifiMacHeader | hdr, | ||
Time | tstamp | ||
) |
Definition at line 1297 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 1281 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 283 of file edca-txop-n.cc.
References m_aggregator, m_baManager, m_blockAckListener, m_dcf, m_low, 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 1507 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 1077 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 416 of file edca-txop-n.cc.
References ns3::DcfState::GetAifsn(), m_dcf, and NS_LOG_FUNCTION.
bool ns3::EdcaTxopN::GetAmpduExist | ( | void | ) |
Definition at line 1270 of file edca-txop-n.cc.
References m_ampduExist.
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 306 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 1394 of file edca-txop-n.cc.
References m_blockAckThreshold, and NS_LOG_FUNCTION.
Referenced by GetTypeId().
Ptr< WifiMacQueue > ns3::EdcaTxopN::GetEdcaQueue | ( | ) | const |
Return the packet queue associated with this EdcaTxopN.
Definition at line 374 of file edca-txop-n.cc.
References m_queue, and NS_LOG_FUNCTION.
Referenced by 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 1112 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 1129 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 1096 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 congestion window size.
Implements ns3::Dcf.
Definition at line 409 of file edca-txop-n.cc.
References ns3::DcfState::GetCwMax(), m_dcf, and NS_LOG_FUNCTION.
|
virtual |
Return the minimum congestion window size.
Implements ns3::Dcf.
Definition at line 402 of file edca-txop-n.cc.
References ns3::DcfState::GetCwMin(), m_dcf, and NS_LOG_FUNCTION.
Ptr< MsduAggregator > ns3::EdcaTxopN::GetMsduAggregator | ( | void | ) | const |
Definition at line 958 of file edca-txop-n.cc.
References m_aggregator.
Referenced by ns3::EdcaTxopN::AggregationCapableTransmissionListener::GetMsduAggregator().
uint32_t ns3::EdcaTxopN::GetNextFragmentSize | ( | void | ) |
Calculate the size of the next fragment.
Definition at line 1104 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 450 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 312 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 318 of file edca-txop-n.cc.
References ns3::BlockAckManager::GetNRetryNeededPackets(), and m_baManager.
Referenced by ns3::EdcaTxopN::AggregationCapableTransmissionListener::GetNRetryNeededPackets().
|
static |
Definition at line 222 of file edca-txop-n.cc.
References GetBlockAckThreshold(), GetEdcaQueue(), ns3::MakePointerAccessor(), ns3::MakeUintegerAccessor(), SetBlockAckInactivityTimeout(), SetBlockAckThreshold(), and ns3::TypeId::SetParent().
enum TypeOfStation ns3::EdcaTxopN::GetTypeOfStation | ( | void | ) | const |
Return type of station.
Definition at line 367 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 771 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 1208 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, | ||
WifiMode | txMode | ||
) |
Event handler when a Block ACK is received.
blockAck | |
recipient | |
txMode |
Definition at line 1238 of file edca-txop-n.cc.
References ns3::DcfState::GetCw(), ns3::RandomStream::GetNext(), 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 658 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 1230 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 1121 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 430 of file edca-txop-n.cc.
References m_low, and NS_LOG_FUNCTION.
Referenced by ns3::QosWifiMacHelper::Setup(), and StartNext().
|
private |
Definition at line 1173 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 1157 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 received.
Definition at line 817 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 ns3::EdcaTxopN::TransmissionListener::MissedAck().
void ns3::EdcaTxopN::MissedBlockAck | ( | void | ) |
Event handler when a Block ACK timeout has occurred.
Definition at line 887 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, ns3::CtrlBAckRequestHeader::MustSendHtImmediateAck(), NeedBarRetransmission(), NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::Packet::PeekHeader(), 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 665 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::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::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 1012 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 1004 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 1088 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::NeedRts | ( | void | ) |
Check if the current packet should be sent with a RTS protection.
Definition at line 988 of file edca-txop-n.cc.
References ns3::WifiMacHeader::GetAddr1(), m_currentHdr, m_currentPacket, m_stationManager, ns3::WifiRemoteStationManager::NeedRts(), and NS_LOG_FUNCTION.
Referenced by NotifyAccessGranted().
bool ns3::EdcaTxopN::NeedRtsRetransmission | ( | void | ) |
Check if RTS should be re-transmitted if CTS was missed.
Definition at line 996 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 444 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 1039 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 473 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::MacLowTransmissionParameters::EnableRts(), 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_aggregator, m_baManager, m_blockAckThreshold, m_blockAckType, m_currentBar, m_currentHdr, m_currentPacket, m_currentPacketTimestamp, m_fragmentNumber, m_low, m_qosBlockedDestinations, m_queue, m_stationManager, m_transmissionListener, m_txMiddle, MapDestAddressForAggregation(), MapSrcAddressForAggregation(), NeedFragmentation(), NeedRts(), 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 733 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 650 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 643 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 741 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 752 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 461 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 455 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 1196 of file edca-txop-n.cc.
References ns3::WifiMacHeader::GetAddr1(), ns3::WifiMacTrailer::GetSerializedSize(), ns3::WifiMacHeader::GetSerializedSize(), ns3::Packet::GetSize(), 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 759 of file edca-txop-n.cc.
References ns3::WifiMacHeader::GetAddr1(), ns3::WifiMacTrailer::GetSerializedSize(), ns3::WifiMacHeader::GetSerializedSize(), ns3::Packet::GetSize(), 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 467 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 964 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 1401 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_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(), and ns3::MacLow::StartTransmission().
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 1326 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 1464 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 1150 of file edca-txop-n.cc.
References m_ac, and NS_LOG_FUNCTION.
Referenced by 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 395 of file edca-txop-n.cc.
References m_dcf, NS_LOG_FUNCTION, and ns3::DcfState::SetAifsn().
void ns3::EdcaTxopN::SetAmpduExist | ( | bool | ampdu | ) |
Definition at line 1275 of file edca-txop-n.cc.
References m_ampduExist.
Referenced by ns3::EdcaTxopN::AggregationCapableTransmissionListener::SetAmpdu().
void ns3::EdcaTxopN::SetBlockAckInactivityTimeout | ( | uint16_t | timeout | ) |
Definition at line 1387 of file edca-txop-n.cc.
References m_blockAckInactivityTimeout, NS_LOG_FUNCTION, and timeout.
Referenced by GetTypeId(), and ns3::QosWifiMacHelper::Setup().
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 1379 of file edca-txop-n.cc.
References m_baManager, m_blockAckThreshold, NS_LOG_FUNCTION, and ns3::BlockAckManager::SetBlockAckThreshold().
Referenced by GetTypeId(), and ns3::QosWifiMacHelper::Setup().
Set MacLow associated with this EdcaTxopN.
low | MacLow |
Definition at line 437 of file edca-txop-n.cc.
References m_low, and NS_LOG_FUNCTION.
Referenced by TwoLevelAggregationTest::DoRun(), and ns3::RegularWifiMac::SetupEdcaQueue().
void ns3::EdcaTxopN::SetManager | ( | DcfManager * | manager | ) |
Set DcfManager this EdcaTxopN is associated to.
manager | DcfManager |
Definition at line 330 of file edca-txop-n.cc.
References ns3::DcfManager::Add(), m_dcf, m_manager, and NS_LOG_FUNCTION.
|
virtual |
Set the maximum congestion window size.
maxCw | the maximum congestion window size |
Implements ns3::Dcf.
Definition at line 388 of file edca-txop-n.cc.
References m_dcf, NS_LOG_FUNCTION, and ns3::DcfState::SetCwMax().
|
virtual |
Set the minimum congestion window size.
minCw | the minimum congestion window size |
Implements ns3::Dcf.
Definition at line 381 of file edca-txop-n.cc.
References m_dcf, NS_LOG_FUNCTION, and ns3::DcfState::SetCwMin().
void ns3::EdcaTxopN::SetMsduAggregator | ( | Ptr< MsduAggregator > | aggr | ) |
Definition at line 1189 of file edca-txop-n.cc.
References m_aggregator, 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 345 of file edca-txop-n.cc.
References m_txFailedCallback, and NS_LOG_FUNCTION.
void ns3::EdcaTxopN::SetTxMiddle | ( | MacTxMiddle * | txMiddle | ) |
Definition at line 423 of file edca-txop-n.cc.
References m_txMiddle, and NS_LOG_FUNCTION.
void ns3::EdcaTxopN::SetTxOkCallback | ( | TxOk | callback | ) |
callback | the callback to invoke when a packet transmission was completed successfully. |
Definition at line 338 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 360 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 1307 of file edca-txop-n.cc.
References ns3::WifiMacHeader::ADDR1, ns3::WifiMacHeader::GetAddr1(), ns3::MacTxMiddle::GetNextSeqNumberByTidAndAddress(), ns3::WifiMacHeader::GetQosTid(), m_blockAckInactivityTimeout, m_blockAckThreshold, m_currentHdr, m_queue, 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 352 of file edca-txop-n.cc.
References m_baManager, m_stationManager, NS_LOG_FUNCTION, and ns3::BlockAckManager::SetWifiRemoteStationManager().
Referenced by TwoLevelAggregationTest::DoRun().
void ns3::EdcaTxopN::StartAccessIfNeeded | ( | void | ) |
Request access from DCF manager if needed.
Definition at line 976 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 1046 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 1254 of file edca-txop-n.cc.
References ns3::WifiMacHeader::BLOCK_ACK, ns3::OriginatorBlockAckAgreement::ESTABLISHED, ns3::BlockAckManager::ExistsAgreementInState(), ns3::WifiMacHeader::GetAddr1(), ns3::MacLow::GetMpduAggregator(), ns3::WifiMacHeader::GetQosTid(), ns3::WifiMacHeader::GetSequenceNumber(), ns3::OriginatorBlockAckAgreement::INACTIVE, m_baManager, m_currentHdr, m_low, NS_LOG_FUNCTION, ns3::WifiMacHeader::SetQosAckPolicy(), and ns3::BlockAckManager::SwitchToBlockAckIfNeeded().
Referenced by NotifyAccessGranted().
|
friend |
Definition at line 524 of file edca-txop-n.h.
Referenced by EdcaTxopN().
|
friend |
Definition at line 526 of file edca-txop-n.h.
Referenced by EdcaTxopN().
|
private |
Definition at line 521 of file edca-txop-n.h.
Referenced by CompleteConfig(), and SetAccessCategory().
|
private |
Definition at line 546 of file edca-txop-n.h.
Referenced by DoDispose(), GetMsduAggregator(), NotifyAccessGranted(), and SetMsduAggregator().
|
private |
Definition at line 558 of file edca-txop-n.h.
Referenced by GetAmpduExist(), and SetAmpduExist().
|
private |
Definition at line 549 of file edca-txop-n.h.
Referenced by CompleteAmpduTransfer(), CompleteConfig(), CompleteMpduTx(), CompleteTx(), DoDispose(), EdcaTxopN(), GetBaAgreementExists(), GetNOutstandingPacketsInBa(), GetNRetryNeededPackets(), GotAck(), GotAddBaResponse(), GotBlockAck(), GotDelBaFrame(), NeedBarRetransmission(), NeedsAccess(), NotifyAccessGranted(), PeekNextRetransmitPacket(), RemoveRetransmitPacket(), RestartAccessIfNeeded(), SendAddBaRequest(), SetBlockAckThreshold(), SetWifiRemoteStationManager(), StartAccessIfNeeded(), and VerifyBlockAck().
|
private |
Definition at line 556 of file edca-txop-n.h.
Referenced by SetBlockAckInactivityTimeout(), and SetupBlockAckIfNeeded().
|
private |
Definition at line 535 of file edca-txop-n.h.
Referenced by CompleteConfig(), DoDispose(), and EdcaTxopN().
|
private |
Definition at line 553 of file edca-txop-n.h.
Referenced by GetBlockAckThreshold(), NotifyAccessGranted(), SetBlockAckThreshold(), and SetupBlockAckIfNeeded().
|
private |
Definition at line 554 of file edca-txop-n.h.
Referenced by EdcaTxopN(), NotifyAccessGranted(), and SendBlockAckRequest().
|
private |
Definition at line 557 of file edca-txop-n.h.
Referenced by MissedAck(), MissedBlockAck(), MissedCts(), and NotifyAccessGranted().
|
private |
Definition at line 545 of file edca-txop-n.h.
Referenced by BaTxFailed(), BaTxOk(), CompleteTx(), GetFragmentOffset(), GetFragmentPacket(), GetFragmentSize(), GetNextFragmentSize(), GotAck(), GotBlockAck(), IsLastFragment(), MissedAck(), MissedBlockAck(), MissedCts(), NeedBarRetransmission(), NeedDataRetransmission(), NeedFragmentation(), NeedRts(), NeedRtsRetransmission(), NotifyAccessGranted(), NotifySleep(), SendAddBaRequest(), SendBlockAckRequest(), SetupBlockAckIfNeeded(), and VerifyBlockAck().
Definition at line 543 of file edca-txop-n.h.
Referenced by CompleteTx(), EndTxNoAck(), GetFragmentOffset(), GetFragmentPacket(), GetFragmentSize(), GetNextFragmentSize(), GotAck(), GotBlockAck(), IsLastFragment(), MissedAck(), MissedBlockAck(), MissedCts(), NeedBarRetransmission(), NeedDataRetransmission(), NeedFragmentation(), NeedRts(), NeedRtsRetransmission(), NeedsAccess(), NotifyAccessGranted(), NotifyChannelSwitching(), NotifySleep(), RestartAccessIfNeeded(), SendAddBaRequest(), SendBlockAckRequest(), and StartAccessIfNeeded().
|
private |
Definition at line 555 of file edca-txop-n.h.
Referenced by CompleteTx(), and NotifyAccessGranted().
|
private |
Definition at line 527 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 538 of file edca-txop-n.h.
Referenced by GetFragmentOffset(), GetFragmentPacket(), GetFragmentSize(), GetNextFragmentSize(), IsLastFragment(), NextFragment(), and NotifyAccessGranted().
Definition at line 532 of file edca-txop-n.h.
Referenced by CompleteConfig(), DoDispose(), GotAck(), Low(), MissedAck(), MissedBlockAck(), MissedCts(), NotifyAccessGranted(), SendAddBaRequest(), SendBlockAckRequest(), SendDelbaFrame(), SetLow(), and VerifyBlockAck().
|
private |
Definition at line 528 of file edca-txop-n.h.
Referenced by RestartAccessIfNeeded(), SetManager(), and StartAccessIfNeeded().
|
private |
Definition at line 548 of file edca-txop-n.h.
Referenced by DoDispose(), EdcaTxopN(), and NotifyAccessGranted().
|
private |
Definition at line 529 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 536 of file edca-txop-n.h.
Referenced by AssignStreams(), DoDispose(), DoInitialize(), EdcaTxopN(), EndTxNoAck(), GotAck(), GotBlockAck(), MissedAck(), MissedBlockAck(), MissedCts(), and NotifyCollision().
|
private |
Definition at line 537 of file edca-txop-n.h.
Referenced by DoDispose(), GetFragmentOffset(), GetFragmentSize(), GetNextFragmentSize(), IsLastFragment(), MissedAck(), MissedCts(), NeedDataRetransmission(), NeedFragmentation(), NeedRts(), NeedRtsRetransmission(), NotifyAccessGranted(), PushFront(), Queue(), and SetWifiRemoteStationManager().
|
private |
Definition at line 534 of file edca-txop-n.h.
Referenced by DoDispose(), EdcaTxopN(), NotifyAccessGranted(), SendAddBaRequest(), SendBlockAckRequest(), and StartNext().
|
private |
Definition at line 531 of file edca-txop-n.h.
Referenced by BaTxFailed(), MissedAck(), MissedCts(), and SetTxFailedCallback().
|
private |
Definition at line 533 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 530 of file edca-txop-n.h.
Referenced by BaTxOk(), GotAck(), GotBlockAck(), and SetTxOkCallback().
|
private |
Definition at line 547 of file edca-txop-n.h.
Referenced by GetTypeOfStation(), MapDestAddressForAggregation(), MapSrcAddressForAggregation(), and SetTypeOfStation().