This queue contains packets for a particular access class. More...
#include <edca-txop-n.h>
Classes | |
class | BlockAckEventListener |
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. 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 84 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 96 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 91 of file edca-txop-n.h.
ns3::EdcaTxopN::EdcaTxopN | ( | ) |
Definition at line 226 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 250 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 1411 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 1438 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 1428 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 983 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 297 of file edca-txop-n.cc.
References ns3::BlockAckManager::CompleteAmpduExchange(), and m_baManager.
Referenced by ns3::EdcaTxopN::BlockAckEventListener::CompleteTransfer().
void ns3::EdcaTxopN::CompleteConfig | ( | void | ) |
Complete block ACK configuration.
Definition at line 1282 of file edca-txop-n.cc.
References m_ac, m_baManager, m_blockAckListener, m_low, m_txMiddle, ns3::MakeCallback(), NS_LOG_FUNCTION, SendDelbaFrame(), ns3::BlockAckManager::SetBlockAckInactivityCallback(), and ns3::BlockAckManager::SetTxMiddle().
void ns3::EdcaTxopN::CompleteMpduTx | ( | Ptr< const Packet > | packet, |
WifiMacHeader | hdr, | ||
Time | tstamp | ||
) |
Definition at line 1210 of file edca-txop-n.cc.
References ns3::WifiMacHeader::GetAddr1(), ns3::MacTxMiddle::GetNextSeqNumberByTidAndAddress(), ns3::WifiMacHeader::GetQosTid(), m_baManager, m_txMiddle, ns3::WifiMacHeader::NORMAL_ACK, ns3::BlockAckManager::NotifyMpduTransmission(), and ns3::BlockAckManager::StorePacket().
Referenced by ns3::EdcaTxopN::BlockAckEventListener::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 1194 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 256 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 1419 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 990 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 388 of file edca-txop-n.cc.
References ns3::DcfState::GetAifsn(), m_dcf, and NS_LOG_FUNCTION.
bool ns3::EdcaTxopN::GetAmpduExist | ( | void | ) |
Definition at line 1183 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 279 of file edca-txop-n.cc.
References ns3::BlockAckManager::ExistsAgreement(), and m_baManager.
Referenced by ns3::EdcaTxopN::BlockAckEventListener::GetBlockAckAgreementExists().
uint8_t ns3::EdcaTxopN::GetBlockAckThreshold | ( | void | ) | const |
Return the current threshold for block ACK mechanism.
Definition at line 1306 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 346 of file edca-txop-n.cc.
References m_queue, and NS_LOG_FUNCTION.
Referenced by ns3::EdcaTxopN::TransmissionListener::GetQueue(), ns3::EdcaTxopN::BlockAckEventListener::GetQueue(), and GetTypeId().
uint32_t ns3::EdcaTxopN::GetFragmentOffset | ( | void | ) |
Calculate the offset for the current fragment.
Definition at line 1025 of file edca-txop-n.cc.
References ns3::WifiMacHeader::GetAddr1(), 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 1042 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 1009 of file edca-txop-n.cc.
References ns3::WifiMacHeader::GetAddr1(), 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 381 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 374 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 871 of file edca-txop-n.cc.
References m_aggregator.
uint32_t ns3::EdcaTxopN::GetNextFragmentSize | ( | void | ) |
Calculate the size of the next fragment.
Definition at line 1017 of file edca-txop-n.cc.
References ns3::WifiMacHeader::GetAddr1(), 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 422 of file edca-txop-n.cc.
References ns3::MacTxMiddle::GetNextSequenceNumberfor(), and m_txMiddle.
Referenced by ns3::EdcaTxopN::BlockAckEventListener::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 285 of file edca-txop-n.cc.
References ns3::BlockAckManager::GetNBufferedPackets(), and m_baManager.
Referenced by ns3::EdcaTxopN::BlockAckEventListener::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 291 of file edca-txop-n.cc.
References ns3::BlockAckManager::GetNRetryNeededPackets(), and m_baManager.
Referenced by ns3::EdcaTxopN::BlockAckEventListener::GetNRetryNeededPackets().
|
static |
Definition at line 200 of file edca-txop-n.cc.
References ns3::TypeId::AddConstructor(), GetBlockAckThreshold(), GetEdcaQueue(), ns3::Dcf::GetTypeId(), ns3::MakePointerAccessor(), ns3::MakeUintegerAccessor(), SetBlockAckInactivityTimeout(), SetBlockAckThreshold(), and ns3::TypeId::SetParent().
enum TypeOfStation ns3::EdcaTxopN::GetTypeOfStation | ( | void | ) | const |
Return type of station.
Definition at line 339 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 699 of file edca-txop-n.cc.
References ns3::WifiActionHeader::BLOCK_ACK, ns3::WifiActionHeader::BLOCK_ACK_DELBA, ns3::WifiActionHeader::ActionValue::blockAck, ns3::Packet::Copy(), 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 1121 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 1151 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 627 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 1143 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 1034 of file edca-txop-n.cc.
References ns3::WifiMacHeader::GetAddr1(), 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 402 of file edca-txop-n.cc.
References m_low, and NS_LOG_FUNCTION.
Referenced by ns3::QosWifiMacHelper::Setup(), and StartNext().
|
private |
Definition at line 1086 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 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 1070 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 NotifyAccessGranted().
void ns3::EdcaTxopN::MissedAck | ( | void | ) |
Event handler when an ACK is received.
Definition at line 745 of file edca-txop-n.cc.
References ns3::Packet::AddHeader(), ns3::COMPRESSED_BLOCK_ACK, ns3::WifiMacHeader::GetAddr1(), GetAmpduExist(), ns3::DcfState::GetCw(), ns3::RandomStream::GetNext(), ns3::WifiMacHeader::GetQosTid(), ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), m_currentBar, m_currentHdr, m_currentPacket, m_dcf, m_low, m_rng, m_stationManager, m_txFailedCallback, m_txMiddle, ns3::CtrlBAckRequestHeader::MustSendHtImmediateAck(), NeedDataRetransmission(), NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::MacTxMiddle::PeekNextSequenceNumberfor(), ns3::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 800 of file edca-txop-n.cc.
References ns3::Packet::AddHeader(), ns3::COMPRESSED_BLOCK_ACK, ns3::WifiMacHeader::GetAddr1(), GetAmpduExist(), 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 634 of file edca-txop-n.cc.
References ns3::WifiMacHeader::GetAddr1(), GetAmpduExist(), ns3::DcfState::GetCw(), ns3::RandomStream::GetNext(), ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), m_currentHdr, m_currentPacket, m_dcf, m_low, m_rng, m_stationManager, m_txFailedCallback, NeedRtsRetransmission(), NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::DcfState::ResetCw(), RestartAccessIfNeeded(), ns3::DcfState::StartBackoffNow(), and ns3::DcfState::UpdateFailedCw().
Referenced by ns3::EdcaTxopN::TransmissionListener::MissedCts().
bool ns3::EdcaTxopN::NeedBarRetransmission | ( | void | ) |
Check if Block ACK Request should be re-transmitted.
Definition at line 925 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 917 of file edca-txop-n.cc.
References ns3::WifiMacHeader::GetAddr1(), m_currentHdr, m_currentPacket, m_stationManager, and NS_LOG_FUNCTION.
Referenced by MissedAck().
bool ns3::EdcaTxopN::NeedFragmentation | ( | void | ) | const |
Check if the current packet should be fragmented.
Definition at line 1001 of file edca-txop-n.cc.
References ns3::WifiMacHeader::GetAddr1(), m_currentHdr, m_currentPacket, m_stationManager, 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 901 of file edca-txop-n.cc.
References ns3::WifiMacHeader::GetAddr1(), m_currentHdr, m_currentPacket, m_stationManager, 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 909 of file edca-txop-n.cc.
References ns3::WifiMacHeader::GetAddr1(), m_currentHdr, m_currentPacket, m_stationManager, and NS_LOG_FUNCTION.
Referenced by MissedCts().
bool ns3::EdcaTxopN::NeedsAccess | ( | void | ) | const |
Check if the EDCAF requires access.
Definition at line 416 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 952 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 445 of file edca-txop-n.cc.
References ns3::WifiMacHeader::ADDR1, 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(), 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_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(), 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 663 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 619 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 612 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 670 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 680 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 433 of file edca-txop-n.cc.
References m_baManager, and ns3::BlockAckManager::PeekNextPacket().
Referenced by ns3::EdcaTxopN::BlockAckEventListener::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 427 of file edca-txop-n.cc.
References m_txMiddle, and ns3::MacTxMiddle::PeekNextSequenceNumberfor().
Referenced by ns3::EdcaTxopN::BlockAckEventListener::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 1109 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, 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 687 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, 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 439 of file edca-txop-n.cc.
References m_baManager, and ns3::BlockAckManager::RemovePacket().
Referenced by ns3::EdcaTxopN::BlockAckEventListener::RemoveFromBaQueue().
void ns3::EdcaTxopN::RestartAccessIfNeeded | ( | void | ) |
Restart access request if needed.
Definition at line 877 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 1313 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::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(), and ns3::WifiMacHeader::SetSequenceNumber().
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 1238 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::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(), and ns3::WIFI_MAC_CTL_BACKREQ.
Referenced by NotifyAccessGranted().
void ns3::EdcaTxopN::SendDelbaFrame | ( | Mac48Address | addr, |
uint8_t | tid, | ||
bool | byOriginator | ||
) |
Definition at line 1376 of file edca-txop-n.cc.
References ns3::Packet::AddHeader(), ns3::WifiActionHeader::BLOCK_ACK, ns3::WifiActionHeader::BLOCK_ACK_DELBA, ns3::WifiActionHeader::ActionValue::blockAck, 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::BlockAckEventListener::BlockAckInactivityTimeout(), and CompleteConfig().
void ns3::EdcaTxopN::SetAccessCategory | ( | enum AcIndex | ac | ) |
Set the access category of this EDCAF.
ac |
Definition at line 1063 of file edca-txop-n.cc.
References m_ac, and NS_LOG_FUNCTION.
|
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 367 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 1188 of file edca-txop-n.cc.
References m_ampduExist.
Referenced by ns3::EdcaTxopN::BlockAckEventListener::SetAmpdu().
void ns3::EdcaTxopN::SetBlockAckInactivityTimeout | ( | uint16_t | timeout | ) |
Definition at line 1299 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 1291 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 409 of file edca-txop-n.cc.
References m_low, and NS_LOG_FUNCTION.
Referenced by ns3::RegularWifiMac::SetupEdcaQueue().
void ns3::EdcaTxopN::SetManager | ( | DcfManager * | manager | ) |
Set DcfManager this EdcaTxopN is associated to.
manager | DcfManager |
Definition at line 303 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 360 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 353 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 1102 of file edca-txop-n.cc.
References m_aggregator, and NS_LOG_FUNCTION.
Referenced by ns3::QosWifiMacHelper::Setup().
void ns3::EdcaTxopN::SetTxFailedCallback | ( | TxFailed | callback | ) |
callback | the callback to invoke when a packet transmission was completed unsuccessfully. |
Definition at line 318 of file edca-txop-n.cc.
References m_txFailedCallback, and NS_LOG_FUNCTION.
void ns3::EdcaTxopN::SetTxMiddle | ( | MacTxMiddle * | txMiddle | ) |
Definition at line 395 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 311 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 332 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 1219 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 325 of file edca-txop-n.cc.
References m_baManager, m_stationManager, NS_LOG_FUNCTION, and ns3::BlockAckManager::SetWifiRemoteStationManager().
void ns3::EdcaTxopN::StartAccessIfNeeded | ( | void | ) |
Request access from DCF manager if needed.
Definition at line 889 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 959 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, and NS_LOG_FUNCTION.
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 1167 of file edca-txop-n.cc.
References ns3::WifiMacHeader::BLOCK_ACK, ns3::OriginatorBlockAckAgreement::ESTABLISHED, ns3::BlockAckManager::ExistsAgreementInState(), ns3::WifiMacHeader::GetAddr1(), 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 510 of file edca-txop-n.h.
Referenced by EdcaTxopN().
|
friend |
Definition at line 512 of file edca-txop-n.h.
Referenced by EdcaTxopN().
|
private |
Definition at line 507 of file edca-txop-n.h.
Referenced by CompleteConfig(), and SetAccessCategory().
|
private |
Definition at line 532 of file edca-txop-n.h.
Referenced by DoDispose(), GetMsduAggregator(), NotifyAccessGranted(), and SetMsduAggregator().
|
private |
Definition at line 544 of file edca-txop-n.h.
Referenced by GetAmpduExist(), and SetAmpduExist().
|
private |
Definition at line 535 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 542 of file edca-txop-n.h.
Referenced by SetBlockAckInactivityTimeout(), and SetupBlockAckIfNeeded().
|
private |
Definition at line 521 of file edca-txop-n.h.
Referenced by CompleteConfig(), DoDispose(), and EdcaTxopN().
|
private |
Definition at line 539 of file edca-txop-n.h.
Referenced by GetBlockAckThreshold(), NotifyAccessGranted(), SetBlockAckThreshold(), and SetupBlockAckIfNeeded().
|
private |
Definition at line 540 of file edca-txop-n.h.
Referenced by EdcaTxopN(), NotifyAccessGranted(), and SendBlockAckRequest().
|
private |
Definition at line 543 of file edca-txop-n.h.
Referenced by MissedAck(), MissedBlockAck(), and NotifyAccessGranted().
|
private |
Definition at line 531 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 529 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 541 of file edca-txop-n.h.
Referenced by CompleteTx(), and NotifyAccessGranted().
|
private |
Definition at line 513 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 524 of file edca-txop-n.h.
Referenced by GetFragmentOffset(), GetFragmentPacket(), GetFragmentSize(), GetNextFragmentSize(), IsLastFragment(), NextFragment(), and NotifyAccessGranted().
Definition at line 518 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 514 of file edca-txop-n.h.
Referenced by RestartAccessIfNeeded(), SetManager(), and StartAccessIfNeeded().
|
private |
Definition at line 534 of file edca-txop-n.h.
Referenced by DoDispose(), EdcaTxopN(), and NotifyAccessGranted().
|
private |
Definition at line 515 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 522 of file edca-txop-n.h.
Referenced by AssignStreams(), DoDispose(), DoInitialize(), EdcaTxopN(), EndTxNoAck(), GotAck(), GotBlockAck(), MissedAck(), MissedBlockAck(), MissedCts(), and NotifyCollision().
|
private |
Definition at line 523 of file edca-txop-n.h.
Referenced by DoDispose(), GetFragmentOffset(), GetFragmentSize(), GetNextFragmentSize(), IsLastFragment(), MissedAck(), MissedCts(), NeedDataRetransmission(), NeedFragmentation(), NeedRts(), NeedRtsRetransmission(), PushFront(), Queue(), and SetWifiRemoteStationManager().
|
private |
Definition at line 520 of file edca-txop-n.h.
Referenced by DoDispose(), EdcaTxopN(), NotifyAccessGranted(), SendAddBaRequest(), SendBlockAckRequest(), and StartNext().
|
private |
Definition at line 517 of file edca-txop-n.h.
Referenced by BaTxFailed(), MissedAck(), MissedCts(), and SetTxFailedCallback().
|
private |
Definition at line 519 of file edca-txop-n.h.
Referenced by CompleteConfig(), CompleteMpduTx(), CompleteTx(), DoDispose(), GetNextSequenceNumberfor(), MissedAck(), NotifyAccessGranted(), PeekNextSequenceNumberfor(), SendAddBaRequest(), SetTxMiddle(), and SetupBlockAckIfNeeded().
|
private |
Definition at line 516 of file edca-txop-n.h.
Referenced by BaTxOk(), GotAck(), GotBlockAck(), and SetTxOkCallback().
|
private |
Definition at line 533 of file edca-txop-n.h.
Referenced by GetTypeOfStation(), MapDestAddressForAggregation(), MapSrcAddressForAggregation(), and SetTypeOfStation().