handle RTS/CTS/DATA/ACK transactions. More...
#include <mac-low.h>
Public Types | |
typedef Callback< void, Ptr < Packet >, const WifiMacHeader * > | MacLowRxCallback |
typedef for a callback for MacLowRx More... | |
Public Member Functions | |
MacLow () | |
virtual | ~MacLow () |
Time | CalculateTransmissionTime (Ptr< const Packet > packet, const WifiMacHeader *hdr, const MacLowTransmissionParameters ¶meters) const |
void | CreateBlockAckAgreement (const MgtAddBaResponseHeader *respHdr, Mac48Address originator, uint16_t startingSeq) |
void | DestroyBlockAckAgreement (Mac48Address originator, uint8_t tid) |
Time | GetAckTimeout (void) const |
Return ACK timeout of this MacLow. More... | |
Mac48Address | GetAddress (void) const |
Return the MAC address of this MacLow. More... | |
Time | GetBasicBlockAckTimeout () const |
Return Basic Block ACK timeout of this MacLow. More... | |
Mac48Address | GetBssid (void) const |
Return the Basic Service Set Identification. More... | |
Time | GetCompressedBlockAckTimeout () const |
Return Compressed Block ACK timeout of this MacLow. More... | |
Time | GetCtsTimeout (void) const |
Return CTS timeout of this MacLow. More... | |
bool | GetCtsToSelfSupported () const |
Return whether CTS-to-self capability is supported. More... | |
Time | GetPifs (void) const |
Return PCF Interframe Space (PIFS) of this MacLow. More... | |
Time | GetRifs (void) const |
Return Reduced Interframe Space (RIFS) of this MacLow. More... | |
Time | GetSifs (void) const |
Return Short Interframe Space (SIFS) of this MacLow. More... | |
Time | GetSlotTime (void) const |
Return slot duration of this MacLow. More... | |
bool | IsPromisc (void) const |
Check if MacLow is operating in promiscuous mode. More... | |
void | NotifySleepNow (void) |
This method is typically invoked by the PhyMacLowListener to notify the MAC layer that the device has been put into sleep mode. More... | |
void | NotifySwitchingStartNow (Time duration) |
void | ReceiveError (Ptr< const Packet > packet, double rxSnr) |
void | ReceiveOk (Ptr< Packet > packet, double rxSnr, WifiMode txMode, WifiPreamble preamble) |
void | RegisterBlockAckListenerForAc (enum AcIndex ac, MacLowBlockAckEventListener *listener) |
void | RegisterDcfListener (MacLowDcfListener *listener) |
void | SetAckTimeout (Time ackTimeout) |
Set ACK timeout of this MacLow. More... | |
void | SetAddress (Mac48Address ad) |
Set MAC address of this MacLow. More... | |
void | SetBasicBlockAckTimeout (Time blockAckTimeout) |
Set Basic Block ACK timeout of this MacLow. More... | |
void | SetBssid (Mac48Address ad) |
Set the Basic Service Set Identification. More... | |
void | SetCompressedBlockAckTimeout (Time blockAckTimeout) |
Set Compressed Block ACK timeout of this MacLow. More... | |
void | SetCtsTimeout (Time ctsTimeout) |
Set CTS timeout of this MacLow. More... | |
void | SetCtsToSelfSupported (bool enable) |
Enable or disable CTS-to-self capability. More... | |
void | SetPhy (Ptr< WifiPhy > phy) |
Set up WifiPhy associated with this MacLow. More... | |
void | SetPifs (Time pifs) |
Set PCF Interframe Space (PIFS) of this MacLow. More... | |
void | SetPromisc (void) |
Enable promiscuous mode. More... | |
void | SetRifs (Time rifs) |
Set Reduced Interframe Space (RIFS) of this MacLow. More... | |
void | SetRxCallback (Callback< void, Ptr< Packet >, const WifiMacHeader * > callback) |
void | SetSifs (Time sifs) |
Set Short Interframe Space (SIFS) of this MacLow. More... | |
void | SetSlotTime (Time slotTime) |
Set slot duration of this MacLow. More... | |
void | SetWifiRemoteStationManager (Ptr< WifiRemoteStationManager > manager) |
Set up WifiRemoteStationManager associated with this MacLow. More... | |
void | StartTransmission (Ptr< const Packet > packet, const WifiMacHeader *hdr, MacLowTransmissionParameters parameters, MacLowTransmissionListener *listener) |
![]() | |
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... | |
![]() | |
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 |
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) |
Protected Member Functions | |
virtual WifiTxVector | GetDataTxVector (Ptr< const Packet > packet, const WifiMacHeader *hdr) const |
Return a TXVECTOR for the DATA frame given the destination. More... | |
![]() | |
Object (const Object &o) | |
virtual void | DoInitialize (void) |
This method is called only once by Object::Initialize. More... | |
virtual void | NotifyNewAggregate (void) |
This method is invoked whenever two sets of objects are aggregated together. More... | |
![]() | |
void | ConstructSelf (const AttributeConstructionList &attributes) |
virtual void | NotifyConstructionCompleted (void) |
This method is invoked once all member attributes have been initialized. More... | |
Private Types | |
typedef std::pair < Mac48Address, uint8_t > | AgreementKey |
typedef std::map< AgreementKey, AgreementValue > | Agreements |
typedef std::map< AgreementKey, AgreementValue >::iterator | AgreementsI |
typedef std::pair < BlockAckAgreement, std::list < BufferedPacket > > | AgreementValue |
typedef std::map< AgreementKey, BlockAckCache > | BlockAckCaches |
typedef std::map< AgreementKey, BlockAckCache >::iterator | BlockAckCachesI |
typedef std::pair< Ptr< Packet > , WifiMacHeader > | BufferedPacket |
typedef std::list < BufferedPacket >::iterator | BufferedPacketI |
typedef std::vector < MacLowDcfListener * > | DcfListeners |
typedef for a list of MacLowDcfListener. More... | |
typedef std::vector < MacLowDcfListener * > ::const_iterator | DcfListenersCI |
typedef for an iterator for a list of MacLowDcfListener. More... | |
typedef std::map< AcIndex, MacLowBlockAckEventListener * > | QueueListeners |
Private Member Functions | |
void | BlockAckTimeout (void) |
Event handler when block ACK timeout occurs. More... | |
Time | CalculateOverallTxTime (Ptr< const Packet > packet, const WifiMacHeader *hdr, const MacLowTransmissionParameters ¶ms) const |
void | CancelAllEvents (void) |
Cancel all scheduled events. More... | |
void | CtsTimeout (void) |
Event handler when CTS timeout occurs. More... | |
virtual void | DoDispose (void) |
This method is called by Object::Dispose or by the object's destructor, whichever comes first. More... | |
void | DoNavResetNow (Time duration) |
Reset NAV with the given duration. More... | |
bool | DoNavStartNow (Time duration) |
Start NAV with the given duration. More... | |
void | EndTxNoAck (void) |
A transmission that does not require an ACK has completed. More... | |
void | FastAckFailedTimeout (void) |
Event handler when fast ACK timeout occurs (busy). More... | |
void | FastAckTimeout (void) |
Event handler when fast ACK timeout occurs (idle). More... | |
void | ForwardDown (Ptr< const Packet > packet, const WifiMacHeader *hdr, WifiTxVector txVector, WifiPreamble preamble) |
Forward the packet down to WifiPhy for transmission. More... | |
Time | GetAckDuration (WifiTxVector ackTxVector) const |
Return the time required to transmit the ACK (including preamble and FCS). More... | |
Time | GetAckDuration (Mac48Address to, WifiTxVector dataTxVector) const |
Return the time required to transmit the ACK to the specified address given the TXVECTOR of the DATA (including preamble and FCS). More... | |
uint32_t | GetAckSize (void) const |
Return the total ACK size (including FCS trailer). More... | |
WifiTxVector | GetAckTxVector (Mac48Address to, WifiMode dataTxMode) const |
Return a TXVECTOR for the ACK frame given the destination and the mode of the DATA used by the sender. More... | |
WifiTxVector | GetAckTxVectorForData (Mac48Address to, WifiMode dataTxMode) const |
Return a TXVECTOR for the Block ACK frame given the destination and the mode of the DATA used by the sender. More... | |
Time | GetBlockAckDuration (Mac48Address to, WifiTxVector blockAckReqTxVector, enum BlockAckType type) const |
uint32_t | GetBlockAckSize (enum BlockAckType type) const |
Return the total Block ACK size (including FCS trailer). More... | |
WifiTxVector | GetBlockAckTxVector (Mac48Address to, WifiMode dataTxMode) const |
Return a TXVECTOR for the Block ACK frame given the destination and the mode of the DATA used by the sender. More... | |
Time | GetCtsDuration (WifiTxVector ctsTxVector) const |
Return the time required to transmit the CTS (including preamble and FCS). More... | |
Time | GetCtsDuration (Mac48Address to, WifiTxVector rtsTxVector) const |
Return the time required to transmit the CTS to the specified address given the TXVECTOR of the RTS (including preamble and FCS). More... | |
uint32_t | GetCtsSize (void) const |
Return the total CTS size (including FCS trailer). More... | |
WifiTxVector | GetCtsToSelfTxVector (Ptr< const Packet > packet, const WifiMacHeader *hdr) const |
Return a TXVECTOR for the CTS-to-self frame. More... | |
WifiTxVector | GetCtsTxVector (Mac48Address to, WifiMode rtsTxMode) const |
Return a TXVECTOR for the CTS frame given the destination and the mode of the RTS used by the sender. More... | |
WifiTxVector | GetCtsTxVectorForRts (Mac48Address to, WifiMode rtsTxMode) const |
Return a TXVECTOR for the CTS frame given the destination and the mode of the RTS used by the sender. More... | |
uint32_t | GetRtsSize (void) const |
Return the total RTS size (including FCS trailer). More... | |
WifiTxVector | GetRtsTxVector (Ptr< const Packet > packet, const WifiMacHeader *hdr) const |
Return a TXVECTOR for the RTS frame given the destination. More... | |
uint32_t | GetSize (Ptr< const Packet > packet, const WifiMacHeader *hdr) const |
Return the total size of the packet after WifiMacHeader and FCS trailer have been added. More... | |
bool | IsNavZero (void) const |
Check if NAV is zero. More... | |
void | NavCounterResetCtsMissed (Time rtsEndRxTime) |
Reset NAV after CTS was missed when the NAV was setted with RTS. More... | |
bool | NeedCtsToSelf (void) |
Check if CTS-to-self mechanism should be used for the current packet. More... | |
void | NormalAckTimeout (void) |
Event handler when normal ACK timeout occurs. More... | |
void | NotifyAckTimeoutResetNow () |
Notify DcfManager (via DcfListener) that ACK timer should be resetted. More... | |
void | NotifyAckTimeoutStartNow (Time duration) |
Notify DcfManager (via DcfListener) that ACK timer should be started for the given duration. More... | |
void | NotifyCtsTimeoutResetNow () |
Notify DcfManager (via DcfListener) that CTS timer should be resetted. More... | |
void | NotifyCtsTimeoutStartNow (Time duration) |
Notify DcfManager (via DcfListener) that CTS timer should be started for the given duration. More... | |
void | NotifyNav (Ptr< const Packet > packet, const WifiMacHeader &hdr, WifiMode txMode, WifiPreamble preamble) |
void | ResetBlockAckInactivityTimerIfNeeded (BlockAckAgreement &agreement) |
Every time that a block ack request or a packet with ack policy equals to block ack are received, if a relative block ack agreement exists and the value of inactivity timeout is not 0, the timer is reset. More... | |
void | RxCompleteBufferedPacketsUntilFirstLost (Mac48Address originator, uint8_t tid) |
void | RxCompleteBufferedPacketsWithSmallerSequence (uint16_t seq, Mac48Address originator, uint8_t tid) |
void | SendAckAfterData (Mac48Address source, Time duration, WifiMode dataTxMode, double dataSnr) |
Send ACK after receiving DATA. More... | |
void | SendBlockAckAfterBlockAckRequest (const CtrlBAckRequestHeader reqHdr, Mac48Address originator, Time duration, WifiMode blockAckReqTxMode) |
Invoked after that a block ack request has been received. More... | |
void | SendBlockAckResponse (const CtrlBAckResponseHeader *blockAck, Mac48Address originator, bool immediate, Time duration, WifiMode blockAckReqTxMode) |
This method creates block ack frame with header equals to blockAck and start its transmission. More... | |
void | SendCtsAfterRts (Mac48Address source, Time duration, WifiMode txMode, double rtsSnr) |
Send CTS after receiving RTS. More... | |
void | SendCtsToSelf (void) |
Send CTS for a CTS-to-self mechanism. More... | |
void | SendDataAfterCts (Mac48Address source, Time duration, WifiMode txMode) |
Send DATA after receiving CTS. More... | |
void | SendDataPacket (void) |
Send DATA packet, which can be DATA-ACK or RTS-CTS-DATA-ACK transaction. More... | |
void | SendRtsForPacket (void) |
Send RTS to begin RTS-CTS-DATA-ACK transaction. More... | |
void | SetupPhyMacLowListener (Ptr< WifiPhy > phy) |
Set up WifiPhy listener for this MacLow. More... | |
void | StartDataTxTimers (WifiTxVector dataTxVector) |
Start a DATA timer by scheduling appropriate ACK timeout. More... | |
bool | StoreMpduIfNeeded (Ptr< Packet > packet, WifiMacHeader hdr) |
void | SuperFastAckTimeout (void) |
Event handler when super fast ACK timeout occurs. More... | |
void | WaitSifsAfterEndTx (void) |
Event handler that is usually scheduled to fired at the appropriate time after completing transmissions. More... | |
Additional Inherited Members | |
![]() | |
static TypeId | GetTypeId (void) |
Register this type. More... | |
![]() | |
static void | Cleanup (void) |
Noop. More... | |
![]() | |
static TypeId | GetTypeId (void) |
Get the type ID. More... | |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
typedef for a list of MacLowDcfListener.
|
private |
typedef for an iterator for a list of MacLowDcfListener.
typedef Callback<void, Ptr<Packet>, const WifiMacHeader*> ns3::MacLow::MacLowRxCallback |
|
private |
ns3::MacLow::MacLow | ( | ) |
Definition at line 295 of file mac-low.cc.
References m_lastNavDuration, m_lastNavStart, m_promisc, NS_LOG_FUNCTION, and ns3::Seconds().
|
virtual |
Definition at line 318 of file mac-low.cc.
References NS_LOG_FUNCTION.
|
private |
Event handler when block ACK timeout occurs.
Definition at line 1323 of file mac-low.cc.
References ns3::WifiMacHeader::GetAddr1(), m_currentHdr, m_listener, m_stationManager, ns3::MacLowTransmissionListener::MissedBlockAck(), NS_LOG_DEBUG, and NS_LOG_FUNCTION.
Referenced by StartDataTxTimers().
|
private |
Definition at line 1086 of file mac-low.cc.
References ns3::WifiPhy::CalculateTxDuration(), GetAckDuration(), ns3::WifiMacHeader::GetAddr1(), GetCtsDuration(), GetDataTxVector(), ns3::WifiPhy::GetGreenfield(), ns3::WifiTxVector::GetMode(), ns3::WifiMode::GetModulationClass(), GetRtsSize(), GetRtsTxVector(), GetSifs(), GetSize(), m_currentHdr, m_phy, m_stationManager, ns3::MacLowTransmissionParameters::MustSendRts(), ns3::MacLowTransmissionParameters::MustWaitAck(), ns3::Seconds(), ns3::WIFI_MOD_CLASS_HT, ns3::WIFI_PREAMBLE_HT_GF, ns3::WIFI_PREAMBLE_HT_MF, and ns3::WIFI_PREAMBLE_LONG.
Referenced by CalculateTransmissionTime().
Time ns3::MacLow::CalculateTransmissionTime | ( | Ptr< const Packet > | packet, |
const WifiMacHeader * | hdr, | ||
const MacLowTransmissionParameters & | parameters | ||
) | const |
packet | to send (does not include the 802.11 MAC header and checksum) |
hdr | header associated to the packet to send. |
parameters | transmission parameters of packet. |
This transmission time includes the time required for the next packet transmission if one was selected.
Definition at line 1131 of file mac-low.cc.
References CalculateOverallTxTime(), ns3::WifiPhy::CalculateTxDuration(), ns3::WifiMacHeader::GetAddr1(), GetDataTxVector(), ns3::WifiPhy::GetGreenfield(), ns3::WifiTxVector::GetMode(), ns3::WifiMode::GetModulationClass(), ns3::MacLowTransmissionParameters::GetNextPacketSize(), GetSifs(), ns3::MacLowTransmissionParameters::HasNextPacket(), m_currentHdr, m_phy, m_stationManager, ns3::WIFI_MOD_CLASS_HT, ns3::WIFI_PREAMBLE_HT_GF, ns3::WIFI_PREAMBLE_HT_MF, and ns3::WIFI_PREAMBLE_LONG.
|
private |
Cancel all scheduled events.
Called before beginning a transmission or switching channel.
Definition at line 357 of file mac-low.cc.
References ns3::EventId::Cancel(), ns3::MacLowTransmissionListener::Cancel(), ns3::EventId::IsRunning(), m_blockAckTimeoutEvent, m_ctsTimeoutEvent, m_endTxNoAckEvent, m_fastAckFailedTimeoutEvent, m_fastAckTimeoutEvent, m_listener, m_normalAckTimeoutEvent, m_sendAckEvent, m_sendCtsEvent, m_sendDataEvent, m_superFastAckTimeoutEvent, m_waitRifsEvent, m_waitSifsEvent, and NS_LOG_FUNCTION.
Referenced by NotifySleepNow(), NotifySwitchingStartNow(), and StartTransmission().
void ns3::MacLow::CreateBlockAckAgreement | ( | const MgtAddBaResponseHeader * | respHdr, |
Mac48Address | originator, | ||
uint16_t | startingSeq | ||
) |
respHdr | Add block ack response from originator (action frame). |
originator | Address of peer station involved in block ack mechanism. |
startingSeq | Sequence number of the first MPDU of all packets for which block ack was negotiated. |
This function is typically invoked only by ns3::RegularWifiMac when the STA (which may be non-AP in ESS, or in an IBSS) has received an ADDBA Request frame and is transmitting an ADDBA Response frame. At this point MacLow must allocate buffers to collect all correctly received packets belonging to the category for which Block Ack was negotiated.
Definition at line 1808 of file mac-low.cc.
References ns3::MacLowBlockAckEventListener::BlockAckInactivityTimeout(), ns3::MgtAddBaResponseHeader::GetBufferSize(), ns3::BlockAckAgreement::GetTid(), ns3::MgtAddBaResponseHeader::GetTid(), ns3::BlockAckAgreement::GetTimeout(), ns3::MgtAddBaResponseHeader::GetTimeout(), ns3::BlockAckCache::Init(), ns3::MgtAddBaResponseHeader::IsAmsduSupported(), ns3::MgtAddBaResponseHeader::IsImmediateBlockAck(), m_bAckAgreements, m_bAckCaches, m_edcaListeners, ns3::MicroSeconds(), ns3::QosUtilsMapTidToAc(), ns3::Simulator::Schedule(), ns3::BlockAckAgreement::SetAmsduSupport(), ns3::BlockAckAgreement::SetBufferSize(), ns3::BlockAckAgreement::SetDelayedBlockAck(), ns3::BlockAckAgreement::SetImmediateBlockAck(), ns3::BlockAckAgreement::SetStartingSequence(), ns3::BlockAckAgreement::SetTimeout(), and timeout.
|
private |
Event handler when CTS timeout occurs.
Definition at line 1279 of file mac-low.cc.
References ns3::WifiMacHeader::GetAddr1(), m_currentHdr, m_currentPacket, m_listener, m_stationManager, ns3::MacLowTransmissionListener::MissedCts(), NS_LOG_DEBUG, and NS_LOG_FUNCTION.
Referenced by SendRtsForPacket().
void ns3::MacLow::DestroyBlockAckAgreement | ( | Mac48Address | originator, |
uint8_t | tid | ||
) |
originator | Address of peer participating in Block Ack mechanism. |
tid | TID for which Block Ack was created. |
Checks if exists an established block ack agreement with originator for tid tid. If the agreement exists, tears down it. This function is typically invoked when a DELBA frame is received from originator.
Definition at line 1850 of file mac-low.cc.
References m_bAckAgreements, m_bAckCaches, NS_ASSERT, RxCompleteBufferedPacketsUntilFirstLost(), and RxCompleteBufferedPacketsWithSmallerSequence().
|
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 332 of file mac-low.cc.
References ns3::EventId::Cancel(), m_blockAckTimeoutEvent, m_ctsTimeoutEvent, m_endTxNoAckEvent, m_fastAckFailedTimeoutEvent, m_fastAckTimeoutEvent, m_normalAckTimeoutEvent, m_phy, m_phyMacLowListener, m_sendAckEvent, m_sendCtsEvent, m_sendDataEvent, m_stationManager, m_superFastAckTimeoutEvent, m_waitRifsEvent, m_waitSifsEvent, and NS_LOG_FUNCTION.
|
private |
Reset NAV with the given duration.
duration |
Definition at line 1205 of file mac-low.cc.
References m_dcfListeners, m_lastNavStart, and ns3::Simulator::Now().
Referenced by NavCounterResetCtsMissed(), and NotifyNav().
|
private |
Start NAV with the given duration.
duration |
Definition at line 1215 of file mac-low.cc.
References m_dcfListeners, m_lastNavDuration, m_lastNavStart, and ns3::Simulator::Now().
Referenced by NotifyNav().
|
private |
A transmission that does not require an ACK has completed.
Definition at line 1721 of file mac-low.cc.
References ns3::MacLowTransmissionListener::EndTxNoAck(), and m_listener.
Referenced by StartDataTxTimers().
|
private |
Event handler when fast ACK timeout occurs (busy).
Definition at line 1729 of file mac-low.cc.
References m_listener, ns3::MacLowTransmissionListener::MissedAck(), NS_LOG_DEBUG, and NS_LOG_FUNCTION.
Referenced by ReceiveError().
|
private |
Event handler when fast ACK timeout occurs (idle).
Definition at line 1306 of file mac-low.cc.
References ns3::WifiMacHeader::GetAddr1(), ns3::WifiPhy::IsStateIdle(), m_currentHdr, m_listener, m_phy, m_stationManager, ns3::MacLowTransmissionListener::MissedAck(), NS_LOG_DEBUG, and NS_LOG_FUNCTION.
Referenced by StartDataTxTimers().
|
private |
Forward the packet down to WifiPhy for transmission.
packet | |
hdr | |
txVector | |
preamble |
Definition at line 1265 of file mac-low.cc.
References ns3::WifiMacHeader::GetAddr1(), ns3::WifiMacHeader::GetDuration(), ns3::WifiTxVector::GetMode(), ns3::WifiMacHeader::GetSequenceControl(), ns3::Packet::GetSize(), ns3::WifiMacHeader::GetTypeString(), m_currentHdr, m_phy, NS_LOG_DEBUG, NS_LOG_FUNCTION, and ns3::WifiPhy::SendPacket().
Referenced by SendAckAfterData(), SendBlockAckResponse(), SendCtsAfterRts(), SendCtsToSelf(), SendDataAfterCts(), SendDataPacket(), and SendRtsForPacket().
|
private |
Return the time required to transmit the ACK (including preamble and FCS).
ackTxVector |
Definition at line 978 of file mac-low.cc.
References ns3::WifiPhy::CalculateTxDuration(), GetAckSize(), ns3::WifiTxVector::GetMode(), ns3::WifiMode::GetModulationClass(), m_phy, ns3::WIFI_MOD_CLASS_HT, ns3::WIFI_PREAMBLE_HT_MF, and ns3::WIFI_PREAMBLE_LONG.
Referenced by CalculateOverallTxTime(), GetAckDuration(), SendAckAfterData(), SendBlockAckResponse(), SendCtsToSelf(), SendDataAfterCts(), SendDataPacket(), and SendRtsForPacket().
|
private |
Return the time required to transmit the ACK to the specified address given the TXVECTOR of the DATA (including preamble and FCS).
to | |
dataTxVector |
Definition at line 972 of file mac-low.cc.
References GetAckDuration(), GetAckTxVectorForData(), and ns3::WifiTxVector::GetMode().
|
private |
Return the total ACK size (including FCS trailer).
Definition at line 937 of file mac-low.cc.
References ns3::WifiMacHeader::GetSize(), ns3::WifiMacHeader::SetType(), and ns3::WIFI_MAC_CTL_ACK.
Referenced by GetAckDuration().
Time ns3::MacLow::GetAckTimeout | ( | void | ) | const |
Return ACK timeout of this MacLow.
Definition at line 513 of file mac-low.cc.
References m_ackTimeout.
Referenced by StartDataTxTimers().
|
private |
Return a TXVECTOR for the ACK frame given the destination and the mode of the DATA used by the sender.
The function consults WifiRemoteStationManager, which controls the rate to different destinations.
to | the MAC address of the ACK receiver |
dataTxMode | the mode of the DATA used by the sender |
Definition at line 1063 of file mac-low.cc.
References m_stationManager.
Referenced by GetAckTxVectorForData(), and SendAckAfterData().
|
private |
Return a TXVECTOR for the Block ACK frame given the destination and the mode of the DATA used by the sender.
The function consults WifiRemoteStationManager, which controls the rate to different destinations.
to | the MAC address of the Block ACK receiver |
dataTxMode | the mode of the DATA used by the sender |
Definition at line 1079 of file mac-low.cc.
References GetAckTxVector().
Referenced by GetAckDuration().
Mac48Address ns3::MacLow::GetAddress | ( | void | ) | const |
Return the MAC address of this MacLow.
Definition at line 508 of file mac-low.cc.
References m_self.
Referenced by SendBlockAckResponse().
Time ns3::MacLow::GetBasicBlockAckTimeout | ( | ) | const |
Return Basic Block ACK timeout of this MacLow.
Definition at line 518 of file mac-low.cc.
References m_basicBlockAckTimeout.
Referenced by StartDataTxTimers().
|
private |
Definition at line 988 of file mac-low.cc.
References ns3::WifiPhy::CalculateTxDuration(), GetBlockAckSize(), ns3::WifiTxVector::GetMode(), ns3::WifiMode::GetModulationClass(), m_phy, ns3::WIFI_MOD_CLASS_HT, ns3::WIFI_PREAMBLE_HT_MF, and ns3::WIFI_PREAMBLE_LONG.
Referenced by SendBlockAckResponse(), SendCtsToSelf(), and SendDataPacket().
|
private |
Return the total Block ACK size (including FCS trailer).
type | the Block ACK type |
Definition at line 944 of file mac-low.cc.
References ns3::BASIC_BLOCK_ACK, ns3::COMPRESSED_BLOCK_ACK, ns3::CtrlBAckResponseHeader::GetSerializedSize(), ns3::WifiMacHeader::GetSize(), ns3::MULTI_TID_BLOCK_ACK, NS_ASSERT, ns3::WifiMacHeader::SetType(), ns3::CtrlBAckResponseHeader::SetType(), and ns3::WIFI_MAC_CTL_BACKRESP.
Referenced by GetBlockAckDuration().
|
private |
Return a TXVECTOR for the Block ACK frame given the destination and the mode of the DATA used by the sender.
The function consults WifiRemoteStationManager, which controls the rate to different destinations.
to | the MAC address of the Block ACK receiver |
dataTxMode | the mode of the DATA used by the sender |
Definition at line 1068 of file mac-low.cc.
References m_stationManager.
Referenced by SendBlockAckResponse().
Mac48Address ns3::MacLow::GetBssid | ( | void | ) | const |
Return the Basic Service Set Identification.
Definition at line 553 of file mac-low.cc.
References m_bssid.
Time ns3::MacLow::GetCompressedBlockAckTimeout | ( | ) | const |
Return Compressed Block ACK timeout of this MacLow.
Definition at line 523 of file mac-low.cc.
References m_compressedBlockAckTimeout.
Referenced by StartDataTxTimers().
|
private |
Return the time required to transmit the CTS (including preamble and FCS).
ctsTxVector |
Definition at line 1013 of file mac-low.cc.
References ns3::WifiPhy::CalculateTxDuration(), GetCtsSize(), ns3::WifiTxVector::GetMode(), ns3::WifiMode::GetModulationClass(), m_phy, ns3::WIFI_MOD_CLASS_HT, ns3::WIFI_PREAMBLE_HT_MF, and ns3::WIFI_PREAMBLE_LONG.
Referenced by CalculateOverallTxTime(), GetCtsDuration(), SendCtsAfterRts(), and SendRtsForPacket().
|
private |
Return the time required to transmit the CTS to the specified address given the TXVECTOR of the RTS (including preamble and FCS).
to | |
rtsTxVector |
Definition at line 1006 of file mac-low.cc.
References GetCtsDuration(), GetCtsTxVectorForRts(), and ns3::WifiTxVector::GetMode().
|
private |
Return the total CTS size (including FCS trailer).
Definition at line 1023 of file mac-low.cc.
References ns3::WifiMacHeader::GetSize(), ns3::WifiMacHeader::SetType(), and ns3::WIFI_MAC_CTL_CTS.
Referenced by GetCtsDuration(), and SendCtsToSelf().
Time ns3::MacLow::GetCtsTimeout | ( | void | ) | const |
Return CTS timeout of this MacLow.
Definition at line 528 of file mac-low.cc.
References m_ctsTimeout.
Referenced by SendRtsForPacket().
bool ns3::MacLow::GetCtsToSelfSupported | ( | ) | const |
Return whether CTS-to-self capability is supported.
Definition at line 468 of file mac-low.cc.
References m_ctsToSelfSupported.
|
private |
Return a TXVECTOR for the CTS-to-self frame.
The function consults WifiRemoteStationManager, which controls the rate to different destinations.
packet | the packet that requires CTS-to-self |
hdr | the Wifi header of the packet |
Definition at line 1037 of file mac-low.cc.
References m_stationManager.
Referenced by SendCtsToSelf().
|
private |
Return a TXVECTOR for the CTS frame given the destination and the mode of the RTS used by the sender.
The function consults WifiRemoteStationManager, which controls the rate to different destinations.
to | the MAC address of the CTS receiver |
rtsTxMode | the mode of the RTS used by the sender |
Definition at line 1058 of file mac-low.cc.
References m_stationManager.
Referenced by GetCtsTxVectorForRts(), and SendCtsAfterRts().
|
private |
Return a TXVECTOR for the CTS frame given the destination and the mode of the RTS used by the sender.
The function consults WifiRemoteStationManager, which controls the rate to different destinations.
to | the MAC address of the CTS receiver |
rtsTxMode | the mode of the RTS used by the sender |
Definition at line 1074 of file mac-low.cc.
References GetCtsTxVector().
Referenced by GetCtsDuration().
|
protectedvirtual |
Return a TXVECTOR for the DATA frame given the destination.
The function consults WifiRemoteStationManager, which controls the rate to different destinations.
packet | the packet being asked for TXVECTOR |
hdr | the WifiMacHeader |
Reimplemented in ns3::WaveMacLow.
Definition at line 1049 of file mac-low.cc.
References ns3::WifiMacHeader::GetAddr1(), ns3::WifiMacTrailer::GetSerializedSize(), ns3::Packet::GetSize(), ns3::WifiMacHeader::GetSize(), and m_stationManager.
Referenced by CalculateOverallTxTime(), CalculateTransmissionTime(), ns3::WaveMacLow::GetDataTxVector(), NeedCtsToSelf(), SendCtsToSelf(), SendDataAfterCts(), SendDataPacket(), and SendRtsForPacket().
Time ns3::MacLow::GetPifs | ( | void | ) | const |
Return PCF Interframe Space (PIFS) of this MacLow.
Definition at line 548 of file mac-low.cc.
References m_pifs.
Referenced by StartDataTxTimers().
Time ns3::MacLow::GetRifs | ( | void | ) | const |
Return Reduced Interframe Space (RIFS) of this MacLow.
Definition at line 538 of file mac-low.cc.
References m_rifs.
Referenced by StartDataTxTimers().
|
private |
Return the total RTS size (including FCS trailer).
Definition at line 965 of file mac-low.cc.
References ns3::WifiMacHeader::GetSize(), ns3::WifiMacHeader::SetType(), and ns3::WIFI_MAC_CTL_RTS.
Referenced by CalculateOverallTxTime(), and SendRtsForPacket().
|
private |
Return a TXVECTOR for the RTS frame given the destination.
The function consults WifiRemoteStationManager, which controls the rate to different destinations.
packet | the packet being asked for RTS TXVECTOR |
hdr | the WifiMacHeader |
Definition at line 1043 of file mac-low.cc.
References ns3::WifiMacHeader::GetAddr1(), and m_stationManager.
Referenced by CalculateOverallTxTime(), NotifyNav(), and SendRtsForPacket().
Time ns3::MacLow::GetSifs | ( | void | ) | const |
Return Short Interframe Space (SIFS) of this MacLow.
Definition at line 533 of file mac-low.cc.
References m_sifs.
Referenced by CalculateOverallTxTime(), CalculateTransmissionTime(), NotifyNav(), ReceiveError(), ReceiveOk(), SendAckAfterData(), SendBlockAckResponse(), SendCtsAfterRts(), SendCtsToSelf(), SendDataAfterCts(), SendDataPacket(), SendRtsForPacket(), and StartDataTxTimers().
|
private |
Return the total size of the packet after WifiMacHeader and FCS trailer have been added.
packet | the packet to be encapsulated with WifiMacHeader and FCS trailer |
hdr | the WifiMacHeader |
Definition at line 1030 of file mac-low.cc.
References ns3::WifiMacTrailer::GetSerializedSize(), ns3::Packet::GetSize(), and ns3::WifiMacHeader::GetSize().
Referenced by CalculateOverallTxTime(), SendCtsToSelf(), SendDataAfterCts(), SendRtsForPacket(), StartDataTxTimers(), and StartTransmission().
Time ns3::MacLow::GetSlotTime | ( | void | ) | const |
Return slot duration of this MacLow.
Definition at line 543 of file mac-low.cc.
References m_slotTime.
Referenced by NotifyNav().
|
private |
Check if NAV is zero.
Definition at line 1542 of file mac-low.cc.
References m_lastNavDuration, m_lastNavStart, and ns3::Simulator::Now().
Referenced by ReceiveOk().
bool ns3::MacLow::IsPromisc | ( | void | ) | const |
Check if MacLow is operating in promiscuous mode.
Definition at line 558 of file mac-low.cc.
References m_promisc.
|
private |
Reset NAV after CTS was missed when the NAV was setted with RTS.
rtsEndRxTime |
Definition at line 1196 of file mac-low.cc.
References DoNavResetNow(), ns3::WifiPhy::GetLastRxStartTime(), m_phy, and ns3::Seconds().
Referenced by NotifyNav().
|
private |
Check if CTS-to-self mechanism should be used for the current packet.
Definition at line 627 of file mac-low.cc.
References GetDataTxVector(), m_currentHdr, m_currentPacket, and m_stationManager.
Referenced by StartTransmission().
|
private |
Event handler when normal ACK timeout occurs.
Definition at line 1293 of file mac-low.cc.
References ns3::WifiMacHeader::GetAddr1(), m_currentHdr, m_listener, m_stationManager, ns3::MacLowTransmissionListener::MissedAck(), NS_LOG_DEBUG, and NS_LOG_FUNCTION.
Referenced by StartDataTxTimers().
|
private |
Notify DcfManager (via DcfListener) that ACK timer should be resetted.
Definition at line 1240 of file mac-low.cc.
References m_dcfListeners.
Referenced by ReceiveOk().
|
private |
Notify DcfManager (via DcfListener) that ACK timer should be started for the given duration.
duration |
Definition at line 1232 of file mac-low.cc.
References m_dcfListeners.
Referenced by StartDataTxTimers().
|
private |
Notify DcfManager (via DcfListener) that CTS timer should be resetted.
Definition at line 1256 of file mac-low.cc.
References m_dcfListeners.
Referenced by ReceiveOk().
|
private |
Notify DcfManager (via DcfListener) that CTS timer should be started for the given duration.
duration |
Definition at line 1248 of file mac-low.cc.
References m_dcfListeners.
Referenced by SendRtsForPacket().
|
private |
A STA that used information from an RTS frame as the most recent basis to update its NAV setting is permitted to reset its NAV if no PHY-RXSTART.indication is detected from the PHY during a period with a duration of (2 * aSIFSTime) + (CTS_Time) + (2 * aSlotTime) starting at the PHY-RXEND.indication corresponding to the detection of the RTS frame. The “CTS_Time” shall be calculated using the length of the CTS frame and the data rate at which the RTS frame used for the most recent NAV update was received.
Definition at line 1154 of file mac-low.cc.
References ns3::WifiPhy::CalculateTxDuration(), DoNavResetNow(), DoNavStartNow(), ns3::WifiMacHeader::GetAddr1(), ns3::WifiMacHeader::GetAddr2(), ns3::WifiMacHeader::GetDuration(), GetRtsTxVector(), ns3::WifiMacHeader::GetSerializedSize(), GetSifs(), GetSlotTime(), ns3::WifiMacHeader::IsCfpoll(), ns3::WifiMacHeader::IsRts(), m_bssid, m_lastNavStart, m_navCounterResetCtsMissed, m_phy, m_self, NavCounterResetCtsMissed(), ns3::Simulator::Now(), NS_ASSERT, ns3::Simulator::Schedule(), ns3::WifiMacHeader::SetType(), and ns3::WIFI_MAC_CTL_CTS.
Referenced by ReceiveOk().
void ns3::MacLow::NotifySleepNow | ( | void | ) |
This method is typically invoked by the PhyMacLowListener to notify the MAC layer that the device has been put into sleep mode.
When the device is put into sleep mode, pending MAC transmissions (RTS, CTS, DATA and ACK) are cancelled.
Definition at line 663 of file mac-low.cc.
References ns3::EventId::Cancel(), CancelAllEvents(), ns3::EventId::IsRunning(), m_currentPacket, m_lastNavDuration, m_lastNavStart, m_listener, m_navCounterResetCtsMissed, m_stationManager, ns3::Simulator::Now(), NS_LOG_DEBUG, and ns3::Seconds().
Referenced by ns3::PhyMacLowListener::NotifySleep().
void ns3::MacLow::NotifySwitchingStartNow | ( | Time | duration | ) |
duration | switching delay duration. |
This method is typically invoked by the PhyMacLowListener to notify the MAC layer that a channel switching occured. When a channel switching occurs, pending MAC transmissions (RTS, CTS, DATA and ACK) are cancelled.
Definition at line 647 of file mac-low.cc.
References ns3::EventId::Cancel(), CancelAllEvents(), ns3::EventId::IsRunning(), m_currentPacket, m_lastNavDuration, m_lastNavStart, m_listener, m_navCounterResetCtsMissed, m_stationManager, ns3::Simulator::Now(), NS_LOG_DEBUG, and ns3::Seconds().
Referenced by ns3::PhyMacLowListener::NotifySwitchingStart().
packet | packet received. |
rxSnr | snr of packet received. |
This method is typically invoked by the lower PHY layer to notify the MAC layer that a packet was unsuccessfully received.
Definition at line 633 of file mac-low.cc.
References FastAckFailedTimeout(), GetSifs(), ns3::EventId::IsExpired(), m_fastAckFailedTimeoutEvent, m_txParams, ns3::MacLowTransmissionParameters::MustWaitFastAck(), NS_ASSERT, NS_LOG_DEBUG, NS_LOG_FUNCTION, and ns3::Simulator::Schedule().
Referenced by SetPhy().
void ns3::MacLow::ReceiveOk | ( | Ptr< Packet > | packet, |
double | rxSnr, | ||
WifiMode | txMode, | ||
WifiPreamble | preamble | ||
) |
packet | packet received |
rxSnr | snr of packet received |
txMode | transmission mode of packet received |
preamble | type of preamble used for the packet received |
This method is typically invoked by the lower PHY layer to notify the MAC layer that a packet was successfully received.
Definition at line 679 of file mac-low.cc.
References ns3::EventId::Cancel(), ns3::WifiMacHeader::GetAddr1(), ns3::WifiMacHeader::GetAddr2(), ns3::WifiMacHeader::GetDuration(), ns3::WifiMacHeader::GetQosTid(), GetSifs(), ns3::CtrlBAckRequestHeader::GetStartingSequence(), ns3::CtrlBAckRequestHeader::GetTidInfo(), ns3::WifiMacHeader::GetTypeString(), ns3::MacLowTransmissionListener::GotAck(), ns3::MacLowTransmissionListener::GotBlockAck(), ns3::MacLowTransmissionListener::GotCts(), ns3::MacLowTransmissionParameters::HasNextPacket(), ns3::WifiMacHeader::IsAck(), ns3::WifiMacHeader::IsBlockAck(), ns3::WifiMacHeader::IsBlockAckReq(), ns3::WifiMacHeader::IsCtl(), ns3::WifiMacHeader::IsCts(), ns3::WifiMacHeader::IsData(), ns3::EventId::IsExpired(), ns3::Mac48Address::IsGroup(), ns3::WifiMacHeader::IsMgt(), ns3::CtrlBAckRequestHeader::IsMultiTid(), IsNavZero(), ns3::WifiMacHeader::IsQosAck(), ns3::WifiMacHeader::IsQosBlockAck(), ns3::WifiMacHeader::IsQosData(), ns3::WifiMacHeader::IsQosNoAck(), ns3::WifiMacHeader::IsRts(), ns3::EventId::IsRunning(), m_bAckAgreements, m_bAckCaches, m_blockAckTimeoutEvent, m_ctsTimeoutEvent, m_currentHdr, m_currentPacket, m_edcaListeners, m_fastAckTimeoutEvent, m_listener, m_normalAckTimeoutEvent, m_promisc, m_rxCallback, m_self, m_sendAckEvent, m_sendCtsEvent, m_sendDataEvent, m_stationManager, m_superFastAckTimeoutEvent, m_txParams, m_waitSifsEvent, ns3::MacLowTransmissionParameters::MustWaitAck(), ns3::MacLowTransmissionParameters::MustWaitBasicBlockAck(), ns3::MacLowTransmissionParameters::MustWaitCompressedBlockAck(), ns3::MacLowTransmissionParameters::MustWaitFastAck(), ns3::MacLowTransmissionParameters::MustWaitNormalAck(), NotifyAckTimeoutResetNow(), NotifyCtsTimeoutResetNow(), NotifyNav(), NS_ASSERT, NS_FATAL_ERROR, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::QosUtilsMapTidToAc(), ns3::Packet::RemoveHeader(), ns3::Packet::RemovePacketTag(), ns3::Packet::RemoveTrailer(), ResetBlockAckInactivityTimerIfNeeded(), RxCompleteBufferedPacketsUntilFirstLost(), RxCompleteBufferedPacketsWithSmallerSequence(), ns3::Simulator::Schedule(), SendAckAfterData(), SendBlockAckAfterBlockAckRequest(), SendCtsAfterRts(), SendDataAfterCts(), StoreMpduIfNeeded(), and WaitSifsAfterEndTx().
Referenced by SetPhy().
void ns3::MacLow::RegisterBlockAckListenerForAc | ( | enum AcIndex | ac, |
MacLowBlockAckEventListener * | listener | ||
) |
ac | Access class managed by the queue. |
listener | The listener for the queue. |
The lifetime of the registered listener is typically equal to the lifetime of the queue associated to this AC.
Definition at line 2097 of file mac-low.cc.
References m_edcaListeners.
void ns3::MacLow::RegisterDcfListener | ( | MacLowDcfListener * | listener | ) |
listener | listen to NAV events for every incoming and outgoing packet. |
Definition at line 569 of file mac-low.cc.
References m_dcfListeners.
|
private |
Every time that a block ack request or a packet with ack policy equals to block ack are received, if a relative block ack agreement exists and the value of inactivity timeout is not 0, the timer is reset.
see section 11.5.3 in IEEE802.11e for more details.
agreement |
Definition at line 2076 of file mac-low.cc.
References ns3::MacLowBlockAckEventListener::BlockAckInactivityTimeout(), ns3::EventId::Cancel(), ns3::BlockAckAgreement::GetPeer(), ns3::BlockAckAgreement::GetTid(), ns3::BlockAckAgreement::GetTimeout(), ns3::EventId::IsRunning(), m_edcaListeners, ns3::BlockAckAgreement::m_inactivityEvent, ns3::MicroSeconds(), NS_ASSERT, ns3::QosUtilsMapTidToAc(), ns3::Simulator::Schedule(), and timeout.
Referenced by ReceiveOk().
|
private |
originator | Address of peer participating in Block Ack mechanism. |
tid | TID for which Block Ack was created. |
This method is typically invoked when a MPDU with ack policy subfield set to Normal Ack is received and a block ack agreement for that packet exists. This happens when the originator of block ack has only few MPDUs to send. All completed MSDUs starting with starting sequence number of block ack agreement are forward up to WifiMac until there is an incomplete or missing MSDU. See section 9.10.4 in IEEE802.11 standard for more details.
Definition at line 1926 of file mac-low.cc.
References m_bAckAgreements, and m_rxCallback.
Referenced by DestroyBlockAckAgreement(), ReceiveOk(), and SendBlockAckAfterBlockAckRequest().
|
private |
originator | Address of peer participating in Block Ack mechanism. |
tid | TID for which Block Ack was created. |
seq | Starting sequence |
This function forward up all completed "old" packets with sequence number smaller than seq. All comparison are performed circularly mod 4096.
Definition at line 1866 of file mac-low.cc.
References m_bAckAgreements, m_rxCallback, and ns3::QosUtilsMapSeqControlToUniqueInteger().
Referenced by DestroyBlockAckAgreement(), ReceiveOk(), and SendBlockAckAfterBlockAckRequest().
|
private |
Send ACK after receiving DATA.
source | |
duration | |
dataTxMode | |
dataSnr |
Definition at line 1739 of file mac-low.cc.
References ns3::Packet::AddHeader(), ns3::Packet::AddPacketTag(), ns3::Packet::AddTrailer(), ForwardDown(), GetAckDuration(), GetAckTxVector(), ns3::WifiTxVector::GetMode(), ns3::WifiMode::GetModulationClass(), GetSifs(), ns3::MicroSeconds(), NS_ASSERT, NS_LOG_FUNCTION, ns3::SnrTag::Set(), ns3::WifiMacHeader::SetAddr1(), ns3::WifiMacHeader::SetDsNotFrom(), ns3::WifiMacHeader::SetDsNotTo(), ns3::WifiMacHeader::SetDuration(), ns3::WifiMacHeader::SetNoMoreFragments(), ns3::WifiMacHeader::SetNoRetry(), ns3::WifiMacHeader::SetType(), ns3::WIFI_MAC_CTL_ACK, ns3::WIFI_MOD_CLASS_HT, ns3::WIFI_PREAMBLE_HT_MF, and ns3::WIFI_PREAMBLE_LONG.
Referenced by ReceiveOk().
|
private |
Invoked after that a block ack request has been received.
Looks for corresponding block ack agreement and creates block ack bitmap on a received packets basis.
reqHdr | |
originator | |
duration | |
blockAckReqTxMode |
Definition at line 2028 of file mac-low.cc.
References ns3::BASIC_BLOCK_ACK, ns3::COMPRESSED_BLOCK_ACK, ns3::CtrlBAckRequestHeader::GetStartingSequence(), ns3::CtrlBAckRequestHeader::GetTidInfo(), ns3::CtrlBAckRequestHeader::IsBasic(), ns3::CtrlBAckRequestHeader::IsCompressed(), ns3::CtrlBAckRequestHeader::IsMultiTid(), m_bAckAgreements, m_bAckCaches, NS_ASSERT, NS_FATAL_ERROR, NS_LOG_DEBUG, NS_LOG_FUNCTION, RxCompleteBufferedPacketsUntilFirstLost(), RxCompleteBufferedPacketsWithSmallerSequence(), SendBlockAckResponse(), ns3::CtrlBAckResponseHeader::SetStartingSequence(), ns3::CtrlBAckResponseHeader::SetTidInfo(), and ns3::CtrlBAckResponseHeader::SetType().
Referenced by ReceiveOk().
|
private |
This method creates block ack frame with header equals to blockAck and start its transmission.
blockAck | |
originator | |
immediate | |
duration | |
blockAckReqTxMode |
Definition at line 1958 of file mac-low.cc.
References ns3::Packet::AddHeader(), ns3::Packet::AddTrailer(), ns3::BASIC_BLOCK_ACK, ns3::COMPRESSED_BLOCK_ACK, ns3::MacLowTransmissionParameters::DisableAck(), ns3::MacLowTransmissionParameters::DisableNextData(), ns3::MacLowTransmissionParameters::EnableAck(), ForwardDown(), GetAckDuration(), GetAddress(), GetBlockAckDuration(), GetBlockAckTxVector(), ns3::WifiTxVector::GetMode(), ns3::WifiMode::GetModulationClass(), GetSifs(), ns3::CtrlBAckResponseHeader::IsBasic(), ns3::CtrlBAckResponseHeader::IsCompressed(), ns3::CtrlBAckResponseHeader::IsMultiTid(), m_currentHdr, m_currentPacket, m_txParams, ns3::MicroSeconds(), NS_ASSERT, NS_FATAL_ERROR, ns3::WifiMacHeader::SetAddr1(), ns3::WifiMacHeader::SetAddr2(), ns3::WifiMacHeader::SetDsNotFrom(), ns3::WifiMacHeader::SetDsNotTo(), ns3::WifiMacHeader::SetDuration(), ns3::WifiTxVector::SetMode(), ns3::WifiMacHeader::SetNoMoreFragments(), ns3::WifiMacHeader::SetNoRetry(), ns3::WifiTxVector::SetNss(), ns3::WifiTxVector::SetStbc(), ns3::WifiMacHeader::SetType(), StartDataTxTimers(), ns3::WIFI_MAC_CTL_BACKRESP, ns3::WIFI_MOD_CLASS_HT, ns3::WIFI_PREAMBLE_HT_MF, and ns3::WIFI_PREAMBLE_LONG.
Referenced by SendBlockAckAfterBlockAckRequest().
|
private |
Send CTS after receiving RTS.
source | |
duration | |
txMode | |
rtsSnr |
Definition at line 1638 of file mac-low.cc.
References ns3::Packet::AddHeader(), ns3::Packet::AddPacketTag(), ns3::Packet::AddTrailer(), ForwardDown(), GetCtsDuration(), GetCtsTxVector(), ns3::WifiTxVector::GetMode(), ns3::WifiMode::GetModulationClass(), GetSifs(), ns3::MicroSeconds(), NS_ASSERT, NS_LOG_FUNCTION, ns3::SnrTag::Set(), ns3::WifiMacHeader::SetAddr1(), ns3::WifiMacHeader::SetDsNotFrom(), ns3::WifiMacHeader::SetDsNotTo(), ns3::WifiMacHeader::SetDuration(), ns3::WifiMacHeader::SetNoMoreFragments(), ns3::WifiMacHeader::SetNoRetry(), ns3::WifiMacHeader::SetType(), ns3::WIFI_MAC_CTL_CTS, ns3::WIFI_MOD_CLASS_HT, ns3::WIFI_PREAMBLE_HT_MF, and ns3::WIFI_PREAMBLE_LONG.
Referenced by ReceiveOk().
|
private |
Send CTS for a CTS-to-self mechanism.
Definition at line 1554 of file mac-low.cc.
References ns3::Packet::AddHeader(), ns3::Packet::AddTrailer(), ns3::BASIC_BLOCK_ACK, ns3::WifiPhy::CalculateTxDuration(), ns3::COMPRESSED_BLOCK_ACK, ForwardDown(), GetAckDuration(), ns3::WifiMacHeader::GetAddr1(), GetBlockAckDuration(), GetCtsSize(), GetCtsToSelfTxVector(), GetDataTxVector(), ns3::MacLowTransmissionParameters::GetDurationId(), ns3::WifiTxVector::GetMode(), ns3::WifiMode::GetModulationClass(), ns3::MacLowTransmissionParameters::GetNextPacketSize(), GetSifs(), GetSize(), ns3::MacLowTransmissionParameters::HasDurationId(), ns3::MacLowTransmissionParameters::HasNextPacket(), ns3::EventId::IsExpired(), m_currentHdr, m_currentPacket, m_phy, m_self, m_sendDataEvent, m_txParams, ns3::MacLowTransmissionParameters::MustWaitAck(), ns3::MacLowTransmissionParameters::MustWaitBasicBlockAck(), ns3::MacLowTransmissionParameters::MustWaitCompressedBlockAck(), NS_ASSERT, ns3::Simulator::Schedule(), ns3::Seconds(), SendDataAfterCts(), ns3::WifiMacHeader::SetAddr1(), ns3::WifiMacHeader::SetDsNotFrom(), ns3::WifiMacHeader::SetDsNotTo(), ns3::WifiMacHeader::SetDuration(), ns3::WifiMacHeader::SetNoMoreFragments(), ns3::WifiMacHeader::SetNoRetry(), ns3::WifiMacHeader::SetType(), ns3::WIFI_MAC_CTL_CTS, ns3::WIFI_MOD_CLASS_HT, ns3::WIFI_PREAMBLE_HT_MF, and ns3::WIFI_PREAMBLE_LONG.
Referenced by StartTransmission().
|
private |
Send DATA after receiving CTS.
source | |
duration | |
txMode |
Definition at line 1675 of file mac-low.cc.
References ns3::Packet::AddHeader(), ns3::Packet::AddTrailer(), ns3::WifiPhy::CalculateTxDuration(), ForwardDown(), GetAckDuration(), ns3::WifiMacHeader::GetAddr1(), GetDataTxVector(), ns3::WifiPhy::GetGreenfield(), ns3::WifiTxVector::GetMode(), ns3::WifiMode::GetModulationClass(), GetSifs(), GetSize(), m_currentHdr, m_currentPacket, m_phy, m_stationManager, ns3::MicroSeconds(), NS_ASSERT, NS_LOG_FUNCTION, ns3::Seconds(), ns3::WifiMacHeader::SetDuration(), StartDataTxTimers(), ns3::WIFI_MOD_CLASS_HT, ns3::WIFI_PREAMBLE_HT_GF, ns3::WIFI_PREAMBLE_HT_MF, and ns3::WIFI_PREAMBLE_LONG.
Referenced by ReceiveOk(), and SendCtsToSelf().
|
private |
Send DATA packet, which can be DATA-ACK or RTS-CTS-DATA-ACK transaction.
Definition at line 1480 of file mac-low.cc.
References ns3::Packet::AddHeader(), ns3::Packet::AddTrailer(), ns3::BASIC_BLOCK_ACK, ns3::WifiPhy::CalculateTxDuration(), ns3::COMPRESSED_BLOCK_ACK, ForwardDown(), GetAckDuration(), ns3::WifiMacHeader::GetAddr1(), GetBlockAckDuration(), GetDataTxVector(), ns3::MacLowTransmissionParameters::GetDurationId(), ns3::WifiPhy::GetGreenfield(), ns3::WifiTxVector::GetMode(), ns3::WifiMode::GetModulationClass(), ns3::MacLowTransmissionParameters::GetNextPacketSize(), GetSifs(), ns3::MacLowTransmissionParameters::HasDurationId(), ns3::MacLowTransmissionParameters::HasNextPacket(), m_currentHdr, m_currentPacket, m_phy, m_stationManager, m_txParams, ns3::MacLowTransmissionParameters::MustWaitAck(), ns3::MacLowTransmissionParameters::MustWaitBasicBlockAck(), ns3::MacLowTransmissionParameters::MustWaitCompressedBlockAck(), NS_LOG_FUNCTION, ns3::Seconds(), ns3::WifiMacHeader::SetDuration(), StartDataTxTimers(), ns3::WIFI_MOD_CLASS_HT, ns3::WIFI_PREAMBLE_HT_GF, ns3::WIFI_PREAMBLE_HT_MF, and ns3::WIFI_PREAMBLE_LONG.
Referenced by StartTransmission().
|
private |
Send RTS to begin RTS-CTS-DATA-ACK transaction.
Definition at line 1353 of file mac-low.cc.
References ns3::Packet::AddHeader(), ns3::Packet::AddTrailer(), ns3::WifiPhy::CalculateTxDuration(), CtsTimeout(), ForwardDown(), GetAckDuration(), ns3::WifiMacHeader::GetAddr1(), GetCtsDuration(), GetCtsTimeout(), GetDataTxVector(), ns3::MacLowTransmissionParameters::GetDurationId(), ns3::WifiPhy::GetGreenfield(), ns3::WifiTxVector::GetMode(), ns3::WifiMode::GetModulationClass(), GetRtsSize(), GetRtsTxVector(), GetSifs(), GetSize(), ns3::MacLowTransmissionParameters::HasDurationId(), ns3::EventId::IsExpired(), m_ctsTimeoutEvent, m_currentHdr, m_currentPacket, m_phy, m_self, m_stationManager, m_txParams, NotifyCtsTimeoutStartNow(), NS_ASSERT, NS_LOG_FUNCTION, ns3::Simulator::Schedule(), ns3::Seconds(), ns3::WifiMacHeader::SetAddr1(), ns3::WifiMacHeader::SetAddr2(), ns3::WifiMacHeader::SetDsNotFrom(), ns3::WifiMacHeader::SetDsNotTo(), ns3::WifiMacHeader::SetDuration(), ns3::WifiMacHeader::SetNoMoreFragments(), ns3::WifiMacHeader::SetNoRetry(), ns3::WifiMacHeader::SetType(), ns3::WIFI_MAC_CTL_RTS, ns3::WIFI_MOD_CLASS_HT, ns3::WIFI_PREAMBLE_HT_GF, ns3::WIFI_PREAMBLE_HT_MF, and ns3::WIFI_PREAMBLE_LONG.
Referenced by StartTransmission().
void ns3::MacLow::SetAckTimeout | ( | Time | ackTimeout | ) |
Set ACK timeout of this MacLow.
ackTimeout | ACK timeout of this MacLow |
Definition at line 448 of file mac-low.cc.
References m_ackTimeout.
void ns3::MacLow::SetAddress | ( | Mac48Address | ad | ) |
Set MAC address of this MacLow.
ad | Mac48Address of this MacLow |
Definition at line 443 of file mac-low.cc.
References m_self.
void ns3::MacLow::SetBasicBlockAckTimeout | ( | Time | blockAckTimeout | ) |
Set Basic Block ACK timeout of this MacLow.
blockAckTimeout | Basic Block ACK timeout of this MacLow |
Definition at line 453 of file mac-low.cc.
References m_basicBlockAckTimeout.
void ns3::MacLow::SetBssid | ( | Mac48Address | ad | ) |
Set the Basic Service Set Identification.
ad | the BSSID |
Definition at line 498 of file mac-low.cc.
References m_bssid.
void ns3::MacLow::SetCompressedBlockAckTimeout | ( | Time | blockAckTimeout | ) |
Set Compressed Block ACK timeout of this MacLow.
blockAckTimeout | Compressed Block ACK timeout of this MacLow |
Definition at line 458 of file mac-low.cc.
References m_compressedBlockAckTimeout.
void ns3::MacLow::SetCtsTimeout | ( | Time | ctsTimeout | ) |
Set CTS timeout of this MacLow.
ctsTimeout | CTS timeout of this MacLow |
Definition at line 473 of file mac-low.cc.
References m_ctsTimeout.
void ns3::MacLow::SetCtsToSelfSupported | ( | bool | enable | ) |
Enable or disable CTS-to-self capability.
enable | Enable or disable CTS-to-self capability |
Definition at line 463 of file mac-low.cc.
References m_ctsToSelfSupported.
Set up WifiPhy associated with this MacLow.
Definition at line 429 of file mac-low.cc.
References m_phy, ns3::MakeCallback(), ReceiveError(), ReceiveOk(), ns3::WifiPhy::SetReceiveErrorCallback(), ns3::WifiPhy::SetReceiveOkCallback(), and SetupPhyMacLowListener().
void ns3::MacLow::SetPifs | ( | Time | pifs | ) |
Set PCF Interframe Space (PIFS) of this MacLow.
pifs | PIFS of this MacLow |
Definition at line 488 of file mac-low.cc.
References m_pifs.
void ns3::MacLow::SetPromisc | ( | void | ) |
void ns3::MacLow::SetRifs | ( | Time | rifs | ) |
Set Reduced Interframe Space (RIFS) of this MacLow.
rifs | RIFS of this MacLow |
Definition at line 493 of file mac-low.cc.
References m_rifs.
void ns3::MacLow::SetRxCallback | ( | Callback< void, Ptr< Packet >, const WifiMacHeader * > | callback | ) |
callback | the callback which receives every incoming packet. |
This callback typically forwards incoming packets to an instance of ns3::MacRxMiddle.
Definition at line 564 of file mac-low.cc.
References m_rxCallback.
void ns3::MacLow::SetSifs | ( | Time | sifs | ) |
Set Short Interframe Space (SIFS) of this MacLow.
sifs | SIFS of this MacLow |
Definition at line 478 of file mac-low.cc.
References m_sifs.
void ns3::MacLow::SetSlotTime | ( | Time | slotTime | ) |
Set slot duration of this MacLow.
slotTime | slot duration of this MacLow |
Definition at line 483 of file mac-low.cc.
References m_slotTime.
Set up WifiPhy listener for this MacLow.
Definition at line 324 of file mac-low.cc.
References m_phyMacLowListener, and ns3::WifiPhy::RegisterListener().
Referenced by SetPhy().
void ns3::MacLow::SetWifiRemoteStationManager | ( | Ptr< WifiRemoteStationManager > | manager | ) |
Set up WifiRemoteStationManager associated with this MacLow.
manager | WifiRemoteStationManager associated with this MacLow |
Definition at line 437 of file mac-low.cc.
References m_stationManager.
|
private |
Start a DATA timer by scheduling appropriate ACK timeout.
dataTxVector |
Definition at line 1410 of file mac-low.cc.
References BlockAckTimeout(), ns3::WifiPhy::CalculateTxDuration(), EndTxNoAck(), FastAckTimeout(), GetAckTimeout(), ns3::WifiMacHeader::GetAddr1(), GetBasicBlockAckTimeout(), GetCompressedBlockAckTimeout(), ns3::WifiPhy::GetGreenfield(), ns3::WifiTxVector::GetMode(), ns3::WifiMode::GetModulationClass(), GetPifs(), GetRifs(), GetSifs(), GetSize(), ns3::MacLowTransmissionParameters::HasNextPacket(), ns3::EventId::IsExpired(), m_blockAckTimeoutEvent, m_currentHdr, m_currentPacket, m_fastAckTimeoutEvent, m_normalAckTimeoutEvent, m_phy, m_stationManager, m_superFastAckTimeoutEvent, m_txParams, m_waitRifsEvent, m_waitSifsEvent, ns3::MacLowTransmissionParameters::MustWaitBasicBlockAck(), ns3::MacLowTransmissionParameters::MustWaitCompressedBlockAck(), ns3::MacLowTransmissionParameters::MustWaitFastAck(), ns3::MacLowTransmissionParameters::MustWaitNormalAck(), ns3::MacLowTransmissionParameters::MustWaitSuperFastAck(), NormalAckTimeout(), NotifyAckTimeoutStartNow(), NS_ASSERT, ns3::Simulator::Schedule(), SuperFastAckTimeout(), WaitSifsAfterEndTx(), ns3::WIFI_MOD_CLASS_HT, ns3::WIFI_PREAMBLE_HT_GF, ns3::WIFI_PREAMBLE_HT_MF, and ns3::WIFI_PREAMBLE_LONG.
Referenced by SendBlockAckResponse(), SendDataAfterCts(), and SendDataPacket().
void ns3::MacLow::StartTransmission | ( | Ptr< const Packet > | packet, |
const WifiMacHeader * | hdr, | ||
MacLowTransmissionParameters | parameters, | ||
MacLowTransmissionListener * | listener | ||
) |
packet | packet to send |
hdr | 802.11 header for packet to send |
parameters | the transmission parameters to use for this packet. |
listener | listen to transmission events. |
Start the transmission of the input packet and notify the listener of transmission events.
Definition at line 576 of file mac-low.cc.
References CancelAllEvents(), ns3::Packet::Copy(), ns3::WifiMacHeader::GetAddr1(), GetSize(), ns3::WifiPhy::IsStateTx(), m_ctsToSelfSupported, m_currentHdr, m_currentPacket, m_listener, m_phy, m_txParams, ns3::MacLowTransmissionParameters::MustSendRts(), NeedCtsToSelf(), NS_ASSERT, NS_LOG_DEBUG, NS_LOG_FUNCTION, SendCtsToSelf(), SendDataPacket(), and SendRtsForPacket().
|
private |
Definition at line 1777 of file mac-low.cc.
References ns3::WifiMacHeader::GetAddr2(), ns3::WifiMacHeader::GetQosTid(), ns3::WifiMacHeader::GetSequenceControl(), m_bAckAgreements, m_bAckCaches, NS_ASSERT, ns3::QosUtilsMapSeqControlToUniqueInteger(), and ns3::Packet::RemoveTrailer().
Referenced by ReceiveOk().
|
private |
Event handler when super fast ACK timeout occurs.
Definition at line 1334 of file mac-low.cc.
References ns3::WifiMacHeader::GetAddr1(), ns3::MacLowTransmissionListener::GotAck(), ns3::WifiPhy::IsStateIdle(), m_currentHdr, m_listener, m_phy, m_stationManager, ns3::MacLowTransmissionListener::MissedAck(), NS_LOG_DEBUG, and NS_LOG_FUNCTION.
Referenced by StartDataTxTimers().
|
private |
Event handler that is usually scheduled to fired at the appropriate time after completing transmissions.
Definition at line 1715 of file mac-low.cc.
References m_listener, and ns3::MacLowTransmissionListener::StartNext().
Referenced by ReceiveOk(), and StartDataTxTimers().
|
private |
ACK timeout duration.
Definition at line 1109 of file mac-low.h.
Referenced by GetAckTimeout(), and SetAckTimeout().
|
private |
Definition at line 1140 of file mac-low.h.
Referenced by CreateBlockAckAgreement(), DestroyBlockAckAgreement(), ReceiveOk(), RxCompleteBufferedPacketsUntilFirstLost(), RxCompleteBufferedPacketsWithSmallerSequence(), SendBlockAckAfterBlockAckRequest(), and StoreMpduIfNeeded().
|
private |
Definition at line 1141 of file mac-low.h.
Referenced by CreateBlockAckAgreement(), DestroyBlockAckAgreement(), ReceiveOk(), SendBlockAckAfterBlockAckRequest(), and StoreMpduIfNeeded().
|
private |
Basic block ACK timeout duration.
Definition at line 1110 of file mac-low.h.
Referenced by GetBasicBlockAckTimeout(), and SetBasicBlockAckTimeout().
|
private |
Block ACK timeout event.
Definition at line 1093 of file mac-low.h.
Referenced by CancelAllEvents(), DoDispose(), ReceiveOk(), and StartDataTxTimers().
|
private |
BSSID address (Mac48Address)
Definition at line 1108 of file mac-low.h.
Referenced by GetBssid(), NotifyNav(), and SetBssid().
|
private |
Compressed block ACK timeout duration.
Definition at line 1111 of file mac-low.h.
Referenced by GetCompressedBlockAckTimeout(), and SetCompressedBlockAckTimeout().
|
private |
CTS timeout duration.
Definition at line 1112 of file mac-low.h.
Referenced by GetCtsTimeout(), and SetCtsTimeout().
|
private |
CTS timeout event.
Definition at line 1094 of file mac-low.h.
Referenced by CancelAllEvents(), DoDispose(), ReceiveOk(), and SendRtsForPacket().
|
private |
Definition at line 1145 of file mac-low.h.
Referenced by GetCtsToSelfSupported(), SetCtsToSelfSupported(), and StartTransmission().
|
private |
Header of the current packet.
Definition at line 1104 of file mac-low.h.
Referenced by BlockAckTimeout(), CalculateOverallTxTime(), CalculateTransmissionTime(), CtsTimeout(), FastAckTimeout(), ForwardDown(), NeedCtsToSelf(), NormalAckTimeout(), ReceiveOk(), SendBlockAckResponse(), SendCtsToSelf(), SendDataAfterCts(), SendDataPacket(), SendRtsForPacket(), StartDataTxTimers(), StartTransmission(), and SuperFastAckTimeout().
Current packet transmitted/to be transmitted.
Definition at line 1103 of file mac-low.h.
Referenced by CtsTimeout(), NeedCtsToSelf(), NotifySleepNow(), NotifySwitchingStartNow(), ReceiveOk(), SendBlockAckResponse(), SendCtsToSelf(), SendDataAfterCts(), SendDataPacket(), SendRtsForPacket(), StartDataTxTimers(), and StartTransmission().
|
private |
List of MacLowDcfListener (pass events to Dcf)
Definition at line 1087 of file mac-low.h.
Referenced by DoNavResetNow(), DoNavStartNow(), NotifyAckTimeoutResetNow(), NotifyAckTimeoutStartNow(), NotifyCtsTimeoutResetNow(), NotifyCtsTimeoutStartNow(), and RegisterDcfListener().
|
private |
Definition at line 1144 of file mac-low.h.
Referenced by CreateBlockAckAgreement(), ReceiveOk(), RegisterBlockAckListenerForAc(), and ResetBlockAckInactivityTimerIfNeeded().
|
private |
Event for finishing transmission that does not require ACK.
Definition at line 1099 of file mac-low.h.
Referenced by CancelAllEvents(), and DoDispose().
|
private |
Fast ACK failed timeout event.
Definition at line 1092 of file mac-low.h.
Referenced by CancelAllEvents(), DoDispose(), and ReceiveError().
|
private |
Fast ACK timeout event.
Definition at line 1090 of file mac-low.h.
Referenced by CancelAllEvents(), DoDispose(), ReceiveOk(), and StartDataTxTimers().
|
private |
The duration of the latest NAV.
Definition at line 1119 of file mac-low.h.
Referenced by DoNavStartNow(), IsNavZero(), MacLow(), NotifySleepNow(), and NotifySwitchingStartNow().
|
private |
The time when the latest NAV started.
Definition at line 1118 of file mac-low.h.
Referenced by DoNavResetNow(), DoNavStartNow(), IsNavZero(), MacLow(), NotifyNav(), NotifySleepNow(), and NotifySwitchingStartNow().
|
private |
Transmission listener for the current packet.
Definition at line 1106 of file mac-low.h.
Referenced by BlockAckTimeout(), CancelAllEvents(), CtsTimeout(), EndTxNoAck(), FastAckFailedTimeout(), FastAckTimeout(), NormalAckTimeout(), NotifySleepNow(), NotifySwitchingStartNow(), ReceiveOk(), StartTransmission(), SuperFastAckTimeout(), and WaitSifsAfterEndTx().
|
private |
Event to reset NAV when CTS is not received.
Definition at line 1100 of file mac-low.h.
Referenced by NotifyNav(), NotifySleepNow(), and NotifySwitchingStartNow().
|
private |
Normal ACK timeout event.
Definition at line 1089 of file mac-low.h.
Referenced by CancelAllEvents(), DoDispose(), ReceiveOk(), and StartDataTxTimers().
Pointer to WifiPhy (actually send/receives frames)
Definition at line 1076 of file mac-low.h.
Referenced by CalculateOverallTxTime(), CalculateTransmissionTime(), DoDispose(), FastAckTimeout(), ForwardDown(), GetAckDuration(), GetBlockAckDuration(), GetCtsDuration(), NavCounterResetCtsMissed(), NotifyNav(), SendCtsToSelf(), SendDataAfterCts(), SendDataPacket(), SendRtsForPacket(), SetPhy(), StartDataTxTimers(), StartTransmission(), and SuperFastAckTimeout().
|
private |
Listerner needed to monitor when a channel switching occurs.
Definition at line 1123 of file mac-low.h.
Referenced by DoDispose(), and SetupPhyMacLowListener().
|
private |
|
private |
Flag if the device is operating in promiscuous mode.
Definition at line 1121 of file mac-low.h.
Referenced by IsPromisc(), MacLow(), ReceiveOk(), and SetPromisc().
|
private |
|
private |
Callback to pass packet up.
Definition at line 1078 of file mac-low.h.
Referenced by ReceiveOk(), RxCompleteBufferedPacketsUntilFirstLost(), RxCompleteBufferedPacketsWithSmallerSequence(), and SetRxCallback().
|
private |
Address of this MacLow (Mac48Address)
Definition at line 1107 of file mac-low.h.
Referenced by GetAddress(), NotifyNav(), ReceiveOk(), SendCtsToSelf(), SendRtsForPacket(), and SetAddress().
|
private |
Event to send ACK.
Definition at line 1096 of file mac-low.h.
Referenced by CancelAllEvents(), DoDispose(), and ReceiveOk().
|
private |
Event to send CTS.
Definition at line 1095 of file mac-low.h.
Referenced by CancelAllEvents(), DoDispose(), and ReceiveOk().
|
private |
Event to send DATA.
Definition at line 1097 of file mac-low.h.
Referenced by CancelAllEvents(), DoDispose(), ReceiveOk(), and SendCtsToSelf().
|
private |
|
private |
Slot duration.
Definition at line 1114 of file mac-low.h.
Referenced by GetSlotTime(), and SetSlotTime().
|
private |
Pointer to WifiRemoteStationManager (rate control)
Definition at line 1077 of file mac-low.h.
Referenced by BlockAckTimeout(), CalculateOverallTxTime(), CalculateTransmissionTime(), CtsTimeout(), DoDispose(), FastAckTimeout(), GetAckTxVector(), GetBlockAckTxVector(), GetCtsToSelfTxVector(), GetCtsTxVector(), GetDataTxVector(), GetRtsTxVector(), NeedCtsToSelf(), NormalAckTimeout(), NotifySleepNow(), NotifySwitchingStartNow(), ReceiveOk(), SendDataAfterCts(), SendDataPacket(), SendRtsForPacket(), SetWifiRemoteStationManager(), StartDataTxTimers(), and SuperFastAckTimeout().
|
private |
Super fast ACK timeout event.
Definition at line 1091 of file mac-low.h.
Referenced by CancelAllEvents(), DoDispose(), ReceiveOk(), and StartDataTxTimers().
|
private |
Transmission parameters of the current packet.
Definition at line 1105 of file mac-low.h.
Referenced by ReceiveError(), ReceiveOk(), SendBlockAckResponse(), SendCtsToSelf(), SendDataPacket(), SendRtsForPacket(), StartDataTxTimers(), and StartTransmission().
|
private |
Wait for RIFS event.
Definition at line 1101 of file mac-low.h.
Referenced by CancelAllEvents(), DoDispose(), and StartDataTxTimers().
|
private |
Wait for SIFS event.
Definition at line 1098 of file mac-low.h.
Referenced by CancelAllEvents(), DoDispose(), ReceiveOk(), and StartDataTxTimers().