handle RTS/CTS/DATA/ACK transactions. More...
#include "mac-low.h"
Classes | |
struct | CfAckInfo |
A struct that holds information about ACK piggybacking (CF-ACK). More... | |
struct | Item |
A struct for packet, Wifi header, and timestamp.item structure. More... | |
Public Types | |
typedef Callback< void, Ptr< Packet >, const WifiMacHeader * > | MacLowRxCallback |
typedef for a callback for MacLowRx More... | |
Public Member Functions | |
MacLow () | |
virtual | ~MacLow () |
Ptr< Packet > | AggregateToAmpdu (Ptr< const Packet > packet, const WifiMacHeader hdr) |
Time | CalculateOverallTxTime (Ptr< const Packet > packet, const WifiMacHeader *hdr, const MacLowTransmissionParameters ¶ms, uint32_t fragmentSize=0) const |
Time | CalculateTransmissionTime (Ptr< const Packet > packet, const WifiMacHeader *hdr, const MacLowTransmissionParameters ¶meters) const |
bool | CanTransmitNextCfFrame (void) const |
This function decides if a CF frame can be transmitted in the current CFP. More... | |
void | CreateBlockAckAgreement (const MgtAddBaResponseHeader *respHdr, Mac48Address originator, uint16_t startingSeq) |
void | DeaggregateAmpduAndReceive (Ptr< Packet > aggregatedPacket, double rxSnr, WifiTxVector txVector) |
void | DestroyBlockAckAgreement (Mac48Address originator, uint8_t tid) |
bool | DoNavStartNow (Time duration) |
Start NAV with the given duration. More... | |
void | FlushAggregateQueue (uint8_t tid) |
This function is called to flush the aggregate queue, which is used for A-MPDU. More... | |
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... | |
Time | GetBeaconInterval (void) const |
Mac48Address | GetBssid (void) const |
Return the Basic Service Set Identification. More... | |
Time | GetCfpMaxDuration (void) const |
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... | |
virtual WifiTxVector | GetDataTxVector (Ptr< const Packet > packet, const WifiMacHeader *hdr) const |
Return a TXVECTOR for the DATA frame given the destination. More... | |
Ptr< WifiPhy > | GetPhy (void) const |
Time | GetPifs (void) const |
Return PCF Interframe Space (PIFS) of this MacLow. More... | |
Time | GetRemainingCfpDuration (void) const |
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... | |
virtual bool | IsCfPeriod (void) const |
This function indicates whether it is the CF period. More... | |
bool | IsPromisc (void) const |
Check if MacLow is operating in promiscuous mode. More... | |
void | NotifyOffNow (void) |
This method is typically invoked by the PhyMacLowListener to notify the MAC layer that the device has been put into off 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< Packet > packet, double rxSnr) |
void | ReceiveOk (Ptr< Packet > packet, double rxSnr, WifiTxVector txVector, bool ampduSubframe) |
void | RegisterDcf (Ptr< ChannelAccessManager > dcf) |
void | RegisterEdcaForAc (AcIndex ac, Ptr< QosTxop > edca) |
void | ResetPhy (void) |
Remove WifiPhy associated with this MacLow. More... | |
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 | SetBeaconInterval (Time interval) |
void | SetBssid (Mac48Address ad) |
Set the Basic Service Set Identification. More... | |
void | SetCfpMaxDuration (Time duration) |
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 (const 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 (const Ptr< WifiRemoteStationManager > manager) |
Set up WifiRemoteStationManager associated with this MacLow. More... | |
virtual void | StartTransmission (Ptr< const Packet > packet, const WifiMacHeader *hdr, MacLowTransmissionParameters parameters, Ptr< Txop > txop) |
bool | StopMpduAggregation (Ptr< const Packet > peekedPacket, WifiMacHeader peekedHdr, Ptr< Packet > aggregatedPacket, uint8_t blockAckSize) const |
![]() | |
Object () | |
Constructor. More... | |
virtual | ~Object () |
Destructor. More... | |
void | AggregateObject (Ptr< Object > other) |
Aggregate two Objects together. More... | |
void | Dispose (void) |
Dispose of this Object. More... | |
AggregateIterator | GetAggregateIterator (void) const |
Get an iterator to the Objects aggregated to this one. More... | |
virtual TypeId | GetInstanceTypeId (void) const |
Get the most derived TypeId for this Object. More... | |
template<typename T > | |
Ptr< T > | GetObject (void) const |
Get a pointer to the requested aggregated Object. More... | |
template<typename T > | |
Ptr< T > | GetObject (TypeId tid) const |
Get a pointer to the requested aggregated Object by TypeId. More... | |
void | Initialize (void) |
Invoke DoInitialize on all Objects aggregated to this one. More... | |
bool | IsInitialized (void) const |
Check if the object has been initialized. More... | |
![]() | |
SimpleRefCount () | |
Default 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 operator. More... | |
void | Ref (void) const |
Increment the reference count. More... | |
void | Unref (void) const |
Decrement the reference count. More... | |
![]() | |
virtual | ~ObjectBase () |
Virtual destructor. More... | |
void | GetAttribute (std::string name, AttributeValue &value) const |
Get the value of an attribute, raising fatal errors if unsuccessful. More... | |
bool | GetAttributeFailSafe (std::string name, AttributeValue &value) const |
Get the value of an attribute without raising erros. More... | |
void | SetAttribute (std::string name, const AttributeValue &value) |
Set a single attribute, raising fatal errors if unsuccessful. More... | |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
Set a single attribute without raising errors. More... | |
bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
Connect a TraceSource to a Callback with a context. More... | |
bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
Connect a TraceSource to a Callback without a context. More... | |
bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected with a context. More... | |
bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected without a context. More... | |
Static Public Member Functions | |
static TypeId | GetTypeId (void) |
Register this type. More... | |
![]() | |
static TypeId | GetTypeId (void) |
Register this type. More... | |
![]() | |
static TypeId | GetTypeId (void) |
Get the type ID. More... | |
Private Types | |
typedef std::pair< Mac48Address, uint8_t > | AgreementKey |
agreement key typedef More... | |
typedef std::map< AgreementKey, AgreementValue > | Agreements |
agreements More... | |
typedef std::map< AgreementKey, AgreementValue >::iterator | AgreementsI |
agreements iterator More... | |
typedef std::pair< BlockAckAgreement, std::list< BufferedPacket > > | AgreementValue |
agreement value typedef More... | |
typedef std::map< AgreementKey, BlockAckCache > | BlockAckCaches |
block ack caches typedef More... | |
typedef std::map< AgreementKey, BlockAckCache >::iterator | BlockAckCachesI |
block ack caches iterator typedef More... | |
typedef std::pair< Ptr< Packet >, WifiMacHeader > | BufferedPacket |
buffered packet typedef More... | |
typedef std::list< BufferedPacket >::iterator | BufferedPacketI |
buffered packet iterator typedef More... | |
typedef std::vector< Ptr< ChannelAccessManager > > | ChannelAccessManagers |
typedef for a list of ChannelAccessManager. More... | |
typedef std::vector< Ptr< ChannelAccessManager > >::const_iterator | ChannelAccessManagersCI |
typedef for an iterator for a list of ChannelAccessManager. More... | |
typedef std::map< AcIndex, Ptr< QosTxop > > | QueueEdcas |
EDCA queues typedef. More... | |
Private Member Functions | |
void | BlockAckTimeout (void) |
Event handler when block ACK timeout occurs. More... | |
void | CancelAllEvents (void) |
Cancel all scheduled events. More... | |
void | CfPollTimeout (void) |
Event handler when CF-POLL timeout occurs. More... | |
void | CtsTimeout (void) |
Event handler when CTS timeout occurs. More... | |
void | DoDispose (void) |
Destructor implementation. More... | |
void | DoNavResetNow (Time duration) |
Reset NAV with the given duration. More... | |
void | EndTxNoAck (void) |
A transmission that does not require an ACK has completed. More... | |
void | ForwardDown (Ptr< const Packet > packet, const WifiMacHeader *hdr, WifiTxVector txVector) |
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... | |
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 (WifiTxVector blockAckReqTxVector, BlockAckType type) const |
Return the time required to transmit the Block ACK to the specified address given the TXVECTOR of the BAR (including preamble and FCS). 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... | |
uint32_t | GetCfEndSize (void) const |
Return the total CF-END size (including FCS trailer). 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... | |
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... | |
WifiTxVector | GetRtsTxVector (Ptr< const Packet > packet, const WifiMacHeader *hdr) const |
Return a TXVECTOR for the RTS frame given the destination. More... | |
void | InsertInTxQueue (Ptr< const Packet > packet, const WifiMacHeader &hdr, Time tStamp, uint8_t tid) |
Insert in a temporary queue. More... | |
bool | IsAmpdu (Ptr< const Packet > packet, const WifiMacHeader hdr) |
Checks if the given packet will be aggregated to an A-MPDU or not. 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 set with RTS. More... | |
bool | NeedCtsToSelf (void) const |
Check if CTS-to-self mechanism should be used for the current packet. More... | |
bool | NeedRts (void) const |
Check if the current packet should be sent with a RTS protection. More... | |
void | NormalAckTimeout (void) |
Event handler when normal ACK timeout occurs. More... | |
void | NotifyAckTimeoutResetNow () |
Notify ChannelAccessManager that ACK timer should be reset. More... | |
void | NotifyAckTimeoutStartNow (Time duration) |
Notify ChannelAccessManager that ACK timer should be started for the given duration. More... | |
void | NotifyCtsTimeoutResetNow () |
Notify ChannelAccessManager that CTS timer should be reset. More... | |
void | NotifyCtsTimeoutStartNow (Time duration) |
Notify ChannelAccessManager that CTS timer should be started for the given duration. More... | |
void | NotifyNav (Ptr< const Packet > packet, const WifiMacHeader &hdr) |
Notify NAV function. More... | |
Ptr< Packet > | PerformMsduAggregation (Ptr< const Packet > packet, WifiMacHeader *hdr, Time *tstamp, Ptr< Packet > currentAmpduPacket, uint8_t blockAckSize) |
Perform MSDU aggregation for a given MPDU in an A-MPDU. More... | |
bool | ReceiveMpdu (Ptr< Packet > packet, WifiMacHeader hdr) |
void | RemovePhyMacLowListener (Ptr< WifiPhy > phy) |
Remove current WifiPhy listener for this MacLow. More... | |
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 | SendBlockAckAfterAmpdu (uint8_t tid, Mac48Address originator, Time duration, WifiTxVector blockAckReqTxVector, double rxSnr) |
Invoked after an A-MPDU has been received. More... | |
void | SendBlockAckAfterBlockAckRequest (const CtrlBAckRequestHeader reqHdr, Mac48Address originator, Time duration, WifiMode blockAckReqTxMode, double rxSnr) |
Invoked after that a block ack request has been received. More... | |
void | SendBlockAckResponse (const CtrlBAckResponseHeader *blockAck, Mac48Address originator, bool immediate, Time duration, WifiMode blockAckReqTxMode, double rxSnr) |
This method creates block ack frame with header equals to blockAck and start its transmission. More... | |
void | SendCtsAfterRts (Mac48Address source, Time duration, WifiTxVector rtsTxVector, double rtsSnr) |
Send CTS after receiving RTS. More... | |
void | SendCtsToSelf (void) |
Send CTS for a CTS-to-self mechanism. More... | |
void | SendDataAfterCts (Time duration) |
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 | SendMpdu (Ptr< const Packet > packet, WifiTxVector txVector, MpduType mpdutype) |
Forward the MPDU down to WifiPhy for transmission. More... | |
void | SendRtsForPacket (void) |
Send RTS to begin RTS-CTS-DATA-ACK transaction. More... | |
void | SetupPhyMacLowListener (const 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 | WaitIfsAfterEndTxFragment (void) |
Event handler that is usually scheduled to fired at the appropriate time after completing transmissions. More... | |
void | WaitIfsAfterEndTxPacket (void) |
Event handler that is usually scheduled to fired at the appropriate time after sending a packet. More... | |
Private Attributes | |
Time | m_ackTimeout |
ACK timeout duration. More... | |
Ptr< WifiMacQueue > | m_aggregateQueue [8] |
Queues per TID used for MPDU aggregation. More... | |
bool | m_ampdu |
Flag if the current transmission involves an A-MPDU. More... | |
Agreements | m_bAckAgreements |
block ack agreements More... | |
BlockAckCaches | m_bAckCaches |
block ack caches More... | |
Time | m_basicBlockAckTimeout |
Basic block ACK timeout duration. More... | |
Time | m_beaconInterval |
Expected interval between two beacon transmissions. More... | |
EventId | m_blockAckTimeoutEvent |
Block ACK timeout event. More... | |
Mac48Address | m_bssid |
BSSID address (Mac48Address) More... | |
CfAckInfo | m_cfAckInfo |
Info about piggyback ACKs used in PCF. More... | |
Time | m_cfpForeshortening |
The delay the current CF period should be foreshortened. More... | |
Time | m_cfpMaxDuration |
CFP max duration. More... | |
Time | m_cfpStart |
The time when the latest CF period started. More... | |
ChannelAccessManagers | m_channelAccessManagers |
List of ChannelAccessManager. More... | |
Time | m_compressedBlockAckTimeout |
Compressed block ACK timeout duration. More... | |
Time | m_ctsTimeout |
CTS timeout duration. More... | |
EventId | m_ctsTimeoutEvent |
CTS timeout event. More... | |
bool | m_ctsToSelfSupported |
Flag whether CTS-to-self is supported. More... | |
WifiMacHeader | m_currentHdr |
Header of the current transmitted packet. More... | |
Ptr< Packet > | m_currentPacket |
Current packet transmitted/to be transmitted. More... | |
Ptr< Txop > | m_currentTxop |
Current TXOP. More... | |
WifiTxVector | m_currentTxVector |
TXVECTOR used for the current packet transmission. More... | |
QueueEdcas | m_edca |
EDCA queues. More... | |
EventId | m_endTxNoAckEvent |
Event for finishing transmission that does not require ACK. More... | |
Time | m_lastBeacon |
The time when the last beacon frame transmission started. More... | |
Time | m_lastNavDuration |
The duration of the latest NAV. More... | |
Time | m_lastNavStart |
The time when the latest NAV started. More... | |
EventId | m_navCounterResetCtsMissed |
Event to reset NAV when CTS is not received. More... | |
EventId | m_normalAckTimeoutEvent |
Normal ACK timeout event. More... | |
Ptr< WifiPhy > | m_phy |
Pointer to WifiPhy (actually send/receives frames) More... | |
class PhyMacLowListener * | m_phyMacLowListener |
Listener needed to monitor when a channel switching occurs. More... | |
Time | m_pifs |
PCF Interframe Space (PIFS) duration. More... | |
bool | m_promisc |
Flag if the device is operating in promiscuous mode. More... | |
Time | m_rifs |
Reduced Interframe Space (RIFS) duration. More... | |
MacLowRxCallback | m_rxCallback |
Callback to pass packet up. More... | |
Mac48Address | m_self |
Address of this MacLow (Mac48Address) More... | |
EventId | m_sendAckEvent |
Event to send ACK. More... | |
EventId | m_sendCtsEvent |
Event to send CTS. More... | |
EventId | m_sendDataEvent |
Event to send DATA. More... | |
Time | m_sifs |
Short Interframe Space (SIFS) duration. More... | |
Time | m_slotTime |
Slot duration. More... | |
Ptr< WifiRemoteStationManager > | m_stationManager |
Pointer to WifiRemoteStationManager (rate control) More... | |
std::vector< Item > | m_txPackets [8] |
Contain temporary items to be sent with the next A-MPDU transmission for a given TID, once RTS/CTS exchange has succeeded. More... | |
MacLowTransmissionParameters | m_txParams |
Transmission parameters of the current packet. More... | |
EventId | m_waitIfsEvent |
Wait for IFS event. More... | |
Friends | |
class | ::AmpduAggregationTest |
Allow test cases to access private members. More... | |
class | ::TwoLevelAggregationTest |
Allow test cases to access private members. More... | |
Additional Inherited Members | |
![]() | |
Object (const Object &o) | |
Copy an Object. More... | |
virtual void | DoInitialize (void) |
Initialize() implementation. More... | |
virtual void | NotifyNewAggregate (void) |
Notify all Objects aggregated to this one of a new Object being aggregated. More... | |
![]() | |
void | ConstructSelf (const AttributeConstructionList &attributes) |
Complete construction of ObjectBase; invoked by derived classes. More... | |
virtual void | NotifyConstructionCompleted (void) |
Notifier called once the ObjectBase is fully constructed. More... | |
![]() | |
static TypeId | GetObjectIid (void) |
Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. More... | |
handle RTS/CTS/DATA/ACK transactions.
Introspection did not find any typical Config paths.
No Attributes are defined for this type.
No TraceSources are defined for this type.
Size of this type is 18446744073709551615 bytes (on a 64-bit architecture).
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
typedef for a list of ChannelAccessManager.
|
private |
typedef for an iterator for a list of ChannelAccessManager.
typedef Callback<void, Ptr<Packet>, const WifiMacHeader*> ns3::MacLow::MacLowRxCallback |
|
private |
ns3::MacLow::MacLow | ( | ) |
Definition at line 107 of file mac-low.cc.
References m_aggregateQueue, and NS_LOG_FUNCTION.
|
virtual |
Definition at line 136 of file mac-low.cc.
References NS_LOG_FUNCTION.
Ptr< Packet > ns3::MacLow::AggregateToAmpdu | ( | Ptr< const Packet > | packet, |
const WifiMacHeader | hdr | ||
) |
packet | the packet to be aggregated. If the aggregation is successful, it corresponds either to the first data packet that will be aggregated or to the BAR that will be piggybacked at the end of the A-MPDU. |
hdr | the WifiMacHeader for the packet. |
This function adds the packets that will be added to an A-MPDU to an aggregate queue
Definition at line 2566 of file mac-low.cc.
References ns3::Packet::AddHeader(), ns3::Packet::AddPacketTag(), ns3::AddWifiMacTrailer(), ns3::WifiMacHeader::BLOCK_ACK, ns3::Packet::Copy(), FlushAggregateQueue(), ns3::WifiMacHeader::GetAddr1(), GetDataTxVector(), ns3::WifiTxVector::GetMode(), ns3::WifiMode::GetModulationClass(), ns3::WifiMacHeader::GetSequenceNumber(), ns3::Packet::GetSize(), ns3::WifiMacHeader::GetSize(), ns3::CtrlBAckRequestHeader::GetStartingSequence(), ns3::GetTid(), InsertInTxQueue(), ns3::WifiMacHeader::IsBlockAck(), ns3::WifiMacHeader::IsBlockAckReq(), ns3::Mac48Address::IsBroadcast(), ns3::IsInWindow(), ns3::WifiMacHeader::IsQosData(), m_aggregateQueue, m_currentHdr, m_currentPacket, m_edca, m_txParams, ns3::MacLowTransmissionParameters::MustSendRts(), ns3::WifiMacHeader::NORMAL_ACK, NS_ASSERT, NS_LOG_DEBUG, ns3::Packet::PeekHeader(), PerformMsduAggregation(), ns3::QosUtilsMapTidToAc(), ns3::WifiMacHeader::SetQosAckPolicy(), ns3::AmpduTag::SetRemainingNbOfMpdus(), StopMpduAggregation(), ns3::WIFI_MAC_FCS_LENGTH, ns3::WIFI_MOD_CLASS_HE, and ns3::WIFI_MOD_CLASS_VHT.
Referenced by IsAmpdu().
|
private |
Event handler when block ACK timeout occurs.
Definition at line 1537 of file mac-low.cc.
References FlushAggregateQueue(), ns3::AmpduTag::GetRemainingNbOfMpdus(), ns3::GetTid(), m_ampdu, m_currentHdr, m_currentPacket, m_currentTxop, ns3::Txop::MissedBlockAck(), NS_LOG_DEBUG, NS_LOG_FUNCTION, and ns3::Packet::RemovePacketTag().
Referenced by StartDataTxTimers().
Time ns3::MacLow::CalculateOverallTxTime | ( | Ptr< const Packet > | packet, |
const WifiMacHeader * | hdr, | ||
const MacLowTransmissionParameters & | params, | ||
uint32_t | fragmentSize = 0 |
||
) | const |
packet | to send (does not include the 802.11 MAC header and checksum) |
hdr | header associated to the packet to send. |
params | transmission parameters of packet. |
fragmentSize | the packet fragment size (if fragmentation is used) |
This transmission time includes the time required for the next packet transmission if one was selected.
Definition at line 1181 of file mac-low.cc.
References ns3::WifiPhy::CalculateTxDuration(), GetAckDuration(), ns3::WifiMacHeader::GetAddr1(), GetCtsDuration(), GetDataTxVector(), ns3::WifiPhy::GetFrequency(), ns3::GetRtsSize(), GetRtsTxVector(), GetSifs(), ns3::GetSize(), m_ampdu, m_phy, ns3::MacLowTransmissionParameters::MustSendRts(), ns3::MacLowTransmissionParameters::MustWaitNormalAck(), and ns3::Seconds().
Referenced by CalculateTransmissionTime(), ns3::QosTxop::GetTxopFragmentSize(), ns3::QosTxop::HasTxop(), and ns3::QosTxop::NeedFragmentation().
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 1215 of file mac-low.cc.
References CalculateOverallTxTime(), ns3::WifiPhy::CalculateTxDuration(), GetDataTxVector(), ns3::WifiPhy::GetFrequency(), ns3::MacLowTransmissionParameters::GetNextPacketSize(), GetSifs(), ns3::MacLowTransmissionParameters::HasNextPacket(), and m_phy.
Referenced by ns3::WaveMacLow::StartTransmission().
|
private |
Cancel all scheduled events.
Called before beginning a transmission or switching channel.
Definition at line 198 of file mac-low.cc.
References ns3::EventId::Cancel(), ns3::Txop::Cancel(), ns3::EventId::IsRunning(), m_blockAckTimeoutEvent, m_ctsTimeoutEvent, m_currentTxop, m_endTxNoAckEvent, m_normalAckTimeoutEvent, m_sendAckEvent, m_sendCtsEvent, m_sendDataEvent, m_waitIfsEvent, and NS_LOG_FUNCTION.
Referenced by NotifyOffNow(), NotifySleepNow(), NotifySwitchingStartNow(), and StartTransmission().
bool ns3::MacLow::CanTransmitNextCfFrame | ( | void | ) | const |
This function decides if a CF frame can be transmitted in the current CFP.
Definition at line 2975 of file mac-low.cc.
References ns3::WifiPhy::CalculateTxDuration(), GetCfEndSize(), ns3::WifiPhy::GetFrequency(), GetRemainingCfpDuration(), ns3::WifiMacTrailer::GetSerializedSize(), ns3::WifiMacHeader::GetSerializedSize(), GetSifs(), IsCfPeriod(), m_currentTxVector, m_phy, ns3::MAX_MSDU_SIZE, NS_ASSERT, NS_LOG_FUNCTION, ns3::WifiMacHeader::SetType(), and ns3::WIFI_MAC_DATA.
Referenced by ns3::Txop::CanStartNextPolling().
|
private |
Event handler when CF-POLL timeout occurs.
Definition at line 1484 of file mac-low.cc.
References ns3::MacLow::CfAckInfo::expectCfAck, m_cfAckInfo, m_channelAccessManagers, m_currentTxop, ns3::Txop::MissedCfPollResponse(), NS_ASSERT, and NS_LOG_FUNCTION.
Referenced by ForwardDown().
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 2115 of file mac-low.cc.
References 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_edca, ns3::MicroSeconds(), NS_LOG_FUNCTION, ns3::QosUtilsMapTidToAc(), ns3::Simulator::Schedule(), ns3::QosTxop::SendDelbaFrame(), ns3::BlockAckAgreement::SetAmsduSupport(), ns3::BlockAckAgreement::SetBufferSize(), ns3::BlockAckAgreement::SetDelayedBlockAck(), ns3::BlockAckAgreement::SetImmediateBlockAck(), ns3::BlockAckAgreement::SetStartingSequence(), ns3::BlockAckAgreement::SetTimeout(), and timeout.
Referenced by ns3::RegularWifiMac::SendAddBaResponse().
|
private |
Event handler when CTS timeout occurs.
Definition at line 1502 of file mac-low.cc.
References ns3::WifiMacHeader::GetAddr1(), m_ampdu, m_currentHdr, m_currentTxop, m_stationManager, ns3::Txop::MissedCts(), NS_LOG_DEBUG, NS_LOG_FUNCTION, and ns3::WifiRemoteStationManager::ReportRtsFailed().
Referenced by SendRtsForPacket().
void ns3::MacLow::DeaggregateAmpduAndReceive | ( | Ptr< Packet > | aggregatedPacket, |
double | rxSnr, | ||
WifiTxVector | txVector | ||
) |
aggregatedPacket | which is the current A-MPDU |
rxSnr | snr of packet received |
txVector | TXVECTOR of packet received |
This function de-aggregates an A-MPDU and decide if each MPDU is received correctly or not
Definition at line 2442 of file mac-low.cc.
References ns3::MpduAggregator::Deaggregate(), ns3::WifiMacHeader::GetAddr1(), ns3::WifiMacHeader::GetAddr2(), ns3::WifiMacHeader::GetDuration(), ns3::WifiTxVector::GetPreambleType(), ns3::WifiMacHeader::GetQosTid(), ns3::AmpduTag::GetRemainingAmpduDuration(), ns3::AmpduTag::GetRemainingNbOfMpdus(), ns3::WifiMacHeader::GetSequenceNumber(), GetSifs(), ns3::WifiMacHeader::IsAck(), ns3::WifiMacHeader::IsBlockAck(), ns3::WifiMacHeader::IsBlockAckReq(), ns3::WifiMacHeader::IsData(), ns3::WifiMacHeader::IsQosAck(), ns3::WifiMacHeader::IsQosData(), ns3::EventId::IsRunning(), m_bAckAgreements, m_self, m_sendAckEvent, sample-rng-plot::n, NotifyNav(), NS_ASSERT, NS_FATAL_ERROR, NS_LOG_DEBUG, NS_LOG_FUNCTION, ReceiveOk(), ns3::Packet::RemovePacketTag(), ResetBlockAckInactivityTimerIfNeeded(), ns3::Simulator::Schedule(), SendBlockAckAfterAmpdu(), and ns3::WIFI_PREAMBLE_NONE.
Referenced by SetPhy().
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 2157 of file mac-low.cc.
References m_bAckAgreements, m_bAckCaches, NS_ASSERT, NS_LOG_FUNCTION, RxCompleteBufferedPacketsUntilFirstLost(), and RxCompleteBufferedPacketsWithSmallerSequence().
Referenced by ns3::QosTxop::GotAck(), ns3::RegularWifiMac::Receive(), and ns3::QosTxop::SendDelbaFrame().
|
privatevirtual |
Destructor implementation.
This method is called by Dispose() or by the Object's destructor, whichever comes first.
Subclasses are expected to implement their real destruction code in an overridden 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 172 of file mac-low.cc.
References ns3::EventId::Cancel(), m_aggregateQueue, m_ampdu, m_blockAckTimeoutEvent, m_ctsTimeoutEvent, m_endTxNoAckEvent, m_normalAckTimeoutEvent, m_phy, m_phyMacLowListener, m_sendAckEvent, m_sendCtsEvent, m_sendDataEvent, m_stationManager, m_waitIfsEvent, and NS_LOG_FUNCTION.
|
private |
Reset NAV with the given duration.
duration |
Definition at line 1283 of file mac-low.cc.
References m_channelAccessManagers, m_lastNavDuration, m_lastNavStart, ns3::Simulator::Now(), and NS_LOG_FUNCTION.
Referenced by NavCounterResetCtsMissed(), and NotifyNav().
bool ns3::MacLow::DoNavStartNow | ( | Time | duration | ) |
Start NAV with the given duration.
duration | the duration |
Definition at line 1295 of file mac-low.cc.
References m_channelAccessManagers, m_lastNavDuration, m_lastNavStart, and ns3::Simulator::Now().
Referenced by NotifyNav(), and ns3::StaWifiMac::Receive().
|
private |
A transmission that does not require an ACK has completed.
Definition at line 1991 of file mac-low.cc.
References ns3::Txop::EndTxNoAck(), ns3::MacLow::CfAckInfo::expectCfAck, ns3::WifiRemoteStationManager::HasPcfSupported(), ns3::WifiMacHeader::IsBeacon(), IsCfPeriod(), m_cfAckInfo, m_cfpStart, m_currentHdr, m_currentTxop, m_stationManager, ns3::Simulator::Now(), and NS_LOG_FUNCTION.
Referenced by StartDataTxTimers().
void ns3::MacLow::FlushAggregateQueue | ( | uint8_t | tid | ) |
This function is called to flush the aggregate queue, which is used for A-MPDU.
tid | the Traffic ID |
Definition at line 2875 of file mac-low.cc.
References m_aggregateQueue, m_txPackets, and NS_LOG_DEBUG.
Referenced by AggregateToAmpdu(), BlockAckTimeout(), ns3::QosTxop::MissedCts(), NormalAckTimeout(), and ReceiveOk().
|
private |
Forward the packet down to WifiPhy for transmission.
This is called for the entire A-MPDu when MPDU aggregation is used.
packet | the packet |
hdr | the header |
txVector | the transmit vector |
Definition at line 1349 of file mac-low.cc.
References ns3::Packet::AddHeader(), ns3::Packet::AddPacketTag(), ns3::AddWifiMacTrailer(), ns3::MacLow::CfAckInfo::appendCfAck, ns3::WifiPhy::CalculateTxDuration(), CfPollTimeout(), ns3::MacLow::CfAckInfo::expectCfAck, ns3::WifiMacHeader::GetAddr1(), ns3::WifiMacHeader::GetDuration(), ns3::WifiPhy::GetFrequency(), ns3::WifiTxVector::GetMode(), GetPifs(), ns3::WifiTxVector::GetPreambleType(), ns3::WifiMacHeader::GetSequenceControl(), ns3::Packet::GetSize(), ns3::GetTid(), ns3::WifiMacHeader::GetTypeString(), ns3::WifiMacHeader::HasData(), ns3::WifiRemoteStationManager::HasPcfSupported(), ns3::WifiMacHeader::IsAck(), ns3::WifiMacHeader::IsBeacon(), ns3::WifiMacHeader::IsBlockAck(), ns3::WifiMacHeader::IsCfEnd(), IsCfPeriod(), ns3::WifiMacHeader::IsCfPoll(), ns3::WifiMacHeader::IsCts(), ns3::WifiMacHeader::IsMgt(), ns3::WifiMacHeader::IsRts(), ns3::Time::IsZero(), ns3::LAST_MPDU_IN_AGGREGATE, m_aggregateQueue, m_ampdu, m_beaconInterval, m_cfAckInfo, m_cfpForeshortening, m_cfpStart, m_currentHdr, m_edca, m_lastBeacon, m_phy, m_stationManager, ns3::MPDU_IN_AGGREGATE, ns3::NanoSeconds(), ns3::NORMAL_MPDU, ns3::Simulator::Now(), NS_ASSERT, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::QosUtilsMapTidToAc(), ns3::Simulator::Schedule(), ns3::Seconds(), SendMpdu(), ns3::WifiPhy::SendPacket(), ns3::WifiTxVector::SetAggregation(), ns3::WifiMacHeader::SetDuration(), ns3::WifiTxVector::SetPreambleType(), ns3::AmpduTag::SetRemainingAmpduDuration(), ns3::AmpduTag::SetRemainingNbOfMpdus(), and ns3::WIFI_PREAMBLE_NONE.
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 1106 of file mac-low.cc.
References ns3::WifiPhy::CalculateTxDuration(), ns3::GetAckSize(), ns3::WifiPhy::GetFrequency(), ns3::WifiTxVector::GetMode(), ns3::WifiMode::GetModulationClass(), m_phy, NS_ASSERT, and ns3::WIFI_MOD_CLASS_HT.
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 1099 of file mac-low.cc.
References GetAckDuration(), GetAckTxVectorForData(), and ns3::WifiTxVector::GetMode().
Time ns3::MacLow::GetAckTimeout | ( | void | ) | const |
Return ACK timeout of this MacLow.
Definition at line 376 of file mac-low.cc.
References m_ackTimeout.
Referenced by ns3::RegularWifiMac::GetAckTimeout(), and 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 1157 of file mac-low.cc.
References ns3::WifiRemoteStationManager::GetAckTxVector(), and 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 1175 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 370 of file mac-low.cc.
References m_self.
Referenced by ns3::MeshWifiInterfaceMac::Enqueue(), ns3::AdhocWifiMac::Enqueue(), ns3::ApWifiMac::Enqueue(), ns3::StaWifiMac::Enqueue(), ns3::RegularWifiMac::GetAddress(), ns3::QosTxop::MissedAck(), ns3::QosTxop::MissedBlockAck(), ns3::QosTxop::MissedCts(), ns3::QosTxop::SendAddBaRequest(), ns3::QosTxop::SendBlockAckRequest(), SendBlockAckResponse(), ns3::Txop::SendCfFrame(), and ns3::QosTxop::SendDelbaFrame().
Time ns3::MacLow::GetBasicBlockAckTimeout | ( | ) | const |
Return Basic Block ACK timeout of this MacLow.
Definition at line 382 of file mac-low.cc.
References m_basicBlockAckTimeout.
Referenced by ns3::RegularWifiMac::GetBasicBlockAckTimeout(), and StartDataTxTimers().
Time ns3::MacLow::GetBeaconInterval | ( | void | ) | const |
Definition at line 432 of file mac-low.cc.
References m_beaconInterval.
Referenced by ns3::ApWifiMac::GetBeaconInterval().
|
private |
Return the time required to transmit the Block ACK to the specified address given the TXVECTOR of the BAR (including preamble and FCS).
blockAckReqTxVector | |
type | the Block ACK type |
Definition at line 1113 of file mac-low.cc.
References ns3::WifiPhy::CalculateTxDuration(), ns3::GetBlockAckSize(), ns3::WifiPhy::GetFrequency(), and m_phy.
Referenced by SendBlockAckResponse(), SendCtsToSelf(), SendDataAfterCts(), SendDataPacket(), and SendRtsForPacket().
|
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 1163 of file mac-low.cc.
References ns3::WifiRemoteStationManager::GetBlockAckTxVector(), and m_stationManager.
Referenced by SendBlockAckResponse(), SendCtsToSelf(), SendDataAfterCts(), SendDataPacket(), and SendRtsForPacket().
Mac48Address ns3::MacLow::GetBssid | ( | void | ) | const |
Return the Basic Service Set Identification.
Definition at line 426 of file mac-low.cc.
References m_bssid.
Referenced by ns3::RegularWifiMac::GetBssid(), ns3::QosTxop::MissedAck(), ns3::QosTxop::MissedBlockAck(), ns3::QosTxop::MissedCts(), ns3::QosTxop::NotifyAccessGranted(), PerformMsduAggregation(), ns3::QosTxop::SendBlockAckRequest(), and ns3::Txop::SendCfFrame().
|
private |
Return the total CF-END size (including FCS trailer).
Definition at line 1084 of file mac-low.cc.
References ns3::MacLow::CfAckInfo::appendCfAck, ns3::MacLow::CfAckInfo::expectCfAck, ns3::WifiMacHeader::GetSize(), m_cfAckInfo, ns3::WifiMacHeader::SetType(), ns3::WIFI_MAC_CTL_END, and ns3::WIFI_MAC_CTL_END_ACK.
Referenced by CanTransmitNextCfFrame().
Time ns3::MacLow::GetCfpMaxDuration | ( | void | ) | const |
Definition at line 438 of file mac-low.cc.
References m_cfpMaxDuration.
Referenced by ns3::ApWifiMac::GetCfpMaxDuration().
Time ns3::MacLow::GetCompressedBlockAckTimeout | ( | ) | const |
Return Compressed Block ACK timeout of this MacLow.
Definition at line 388 of file mac-low.cc.
References m_compressedBlockAckTimeout.
Referenced by ns3::RegularWifiMac::GetCompressedBlockAckTimeout(), and StartDataTxTimers().
|
private |
Return the time required to transmit the CTS (including preamble and FCS).
ctsTxVector |
Definition at line 1130 of file mac-low.cc.
References ns3::WifiPhy::CalculateTxDuration(), ns3::GetCtsSize(), ns3::WifiPhy::GetFrequency(), ns3::WifiTxVector::GetMode(), ns3::WifiMode::GetModulationClass(), m_phy, NS_ASSERT, and ns3::WIFI_MOD_CLASS_HT.
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 1123 of file mac-low.cc.
References GetCtsDuration(), GetCtsTxVectorForRts(), and ns3::WifiTxVector::GetMode().
Time ns3::MacLow::GetCtsTimeout | ( | void | ) | const |
Return CTS timeout of this MacLow.
Definition at line 394 of file mac-low.cc.
References m_ctsTimeout.
Referenced by ns3::RegularWifiMac::GetCtsTimeout(), and SendRtsForPacket().
bool ns3::MacLow::GetCtsToSelfSupported | ( | ) | const |
Return whether CTS-to-self capability is supported.
Definition at line 310 of file mac-low.cc.
References m_ctsToSelfSupported.
|
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 1151 of file mac-low.cc.
References ns3::WifiRemoteStationManager::GetCtsTxVector(), and 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 1169 of file mac-low.cc.
References GetCtsTxVector().
Referenced by GetCtsDuration().
|
virtual |
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 1144 of file mac-low.cc.
References ns3::WifiMacHeader::GetAddr1(), ns3::WifiRemoteStationManager::GetDataTxVector(), and m_stationManager.
Referenced by AggregateToAmpdu(), CalculateOverallTxTime(), CalculateTransmissionTime(), AmpduAggregationTest::DoRun(), TwoLevelAggregationTest::DoRun(), ns3::WaveMacLow::GetDataTxVector(), NeedCtsToSelf(), NeedRts(), ns3::QosTxop::RestartAccessIfNeeded(), SendDataPacket(), ns3::QosTxop::StartAccessIfNeeded(), and StartTransmission().
Definition at line 259 of file mac-low.cc.
References m_phy.
Referenced by ns3::WaveMacLow::StartTransmission().
Time ns3::MacLow::GetPifs | ( | void | ) | const |
Return PCF Interframe Space (PIFS) of this MacLow.
Definition at line 420 of file mac-low.cc.
References m_pifs.
Referenced by ForwardDown(), and ns3::RegularWifiMac::GetPifs().
Time ns3::MacLow::GetRemainingCfpDuration | ( | void | ) | const |
Definition at line 2960 of file mac-low.cc.
References ns3::Time::IsPositive(), m_cfpForeshortening, m_cfpMaxDuration, m_cfpStart, min, ns3::Simulator::Now(), NS_ASSERT, and NS_LOG_FUNCTION.
Referenced by CanTransmitNextCfFrame().
Time ns3::MacLow::GetRifs | ( | void | ) | const |
Return Reduced Interframe Space (RIFS) of this MacLow.
Definition at line 407 of file mac-low.cc.
References m_rifs, and NS_LOG_FUNCTION.
Referenced by ns3::RegularWifiMac::GetRifs(), ReceiveOk(), SendDataAfterCts(), SendDataPacket(), and StartDataTxTimers().
|
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 1137 of file mac-low.cc.
References ns3::WifiMacHeader::GetAddr1(), ns3::WifiRemoteStationManager::GetRtsTxVector(), and m_stationManager.
Referenced by CalculateOverallTxTime(), NotifyNav(), SendCtsToSelf(), and SendRtsForPacket().
Time ns3::MacLow::GetSifs | ( | void | ) | const |
Return Short Interframe Space (SIFS) of this MacLow.
Definition at line 400 of file mac-low.cc.
References m_sifs, and NS_LOG_FUNCTION.
Referenced by CalculateOverallTxTime(), CalculateTransmissionTime(), CanTransmitNextCfFrame(), DeaggregateAmpduAndReceive(), ns3::RegularWifiMac::GetSifs(), NotifyNav(), ReceiveOk(), SendAckAfterData(), SendBlockAckResponse(), SendCtsAfterRts(), SendCtsToSelf(), SendDataAfterCts(), SendDataPacket(), SendRtsForPacket(), and StartDataTxTimers().
Time ns3::MacLow::GetSlotTime | ( | void | ) | const |
Return slot duration of this MacLow.
Definition at line 414 of file mac-low.cc.
References m_slotTime.
Referenced by ns3::RegularWifiMac::GetSlot(), and NotifyNav().
|
static |
Register this type.
Definition at line 143 of file mac-low.cc.
References ns3::TypeId::SetParent().
|
private |
Insert in a temporary queue.
It is only used with a RTS/CTS exchange for an A-MPDU transmission.
packet | packet to be inserted in the A-MPDU tx queue |
hdr | 802.11 header for the packet to be inserted in the A-MPDU tx queue |
tStamp | timestamp of the packet to be inserted in the A-MPDU tx queue |
tid | the Traffic ID of the packet to be inserted in the A-MPDU tx queue |
Definition at line 2886 of file mac-low.cc.
References ns3::MacLow::Item::hdr, m_txPackets, NS_LOG_FUNCTION, ns3::MacLow::Item::packet, and ns3::MacLow::Item::timestamp.
Referenced by AggregateToAmpdu().
|
private |
Checks if the given packet will be aggregated to an A-MPDU or not.
packet | packet to check whether it can be aggregated in an A-MPDU |
hdr | 802.11 header for packet to check whether it can be aggregated in an A-MPDU |
Definition at line 462 of file mac-low.cc.
References AggregateToAmpdu(), ns3::WifiMacTrailer::GetSerializedSize(), ns3::Packet::GetSize(), ns3::WifiMacHeader::GetSize(), and m_currentPacket.
Referenced by AmpduAggregationTest::DoRun(), and StartTransmission().
|
virtual |
This function indicates whether it is the CF period.
Reimplemented in MacLowStub.
Definition at line 2969 of file mac-low.cc.
References ns3::WifiRemoteStationManager::HasPcfSupported(), ns3::Time::IsStrictlyPositive(), m_cfpStart, and m_stationManager.
Referenced by CanTransmitNextCfFrame(), EndTxNoAck(), ForwardDown(), ReceiveError(), ReceiveOk(), ns3::Txop::RestartAccessIfNeeded(), ns3::Txop::SendCfFrame(), SendDataPacket(), ns3::ApWifiMac::SendNextCfFrame(), ns3::Txop::StartAccessIfNeeded(), StartDataTxTimers(), and StartTransmission().
|
private |
Check if NAV is zero.
Definition at line 1784 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 444 of file mac-low.cc.
References m_promisc.
|
private |
Reset NAV after CTS was missed when the NAV was set with RTS.
rtsEndRxTime |
Definition at line 1274 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 614 of file mac-low.cc.
References GetDataTxVector(), m_currentHdr, m_currentPacket, m_stationManager, and ns3::WifiRemoteStationManager::NeedCtsToSelf().
Referenced by StartTransmission().
|
private |
Check if the current packet should be sent with a RTS protection.
Definition at line 606 of file mac-low.cc.
References ns3::WifiMacHeader::GetAddr1(), GetDataTxVector(), m_currentHdr, m_currentPacket, m_stationManager, and ns3::WifiRemoteStationManager::NeedRts().
Referenced by StartTransmission().
|
private |
Event handler when normal ACK timeout occurs.
Definition at line 1517 of file mac-low.cc.
References FlushAggregateQueue(), ns3::WifiMacHeader::GetAddr1(), ns3::Packet::GetSize(), ns3::GetTid(), ns3::WifiMacHeader::IsQosData(), m_ampdu, m_currentHdr, m_currentPacket, m_currentTxop, m_stationManager, ns3::Txop::MissedAck(), NS_LOG_DEBUG, NS_LOG_FUNCTION, and ns3::WifiRemoteStationManager::ReportDataFailed().
Referenced by StartDataTxTimers().
|
private |
Notify ChannelAccessManager that ACK timer should be reset.
Definition at line 1322 of file mac-low.cc.
References m_channelAccessManagers.
Referenced by ReceiveOk().
|
private |
Notify ChannelAccessManager that ACK timer should be started for the given duration.
duration | the duration |
Definition at line 1313 of file mac-low.cc.
References m_channelAccessManagers.
Referenced by StartDataTxTimers().
|
private |
Notify ChannelAccessManager that CTS timer should be reset.
Definition at line 1340 of file mac-low.cc.
References m_channelAccessManagers.
Referenced by ReceiveOk().
|
private |
Notify ChannelAccessManager that CTS timer should be started for the given duration.
duration |
Definition at line 1331 of file mac-low.cc.
References m_channelAccessManagers.
Referenced by SendRtsForPacket().
|
private |
Notify NAV function.
packet | the packet |
hdr | the header |
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 1230 of file mac-low.cc.
References ns3::WifiPhy::CalculateTxDuration(), DoNavResetNow(), DoNavStartNow(), ns3::WifiMacHeader::GetAddr1(), ns3::WifiMacHeader::GetAddr2(), ns3::WifiMacHeader::GetDuration(), ns3::WifiPhy::GetFrequency(), ns3::WifiMacHeader::GetRawDuration(), GetRtsTxVector(), ns3::WifiMacHeader::GetSerializedSize(), GetSifs(), GetSlotTime(), ns3::WifiMacHeader::IsCfEnd(), ns3::WifiMacHeader::IsRts(), m_bssid, m_lastNavStart, m_navCounterResetCtsMissed, m_phy, m_self, NavCounterResetCtsMissed(), ns3::Simulator::Now(), NS_ASSERT, ns3::Simulator::Schedule(), ns3::Seconds(), ns3::WifiMacHeader::SetType(), and ns3::WIFI_MAC_CTL_CTS.
Referenced by DeaggregateAmpduAndReceive(), and ReceiveOk().
void ns3::MacLow::NotifyOffNow | ( | void | ) |
This method is typically invoked by the PhyMacLowListener to notify the MAC layer that the device has been put into off mode.
When the device is put into off mode, pending MAC transmissions (RTS, CTS, DATA and ACK) are cancelled.
Definition at line 673 of file mac-low.cc.
References ns3::EventId::Cancel(), CancelAllEvents(), ns3::EventId::IsRunning(), m_currentPacket, m_currentTxop, m_lastNavDuration, m_lastNavStart, m_navCounterResetCtsMissed, ns3::Simulator::Now(), NS_LOG_DEBUG, and ns3::Seconds().
Referenced by ns3::PhyMacLowListener::NotifyOff().
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 658 of file mac-low.cc.
References ns3::EventId::Cancel(), CancelAllEvents(), ns3::EventId::IsRunning(), m_currentPacket, m_currentTxop, m_lastNavDuration, m_lastNavStart, m_navCounterResetCtsMissed, ns3::Simulator::Now(), NS_LOG_DEBUG, and ns3::Seconds().
Referenced by ns3::PhyMacLowListener::NotifySleep(), and ns3::OcbWifiMac::Suspend().
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 occurred. When a channel switching occurs, pending MAC transmissions (RTS, CTS, DATA and ACK) are cancelled.
Definition at line 642 of file mac-low.cc.
References ns3::EventId::Cancel(), CancelAllEvents(), ns3::EventId::IsRunning(), m_currentPacket, m_currentTxop, m_lastNavDuration, m_lastNavStart, m_navCounterResetCtsMissed, m_stationManager, ns3::Simulator::Now(), NS_LOG_DEBUG, ns3::WifiRemoteStationManager::Reset(), and ns3::Seconds().
Referenced by ns3::PhyMacLowListener::NotifySwitchingStart(), and ns3::OcbWifiMac::Reset().
|
private |
Perform MSDU aggregation for a given MPDU in an A-MPDU.
packet | packet picked for aggregation |
hdr | 802.11 header for packet picked for aggregation |
tstamp | timestamp |
currentAmpduPacket | current A-MPDU packet |
blockAckSize | size of the piggybacked block ack request |
Definition at line 2897 of file mac-low.cc.
References ns3::WifiMacHeader::GetAddr1(), GetBssid(), ns3::WifiMacHeader::GetQosTid(), ns3::Packet::GetSize(), ns3::GetTid(), m_edca, NS_ASSERT, NS_LOG_DEBUG, ns3::QosUtilsMapTidToAc(), ns3::WifiMacHeader::SetAddr3(), ns3::WifiMacHeader::SetQosAmsdu(), and StopMpduAggregation().
Referenced by AggregateToAmpdu(), and TwoLevelAggregationTest::DoRun().
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 621 of file mac-low.cc.
References ns3::MacLow::CfAckInfo::expectCfAck, IsCfPeriod(), ns3::WifiMacHeader::IsCfPoll(), m_cfAckInfo, m_currentHdr, m_currentTxop, ns3::Txop::MissedAck(), ns3::Txop::MissedCfPollResponse(), NS_ASSERT, NS_LOG_DEBUG, and NS_LOG_FUNCTION.
Referenced by SetPhy().
|
private |
packet | the packet |
hdr | the header |
This method updates the reorder buffer and the scoreboard when an MPDU is received in an HT station and stores the MPDU if needed when an MPDU is received in an non-HT Station (implements HT immediate block Ack)
Definition at line 2042 of file mac-low.cc.
References ns3::WifiMacHeader::GetAddr2(), ns3::WifiMacHeader::GetQosTid(), ns3::WifiMacHeader::GetSequenceNumber(), ns3::WifiRemoteStationManager::HasHeSupported(), ns3::WifiRemoteStationManager::HasHtSupported(), ns3::WifiRemoteStationManager::HasVhtSupported(), ns3::IsInWindow(), ns3::WifiMacHeader::IsQosData(), m_bAckAgreements, m_stationManager, ns3::QosUtilsIsOldPacket(), RxCompleteBufferedPacketsUntilFirstLost(), RxCompleteBufferedPacketsWithSmallerSequence(), and StoreMpduIfNeeded().
Referenced by ReceiveOk().
void ns3::MacLow::ReceiveOk | ( | Ptr< Packet > | packet, |
double | rxSnr, | ||
WifiTxVector | txVector, | ||
bool | ampduSubframe | ||
) |
packet | packet received |
rxSnr | snr of packet received |
txVector | TXVECTOR of packet received |
ampduSubframe | true if this MPDU is part of an A-MPDU |
This method is typically invoked by the lower PHY layer to notify the MAC layer that a packet was successfully received.
Definition at line 688 of file mac-low.cc.
References ns3::Packet::AddPacketTag(), ns3::MacLow::CfAckInfo::address, ns3::MacLow::CfAckInfo::appendCfAck, ns3::EventId::Cancel(), ns3::MacLow::CfAckInfo::expectCfAck, FlushAggregateQueue(), ns3::WifiMacHeader::GetAddr1(), ns3::WifiTxVector::GetMode(), ns3::WifiTxVector::GetPreambleType(), ns3::WifiMacHeader::GetQosTid(), GetRifs(), ns3::WifiRemoteStationManager::GetRifsPermitted(), GetSifs(), ns3::Packet::GetSize(), ns3::CtrlBAckRequestHeader::GetStartingSequence(), ns3::GetTid(), ns3::CtrlBAckRequestHeader::GetTidInfo(), ns3::Txop::GetTxopLimit(), ns3::Txop::GotAck(), ns3::Txop::GotBlockAck(), ns3::Txop::GotCfEnd(), ns3::MacLowTransmissionParameters::HasNextPacket(), ns3::Txop::HasTxop(), IsCfPeriod(), ns3::EventId::IsExpired(), ns3::CtrlBAckRequestHeader::IsMultiTid(), IsNavZero(), ns3::WifiMacHeader::IsQosData(), ns3::EventId::IsRunning(), ns3::Time::IsZero(), m_ampdu, m_bAckAgreements, m_bAckCaches, m_blockAckTimeoutEvent, m_cfAckInfo, m_cfpStart, m_ctsTimeoutEvent, m_currentHdr, m_currentPacket, m_currentTxop, m_edca, m_normalAckTimeoutEvent, m_promisc, m_rxCallback, m_self, m_sendAckEvent, m_sendCtsEvent, m_sendDataEvent, m_stationManager, m_txParams, m_waitIfsEvent, ns3::Txop::MissedAck(), ns3::MacLowTransmissionParameters::MustWaitBasicBlockAck(), ns3::MacLowTransmissionParameters::MustWaitCompressedBlockAck(), ns3::MacLowTransmissionParameters::MustWaitNormalAck(), ns3::NanoSeconds(), NotifyAckTimeoutResetNow(), NotifyCtsTimeoutResetNow(), NotifyNav(), ns3::Simulator::Now(), NS_ASSERT, NS_FATAL_ERROR, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::QosUtilsMapTidToAc(), ReceiveMpdu(), ns3::Packet::RemoveHeader(), ns3::Packet::RemovePacketTag(), ns3::Packet::RemoveTrailer(), ns3::WifiRemoteStationManager::ReportDataOk(), ns3::WifiRemoteStationManager::ReportRtsOk(), ns3::WifiRemoteStationManager::ReportRxOk(), ResetBlockAckInactivityTimerIfNeeded(), RxCompleteBufferedPacketsUntilFirstLost(), RxCompleteBufferedPacketsWithSmallerSequence(), ns3::Simulator::Schedule(), SendAckAfterData(), SendBlockAckAfterBlockAckRequest(), SendCtsAfterRts(), SendDataAfterCts(), ns3::SnrTag::Set(), WaitIfsAfterEndTxFragment(), and WaitIfsAfterEndTxPacket().
Referenced by DeaggregateAmpduAndReceive().
void ns3::MacLow::RegisterDcf | ( | Ptr< ChannelAccessManager > | dcf | ) |
dcf | listen to NAV events for every incoming and outgoing packet. |
Definition at line 456 of file mac-low.cc.
References m_channelAccessManagers.
Referenced by ns3::ChannelAccessManager::SetupLow().
ac | Access class managed by the queue. |
edca | the QosTxop for the queue. |
The lifetime of the registered QosTxop is typically equal to the lifetime of the queue associated to this AC.
Definition at line 2436 of file mac-low.cc.
References m_edca.
Referenced by ns3::QosTxop::CompleteConfig().
Remove current WifiPhy listener for this MacLow.
Definition at line 161 of file mac-low.cc.
References m_phyMacLowListener, and third::phy.
Referenced by ResetPhy().
|
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 IEEE 802.11e for more details.
agreement |
Definition at line 2420 of file mac-low.cc.
References ns3::EventId::Cancel(), ns3::BlockAckAgreement::GetPeer(), ns3::BlockAckAgreement::GetTid(), ns3::BlockAckAgreement::GetTimeout(), ns3::EventId::IsRunning(), m_edca, ns3::BlockAckAgreement::m_inactivityEvent, ns3::MicroSeconds(), NS_ASSERT, ns3::QosUtilsMapTidToAc(), ns3::Simulator::Schedule(), ns3::QosTxop::SendDelbaFrame(), and timeout.
Referenced by DeaggregateAmpduAndReceive(), and ReceiveOk().
void ns3::MacLow::ResetPhy | ( | void | ) |
Remove WifiPhy associated with this MacLow.
Definition at line 265 of file mac-low.cc.
References m_phy, ns3::MakeNullCallback(), RemovePhyMacLowListener(), ns3::WifiPhy::SetReceiveErrorCallback(), and ns3::WifiPhy::SetReceiveOkCallback().
Referenced by ns3::RegularWifiMac::ResetWifiPhy().
|
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 IEEE 802.11 standard for more details.
Definition at line 2236 of file mac-low.cc.
References m_bAckAgreements, and m_rxCallback.
Referenced by DestroyBlockAckAgreement(), ReceiveMpdu(), ReceiveOk(), and SendBlockAckAfterBlockAckRequest().
|
private |
originator | Address of peer participating in Block Ack mechanism. |
tid | TID for which Block Ack was created. |
seq | Starting sequence control |
This function forward up all completed "old" packets with sequence number smaller than seq. All comparison are performed circularly mod 4096.
Definition at line 2173 of file mac-low.cc.
References m_bAckAgreements, m_rxCallback, and ns3::QosUtilsMapSeqControlToUniqueInteger().
Referenced by DestroyBlockAckAgreement(), ReceiveMpdu(), ReceiveOk(), and SendBlockAckAfterBlockAckRequest().
|
private |
Send ACK after receiving DATA.
source | |
duration | |
dataTxMode | |
dataSnr |
Definition at line 2010 of file mac-low.cc.
References ns3::Packet::AddHeader(), ns3::Packet::AddPacketTag(), ns3::AddWifiMacTrailer(), ForwardDown(), GetAckDuration(), GetAckTxVector(), GetSifs(), ns3::Time::IsPositive(), NS_ASSERT_MSG(), 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(), and ns3::WIFI_MAC_CTL_ACK.
Referenced by ReceiveOk().
|
private |
Invoked after an A-MPDU has been received.
Looks for corresponding block ack agreement and creates block ack bitmap on a received packets basis.
tid | the Traffic ID |
originator | the originator MAC address |
duration | the remaining NAV duration |
blockAckReqTxVector | the transmit vector |
rxSnr | the receive SNR |
Definition at line 2326 of file mac-low.cc.
References ns3::Time::As(), ns3::COMPRESSED_BLOCK_ACK, ns3::WifiTxVector::GetMode(), ns3::WifiPhy::IsStateRx(), ns3::WifiPhy::IsStateTx(), m_bAckAgreements, m_bAckCaches, m_phy, NS_ASSERT, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::Time::S, and SendBlockAckResponse().
Referenced by DeaggregateAmpduAndReceive().
|
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 | |
rxSnr |
Definition at line 2356 of file mac-low.cc.
References ns3::BASIC_BLOCK_ACK, ns3::COMPRESSED_BLOCK_ACK, ns3::CtrlBAckRequestHeader::GetStartingSequence(), ns3::CtrlBAckRequestHeader::GetStartingSequenceControl(), ns3::CtrlBAckRequestHeader::GetTidInfo(), ns3::WifiRemoteStationManager::HasHeSupported(), ns3::WifiRemoteStationManager::HasHtSupported(), ns3::WifiRemoteStationManager::HasVhtSupported(), ns3::CtrlBAckRequestHeader::IsBasic(), ns3::CtrlBAckRequestHeader::IsCompressed(), ns3::CtrlBAckRequestHeader::IsMultiTid(), m_bAckAgreements, m_bAckCaches, m_stationManager, NS_ASSERT, NS_FATAL_ERROR, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::QosUtilsIsOldPacket(), 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 | |
rxSnr |
Definition at line 2265 of file mac-low.cc.
References ns3::Packet::AddHeader(), ns3::Packet::AddPacketTag(), ns3::AddWifiMacTrailer(), ns3::BASIC_BLOCK_ACK, ns3::COMPRESSED_BLOCK_ACK, ns3::MacLowTransmissionParameters::DisableAck(), ns3::MacLowTransmissionParameters::DisableNextData(), ns3::MacLowTransmissionParameters::EnableAck(), ForwardDown(), GetAckDuration(), GetAddress(), GetBlockAckDuration(), GetBlockAckTxVector(), GetSifs(), ns3::CtrlBAckResponseHeader::IsBasic(), ns3::CtrlBAckResponseHeader::IsCompressed(), ns3::CtrlBAckResponseHeader::IsMultiTid(), ns3::Time::IsPositive(), m_txParams, NS_ASSERT, NS_FATAL_ERROR, NS_LOG_FUNCTION, ns3::SnrTag::Set(), ns3::WifiMacHeader::SetAddr1(), ns3::WifiMacHeader::SetAddr2(), ns3::WifiMacHeader::SetDsNotFrom(), ns3::WifiMacHeader::SetDsNotTo(), ns3::WifiMacHeader::SetDuration(), ns3::WifiMacHeader::SetNoMoreFragments(), ns3::WifiMacHeader::SetNoRetry(), ns3::WifiMacHeader::SetType(), StartDataTxTimers(), and ns3::WIFI_MAC_CTL_BACKRESP.
Referenced by SendBlockAckAfterAmpdu(), and SendBlockAckAfterBlockAckRequest().
|
private |
Send CTS after receiving RTS.
source | |
duration | |
rtsTxVector | |
rtsSnr |
Definition at line 1859 of file mac-low.cc.
References ns3::Packet::AddHeader(), ns3::Packet::AddPacketTag(), ns3::AddWifiMacTrailer(), ForwardDown(), GetCtsDuration(), GetCtsTxVector(), ns3::WifiTxVector::GetMode(), GetSifs(), ns3::Time::IsPositive(), NS_ASSERT, NS_LOG_FUNCTION, ns3::SnrTag::Set(), ns3::WifiMacHeader::SetType(), and ns3::WIFI_MAC_CTL_CTS.
Referenced by ReceiveOk().
|
private |
Send CTS for a CTS-to-self mechanism.
Definition at line 1790 of file mac-low.cc.
References ns3::Packet::AddHeader(), ns3::AddWifiMacTrailer(), ns3::BASIC_BLOCK_ACK, ns3::WifiPhy::CalculateTxDuration(), ns3::COMPRESSED_BLOCK_ACK, ForwardDown(), GetAckDuration(), ns3::WifiMacHeader::GetAddr1(), ns3::WifiMacHeader::GetAddr2(), GetBlockAckDuration(), GetBlockAckTxVector(), ns3::GetCtsSize(), ns3::WifiPhy::GetFrequency(), ns3::WifiTxVector::GetMode(), ns3::MacLowTransmissionParameters::GetNextPacketSize(), GetRtsTxVector(), GetSifs(), ns3::GetSize(), ns3::MacLowTransmissionParameters::HasNextPacket(), ns3::EventId::IsExpired(), m_ampdu, m_currentHdr, m_currentPacket, m_currentTxVector, m_phy, m_self, m_sendDataEvent, m_txParams, ns3::MacLowTransmissionParameters::MustWaitBasicBlockAck(), ns3::MacLowTransmissionParameters::MustWaitCompressedBlockAck(), ns3::MacLowTransmissionParameters::MustWaitNormalAck(), 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(), and ns3::WIFI_MAC_CTL_CTS.
Referenced by StartTransmission().
|
private |
Send DATA after receiving CTS.
duration |
Definition at line 1891 of file mac-low.cc.
References ns3::Packet::AddHeader(), ns3::AddWifiMacTrailer(), ns3::BASIC_BLOCK_ACK, ns3::WifiPhy::CalculateTxDuration(), ns3::COMPRESSED_BLOCK_ACK, ns3::Packet::Copy(), ForwardDown(), GetAckDuration(), ns3::WifiMacHeader::GetAddr1(), ns3::WifiMacHeader::GetAddr2(), GetBlockAckDuration(), GetBlockAckTxVector(), ns3::WifiPhy::GetFrequency(), ns3::WifiTxVector::GetMode(), ns3::MacLowTransmissionParameters::GetNextPacketSize(), GetRifs(), ns3::WifiRemoteStationManager::GetRifsPermitted(), GetSifs(), ns3::GetSize(), ns3::GetTid(), ns3::MacLowTransmissionParameters::HasNextPacket(), ns3::Time::IsPositive(), ns3::WifiMacHeader::IsQosData(), m_aggregateQueue, m_ampdu, m_currentHdr, m_currentPacket, m_currentTxVector, m_edca, m_phy, m_stationManager, m_txPackets, m_txParams, max, ns3::MacLowTransmissionParameters::MustWaitBasicBlockAck(), ns3::MacLowTransmissionParameters::MustWaitCompressedBlockAck(), ns3::MacLowTransmissionParameters::MustWaitNormalAck(), NS_ASSERT, NS_LOG_FUNCTION, ns3::QosUtilsMapTidToAc(), ns3::Seconds(), ns3::WifiMacHeader::SetDuration(), and StartDataTxTimers().
Referenced by ReceiveOk(), and SendCtsToSelf().
|
private |
Send DATA packet, which can be DATA-ACK or RTS-CTS-DATA-ACK transaction.
Definition at line 1673 of file mac-low.cc.
References ns3::Packet::AddHeader(), ns3::MacLow::CfAckInfo::address, ns3::AddWifiMacTrailer(), ns3::MacLow::CfAckInfo::appendCfAck, ns3::BASIC_BLOCK_ACK, ns3::WifiPhy::CalculateTxDuration(), ns3::COMPRESSED_BLOCK_ACK, ns3::Packet::Copy(), ForwardDown(), GetAckDuration(), ns3::WifiMacHeader::GetAddr1(), ns3::WifiMacHeader::GetAddr2(), GetBlockAckDuration(), GetBlockAckTxVector(), ns3::WifiMode::GetDataRate(), GetDataTxVector(), ns3::WifiPhy::GetFrequency(), ns3::WifiTxVector::GetMode(), ns3::MacLowTransmissionParameters::GetNextPacketSize(), GetRifs(), ns3::WifiRemoteStationManager::GetRifsPermitted(), GetSifs(), ns3::WifiMacHeader::GetType(), ns3::MacLowTransmissionParameters::HasNextPacket(), ns3::WifiMacHeader::IsCfEnd(), IsCfPeriod(), ns3::WifiMacHeader::IsQosData(), m_ampdu, m_cfAckInfo, m_currentHdr, m_currentPacket, m_currentTxVector, m_phy, m_stationManager, m_txParams, ns3::MacLowTransmissionParameters::MustWaitBasicBlockAck(), ns3::MacLowTransmissionParameters::MustWaitCompressedBlockAck(), ns3::MacLowTransmissionParameters::MustWaitNormalAck(), NS_ASSERT, NS_LOG_FUNCTION, ns3::Seconds(), ns3::WifiMacHeader::SetAddr1(), ns3::WifiMacHeader::SetDuration(), ns3::WifiMacHeader::SetRawDuration(), ns3::WifiMacHeader::SetType(), StartDataTxTimers(), ns3::WIFI_MAC_CTL_END, ns3::WIFI_MAC_CTL_END_ACK, ns3::WIFI_MAC_DATA, ns3::WIFI_MAC_DATA_CFACK, ns3::WIFI_MAC_DATA_CFACK_CFPOLL, ns3::WIFI_MAC_DATA_CFPOLL, ns3::WIFI_MAC_DATA_NULL, ns3::WIFI_MAC_DATA_NULL_CFACK, ns3::WIFI_MAC_DATA_NULL_CFACK_CFPOLL, and ns3::WIFI_MAC_DATA_NULL_CFPOLL.
Referenced by StartTransmission().
|
private |
Forward the MPDU down to WifiPhy for transmission.
This is called for each MPDU when MPDU aggregation is used.
packet | the packet |
txVector | the transmit vector |
mpdutype | the MPDU type |
Definition at line 1477 of file mac-low.cc.
References m_phy, NS_LOG_DEBUG, and ns3::WifiPhy::SendPacket().
Referenced by ForwardDown().
|
private |
Send RTS to begin RTS-CTS-DATA-ACK transaction.
Definition at line 1552 of file mac-low.cc.
References ns3::Packet::AddHeader(), ns3::AddWifiMacTrailer(), ns3::BASIC_BLOCK_ACK, ns3::WifiPhy::CalculateTxDuration(), ns3::COMPRESSED_BLOCK_ACK, CtsTimeout(), ForwardDown(), GetAckDuration(), ns3::WifiMacHeader::GetAddr1(), ns3::WifiMacHeader::GetAddr2(), GetBlockAckDuration(), GetBlockAckTxVector(), GetCtsDuration(), GetCtsTimeout(), ns3::WifiPhy::GetFrequency(), ns3::WifiTxVector::GetMode(), ns3::MacLowTransmissionParameters::GetNextPacketSize(), ns3::GetRtsSize(), GetRtsTxVector(), GetSifs(), ns3::GetSize(), ns3::MacLowTransmissionParameters::HasNextPacket(), ns3::EventId::IsExpired(), m_ampdu, m_ctsTimeoutEvent, m_currentHdr, m_currentPacket, m_currentTxVector, m_phy, m_self, m_txParams, ns3::MacLowTransmissionParameters::MustWaitBasicBlockAck(), ns3::MacLowTransmissionParameters::MustWaitCompressedBlockAck(), ns3::MacLowTransmissionParameters::MustWaitNormalAck(), 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(), and ns3::WIFI_MAC_CTL_RTS.
Referenced by StartTransmission().
void ns3::MacLow::SetAckTimeout | ( | Time | ackTimeout | ) |
Set ACK timeout of this MacLow.
ackTimeout | ACK timeout of this MacLow |
Definition at line 286 of file mac-low.cc.
References m_ackTimeout.
Referenced by ns3::RegularWifiMac::SetAckTimeout().
void ns3::MacLow::SetAddress | ( | Mac48Address | ad | ) |
Set MAC address of this MacLow.
ad | Mac48Address of this MacLow |
Definition at line 280 of file mac-low.cc.
References m_self.
Referenced by AmpduAggregationTest::DoRun(), and ns3::RegularWifiMac::SetAddress().
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 292 of file mac-low.cc.
References m_basicBlockAckTimeout.
Referenced by ns3::RegularWifiMac::SetBasicBlockAckTimeout().
void ns3::MacLow::SetBeaconInterval | ( | Time | interval | ) |
interval | the expected interval between two beacon transmissions. |
Definition at line 346 of file mac-low.cc.
References m_beaconInterval.
Referenced by ns3::ApWifiMac::SetBeaconInterval().
void ns3::MacLow::SetBssid | ( | Mac48Address | ad | ) |
Set the Basic Service Set Identification.
ad | the BSSID |
Definition at line 358 of file mac-low.cc.
References m_bssid.
Referenced by ns3::RegularWifiMac::SetBssid().
void ns3::MacLow::SetCfpMaxDuration | ( | Time | duration | ) |
duration | the maximum duration for the CF period. |
Definition at line 352 of file mac-low.cc.
References m_cfpMaxDuration.
Referenced by ns3::ApWifiMac::SetCfpMaxDuration().
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 298 of file mac-low.cc.
References m_compressedBlockAckTimeout.
Referenced by ns3::RegularWifiMac::SetCompressedBlockAckTimeout().
void ns3::MacLow::SetCtsTimeout | ( | Time | ctsTimeout | ) |
Set CTS timeout of this MacLow.
ctsTimeout | CTS timeout of this MacLow |
Definition at line 316 of file mac-low.cc.
References m_ctsTimeout.
Referenced by ns3::RegularWifiMac::SetCtsTimeout().
void ns3::MacLow::SetCtsToSelfSupported | ( | bool | enable | ) |
Enable or disable CTS-to-self capability.
enable | Enable or disable CTS-to-self capability |
Definition at line 304 of file mac-low.cc.
References m_ctsToSelfSupported.
Referenced by ns3::RegularWifiMac::SetCtsToSelfSupported().
Set up WifiPhy associated with this MacLow.
Definition at line 250 of file mac-low.cc.
References DeaggregateAmpduAndReceive(), m_phy, ns3::MakeCallback(), third::phy, ReceiveError(), ns3::WifiPhy::SetReceiveErrorCallback(), ns3::WifiPhy::SetReceiveOkCallback(), and SetupPhyMacLowListener().
Referenced by AmpduAggregationTest::DoRun(), TwoLevelAggregationTest::DoRun(), and ns3::RegularWifiMac::SetWifiPhy().
void ns3::MacLow::SetPifs | ( | Time | pifs | ) |
Set PCF Interframe Space (PIFS) of this MacLow.
pifs | PIFS of this MacLow |
Definition at line 334 of file mac-low.cc.
References m_pifs.
Referenced by ns3::RegularWifiMac::SetPifs().
void ns3::MacLow::SetPromisc | ( | void | ) |
Enable promiscuous mode.
Definition at line 364 of file mac-low.cc.
References m_promisc.
Referenced by ns3::RegularWifiMac::SetPromisc().
void ns3::MacLow::SetRifs | ( | Time | rifs | ) |
Set Reduced Interframe Space (RIFS) of this MacLow.
rifs | RIFS of this MacLow |
Definition at line 340 of file mac-low.cc.
References m_rifs.
Referenced by ns3::RegularWifiMac::SetRifs().
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 450 of file mac-low.cc.
References m_rxCallback.
Referenced by ns3::OcbWifiMac::EnableForWave(), and ns3::RegularWifiMac::RegularWifiMac().
void ns3::MacLow::SetSifs | ( | Time | sifs | ) |
Set Short Interframe Space (SIFS) of this MacLow.
sifs | SIFS of this MacLow |
Definition at line 322 of file mac-low.cc.
References m_sifs.
Referenced by ns3::RegularWifiMac::SetSifs().
void ns3::MacLow::SetSlotTime | ( | Time | slotTime | ) |
Set slot duration of this MacLow.
slotTime | slot duration of this MacLow |
Definition at line 328 of file mac-low.cc.
References m_slotTime.
Referenced by ns3::RegularWifiMac::SetSlot().
Set up WifiPhy listener for this MacLow.
Definition at line 154 of file mac-low.cc.
References m_phyMacLowListener, and third::phy.
Referenced by SetPhy().
void ns3::MacLow::SetWifiRemoteStationManager | ( | const Ptr< WifiRemoteStationManager > | manager | ) |
Set up WifiRemoteStationManager associated with this MacLow.
manager | WifiRemoteStationManager associated with this MacLow |
Definition at line 274 of file mac-low.cc.
References m_stationManager.
Referenced by AmpduAggregationTest::DoRun(), TwoLevelAggregationTest::DoRun(), and ns3::RegularWifiMac::SetWifiRemoteStationManager().
|
private |
Start a DATA timer by scheduling appropriate ACK timeout.
dataTxVector |
Definition at line 1614 of file mac-low.cc.
References BlockAckTimeout(), ns3::WifiPhy::CalculateTxDuration(), EndTxNoAck(), GetAckTimeout(), GetBasicBlockAckTimeout(), GetCompressedBlockAckTimeout(), ns3::WifiPhy::GetFrequency(), GetRifs(), ns3::WifiRemoteStationManager::GetRifsPermitted(), GetSifs(), ns3::GetSize(), ns3::MacLowTransmissionParameters::HasNextPacket(), ns3::Txop::HasTxop(), IsCfPeriod(), ns3::EventId::IsExpired(), ns3::WifiMacHeader::IsQosBlockAck(), ns3::WifiMacHeader::IsQosData(), m_ampdu, m_blockAckTimeoutEvent, m_currentHdr, m_currentPacket, m_currentTxop, m_endTxNoAckEvent, m_normalAckTimeoutEvent, m_phy, m_stationManager, m_txParams, m_waitIfsEvent, ns3::MacLowTransmissionParameters::MustWaitBasicBlockAck(), ns3::MacLowTransmissionParameters::MustWaitCompressedBlockAck(), ns3::MacLowTransmissionParameters::MustWaitNormalAck(), NormalAckTimeout(), NotifyAckTimeoutStartNow(), NS_ASSERT, ns3::Simulator::Schedule(), WaitIfsAfterEndTxFragment(), and WaitIfsAfterEndTxPacket().
Referenced by SendBlockAckResponse(), SendDataAfterCts(), and SendDataPacket().
|
virtual |
packet | packet to send |
hdr | 802.11 header for packet to send |
parameters | the transmission parameters to use for this packet. |
txop | pointer to the calling Txop. |
Start the transmission of the input packet and notify the listener of transmission events.
Reimplemented in ns3::WaveMacLow.
Definition at line 478 of file mac-low.cc.
References ns3::Packet::AddHeader(), ns3::AddWifiMacTrailer(), CancelAllEvents(), ns3::Packet::Copy(), ns3::Copy(), ns3::MacLowTransmissionParameters::DisableRts(), ns3::MacLowTransmissionParameters::EnableAck(), ns3::MacLowTransmissionParameters::EnableCompressedBlockAck(), ns3::MacLowTransmissionParameters::EnableRts(), ns3::MacLow::CfAckInfo::expectCfAck, ns3::WifiMacHeader::GetAddr1(), GetDataTxVector(), ns3::AmpduTag::GetRemainingNbOfMpdus(), ns3::GetSize(), ns3::GetTid(), ns3::WifiRemoteStationManager::GetUseNonErpProtection(), IsAmpdu(), ns3::WifiMacHeader::IsBlockAck(), ns3::WifiMacHeader::IsBlockAckReq(), IsCfPeriod(), ns3::WifiMacHeader::IsMgt(), ns3::WifiMacHeader::IsQosData(), ns3::WifiPhy::IsStateOff(), ns3::WifiPhy::IsStateTx(), m_aggregateQueue, m_ampdu, m_cfAckInfo, m_ctsToSelfSupported, m_currentHdr, m_currentPacket, m_currentTxop, m_currentTxVector, m_edca, m_phy, m_stationManager, m_txPackets, m_txParams, ns3::MacLowTransmissionParameters::MustSendRts(), NeedCtsToSelf(), NeedRts(), NS_ASSERT, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::Packet::PeekPacketTag(), ns3::QosUtilsMapTidToAc(), ns3::Packet::RemovePacketTag(), SendCtsToSelf(), SendDataPacket(), and SendRtsForPacket().
Referenced by ns3::QosTxop::NotifyAccessGranted(), ns3::Txop::NotifyAccessGranted(), ns3::QosTxop::SendAddBaRequest(), ns3::QosTxop::SendBlockAckRequest(), ns3::Txop::StartNextFragment(), ns3::QosTxop::StartNextPacket(), and ns3::WaveMacLow::StartTransmission().
bool ns3::MacLow::StopMpduAggregation | ( | Ptr< const Packet > | peekedPacket, |
WifiMacHeader | peekedHdr, | ||
Ptr< Packet > | aggregatedPacket, | ||
uint8_t | blockAckSize | ||
) | const |
peekedPacket | the packet to be aggregated |
peekedHdr | the WifiMacHeader for the packet. |
aggregatedPacket | the current A-MPDU |
blockAckSize | the size of a piggybacked block ack request |
This function decides if a given packet can be added to an A-MPDU or not
Definition at line 2531 of file mac-low.cc.
References ns3::WifiPhy::CalculateTxDuration(), ns3::WifiPhy::GetFrequency(), ns3::WifiPhy::GetGreenfield(), ns3::Packet::GetSize(), ns3::WifiMacHeader::GetSize(), ns3::GetTid(), m_currentTxVector, m_edca, m_phy, ns3::MicroSeconds(), NS_LOG_DEBUG, ns3::QosUtilsMapTidToAc(), and ns3::WIFI_MAC_FCS_LENGTH.
Referenced by AggregateToAmpdu(), and PerformMsduAggregation().
|
private |
packet | the packet |
hdr | the header |
This method checks if exists a valid established block ack agreement. If there is, store the packet without pass it up to WifiMac. The packet is buffered in order of increasing sequence control field. All comparison are performed circularly modulo 2^12.
Definition at line 2086 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 ReceiveMpdu().
|
private |
Event handler that is usually scheduled to fired at the appropriate time after completing transmissions.
Definition at line 1977 of file mac-low.cc.
References m_currentTxop, NS_LOG_FUNCTION, and ns3::Txop::StartNextFragment().
Referenced by ReceiveOk(), and StartDataTxTimers().
|
private |
Event handler that is usually scheduled to fired at the appropriate time after sending a packet.
Definition at line 1984 of file mac-low.cc.
References m_currentTxop, NS_LOG_FUNCTION, and ns3::Txop::StartNextPacket().
Referenced by ReceiveOk(), and StartDataTxTimers().
|
friend |
|
friend |
|
private |
ACK timeout duration.
Definition at line 912 of file mac-low.h.
Referenced by GetAckTimeout(), and SetAckTimeout().
|
private |
Queues per TID used for MPDU aggregation.
Definition at line 958 of file mac-low.h.
Referenced by AggregateToAmpdu(), DoDispose(), AmpduAggregationTest::DoRun(), FlushAggregateQueue(), ForwardDown(), MacLow(), SendDataAfterCts(), and StartTransmission().
|
private |
Flag if the current transmission involves an A-MPDU.
Definition at line 932 of file mac-low.h.
Referenced by BlockAckTimeout(), CalculateOverallTxTime(), CtsTimeout(), DoDispose(), ForwardDown(), NormalAckTimeout(), ReceiveOk(), SendCtsToSelf(), SendDataAfterCts(), SendDataPacket(), SendRtsForPacket(), StartDataTxTimers(), and StartTransmission().
|
private |
block ack agreements
Definition at line 951 of file mac-low.h.
Referenced by CreateBlockAckAgreement(), DeaggregateAmpduAndReceive(), DestroyBlockAckAgreement(), ReceiveMpdu(), ReceiveOk(), RxCompleteBufferedPacketsUntilFirstLost(), RxCompleteBufferedPacketsWithSmallerSequence(), SendBlockAckAfterAmpdu(), SendBlockAckAfterBlockAckRequest(), and StoreMpduIfNeeded().
|
private |
block ack caches
Definition at line 952 of file mac-low.h.
Referenced by CreateBlockAckAgreement(), DestroyBlockAckAgreement(), ReceiveOk(), SendBlockAckAfterAmpdu(), SendBlockAckAfterBlockAckRequest(), and StoreMpduIfNeeded().
|
private |
Basic block ACK timeout duration.
Definition at line 913 of file mac-low.h.
Referenced by GetBasicBlockAckTimeout(), and SetBasicBlockAckTimeout().
|
private |
Expected interval between two beacon transmissions.
Definition at line 921 of file mac-low.h.
Referenced by ForwardDown(), GetBeaconInterval(), and SetBeaconInterval().
|
private |
Block ACK timeout event.
Definition at line 897 of file mac-low.h.
Referenced by CancelAllEvents(), DoDispose(), ReceiveOk(), and StartDataTxTimers().
|
private |
BSSID address (Mac48Address)
Definition at line 911 of file mac-low.h.
Referenced by GetBssid(), NotifyNav(), and SetBssid().
|
private |
Info about piggyback ACKs used in PCF.
Definition at line 962 of file mac-low.h.
Referenced by CfPollTimeout(), EndTxNoAck(), ForwardDown(), GetCfEndSize(), ReceiveError(), ReceiveOk(), SendDataPacket(), and StartTransmission().
|
private |
The delay the current CF period should be foreshortened.
Definition at line 929 of file mac-low.h.
Referenced by ForwardDown(), and GetRemainingCfpDuration().
|
private |
CFP max duration.
Definition at line 922 of file mac-low.h.
Referenced by GetCfpMaxDuration(), GetRemainingCfpDuration(), and SetCfpMaxDuration().
|
private |
The time when the latest CF period started.
Definition at line 927 of file mac-low.h.
Referenced by EndTxNoAck(), ForwardDown(), GetRemainingCfpDuration(), IsCfPeriod(), and ReceiveOk().
|
private |
List of ChannelAccessManager.
Definition at line 894 of file mac-low.h.
Referenced by CfPollTimeout(), DoNavResetNow(), DoNavStartNow(), NotifyAckTimeoutResetNow(), NotifyAckTimeoutStartNow(), NotifyCtsTimeoutResetNow(), NotifyCtsTimeoutStartNow(), and RegisterDcf().
|
private |
Compressed block ACK timeout duration.
Definition at line 914 of file mac-low.h.
Referenced by GetCompressedBlockAckTimeout(), and SetCompressedBlockAckTimeout().
|
private |
CTS timeout duration.
Definition at line 915 of file mac-low.h.
Referenced by GetCtsTimeout(), and SetCtsTimeout().
|
private |
CTS timeout event.
Definition at line 898 of file mac-low.h.
Referenced by CancelAllEvents(), DoDispose(), ReceiveOk(), and SendRtsForPacket().
|
private |
Flag whether CTS-to-self is supported.
Definition at line 957 of file mac-low.h.
Referenced by GetCtsToSelfSupported(), SetCtsToSelfSupported(), and StartTransmission().
|
private |
Header of the current transmitted packet.
Definition at line 907 of file mac-low.h.
Referenced by AggregateToAmpdu(), BlockAckTimeout(), CtsTimeout(), AmpduAggregationTest::DoRun(), TwoLevelAggregationTest::DoRun(), EndTxNoAck(), ForwardDown(), NeedCtsToSelf(), NeedRts(), NormalAckTimeout(), ReceiveError(), ReceiveOk(), SendCtsToSelf(), SendDataAfterCts(), SendDataPacket(), SendRtsForPacket(), StartDataTxTimers(), and StartTransmission().
Current packet transmitted/to be transmitted.
Definition at line 906 of file mac-low.h.
Referenced by AggregateToAmpdu(), BlockAckTimeout(), AmpduAggregationTest::DoRun(), TwoLevelAggregationTest::DoRun(), IsAmpdu(), NeedCtsToSelf(), NeedRts(), NormalAckTimeout(), NotifyOffNow(), NotifySleepNow(), NotifySwitchingStartNow(), ReceiveOk(), SendCtsToSelf(), SendDataAfterCts(), SendDataPacket(), SendRtsForPacket(), StartDataTxTimers(), and StartTransmission().
Current TXOP.
Definition at line 908 of file mac-low.h.
Referenced by BlockAckTimeout(), CancelAllEvents(), CfPollTimeout(), CtsTimeout(), EndTxNoAck(), NormalAckTimeout(), NotifyOffNow(), NotifySleepNow(), NotifySwitchingStartNow(), ReceiveError(), ReceiveOk(), StartDataTxTimers(), StartTransmission(), WaitIfsAfterEndTxFragment(), and WaitIfsAfterEndTxPacket().
|
private |
TXVECTOR used for the current packet transmission.
Definition at line 960 of file mac-low.h.
Referenced by CanTransmitNextCfFrame(), AmpduAggregationTest::DoRun(), TwoLevelAggregationTest::DoRun(), SendCtsToSelf(), SendDataAfterCts(), SendDataPacket(), SendRtsForPacket(), StartTransmission(), and StopMpduAggregation().
|
private |
EDCA queues.
Definition at line 955 of file mac-low.h.
Referenced by AggregateToAmpdu(), CreateBlockAckAgreement(), ForwardDown(), PerformMsduAggregation(), ReceiveOk(), RegisterEdcaForAc(), ResetBlockAckInactivityTimerIfNeeded(), SendDataAfterCts(), StartTransmission(), and StopMpduAggregation().
|
private |
Event for finishing transmission that does not require ACK.
Definition at line 903 of file mac-low.h.
Referenced by CancelAllEvents(), DoDispose(), and StartDataTxTimers().
|
private |
The time when the last beacon frame transmission started.
Definition at line 928 of file mac-low.h.
Referenced by ForwardDown().
|
private |
The duration of the latest NAV.
Definition at line 925 of file mac-low.h.
Referenced by DoNavResetNow(), DoNavStartNow(), IsNavZero(), NotifyOffNow(), NotifySleepNow(), and NotifySwitchingStartNow().
|
private |
The time when the latest NAV started.
Definition at line 924 of file mac-low.h.
Referenced by DoNavResetNow(), DoNavStartNow(), IsNavZero(), NotifyNav(), NotifyOffNow(), NotifySleepNow(), and NotifySwitchingStartNow().
|
private |
Event to reset NAV when CTS is not received.
Definition at line 904 of file mac-low.h.
Referenced by NotifyNav(), NotifyOffNow(), NotifySleepNow(), and NotifySwitchingStartNow().
|
private |
Normal ACK timeout event.
Definition at line 896 of file mac-low.h.
Referenced by CancelAllEvents(), DoDispose(), ReceiveOk(), and StartDataTxTimers().
Pointer to WifiPhy (actually send/receives frames)
Definition at line 862 of file mac-low.h.
Referenced by CalculateOverallTxTime(), CalculateTransmissionTime(), CanTransmitNextCfFrame(), DoDispose(), ForwardDown(), GetAckDuration(), GetBlockAckDuration(), GetCtsDuration(), GetPhy(), NavCounterResetCtsMissed(), NotifyNav(), ResetPhy(), SendBlockAckAfterAmpdu(), SendCtsToSelf(), SendDataAfterCts(), SendDataPacket(), SendMpdu(), SendRtsForPacket(), SetPhy(), StartDataTxTimers(), StartTransmission(), and StopMpduAggregation().
|
private |
Listener needed to monitor when a channel switching occurs.
Definition at line 934 of file mac-low.h.
Referenced by DoDispose(), RemovePhyMacLowListener(), and SetupPhyMacLowListener().
|
private |
|
private |
Flag if the device is operating in promiscuous mode.
Definition at line 931 of file mac-low.h.
Referenced by IsPromisc(), ReceiveOk(), and SetPromisc().
|
private |
|
private |
Callback to pass packet up.
Definition at line 864 of file mac-low.h.
Referenced by ReceiveOk(), RxCompleteBufferedPacketsUntilFirstLost(), RxCompleteBufferedPacketsWithSmallerSequence(), and SetRxCallback().
|
private |
Address of this MacLow (Mac48Address)
Definition at line 910 of file mac-low.h.
Referenced by DeaggregateAmpduAndReceive(), GetAddress(), NotifyNav(), ReceiveOk(), SendCtsToSelf(), SendRtsForPacket(), and SetAddress().
|
private |
Event to send ACK.
Definition at line 900 of file mac-low.h.
Referenced by CancelAllEvents(), DeaggregateAmpduAndReceive(), DoDispose(), and ReceiveOk().
|
private |
Event to send CTS.
Definition at line 899 of file mac-low.h.
Referenced by CancelAllEvents(), DoDispose(), and ReceiveOk().
|
private |
Event to send DATA.
Definition at line 901 of file mac-low.h.
Referenced by CancelAllEvents(), DoDispose(), ReceiveOk(), and SendCtsToSelf().
|
private |
|
private |
Slot duration.
Definition at line 917 of file mac-low.h.
Referenced by GetSlotTime(), and SetSlotTime().
|
private |
Pointer to WifiRemoteStationManager (rate control)
Definition at line 863 of file mac-low.h.
Referenced by CtsTimeout(), DoDispose(), EndTxNoAck(), ForwardDown(), GetAckTxVector(), GetBlockAckTxVector(), GetCtsTxVector(), GetDataTxVector(), GetRtsTxVector(), IsCfPeriod(), NeedCtsToSelf(), NeedRts(), NormalAckTimeout(), NotifySwitchingStartNow(), ReceiveMpdu(), ReceiveOk(), SendBlockAckAfterBlockAckRequest(), SendDataAfterCts(), SendDataPacket(), SetWifiRemoteStationManager(), StartDataTxTimers(), and StartTransmission().
|
private |
Contain temporary items to be sent with the next A-MPDU transmission for a given TID, once RTS/CTS exchange has succeeded.
Definition at line 959 of file mac-low.h.
Referenced by FlushAggregateQueue(), InsertInTxQueue(), SendDataAfterCts(), and StartTransmission().
|
private |
Transmission parameters of the current packet.
Definition at line 909 of file mac-low.h.
Referenced by AggregateToAmpdu(), ReceiveOk(), SendBlockAckResponse(), SendCtsToSelf(), SendDataAfterCts(), SendDataPacket(), SendRtsForPacket(), StartDataTxTimers(), and StartTransmission().
|
private |
Wait for IFS event.
Definition at line 902 of file mac-low.h.
Referenced by CancelAllEvents(), DoDispose(), ReceiveOk(), and StartDataTxTimers().