handle packet fragmentation and retransmissions. More...
#include <dca-txop.h>
Classes | |
class | Dcf |
class | TransmissionListener |
Listener for MacLow events. More... | |
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 | |
DcaTxop () | |
~DcaTxop () | |
int64_t | AssignStreams (int64_t stream) |
Assign a fixed random variable stream number to the random variables used by this model. More... | |
virtual uint32_t | GetAifsn (void) const |
Return the number of slots that make up an AIFS. 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< WifiMacQueue > | GetQueue () const |
Return the packet queue associated with this DcaTxop. More... | |
void | Queue (Ptr< const Packet > packet, const WifiMacHeader &hdr) |
virtual void | SetAifsn (uint32_t aifsn) |
void | SetLow (Ptr< MacLow > low) |
Set MacLow associated with this DcaTxop. More... | |
void | SetManager (DcfManager *manager) |
Set DcfManager this DcaTxop 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 | SetTxFailedCallback (TxFailed callback) |
void | SetTxOkCallback (TxOk callback) |
void | SetWifiRemoteStationManager (Ptr< WifiRemoteStationManager > remoteManager) |
Set WifiRemoteStationsManager this DcaTxop is associated to. More... | |
Public Member Functions inherited from ns3::Object | |
Object () | |
virtual | ~Object () |
void | AggregateObject (Ptr< Object > other) |
void | Dispose (void) |
Run the DoDispose methods of this object and all the objects aggregated to it. More... | |
AggregateIterator | GetAggregateIterator (void) const |
virtual TypeId | GetInstanceTypeId (void) const |
template<typename T > | |
Ptr< T > | GetObject (void) const |
template<typename T > | |
Ptr< T > | GetObject (TypeId tid) const |
void | Initialize (void) |
This method calls the virtual DoInitialize method on all the objects aggregated to this object. More... | |
Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter > | |
SimpleRefCount () | |
Constructor. More... | |
SimpleRefCount (const SimpleRefCount &o) | |
Copy constructor. More... | |
uint32_t | GetReferenceCount (void) const |
Get the reference count of the object. More... | |
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... | |
Public Member Functions inherited from ns3::ObjectBase | |
virtual | ~ObjectBase () |
Virtual destructor. More... | |
void | GetAttribute (std::string name, AttributeValue &value) const |
bool | GetAttributeFailSafe (std::string name, AttributeValue &attribute) const |
void | SetAttribute (std::string name, const AttributeValue &value) |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
Static Public Member Functions | |
static TypeId | GetTypeId (void) |
Static Public Member Functions inherited from ns3::Dcf | |
static TypeId | GetTypeId (void) |
Static Public Member Functions inherited from ns3::Object | |
static TypeId | GetTypeId (void) |
Register this type. More... | |
Static Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter > | |
static void | Cleanup (void) |
Noop. More... | |
Static Public Member Functions inherited from ns3::ObjectBase | |
static TypeId | GetTypeId (void) |
Get the type ID. More... | |
Private Member Functions | |
DcaTxop (const DcaTxop &o) | |
void | Cancel (void) |
Cancel the transmission. More... | |
virtual void | DoDispose (void) |
This method is called by Object::Dispose or by the object's destructor, whichever comes first. More... | |
void | DoInitialize () |
This method is called only once by Object::Initialize. More... | |
void | EndTxNoAck (void) |
Event handler when a transmission that does not require an ACK has completed. 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... | |
uint32_t | GetNextFragmentSize (void) |
Calculate the size of the next fragment. More... | |
void | GotAck (double snr, WifiMode txMode) |
Event handler when an ACK is received. More... | |
void | GotCts (double snr, WifiMode txMode) |
Event handler when a CTS is received. More... | |
bool | IsLastFragment (void) |
Check if the curren fragment is the last fragment. More... | |
Ptr< MacLow > | Low (void) |
Return the MacLow associated with this DcaTxop. More... | |
void | MissedAck (void) |
Event handler when an ACK is received. More... | |
void | MissedCts (void) |
Event handler when a CTS timeout has occurred. More... | |
bool | NeedDataRetransmission (void) |
Check if DATA should be re-transmitted if ACK was missed. More... | |
bool | NeedFragmentation (void) |
Check if the current packet should be fragmented. More... | |
bool | NeedRts (Ptr< const Packet > packet, const WifiMacHeader *header) |
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 DCF requires access. More... | |
void | NextFragment (void) |
Continue to the next fragment. More... | |
void | NotifyAccessGranted (void) |
Notify the DCF that access has been granted. More... | |
void | NotifyChannelSwitching (void) |
When a channel switching occurs, enqueued packets are removed. More... | |
void | NotifyCollision (void) |
Notify the DCF that collision has occurred. More... | |
void | NotifyInternalCollision (void) |
Notify the DCF that internal collision has occurred. More... | |
DcaTxop & | operator= (const DcaTxop &) |
void | RestartAccessIfNeeded (void) |
Restart access request if needed. More... | |
void | StartAccessIfNeeded (void) |
Request access from DCF manager if needed. More... | |
void | StartNext (void) |
Start transmission for the next fragment. More... | |
Private Attributes | |
bool | m_accessOngoing |
WifiMacHeader | m_currentHdr |
Ptr< const Packet > | m_currentPacket |
Dcf * | m_dcf |
uint8_t | m_fragmentNumber |
Ptr< MacLow > | m_low |
DcfManager * | m_manager |
Ptr< WifiMacQueue > | m_queue |
RandomStream * | m_rng |
Ptr< WifiRemoteStationManager > | m_stationManager |
TransmissionListener * | m_transmissionListener |
TxFailed | m_txFailedCallback |
MacTxMiddle * | m_txMiddle |
TxOk | m_txOkCallback |
Friends | |
class | Dcf |
class | TransmissionListener |
Additional Inherited Members | |
Protected Member Functions inherited from ns3::Object | |
Object (const Object &o) | |
virtual void | NotifyNewAggregate (void) |
This method is invoked whenever two sets of objects are aggregated together. More... | |
Protected Member Functions inherited from ns3::ObjectBase | |
void | ConstructSelf (const AttributeConstructionList &attributes) |
virtual void | NotifyConstructionCompleted (void) |
This method is invoked once all member attributes have been initialized. More... | |
handle packet fragmentation and retransmissions.
This class implements the packet fragmentation and retransmission policy. It uses the ns3::MacLow and ns3::DcfManager helper classes to respectively send packets and decide when to send them. Packets are stored in a ns3::WifiMacQueue until they can be sent.
The policy currently implemented uses a simple fragmentation threshold: any packet bigger than this threshold is fragmented in fragments whose size is smaller than the threshold.
The retransmission policy is also very simple: every packet is retransmitted until it is either successfully transmitted or it has been retransmitted up until the ssrc or slrc thresholds.
The rts/cts policy is similar to the fragmentation policy: when a packet is bigger than a threshold, the rts/cts protocol is used.
ns3::DcaTxop is accessible through the following paths with Config::Set and Config::Connect:
No TraceSources are defined for this type.
Definition at line 67 of file dca-txop.h.
typedef Callback<void, const WifiMacHeader&> ns3::DcaTxop::TxFailed |
typedef for a callback to invoke when a packet transmission was failed.
Definition at line 81 of file dca-txop.h.
typedef Callback<void, const WifiMacHeader&> ns3::DcaTxop::TxOk |
typedef for a callback to invoke when a packet transmission was completed successfully.
Definition at line 76 of file dca-txop.h.
ns3::DcaTxop::DcaTxop | ( | ) |
Definition at line 140 of file dca-txop.cc.
References Dcf, m_dcf, m_queue, m_rng, m_transmissionListener, m_txMiddle, NS_LOG_FUNCTION, and TransmissionListener.
ns3::DcaTxop::~DcaTxop | ( | ) |
Definition at line 152 of file dca-txop.cc.
References NS_LOG_FUNCTION.
|
private |
int64_t ns3::DcaTxop::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 264 of file dca-txop.cc.
References ns3::RandomStream::AssignStreams(), m_rng, and NS_LOG_FUNCTION.
Referenced by AssignWifiRandomStreams(), and ns3::AssignWifiRandomStreams().
|
private |
Cancel the transmission.
This happens in only one case: in an AP, you have two DcaTxop:
If the normal queue tries to send a unicast data frame, but if the tx fails (ack timeout), it starts a backoff. If the beacon queue gets a tx oportunity during this backoff, it will trigger a call to this Cancel function.
Since we are already doing a backoff, we will get access to the medium when we can, we have nothing to do here. We just ignore the cancel event and wait until we are given again a tx oportunity.
Note that this is really non-trivial because each of these frames is assigned a sequence number from the same sequence counter (because this is a non-802.11e device) so, the scheme described here fails to ensure in-order delivery of frames at the receiving side. This, however, does not matter in this case because we assume that the receiving side does not update its <seq,ad> tupple for packets whose destination address is a broadcast address.
Definition at line 621 of file dca-txop.cc.
References NS_LOG_DEBUG, and NS_LOG_FUNCTION.
Referenced by ns3::DcaTxop::TransmissionListener::Cancel().
|
privatevirtual |
This method is called by Object::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 158 of file dca-txop.cc.
References m_dcf, m_low, m_queue, m_rng, m_stationManager, m_transmissionListener, m_txMiddle, and NS_LOG_FUNCTION.
|
privatevirtual |
This method is called only once by Object::Initialize.
If the user calls Object::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 312 of file dca-txop.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().
|
private |
Event handler when a transmission that does not require an ACK has completed.
Definition at line 653 of file dca-txop.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::DcaTxop::TransmissionListener::EndTxNoAck().
|
virtual |
Return the number of slots that make up an AIFS.
Implements ns3::Dcf.
Definition at line 245 of file dca-txop.cc.
References ns3::DcfState::GetAifsn(), m_dcf, and NS_LOG_FUNCTION.
|
private |
Calculate the offset for the current fragment.
Definition at line 373 of file dca-txop.cc.
References ns3::WifiMacHeader::GetAddr1(), m_currentHdr, m_currentPacket, m_fragmentNumber, m_stationManager, and NS_LOG_FUNCTION.
Referenced by GetFragmentPacket().
|
private |
Get the next fragment from the packet with appropriate Wifi header for the fragment.
hdr |
Definition at line 381 of file dca-txop.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().
|
private |
Calculate the size of the current fragment.
Definition at line 350 of file dca-txop.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 239 of file dca-txop.cc.
References ns3::DcfState::GetCwMax(), m_dcf, and NS_LOG_FUNCTION.
|
virtual |
Return the minimum congestion window size.
Implements ns3::Dcf.
Definition at line 233 of file dca-txop.cc.
References ns3::DcfState::GetCwMin(), m_dcf, and NS_LOG_FUNCTION.
|
private |
Calculate the size of the next fragment.
Definition at line 365 of file dca-txop.cc.
References ns3::WifiMacHeader::GetAddr1(), m_currentHdr, m_currentPacket, m_fragmentNumber, m_stationManager, and NS_LOG_FUNCTION.
Referenced by NotifyAccessGranted(), and StartNext().
Ptr< WifiMacQueue > ns3::DcaTxop::GetQueue | ( | void | ) | const |
Return the packet queue associated with this DcaTxop.
Definition at line 208 of file dca-txop.cc.
References m_queue, and NS_LOG_FUNCTION.
Referenced by GetTypeId().
|
static |
Definition at line 127 of file dca-txop.cc.
References ns3::TypeId::AddConstructor(), GetQueue(), ns3::Dcf::GetTypeId(), and ns3::TypeId::SetParent().
|
private |
Event handler when an ACK is received.
snr | |
txMode |
Definition at line 545 of file dca-txop.cc.
References ns3::DcfState::GetCw(), ns3::RandomStream::GetNext(), ns3::Packet::GetSize(), IsLastFragment(), ns3::Callback< R, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::IsNull(), m_currentHdr, m_currentPacket, m_dcf, m_rng, m_txOkCallback, NeedFragmentation(), NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::DcfState::ResetCw(), RestartAccessIfNeeded(), and ns3::DcfState::StartBackoffNow().
Referenced by ns3::DcaTxop::TransmissionListener::GotAck().
|
private |
Event handler when a CTS is received.
snr | |
txMode |
Definition at line 515 of file dca-txop.cc.
References NS_LOG_DEBUG, and NS_LOG_FUNCTION.
Referenced by ns3::DcaTxop::TransmissionListener::GotCts().
|
private |
Check if the curren fragment is the last fragment.
Definition at line 357 of file dca-txop.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 DcaTxop.
Definition at line 297 of file dca-txop.cc.
References m_low, and NS_LOG_FUNCTION.
Referenced by NotifyAccessGranted(), and StartNext().
|
private |
Event handler when an ACK is received.
Definition at line 571 of file dca-txop.cc.
References ns3::WifiMacHeader::GetAddr1(), 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_rng, m_stationManager, m_txFailedCallback, NeedDataRetransmission(), NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::DcfState::ResetCw(), RestartAccessIfNeeded(), ns3::WifiMacHeader::SetRetry(), ns3::DcfState::StartBackoffNow(), and ns3::DcfState::UpdateFailedCw().
Referenced by ns3::DcaTxop::TransmissionListener::MissedAck().
|
private |
Event handler when a CTS timeout has occurred.
Definition at line 521 of file dca-txop.cc.
References ns3::WifiMacHeader::GetAddr1(), 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_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::DcaTxop::TransmissionListener::MissedCts().
|
private |
Check if DATA should be re-transmitted if ACK was missed.
Definition at line 328 of file dca-txop.cc.
References ns3::WifiMacHeader::GetAddr1(), m_currentHdr, m_currentPacket, m_stationManager, and NS_LOG_FUNCTION.
Referenced by MissedAck().
|
private |
Check if the current packet should be fragmented.
Definition at line 335 of file dca-txop.cc.
References ns3::WifiMacHeader::GetAddr1(), m_currentHdr, m_currentPacket, m_stationManager, and NS_LOG_FUNCTION.
Referenced by GotAck(), and NotifyAccessGranted().
|
private |
Check if the current packet should be sent with a RTS protection.
packet | |
header |
Definition at line 304 of file dca-txop.cc.
References ns3::WifiMacHeader::GetAddr1(), m_stationManager, and NS_LOG_FUNCTION.
Referenced by NotifyAccessGranted().
|
private |
Check if RTS should be re-transmitted if CTS was missed.
Definition at line 320 of file dca-txop.cc.
References ns3::WifiMacHeader::GetAddr1(), m_currentHdr, m_currentPacket, m_stationManager, and NS_LOG_FUNCTION.
Referenced by MissedCts().
|
private |
Check if the DCF requires access.
Definition at line 402 of file dca-txop.cc.
References m_currentPacket, m_queue, and NS_LOG_FUNCTION.
|
private |
Continue to the next fragment.
This method simply increments the internal variable that keep track of the current fragment number.
Definition at line 343 of file dca-txop.cc.
References m_fragmentNumber, and NS_LOG_FUNCTION.
Referenced by StartNext().
|
private |
Notify the DCF that access has been granted.
Definition at line 408 of file dca-txop.cc.
References ns3::MacLowTransmissionParameters::DisableAck(), ns3::MacLowTransmissionParameters::DisableNextData(), ns3::MacLowTransmissionParameters::DisableOverrideDurationId(), ns3::MacLowTransmissionParameters::DisableRts(), ns3::MacLowTransmissionParameters::EnableAck(), ns3::MacLowTransmissionParameters::EnableNextData(), ns3::MacLowTransmissionParameters::EnableRts(), ns3::WifiMacHeader::GetAddr1(), GetFragmentPacket(), GetNextFragmentSize(), ns3::MacTxMiddle::GetNextSequenceNumberfor(), ns3::WifiMacHeader::GetSequenceControl(), ns3::Packet::GetSize(), ns3::Mac48Address::IsGroup(), IsLastFragment(), Low(), m_currentHdr, m_currentPacket, m_fragmentNumber, m_queue, m_transmissionListener, m_txMiddle, NeedFragmentation(), NeedRts(), NS_ASSERT, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::WifiMacHeader::SetFragmentNumber(), ns3::WifiMacHeader::SetNoMoreFragments(), ns3::WifiMacHeader::SetNoRetry(), and ns3::WifiMacHeader::SetSequenceNumber().
Referenced by ns3::DcaTxop::Dcf::DoNotifyAccessGranted().
|
private |
When a channel switching occurs, enqueued packets are removed.
Definition at line 507 of file dca-txop.cc.
References m_currentPacket, m_queue, and NS_LOG_FUNCTION.
Referenced by ns3::DcaTxop::Dcf::DoNotifyChannelSwitching().
|
private |
Notify the DCF that collision has occurred.
Definition at line 498 of file dca-txop.cc.
References ns3::DcfState::GetCw(), ns3::RandomStream::GetNext(), m_dcf, m_rng, NS_LOG_DEBUG, NS_LOG_FUNCTION, RestartAccessIfNeeded(), and ns3::DcfState::StartBackoffNow().
Referenced by ns3::DcaTxop::Dcf::DoNotifyCollision(), and NotifyInternalCollision().
|
private |
Notify the DCF that internal collision has occurred.
Definition at line 492 of file dca-txop.cc.
References NotifyCollision(), and NS_LOG_FUNCTION.
Referenced by ns3::DcaTxop::Dcf::DoNotifyInternalCollision().
void ns3::DcaTxop::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 252 of file dca-txop.cc.
References ns3::WifiMacHeader::GetAddr1(), ns3::WifiMacTrailer::GetSerializedSize(), ns3::WifiMacHeader::GetSerializedSize(), ns3::Packet::GetSize(), m_queue, m_stationManager, NS_LOG_FUNCTION, and StartAccessIfNeeded().
|
private |
Restart access request if needed.
Definition at line 272 of file dca-txop.cc.
References ns3::DcfState::IsAccessRequested(), m_currentPacket, m_dcf, m_manager, m_queue, NS_LOG_FUNCTION, and ns3::DcfManager::RequestAccess().
Referenced by GotAck(), MissedAck(), MissedCts(), and NotifyCollision().
|
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 227 of file dca-txop.cc.
References m_dcf, NS_LOG_FUNCTION, and ns3::DcfState::SetAifsn().
Set MacLow associated with this DcaTxop.
low | MacLow |
Definition at line 183 of file dca-txop.cc.
References m_low, and NS_LOG_FUNCTION.
void ns3::DcaTxop::SetManager | ( | DcfManager * | manager | ) |
Set DcfManager this DcaTxop is associated to.
manager | DcfManager |
Definition at line 175 of file dca-txop.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 221 of file dca-txop.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 215 of file dca-txop.cc.
References m_dcf, NS_LOG_FUNCTION, and ns3::DcfState::SetCwMin().
void ns3::DcaTxop::SetTxFailedCallback | ( | TxFailed | callback | ) |
callback | the callback to invoke when a packet transmission was completed unsuccessfully. |
Definition at line 201 of file dca-txop.cc.
References m_txFailedCallback, and NS_LOG_FUNCTION.
void ns3::DcaTxop::SetTxOkCallback | ( | TxOk | callback | ) |
callback | the callback to invoke when a packet transmission was completed successfully. |
Definition at line 195 of file dca-txop.cc.
References m_txOkCallback, and NS_LOG_FUNCTION.
void ns3::DcaTxop::SetWifiRemoteStationManager | ( | Ptr< WifiRemoteStationManager > | remoteManager | ) |
Set WifiRemoteStationsManager this DcaTxop is associated to.
remoteManager | WifiRemoteStationManager |
Definition at line 189 of file dca-txop.cc.
References m_stationManager, and NS_LOG_FUNCTION.
|
private |
Request access from DCF manager if needed.
Definition at line 284 of file dca-txop.cc.
References ns3::DcfState::IsAccessRequested(), m_currentPacket, m_dcf, m_manager, m_queue, NS_LOG_FUNCTION, and ns3::DcfManager::RequestAccess().
Referenced by EndTxNoAck(), and Queue().
|
private |
Start transmission for the next fragment.
This is called for fragment only.
Definition at line 597 of file dca-txop.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::DcaTxop::TransmissionListener::StartNext().
|
friend |
Definition at line 152 of file dca-txop.h.
Referenced by DcaTxop().
|
friend |
Definition at line 154 of file dca-txop.h.
Referenced by DcaTxop().
|
private |
Definition at line 317 of file dca-txop.h.
|
private |
Definition at line 319 of file dca-txop.h.
Referenced by GetFragmentOffset(), GetFragmentPacket(), GetFragmentSize(), GetNextFragmentSize(), GotAck(), IsLastFragment(), MissedAck(), MissedCts(), NeedDataRetransmission(), NeedFragmentation(), NeedRtsRetransmission(), and NotifyAccessGranted().
Definition at line 318 of file dca-txop.h.
Referenced by EndTxNoAck(), GetFragmentOffset(), GetFragmentPacket(), GetFragmentSize(), GetNextFragmentSize(), GotAck(), IsLastFragment(), MissedAck(), MissedCts(), NeedDataRetransmission(), NeedFragmentation(), NeedRtsRetransmission(), NeedsAccess(), NotifyAccessGranted(), NotifyChannelSwitching(), RestartAccessIfNeeded(), and StartAccessIfNeeded().
|
private |
Definition at line 306 of file dca-txop.h.
Referenced by DcaTxop(), DoDispose(), DoInitialize(), EndTxNoAck(), GetAifsn(), GetMaxCw(), GetMinCw(), GotAck(), MissedAck(), MissedCts(), NotifyCollision(), RestartAccessIfNeeded(), SetAifsn(), SetManager(), SetMaxCw(), SetMinCw(), and StartAccessIfNeeded().
|
private |
Definition at line 320 of file dca-txop.h.
Referenced by GetFragmentOffset(), GetFragmentPacket(), GetFragmentSize(), GetNextFragmentSize(), IsLastFragment(), NextFragment(), and NotifyAccessGranted().
Definition at line 312 of file dca-txop.h.
Referenced by DoDispose(), Low(), and SetLow().
|
private |
Definition at line 307 of file dca-txop.h.
Referenced by RestartAccessIfNeeded(), SetManager(), and StartAccessIfNeeded().
|
private |
Definition at line 310 of file dca-txop.h.
Referenced by DcaTxop(), DoDispose(), GetQueue(), NeedsAccess(), NotifyAccessGranted(), NotifyChannelSwitching(), Queue(), RestartAccessIfNeeded(), and StartAccessIfNeeded().
|
private |
Definition at line 315 of file dca-txop.h.
Referenced by AssignStreams(), DcaTxop(), DoDispose(), DoInitialize(), EndTxNoAck(), GotAck(), MissedAck(), MissedCts(), and NotifyCollision().
|
private |
Definition at line 313 of file dca-txop.h.
Referenced by DoDispose(), GetFragmentOffset(), GetFragmentSize(), GetNextFragmentSize(), IsLastFragment(), MissedAck(), MissedCts(), NeedDataRetransmission(), NeedFragmentation(), NeedRts(), NeedRtsRetransmission(), Queue(), and SetWifiRemoteStationManager().
|
private |
Definition at line 314 of file dca-txop.h.
Referenced by DcaTxop(), DoDispose(), NotifyAccessGranted(), and StartNext().
|
private |
Definition at line 309 of file dca-txop.h.
Referenced by MissedAck(), MissedCts(), and SetTxFailedCallback().
|
private |
Definition at line 311 of file dca-txop.h.
Referenced by DcaTxop(), DoDispose(), and NotifyAccessGranted().
|
private |
Definition at line 308 of file dca-txop.h.
Referenced by GotAck(), and SetTxOkCallback().