handle RTS/CTS/DATA/ACK transactions. More...
#include <mac-low.h>
Public Types | |
typedef Callback< void, Ptr < Packet >, const WifiMacHeader * > | MacLowRxCallback |
Public Member Functions | |
MacLow () | |
virtual | ~MacLow () |
Time | CalculateTransmissionTime (Ptr< const Packet > packet, const WifiMacHeader *hdr, const MacLowTransmissionParameters ¶meters) const |
void | CreateBlockAckAgreement (const MgtAddBaResponseHeader *respHdr, Mac48Address originator, uint16_t startingSeq) |
void | DestroyBlockAckAgreement (Mac48Address originator, uint8_t tid) |
Time | GetAckTimeout (void) const |
Mac48Address | GetAddress (void) const |
Time | GetBasicBlockAckTimeout () const |
Mac48Address | GetBssid (void) const |
Time | GetCompressedBlockAckTimeout () const |
Time | GetCtsTimeout (void) const |
bool | GetCtsToSelfSupported () const |
Time | GetPifs (void) const |
Time | GetRifs (void) const |
Time | GetSifs (void) const |
Time | GetSlotTime (void) const |
void | NotifySwitchingStartNow (Time duration) |
void | ReceiveError (Ptr< const Packet > packet, double rxSnr) |
void | ReceiveOk (Ptr< Packet > packet, double rxSnr, WifiMode txMode, WifiPreamble preamble) |
void | RegisterBlockAckListenerForAc (enum AcIndex ac, MacLowBlockAckEventListener *listener) |
void | RegisterDcfListener (MacLowDcfListener *listener) |
void | SetAckTimeout (Time ackTimeout) |
void | SetAddress (Mac48Address ad) |
void | SetBasicBlockAckTimeout (Time blockAckTimeout) |
void | SetBssid (Mac48Address ad) |
void | SetCompressedBlockAckTimeout (Time blockAckTimeout) |
void | SetCtsTimeout (Time ctsTimeout) |
void | SetCtsToSelfSupported (bool enable) |
void | SetPhy (Ptr< WifiPhy > phy) |
void | SetPifs (Time pifs) |
void | SetPromisc (void) |
void | SetRifs (Time rifs) |
void | SetRxCallback (Callback< void, Ptr< Packet >, const WifiMacHeader * > callback) |
void | SetSifs (Time sifs) |
void | SetSlotTime (Time slotTime) |
void | SetWifiRemoteStationManager (Ptr< WifiRemoteStationManager > manager) |
void | StartTransmission (Ptr< const Packet > packet, const WifiMacHeader *hdr, MacLowTransmissionParameters parameters, MacLowTransmissionListener *listener) |
![]() | |
Object () | |
virtual | ~Object () |
void | AggregateObject (Ptr< Object > other) |
void | Dispose (void) |
AggregateIterator | GetAggregateIterator (void) const |
virtual TypeId | GetInstanceTypeId (void) const |
template<typename T > | |
Ptr< T > | GetObject (void) const |
template<typename T > | |
Ptr< T > | GetObject (TypeId tid) const |
void | Initialize (void) |
![]() | |
SimpleRefCount () | |
SimpleRefCount (const SimpleRefCount &o) | |
uint32_t | GetReferenceCount (void) const |
SimpleRefCount & | operator= (const SimpleRefCount &o) |
void | Ref (void) const |
void | Unref (void) const |
![]() | |
virtual | ~ObjectBase () |
void | GetAttribute (std::string name, AttributeValue &value) const |
bool | GetAttributeFailSafe (std::string name, AttributeValue &attribute) const |
void | SetAttribute (std::string name, const AttributeValue &value) |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
Private Types | |
typedef std::pair < Mac48Address, uint8_t > | AgreementKey |
typedef std::map< AgreementKey, AgreementValue > | Agreements |
typedef std::map< AgreementKey, AgreementValue >::iterator | AgreementsI |
typedef std::pair < BlockAckAgreement, std::list < BufferedPacket > > | AgreementValue |
typedef std::map< AgreementKey, BlockAckCache > | BlockAckCaches |
typedef std::map< AgreementKey, BlockAckCache >::iterator | BlockAckCachesI |
typedef std::pair< Ptr< Packet > , WifiMacHeader > | BufferedPacket |
typedef std::list < BufferedPacket >::iterator | BufferedPacketI |
typedef std::vector < MacLowDcfListener * > | DcfListeners |
typedef std::vector < MacLowDcfListener * > ::const_iterator | DcfListenersCI |
typedef std::map< AcIndex, MacLowBlockAckEventListener * > | QueueListeners |
Additional Inherited Members | |
![]() | |
static TypeId | GetTypeId (void) |
![]() | |
Object (const Object &o) | |
virtual void | DoDispose (void) |
virtual void | DoInitialize (void) |
virtual void | NotifyNewAggregate (void) |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
typedef Callback<void, Ptr<Packet>, const WifiMacHeader*> ns3::MacLow::MacLowRxCallback |
|
private |
ns3::MacLow::MacLow | ( | ) |
Definition at line 285 of file mac-low.cc.
References m_lastNavDuration, m_lastNavStart, m_promisc, and NS_LOG_FUNCTION.
|
virtual |
Definition at line 306 of file mac-low.cc.
References NS_LOG_FUNCTION.
|
private |
Definition at line 1281 of file mac-low.cc.
References ns3::WifiMacHeader::GetAddr1(), m_currentHdr, m_listener, m_stationManager, ns3::MacLowTransmissionListener::MissedBlockAck(), NS_LOG_DEBUG, NS_LOG_FUNCTION, and ns3::WifiRemoteStationManager::ReportDataFailed().
Referenced by StartDataTxTimers().
|
private |
Definition at line 1050 of file mac-low.cc.
References ns3::WifiPhy::CalculateTxDuration(), GetAckDuration(), ns3::WifiMacHeader::GetAddr1(), GetCtsDuration(), GetDataTxVector(), ns3::WifiPhy::GetGreenfield(), ns3::WifiRemoteStationManager::GetGreenfieldSupported(), ns3::WifiTxVector::GetMode(), ns3::WifiMode::GetModulationClass(), GetRtsSize(), GetRtsTxVector(), GetSifs(), GetSize(), m_currentHdr, m_phy, m_stationManager, ns3::MacLowTransmissionParameters::MustSendRts(), ns3::MacLowTransmissionParameters::MustWaitAck(), ns3::WIFI_MOD_CLASS_HT, ns3::WIFI_PREAMBLE_HT_GF, ns3::WIFI_PREAMBLE_HT_MF, and ns3::WIFI_PREAMBLE_LONG.
Referenced by CalculateTransmissionTime().
Time ns3::MacLow::CalculateTransmissionTime | ( | Ptr< const Packet > | packet, |
const WifiMacHeader * | hdr, | ||
const MacLowTransmissionParameters & | parameters | ||
) | const |
packet | to send (does not include the 802.11 MAC header and checksum) |
hdr | header associated to the packet to send. |
parameters | transmission parameters of packet. |
This transmission time includes the time required for the next packet transmission if one was selected.
Definition at line 1089 of file mac-low.cc.
References CalculateOverallTxTime(), ns3::WifiPhy::CalculateTxDuration(), ns3::WifiMacHeader::GetAddr1(), GetDataTxVector(), ns3::WifiPhy::GetGreenfield(), ns3::WifiRemoteStationManager::GetGreenfieldSupported(), ns3::WifiTxVector::GetMode(), ns3::WifiMode::GetModulationClass(), ns3::MacLowTransmissionParameters::GetNextPacketSize(), GetSifs(), ns3::MacLowTransmissionParameters::HasNextPacket(), m_currentHdr, m_phy, m_stationManager, ns3::WIFI_MOD_CLASS_HT, ns3::WIFI_PREAMBLE_HT_GF, ns3::WIFI_PREAMBLE_HT_MF, and ns3::WIFI_PREAMBLE_LONG.
|
private |
Definition at line 342 of file mac-low.cc.
References ns3::EventId::Cancel(), ns3::MacLowTransmissionListener::Cancel(), ns3::EventId::IsRunning(), m_blockAckTimeoutEvent, m_ctsTimeoutEvent, m_endTxNoAckEvent, m_fastAckFailedTimeoutEvent, m_fastAckTimeoutEvent, m_listener, m_normalAckTimeoutEvent, m_sendAckEvent, m_sendCtsEvent, m_sendDataEvent, m_superFastAckTimeoutEvent, m_waitRifsEvent, m_waitSifsEvent, and NS_LOG_FUNCTION.
Referenced by NotifySwitchingStartNow(), and StartTransmission().
void ns3::MacLow::CreateBlockAckAgreement | ( | const MgtAddBaResponseHeader * | respHdr, |
Mac48Address | originator, | ||
uint16_t | startingSeq | ||
) |
respHdr | Add block ack response from originator (action frame). |
originator | Address of peer station involved in block ack mechanism. |
startingSeq | Sequence number of the first MPDU of all packets for which block ack was negotiated. |
This function is typically invoked only by ns3::RegularWifiMac when the STA (which may be non-AP in ESS, or in an IBSS) has received an ADDBA Request frame and is transmitting an ADDBA Response frame. At this point MacLow must allocate buffers to collect all correctly received packets belonging to the category for which Block Ack was negotiated.
Definition at line 1766 of file mac-low.cc.
References ns3::MacLowBlockAckEventListener::BlockAckInactivityTimeout(), ns3::MgtAddBaResponseHeader::GetBufferSize(), ns3::BlockAckAgreement::GetTid(), ns3::MgtAddBaResponseHeader::GetTid(), ns3::BlockAckAgreement::GetTimeout(), ns3::MgtAddBaResponseHeader::GetTimeout(), ns3::BlockAckCache::Init(), ns3::MgtAddBaResponseHeader::IsAmsduSupported(), ns3::MgtAddBaResponseHeader::IsImmediateBlockAck(), m_bAckAgreements, m_bAckCaches, m_edcaListeners, ns3::QosUtilsMapTidToAc(), ns3::Simulator::Schedule(), 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 |
Definition at line 1237 of file mac-low.cc.
References ns3::WifiMacHeader::GetAddr1(), m_currentHdr, m_currentPacket, m_listener, m_stationManager, ns3::MacLowTransmissionListener::MissedCts(), NS_LOG_DEBUG, NS_LOG_FUNCTION, and ns3::WifiRemoteStationManager::ReportRtsFailed().
Referenced by SendRtsForPacket().
void ns3::MacLow::DestroyBlockAckAgreement | ( | Mac48Address | originator, |
uint8_t | tid | ||
) |
originator | Address of peer participating in Block Ack mechanism. |
tid | TID for which Block Ack was created. |
Checks if exists an established block ack agreement with originator for tid tid. If the agreement exists, tears down it. This function is typically invoked when a DELBA frame is received from originator.
Definition at line 1808 of file mac-low.cc.
References m_bAckAgreements, m_bAckCaches, NS_ASSERT, RxCompleteBufferedPacketsUntilFirstLost(), and RxCompleteBufferedPacketsWithSmallerSequence().
Referenced by ns3::EdcaTxopN::GotAck(), and ns3::RegularWifiMac::Receive().
|
privatevirtual |
Definition at line 320 of file mac-low.cc.
References ns3::EventId::Cancel(), m_blockAckTimeoutEvent, m_ctsTimeoutEvent, m_endTxNoAckEvent, m_fastAckFailedTimeoutEvent, m_fastAckTimeoutEvent, m_normalAckTimeoutEvent, m_phy, m_phyMacLowListener, m_sendAckEvent, m_sendCtsEvent, m_sendDataEvent, m_stationManager, m_superFastAckTimeoutEvent, m_waitRifsEvent, m_waitSifsEvent, and NS_LOG_FUNCTION.
|
private |
Definition at line 1163 of file mac-low.cc.
References m_dcfListeners, m_lastNavStart, and ns3::Now().
Referenced by NavCounterResetCtsMissed(), and NotifyNav().
|
private |
Definition at line 1173 of file mac-low.cc.
References m_dcfListeners, m_lastNavDuration, m_lastNavStart, and ns3::Now().
Referenced by NotifyNav().
|
private |
Definition at line 1679 of file mac-low.cc.
References ns3::MacLowTransmissionListener::EndTxNoAck(), and m_listener.
Referenced by StartDataTxTimers().
|
private |
Definition at line 1687 of file mac-low.cc.
References m_listener, ns3::MacLowTransmissionListener::MissedAck(), NS_LOG_DEBUG, and NS_LOG_FUNCTION.
Referenced by ReceiveError().
|
private |
Definition at line 1264 of file mac-low.cc.
References ns3::WifiMacHeader::GetAddr1(), ns3::WifiPhy::IsStateIdle(), m_currentHdr, m_listener, m_phy, m_stationManager, ns3::MacLowTransmissionListener::MissedAck(), NS_LOG_DEBUG, NS_LOG_FUNCTION, and ns3::WifiRemoteStationManager::ReportDataFailed().
Referenced by StartDataTxTimers().
|
private |
Definition at line 1223 of file mac-low.cc.
References ns3::WifiMacHeader::GetAddr1(), ns3::WifiMacHeader::GetDuration(), ns3::WifiTxVector::GetMode(), ns3::WifiMacHeader::GetSequenceControl(), ns3::Packet::GetSize(), ns3::WifiMacHeader::GetTypeString(), m_currentHdr, m_phy, NS_LOG_DEBUG, NS_LOG_FUNCTION, and ns3::WifiPhy::SendPacket().
Referenced by SendAckAfterData(), SendBlockAckResponse(), SendCtsAfterRts(), SendCtsToSelf(), SendDataAfterCts(), SendDataPacket(), and SendRtsForPacket().
|
private |
Definition at line 942 of file mac-low.cc.
References ns3::WifiPhy::CalculateTxDuration(), GetAckSize(), ns3::WifiTxVector::GetMode(), ns3::WifiMode::GetModulationClass(), m_phy, ns3::WIFI_MOD_CLASS_HT, ns3::WIFI_PREAMBLE_HT_MF, and ns3::WIFI_PREAMBLE_LONG.
Referenced by CalculateOverallTxTime(), GetAckDuration(), SendAckAfterData(), SendBlockAckResponse(), SendCtsToSelf(), SendDataAfterCts(), SendDataPacket(), and SendRtsForPacket().
|
private |
Definition at line 936 of file mac-low.cc.
References GetAckDuration(), GetAckTxVectorForData(), and ns3::WifiTxVector::GetMode().
|
private |
Definition at line 901 of file mac-low.cc.
References ns3::WifiMacHeader::GetSize(), ns3::WifiMacHeader::SetType(), and ns3::WIFI_MAC_CTL_ACK.
Referenced by GetAckDuration().
Time ns3::MacLow::GetAckTimeout | ( | void | ) | const |
Definition at line 498 of file mac-low.cc.
References m_ackTimeout.
Referenced by ns3::RegularWifiMac::GetAckTimeout(), and StartDataTxTimers().
|
private |
Definition at line 1027 of file mac-low.cc.
References ns3::WifiRemoteStationManager::GetAckTxVector(), and m_stationManager.
Referenced by GetAckTxVectorForData(), and SendAckAfterData().
|
private |
Definition at line 1043 of file mac-low.cc.
References GetAckTxVector().
Referenced by GetAckDuration().
Mac48Address ns3::MacLow::GetAddress | ( | void | ) | const |
Definition at line 493 of file mac-low.cc.
References m_self.
Referenced by ns3::StaWifiMac::Enqueue(), ns3::AdhocWifiMac::Enqueue(), ns3::ApWifiMac::Enqueue(), ns3::MeshWifiInterfaceMac::Enqueue(), ns3::RegularWifiMac::GetAddress(), ns3::EdcaTxopN::SendAddBaRequest(), ns3::EdcaTxopN::SendBlockAckRequest(), SendBlockAckResponse(), and ns3::EdcaTxopN::SendDelbaFrame().
Time ns3::MacLow::GetBasicBlockAckTimeout | ( | ) | const |
Definition at line 503 of file mac-low.cc.
References m_basicBlockAckTimeout.
Referenced by ns3::RegularWifiMac::GetBasicBlockAckTimeout(), and StartDataTxTimers().
|
private |
Definition at line 952 of file mac-low.cc.
References ns3::WifiPhy::CalculateTxDuration(), GetBlockAckSize(), ns3::WifiTxVector::GetMode(), ns3::WifiMode::GetModulationClass(), m_phy, ns3::WIFI_MOD_CLASS_HT, ns3::WIFI_PREAMBLE_HT_MF, and ns3::WIFI_PREAMBLE_LONG.
Referenced by SendBlockAckResponse(), SendCtsToSelf(), and SendDataPacket().
|
private |
Definition at line 908 of file mac-low.cc.
References ns3::BASIC_BLOCK_ACK, ns3::COMPRESSED_BLOCK_ACK, ns3::CtrlBAckResponseHeader::GetSerializedSize(), ns3::WifiMacHeader::GetSize(), ns3::MULTI_TID_BLOCK_ACK, NS_ASSERT, ns3::CtrlBAckResponseHeader::SetType(), ns3::WifiMacHeader::SetType(), and ns3::WIFI_MAC_CTL_BACKRESP.
Referenced by GetBlockAckDuration().
|
private |
Definition at line 1032 of file mac-low.cc.
References ns3::WifiRemoteStationManager::GetBlockAckTxVector(), and m_stationManager.
Referenced by SendBlockAckResponse().
Mac48Address ns3::MacLow::GetBssid | ( | void | ) | const |
Definition at line 538 of file mac-low.cc.
References m_bssid.
Referenced by ns3::RegularWifiMac::GetBssid(), ns3::EdcaTxopN::NotifyAccessGranted(), and ns3::EdcaTxopN::SendBlockAckRequest().
Time ns3::MacLow::GetCompressedBlockAckTimeout | ( | ) | const |
Definition at line 508 of file mac-low.cc.
References m_compressedBlockAckTimeout.
Referenced by ns3::RegularWifiMac::GetCompressedBlockAckTimeout(), and StartDataTxTimers().
|
private |
Definition at line 977 of file mac-low.cc.
References ns3::WifiPhy::CalculateTxDuration(), GetCtsSize(), ns3::WifiTxVector::GetMode(), ns3::WifiMode::GetModulationClass(), m_phy, ns3::WIFI_MOD_CLASS_HT, ns3::WIFI_PREAMBLE_HT_MF, and ns3::WIFI_PREAMBLE_LONG.
Referenced by CalculateOverallTxTime(), GetCtsDuration(), SendCtsAfterRts(), and SendRtsForPacket().
|
private |
Definition at line 970 of file mac-low.cc.
References GetCtsDuration(), GetCtsTxVectorForRts(), and ns3::WifiTxVector::GetMode().
|
private |
Definition at line 987 of file mac-low.cc.
References ns3::WifiMacHeader::GetSize(), ns3::WifiMacHeader::SetType(), and ns3::WIFI_MAC_CTL_CTS.
Referenced by GetCtsDuration(), and SendCtsToSelf().
Time ns3::MacLow::GetCtsTimeout | ( | void | ) | const |
Definition at line 513 of file mac-low.cc.
References m_ctsTimeout.
Referenced by ns3::RegularWifiMac::GetCtsTimeout(), and SendRtsForPacket().
bool ns3::MacLow::GetCtsToSelfSupported | ( | ) | const |
Definition at line 453 of file mac-low.cc.
References m_ctsToSelfSupported.
Referenced by ns3::RegularWifiMac::GetCtsToSelfSupported().
|
private |
Definition at line 1001 of file mac-low.cc.
References ns3::WifiRemoteStationManager::GetCtsToSelfTxVector(), and m_stationManager.
Referenced by SendCtsToSelf().
|
private |
Definition at line 1022 of file mac-low.cc.
References ns3::WifiRemoteStationManager::GetCtsTxVector(), and m_stationManager.
Referenced by GetCtsTxVectorForRts(), and SendCtsAfterRts().
|
private |
Definition at line 1038 of file mac-low.cc.
References GetCtsTxVector().
Referenced by GetCtsDuration().
|
private |
Definition at line 1013 of file mac-low.cc.
References ns3::WifiMacHeader::GetAddr1(), ns3::WifiRemoteStationManager::GetDataTxVector(), ns3::WifiMacTrailer::GetSerializedSize(), ns3::WifiMacHeader::GetSize(), ns3::Packet::GetSize(), and m_stationManager.
Referenced by CalculateOverallTxTime(), CalculateTransmissionTime(), NeedCtsToSelf(), SendCtsToSelf(), SendDataAfterCts(), SendDataPacket(), and SendRtsForPacket().
Time ns3::MacLow::GetPifs | ( | void | ) | const |
Definition at line 533 of file mac-low.cc.
References m_pifs.
Referenced by ns3::RegularWifiMac::GetPifs(), and StartDataTxTimers().
Time ns3::MacLow::GetRifs | ( | void | ) | const |
Definition at line 523 of file mac-low.cc.
References m_rifs.
Referenced by ns3::RegularWifiMac::GetRifs(), and StartDataTxTimers().
|
private |
Definition at line 929 of file mac-low.cc.
References ns3::WifiMacHeader::GetSize(), ns3::WifiMacHeader::SetType(), and ns3::WIFI_MAC_CTL_RTS.
Referenced by CalculateOverallTxTime(), and SendRtsForPacket().
|
private |
Definition at line 1007 of file mac-low.cc.
References ns3::WifiMacHeader::GetAddr1(), ns3::WifiRemoteStationManager::GetRtsTxVector(), and m_stationManager.
Referenced by CalculateOverallTxTime(), NotifyNav(), and SendRtsForPacket().
Time ns3::MacLow::GetSifs | ( | void | ) | const |
Definition at line 518 of file mac-low.cc.
References m_sifs.
Referenced by CalculateOverallTxTime(), CalculateTransmissionTime(), ns3::RegularWifiMac::GetSifs(), NotifyNav(), ReceiveError(), ReceiveOk(), SendAckAfterData(), SendBlockAckResponse(), SendCtsAfterRts(), SendCtsToSelf(), SendDataAfterCts(), SendDataPacket(), SendRtsForPacket(), and StartDataTxTimers().
|
private |
Definition at line 994 of file mac-low.cc.
References ns3::WifiMacTrailer::GetSerializedSize(), ns3::WifiMacHeader::GetSize(), and ns3::Packet::GetSize().
Referenced by CalculateOverallTxTime(), SendCtsToSelf(), SendDataAfterCts(), SendRtsForPacket(), StartDataTxTimers(), and StartTransmission().
Time ns3::MacLow::GetSlotTime | ( | void | ) | const |
Definition at line 528 of file mac-low.cc.
References m_slotTime.
Referenced by ns3::RegularWifiMac::GetSlot(), and NotifyNav().
|
private |
Definition at line 1500 of file mac-low.cc.
References m_lastNavDuration, m_lastNavStart, and ns3::Simulator::Now().
Referenced by ReceiveOk().
|
private |
|
private |
Definition at line 1154 of file mac-low.cc.
References DoNavResetNow(), ns3::WifiPhy::GetLastRxStartTime(), and m_phy.
Referenced by NotifyNav().
|
private |
Definition at line 607 of file mac-low.cc.
References GetDataTxVector(), m_currentHdr, m_currentPacket, m_stationManager, and ns3::WifiRemoteStationManager::NeedCtsToSelf().
Referenced by StartTransmission().
|
private |
Definition at line 1251 of file mac-low.cc.
References ns3::WifiMacHeader::GetAddr1(), m_currentHdr, m_listener, m_stationManager, ns3::MacLowTransmissionListener::MissedAck(), NS_LOG_DEBUG, NS_LOG_FUNCTION, and ns3::WifiRemoteStationManager::ReportDataFailed().
Referenced by StartDataTxTimers().
|
private |
Definition at line 1198 of file mac-low.cc.
References m_dcfListeners.
Referenced by ReceiveOk().
|
private |
Definition at line 1190 of file mac-low.cc.
References m_dcfListeners.
Referenced by StartDataTxTimers().
|
private |
Definition at line 1214 of file mac-low.cc.
References m_dcfListeners.
Referenced by ReceiveOk().
|
private |
Definition at line 1206 of file mac-low.cc.
References m_dcfListeners.
Referenced by SendRtsForPacket().
|
private |
A STA that used information from an RTS frame as the most recent basis to update its NAV setting is permitted to reset its NAV if no PHY-RXSTART.indication is detected from the PHY during a period with a duration of (2 * aSIFSTime) + (CTS_Time) + (2 * aSlotTime) starting at the PHY-RXEND.indication corresponding to the detection of the RTS frame. The “CTS_Time” shall be calculated using the length of the CTS frame and the data rate at which the RTS frame used for the most recent NAV update was received.
Definition at line 1112 of file mac-low.cc.
References ns3::WifiPhy::CalculateTxDuration(), DoNavResetNow(), DoNavStartNow(), ns3::WifiMacHeader::GetAddr1(), ns3::WifiMacHeader::GetAddr2(), ns3::WifiMacHeader::GetDuration(), GetRtsTxVector(), ns3::WifiMacHeader::GetSerializedSize(), GetSifs(), GetSlotTime(), ns3::WifiMacHeader::IsCfpoll(), ns3::WifiMacHeader::IsRts(), m_bssid, m_lastNavStart, m_navCounterResetCtsMissed, m_phy, m_self, NavCounterResetCtsMissed(), ns3::Simulator::Now(), NS_ASSERT, ns3::Simulator::Schedule(), ns3::WifiMacHeader::SetType(), and ns3::WIFI_MAC_CTL_CTS.
Referenced by ReceiveOk().
void ns3::MacLow::NotifySwitchingStartNow | ( | Time | duration | ) |
duration | switching delay duration. |
This method is typically invoked by the PhyMacLowListener to notify the MAC layer that a channel switching occured. When a channel switching occurs, pending MAC transmissions (RTS, CTS, DATA and ACK) are cancelled.
Definition at line 627 of file mac-low.cc.
References ns3::EventId::Cancel(), CancelAllEvents(), ns3::EventId::IsRunning(), m_currentPacket, m_lastNavDuration, m_lastNavStart, m_listener, m_navCounterResetCtsMissed, m_stationManager, ns3::Now(), NS_LOG_DEBUG, and ns3::WifiRemoteStationManager::Reset().
Referenced by ns3::PhyMacLowListener::NotifySwitchingStart().
|
private |
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 613 of file mac-low.cc.
References FastAckFailedTimeout(), GetSifs(), ns3::EventId::IsExpired(), m_fastAckFailedTimeoutEvent, m_txParams, ns3::MacLowTransmissionParameters::MustWaitFastAck(), NS_ASSERT, NS_LOG_DEBUG, NS_LOG_FUNCTION, and ns3::Simulator::Schedule().
Referenced by SetPhy().
void ns3::MacLow::ReceiveOk | ( | Ptr< Packet > | packet, |
double | rxSnr, | ||
WifiMode | txMode, | ||
WifiPreamble | preamble | ||
) |
packet | packet received |
rxSnr | snr of packet received |
txMode | transmission mode of packet received |
preamble | type of preamble used for the packet received |
This method is typically invoked by the lower PHY layer to notify the MAC layer that a packet was successfully received.
Definition at line 643 of file mac-low.cc.
References ns3::EventId::Cancel(), ns3::WifiMacHeader::GetAddr1(), ns3::WifiMacHeader::GetAddr2(), ns3::WifiMacHeader::GetDuration(), ns3::WifiMacHeader::GetQosTid(), GetSifs(), ns3::CtrlBAckRequestHeader::GetStartingSequence(), ns3::CtrlBAckRequestHeader::GetTidInfo(), ns3::WifiMacHeader::GetTypeString(), ns3::MacLowTransmissionListener::GotAck(), ns3::MacLowTransmissionListener::GotBlockAck(), ns3::MacLowTransmissionListener::GotCts(), ns3::MacLowTransmissionParameters::HasNextPacket(), ns3::WifiMacHeader::IsAck(), ns3::WifiMacHeader::IsBlockAck(), ns3::WifiMacHeader::IsBlockAckReq(), ns3::WifiMacHeader::IsCtl(), ns3::WifiMacHeader::IsCts(), ns3::WifiMacHeader::IsData(), ns3::EventId::IsExpired(), ns3::Mac48Address::IsGroup(), ns3::WifiMacHeader::IsMgt(), ns3::CtrlBAckRequestHeader::IsMultiTid(), IsNavZero(), ns3::WifiMacHeader::IsQosAck(), ns3::WifiMacHeader::IsQosBlockAck(), ns3::WifiMacHeader::IsQosData(), ns3::WifiMacHeader::IsQosNoAck(), ns3::WifiMacHeader::IsRts(), ns3::EventId::IsRunning(), m_bAckAgreements, m_bAckCaches, m_blockAckTimeoutEvent, m_ctsTimeoutEvent, m_currentHdr, m_currentPacket, m_edcaListeners, m_fastAckTimeoutEvent, m_listener, m_normalAckTimeoutEvent, m_promisc, m_rxCallback, m_self, m_sendAckEvent, m_sendCtsEvent, m_sendDataEvent, m_stationManager, m_superFastAckTimeoutEvent, m_txParams, m_waitSifsEvent, ns3::MacLowTransmissionParameters::MustWaitAck(), ns3::MacLowTransmissionParameters::MustWaitBasicBlockAck(), ns3::MacLowTransmissionParameters::MustWaitCompressedBlockAck(), ns3::MacLowTransmissionParameters::MustWaitFastAck(), ns3::MacLowTransmissionParameters::MustWaitNormalAck(), NotifyAckTimeoutResetNow(), NotifyCtsTimeoutResetNow(), NotifyNav(), NS_ASSERT, NS_FATAL_ERROR, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::QosUtilsMapTidToAc(), ns3::Packet::RemoveHeader(), ns3::Packet::RemovePacketTag(), ns3::Packet::RemoveTrailer(), ns3::WifiRemoteStationManager::ReportDataOk(), ns3::WifiRemoteStationManager::ReportRtsOk(), ns3::WifiRemoteStationManager::ReportRxOk(), ResetBlockAckInactivityTimerIfNeeded(), RxCompleteBufferedPacketsUntilFirstLost(), RxCompleteBufferedPacketsWithSmallerSequence(), ns3::Simulator::Schedule(), SendAckAfterData(), SendBlockAckAfterBlockAckRequest(), SendCtsAfterRts(), SendDataAfterCts(), StoreMpduIfNeeded(), and WaitSifsAfterEndTx().
Referenced by SetPhy().
void ns3::MacLow::RegisterBlockAckListenerForAc | ( | enum AcIndex | ac, |
MacLowBlockAckEventListener * | listener | ||
) |
ac | Access class managed by the queue. |
listener | The listener for the queue. |
The lifetime of the registered listener is typically equal to the lifetime of the queue associated to this AC.
Definition at line 2055 of file mac-low.cc.
References m_edcaListeners.
Referenced by ns3::EdcaTxopN::CompleteConfig().
void ns3::MacLow::RegisterDcfListener | ( | MacLowDcfListener * | listener | ) |
listener | listen to NAV events for every incoming and outgoing packet. |
Definition at line 549 of file mac-low.cc.
References m_dcfListeners.
Referenced by ns3::DcfManager::SetupLowListener().
|
private |
Definition at line 2034 of file mac-low.cc.
References ns3::MacLowBlockAckEventListener::BlockAckInactivityTimeout(), ns3::EventId::Cancel(), ns3::BlockAckAgreement::GetPeer(), ns3::BlockAckAgreement::GetTid(), ns3::BlockAckAgreement::GetTimeout(), ns3::EventId::IsRunning(), m_edcaListeners, ns3::BlockAckAgreement::m_inactivityEvent, NS_ASSERT, ns3::QosUtilsMapTidToAc(), ns3::Simulator::Schedule(), and timeout.
Referenced by ReceiveOk().
|
private |
originator | Address of peer participating in Block Ack mechanism. |
tid | TID for which Block Ack was created. |
This method is typically invoked when a MPDU with ack policy subfield set to Normal Ack is received and a block ack agreement for that packet exists. This happens when the originator of block ack has only few MPDUs to send. All completed MSDUs starting with starting sequence number of block ack agreement are forward up to WifiMac until there is an incomplete or missing MSDU. See section 9.10.4 in IEEE802.11 standard for more details.
Definition at line 1884 of file mac-low.cc.
References m_bAckAgreements, and m_rxCallback.
Referenced by DestroyBlockAckAgreement(), ReceiveOk(), and SendBlockAckAfterBlockAckRequest().
|
private |
originator | Address of peer participating in Block Ack mechanism. |
tid | TID for which Block Ack was created. |
seq | Starting sequence |
This function forward up all completed "old" packets with sequence number smaller than seq. All comparison are performed circularly mod 4096.
Definition at line 1824 of file mac-low.cc.
References m_bAckAgreements, m_rxCallback, and ns3::QosUtilsMapSeqControlToUniqueInteger().
Referenced by DestroyBlockAckAgreement(), ReceiveOk(), and SendBlockAckAfterBlockAckRequest().
|
private |
Definition at line 1697 of file mac-low.cc.
References ns3::Packet::AddHeader(), ns3::Packet::AddPacketTag(), ns3::Packet::AddTrailer(), ForwardDown(), GetAckDuration(), GetAckTxVector(), ns3::WifiTxVector::GetMode(), ns3::WifiMode::GetModulationClass(), GetSifs(), NS_ASSERT, NS_LOG_FUNCTION, ns3::SnrTag::Set(), ns3::WifiMacHeader::SetAddr1(), ns3::WifiMacHeader::SetDsNotFrom(), ns3::WifiMacHeader::SetDsNotTo(), ns3::WifiMacHeader::SetDuration(), ns3::WifiMacHeader::SetNoMoreFragments(), ns3::WifiMacHeader::SetNoRetry(), ns3::WifiMacHeader::SetType(), ns3::WIFI_MAC_CTL_ACK, ns3::WIFI_MOD_CLASS_HT, ns3::WIFI_PREAMBLE_HT_MF, and ns3::WIFI_PREAMBLE_LONG.
Referenced by ReceiveOk().
|
private |
Definition at line 1986 of file mac-low.cc.
References ns3::BASIC_BLOCK_ACK, ns3::COMPRESSED_BLOCK_ACK, ns3::CtrlBAckRequestHeader::GetStartingSequence(), ns3::CtrlBAckRequestHeader::GetTidInfo(), ns3::CtrlBAckRequestHeader::IsBasic(), ns3::CtrlBAckRequestHeader::IsCompressed(), ns3::CtrlBAckRequestHeader::IsMultiTid(), m_bAckAgreements, m_bAckCaches, NS_ASSERT, NS_FATAL_ERROR, NS_LOG_DEBUG, NS_LOG_FUNCTION, RxCompleteBufferedPacketsUntilFirstLost(), RxCompleteBufferedPacketsWithSmallerSequence(), SendBlockAckResponse(), ns3::CtrlBAckResponseHeader::SetStartingSequence(), ns3::CtrlBAckResponseHeader::SetTidInfo(), and ns3::CtrlBAckResponseHeader::SetType().
Referenced by ReceiveOk().
|
private |
Definition at line 1916 of file mac-low.cc.
References ns3::Packet::AddHeader(), ns3::Packet::AddTrailer(), ns3::BASIC_BLOCK_ACK, ns3::COMPRESSED_BLOCK_ACK, ns3::MacLowTransmissionParameters::DisableAck(), ns3::MacLowTransmissionParameters::DisableNextData(), ns3::MacLowTransmissionParameters::EnableAck(), ForwardDown(), GetAckDuration(), GetAddress(), GetBlockAckDuration(), GetBlockAckTxVector(), ns3::WifiTxVector::GetMode(), ns3::WifiMode::GetModulationClass(), GetSifs(), ns3::CtrlBAckResponseHeader::IsBasic(), ns3::CtrlBAckResponseHeader::IsCompressed(), ns3::CtrlBAckResponseHeader::IsMultiTid(), m_currentHdr, m_currentPacket, m_txParams, NS_ASSERT, NS_FATAL_ERROR, ns3::WifiMacHeader::SetAddr1(), ns3::WifiMacHeader::SetAddr2(), ns3::WifiMacHeader::SetDsNotFrom(), ns3::WifiMacHeader::SetDsNotTo(), ns3::WifiMacHeader::SetDuration(), ns3::WifiTxVector::SetMode(), ns3::WifiMacHeader::SetNoMoreFragments(), ns3::WifiMacHeader::SetNoRetry(), ns3::WifiTxVector::SetNss(), ns3::WifiTxVector::SetStbc(), ns3::WifiMacHeader::SetType(), StartDataTxTimers(), ns3::WIFI_MAC_CTL_BACKRESP, ns3::WIFI_MOD_CLASS_HT, ns3::WIFI_PREAMBLE_HT_MF, and ns3::WIFI_PREAMBLE_LONG.
Referenced by SendBlockAckAfterBlockAckRequest().
|
private |
Definition at line 1596 of file mac-low.cc.
References ns3::Packet::AddHeader(), ns3::Packet::AddPacketTag(), ns3::Packet::AddTrailer(), ForwardDown(), GetCtsDuration(), GetCtsTxVector(), ns3::WifiTxVector::GetMode(), ns3::WifiMode::GetModulationClass(), GetSifs(), NS_ASSERT, NS_LOG_FUNCTION, ns3::SnrTag::Set(), ns3::WifiMacHeader::SetAddr1(), ns3::WifiMacHeader::SetDsNotFrom(), ns3::WifiMacHeader::SetDsNotTo(), ns3::WifiMacHeader::SetDuration(), ns3::WifiMacHeader::SetNoMoreFragments(), ns3::WifiMacHeader::SetNoRetry(), ns3::WifiMacHeader::SetType(), ns3::WIFI_MAC_CTL_CTS, ns3::WIFI_MOD_CLASS_HT, ns3::WIFI_PREAMBLE_HT_MF, and ns3::WIFI_PREAMBLE_LONG.
Referenced by ReceiveOk().
|
private |
Definition at line 1512 of file mac-low.cc.
References ns3::Packet::AddHeader(), ns3::Packet::AddTrailer(), ns3::BASIC_BLOCK_ACK, ns3::WifiPhy::CalculateTxDuration(), ns3::COMPRESSED_BLOCK_ACK, ForwardDown(), GetAckDuration(), ns3::WifiMacHeader::GetAddr1(), GetBlockAckDuration(), GetCtsSize(), GetCtsToSelfTxVector(), GetDataTxVector(), ns3::MacLowTransmissionParameters::GetDurationId(), ns3::WifiTxVector::GetMode(), ns3::WifiMode::GetModulationClass(), ns3::MacLowTransmissionParameters::GetNextPacketSize(), GetSifs(), GetSize(), ns3::MacLowTransmissionParameters::HasDurationId(), ns3::MacLowTransmissionParameters::HasNextPacket(), ns3::EventId::IsExpired(), m_currentHdr, m_currentPacket, m_phy, m_self, m_sendDataEvent, m_txParams, ns3::MacLowTransmissionParameters::MustWaitAck(), ns3::MacLowTransmissionParameters::MustWaitBasicBlockAck(), ns3::MacLowTransmissionParameters::MustWaitCompressedBlockAck(), NS_ASSERT, ns3::Simulator::Schedule(), SendDataAfterCts(), ns3::WifiMacHeader::SetAddr1(), ns3::WifiMacHeader::SetDsNotFrom(), ns3::WifiMacHeader::SetDsNotTo(), ns3::WifiMacHeader::SetDuration(), ns3::WifiMacHeader::SetNoMoreFragments(), ns3::WifiMacHeader::SetNoRetry(), ns3::WifiMacHeader::SetType(), ns3::WIFI_MAC_CTL_CTS, ns3::WIFI_MOD_CLASS_HT, ns3::WIFI_PREAMBLE_HT_MF, and ns3::WIFI_PREAMBLE_LONG.
Referenced by StartTransmission().
|
private |
|
private |
Definition at line 1633 of file mac-low.cc.
References ns3::Packet::AddHeader(), ns3::Packet::AddTrailer(), ns3::WifiPhy::CalculateTxDuration(), ForwardDown(), GetAckDuration(), ns3::WifiMacHeader::GetAddr1(), GetDataTxVector(), ns3::WifiPhy::GetGreenfield(), ns3::WifiRemoteStationManager::GetGreenfieldSupported(), ns3::WifiTxVector::GetMode(), ns3::WifiMode::GetModulationClass(), GetSifs(), GetSize(), m_currentHdr, m_currentPacket, m_phy, m_stationManager, NS_ASSERT, NS_LOG_FUNCTION, ns3::WifiMacHeader::SetDuration(), StartDataTxTimers(), ns3::WIFI_MOD_CLASS_HT, ns3::WIFI_PREAMBLE_HT_GF, ns3::WIFI_PREAMBLE_HT_MF, and ns3::WIFI_PREAMBLE_LONG.
Referenced by ReceiveOk(), and SendCtsToSelf().
|
private |
Definition at line 1438 of file mac-low.cc.
References ns3::Packet::AddHeader(), ns3::Packet::AddTrailer(), ns3::BASIC_BLOCK_ACK, ns3::WifiPhy::CalculateTxDuration(), ns3::COMPRESSED_BLOCK_ACK, ForwardDown(), GetAckDuration(), ns3::WifiMacHeader::GetAddr1(), GetBlockAckDuration(), GetDataTxVector(), ns3::MacLowTransmissionParameters::GetDurationId(), ns3::WifiPhy::GetGreenfield(), ns3::WifiRemoteStationManager::GetGreenfieldSupported(), ns3::WifiTxVector::GetMode(), ns3::WifiMode::GetModulationClass(), ns3::MacLowTransmissionParameters::GetNextPacketSize(), GetSifs(), ns3::MacLowTransmissionParameters::HasDurationId(), ns3::MacLowTransmissionParameters::HasNextPacket(), m_currentHdr, m_currentPacket, m_phy, m_stationManager, m_txParams, ns3::MacLowTransmissionParameters::MustWaitAck(), ns3::MacLowTransmissionParameters::MustWaitBasicBlockAck(), ns3::MacLowTransmissionParameters::MustWaitCompressedBlockAck(), NS_LOG_FUNCTION, ns3::WifiMacHeader::SetDuration(), StartDataTxTimers(), ns3::WIFI_MOD_CLASS_HT, ns3::WIFI_PREAMBLE_HT_GF, ns3::WIFI_PREAMBLE_HT_MF, and ns3::WIFI_PREAMBLE_LONG.
Referenced by StartTransmission().
|
private |
Definition at line 1311 of file mac-low.cc.
References ns3::Packet::AddHeader(), ns3::Packet::AddTrailer(), ns3::WifiPhy::CalculateTxDuration(), CtsTimeout(), ForwardDown(), GetAckDuration(), ns3::WifiMacHeader::GetAddr1(), GetCtsDuration(), GetCtsTimeout(), GetDataTxVector(), ns3::MacLowTransmissionParameters::GetDurationId(), ns3::WifiPhy::GetGreenfield(), ns3::WifiRemoteStationManager::GetGreenfieldSupported(), ns3::WifiTxVector::GetMode(), ns3::WifiMode::GetModulationClass(), GetRtsSize(), GetRtsTxVector(), GetSifs(), GetSize(), ns3::MacLowTransmissionParameters::HasDurationId(), ns3::EventId::IsExpired(), m_ctsTimeoutEvent, m_currentHdr, m_currentPacket, m_phy, m_self, m_stationManager, m_txParams, NotifyCtsTimeoutStartNow(), NS_ASSERT, NS_LOG_FUNCTION, ns3::Simulator::Schedule(), ns3::WifiMacHeader::SetAddr1(), ns3::WifiMacHeader::SetAddr2(), ns3::WifiMacHeader::SetDsNotFrom(), ns3::WifiMacHeader::SetDsNotTo(), ns3::WifiMacHeader::SetDuration(), ns3::WifiMacHeader::SetNoMoreFragments(), ns3::WifiMacHeader::SetNoRetry(), ns3::WifiMacHeader::SetType(), ns3::WIFI_MAC_CTL_RTS, ns3::WIFI_MOD_CLASS_HT, ns3::WIFI_PREAMBLE_HT_GF, ns3::WIFI_PREAMBLE_HT_MF, and ns3::WIFI_PREAMBLE_LONG.
Referenced by StartTransmission().
void ns3::MacLow::SetAckTimeout | ( | Time | ackTimeout | ) |
Definition at line 433 of file mac-low.cc.
References m_ackTimeout.
Referenced by ns3::RegularWifiMac::SetAckTimeout().
void ns3::MacLow::SetAddress | ( | Mac48Address | ad | ) |
Definition at line 428 of file mac-low.cc.
References m_self.
Referenced by ns3::RegularWifiMac::SetAddress().
void ns3::MacLow::SetBasicBlockAckTimeout | ( | Time | blockAckTimeout | ) |
Definition at line 438 of file mac-low.cc.
References m_basicBlockAckTimeout.
Referenced by ns3::RegularWifiMac::SetBasicBlockAckTimeout().
void ns3::MacLow::SetBssid | ( | Mac48Address | ad | ) |
Definition at line 483 of file mac-low.cc.
References m_bssid.
Referenced by ns3::RegularWifiMac::SetBssid().
void ns3::MacLow::SetCompressedBlockAckTimeout | ( | Time | blockAckTimeout | ) |
Definition at line 443 of file mac-low.cc.
References m_compressedBlockAckTimeout.
Referenced by ns3::RegularWifiMac::SetCompressedBlockAckTimeout().
void ns3::MacLow::SetCtsTimeout | ( | Time | ctsTimeout | ) |
Definition at line 458 of file mac-low.cc.
References m_ctsTimeout.
Referenced by ns3::RegularWifiMac::SetCtsTimeout().
void ns3::MacLow::SetCtsToSelfSupported | ( | bool | enable | ) |
Definition at line 448 of file mac-low.cc.
References m_ctsToSelfSupported.
Referenced by ns3::RegularWifiMac::SetCtsToSelfSupported().
Definition at line 414 of file mac-low.cc.
References m_phy, ns3::MakeCallback(), ReceiveError(), ReceiveOk(), ns3::WifiPhy::SetReceiveErrorCallback(), ns3::WifiPhy::SetReceiveOkCallback(), and SetupPhyMacLowListener().
Referenced by ns3::RegularWifiMac::SetWifiPhy().
void ns3::MacLow::SetPifs | ( | Time | pifs | ) |
Definition at line 473 of file mac-low.cc.
References m_pifs.
Referenced by ns3::RegularWifiMac::SetPifs().
void ns3::MacLow::SetPromisc | ( | void | ) |
Definition at line 488 of file mac-low.cc.
References m_promisc.
Referenced by ns3::RegularWifiMac::SetPromisc().
void ns3::MacLow::SetRifs | ( | Time | rifs | ) |
Definition at line 478 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 544 of file mac-low.cc.
References m_rxCallback.
Referenced by ns3::RegularWifiMac::RegularWifiMac().
void ns3::MacLow::SetSifs | ( | Time | sifs | ) |
Definition at line 463 of file mac-low.cc.
References m_sifs.
Referenced by ns3::RegularWifiMac::SetSifs().
void ns3::MacLow::SetSlotTime | ( | Time | slotTime | ) |
Definition at line 468 of file mac-low.cc.
References m_slotTime.
Referenced by ns3::RegularWifiMac::SetSlot().
Definition at line 312 of file mac-low.cc.
References m_phyMacLowListener, and ns3::WifiPhy::RegisterListener().
Referenced by SetPhy().
void ns3::MacLow::SetWifiRemoteStationManager | ( | Ptr< WifiRemoteStationManager > | manager | ) |
Definition at line 422 of file mac-low.cc.
References m_stationManager.
Referenced by ns3::RegularWifiMac::SetWifiRemoteStationManager().
|
private |
Definition at line 1368 of file mac-low.cc.
References BlockAckTimeout(), ns3::WifiPhy::CalculateTxDuration(), EndTxNoAck(), FastAckTimeout(), GetAckTimeout(), ns3::WifiMacHeader::GetAddr1(), GetBasicBlockAckTimeout(), GetCompressedBlockAckTimeout(), ns3::WifiPhy::GetGreenfield(), ns3::WifiRemoteStationManager::GetGreenfieldSupported(), ns3::WifiTxVector::GetMode(), ns3::WifiMode::GetModulationClass(), GetPifs(), GetRifs(), GetSifs(), GetSize(), ns3::WifiRemoteStationManager::HasHtSupported(), ns3::MacLowTransmissionParameters::HasNextPacket(), ns3::EventId::IsExpired(), m_blockAckTimeoutEvent, m_currentHdr, m_currentPacket, m_fastAckTimeoutEvent, m_normalAckTimeoutEvent, m_phy, m_stationManager, m_superFastAckTimeoutEvent, m_txParams, m_waitRifsEvent, m_waitSifsEvent, ns3::MacLowTransmissionParameters::MustWaitBasicBlockAck(), ns3::MacLowTransmissionParameters::MustWaitCompressedBlockAck(), ns3::MacLowTransmissionParameters::MustWaitFastAck(), ns3::MacLowTransmissionParameters::MustWaitNormalAck(), ns3::MacLowTransmissionParameters::MustWaitSuperFastAck(), NormalAckTimeout(), NotifyAckTimeoutStartNow(), NS_ASSERT, ns3::Simulator::Schedule(), SuperFastAckTimeout(), WaitSifsAfterEndTx(), ns3::WIFI_MOD_CLASS_HT, ns3::WIFI_PREAMBLE_HT_GF, ns3::WIFI_PREAMBLE_HT_MF, and ns3::WIFI_PREAMBLE_LONG.
Referenced by SendBlockAckResponse(), SendDataAfterCts(), and SendDataPacket().
void ns3::MacLow::StartTransmission | ( | Ptr< const Packet > | packet, |
const WifiMacHeader * | hdr, | ||
MacLowTransmissionParameters | parameters, | ||
MacLowTransmissionListener * | listener | ||
) |
packet | packet to send |
hdr | 802.11 header for packet to send |
parameters | the transmission parameters to use for this packet. |
listener | listen to transmission events. |
Start the transmission of the input packet and notify the listener of transmission events.
Definition at line 556 of file mac-low.cc.
References CancelAllEvents(), ns3::Packet::Copy(), ns3::WifiMacHeader::GetAddr1(), GetSize(), ns3::WifiPhy::IsStateTx(), m_ctsToSelfSupported, m_currentHdr, m_currentPacket, m_listener, m_phy, m_txParams, ns3::MacLowTransmissionParameters::MustSendRts(), NeedCtsToSelf(), NS_ASSERT, NS_LOG_DEBUG, NS_LOG_FUNCTION, SendCtsToSelf(), SendDataPacket(), and SendRtsForPacket().
Referenced by ns3::EdcaTxopN::NotifyAccessGranted(), ns3::DcaTxop::NotifyAccessGranted(), ns3::EdcaTxopN::SendAddBaRequest(), ns3::EdcaTxopN::SendBlockAckRequest(), ns3::EdcaTxopN::StartNext(), and ns3::DcaTxop::StartNext().
|
private |
Definition at line 1735 of file mac-low.cc.
References ns3::WifiMacHeader::GetAddr2(), ns3::WifiMacHeader::GetQosTid(), ns3::WifiMacHeader::GetSequenceControl(), m_bAckAgreements, m_bAckCaches, NS_ASSERT, ns3::QosUtilsMapSeqControlToUniqueInteger(), and ns3::Packet::RemoveTrailer().
Referenced by ReceiveOk().
|
private |
Definition at line 1292 of file mac-low.cc.
References ns3::WifiMacHeader::GetAddr1(), ns3::MacLowTransmissionListener::GotAck(), ns3::WifiPhy::IsStateIdle(), m_currentHdr, m_listener, m_phy, m_stationManager, ns3::MacLowTransmissionListener::MissedAck(), NS_LOG_DEBUG, NS_LOG_FUNCTION, and ns3::WifiRemoteStationManager::ReportDataFailed().
Referenced by StartDataTxTimers().
|
private |
Definition at line 1673 of file mac-low.cc.
References m_listener, and ns3::MacLowTransmissionListener::StartNext().
Referenced by ReceiveOk(), and StartDataTxTimers().
|
private |
Definition at line 653 of file mac-low.h.
Referenced by GetAckTimeout(), and SetAckTimeout().
|
private |
Definition at line 685 of file mac-low.h.
Referenced by CreateBlockAckAgreement(), DestroyBlockAckAgreement(), ReceiveOk(), RxCompleteBufferedPacketsUntilFirstLost(), RxCompleteBufferedPacketsWithSmallerSequence(), SendBlockAckAfterBlockAckRequest(), and StoreMpduIfNeeded().
|
private |
Definition at line 686 of file mac-low.h.
Referenced by CreateBlockAckAgreement(), DestroyBlockAckAgreement(), ReceiveOk(), SendBlockAckAfterBlockAckRequest(), and StoreMpduIfNeeded().
|
private |
Definition at line 654 of file mac-low.h.
Referenced by GetBasicBlockAckTimeout(), and SetBasicBlockAckTimeout().
|
private |
Definition at line 637 of file mac-low.h.
Referenced by CancelAllEvents(), DoDispose(), ReceiveOk(), and StartDataTxTimers().
|
private |
Definition at line 652 of file mac-low.h.
Referenced by GetBssid(), NotifyNav(), and SetBssid().
|
private |
Definition at line 655 of file mac-low.h.
Referenced by GetCompressedBlockAckTimeout(), and SetCompressedBlockAckTimeout().
|
private |
Definition at line 656 of file mac-low.h.
Referenced by GetCtsTimeout(), and SetCtsTimeout().
|
private |
Definition at line 638 of file mac-low.h.
Referenced by CancelAllEvents(), DoDispose(), ReceiveOk(), and SendRtsForPacket().
|
private |
Definition at line 690 of file mac-low.h.
Referenced by GetCtsToSelfSupported(), SetCtsToSelfSupported(), and StartTransmission().
|
private |
Definition at line 648 of file mac-low.h.
Referenced by BlockAckTimeout(), CalculateOverallTxTime(), CalculateTransmissionTime(), CtsTimeout(), FastAckTimeout(), ForwardDown(), NeedCtsToSelf(), NormalAckTimeout(), ReceiveOk(), SendBlockAckResponse(), SendCtsToSelf(), SendDataAfterCts(), SendDataPacket(), SendRtsForPacket(), StartDataTxTimers(), StartTransmission(), and SuperFastAckTimeout().
Definition at line 647 of file mac-low.h.
Referenced by CtsTimeout(), NeedCtsToSelf(), NotifySwitchingStartNow(), ReceiveOk(), SendBlockAckResponse(), SendCtsToSelf(), SendDataAfterCts(), SendDataPacket(), SendRtsForPacket(), StartDataTxTimers(), and StartTransmission().
|
private |
Definition at line 631 of file mac-low.h.
Referenced by DoNavResetNow(), DoNavStartNow(), NotifyAckTimeoutResetNow(), NotifyAckTimeoutStartNow(), NotifyCtsTimeoutResetNow(), NotifyCtsTimeoutStartNow(), and RegisterDcfListener().
|
private |
Definition at line 689 of file mac-low.h.
Referenced by CreateBlockAckAgreement(), ReceiveOk(), RegisterBlockAckListenerForAc(), and ResetBlockAckInactivityTimerIfNeeded().
|
private |
Definition at line 643 of file mac-low.h.
Referenced by CancelAllEvents(), and DoDispose().
|
private |
Definition at line 636 of file mac-low.h.
Referenced by CancelAllEvents(), DoDispose(), and ReceiveError().
|
private |
Definition at line 634 of file mac-low.h.
Referenced by CancelAllEvents(), DoDispose(), ReceiveOk(), and StartDataTxTimers().
|
private |
Definition at line 663 of file mac-low.h.
Referenced by DoNavStartNow(), IsNavZero(), MacLow(), and NotifySwitchingStartNow().
|
private |
Definition at line 662 of file mac-low.h.
Referenced by DoNavResetNow(), DoNavStartNow(), IsNavZero(), MacLow(), NotifyNav(), and NotifySwitchingStartNow().
|
private |
Definition at line 650 of file mac-low.h.
Referenced by BlockAckTimeout(), CancelAllEvents(), CtsTimeout(), EndTxNoAck(), FastAckFailedTimeout(), FastAckTimeout(), NormalAckTimeout(), NotifySwitchingStartNow(), ReceiveOk(), StartTransmission(), SuperFastAckTimeout(), and WaitSifsAfterEndTx().
|
private |
Definition at line 644 of file mac-low.h.
Referenced by NotifyNav(), and NotifySwitchingStartNow().
|
private |
Definition at line 633 of file mac-low.h.
Referenced by CancelAllEvents(), DoDispose(), ReceiveOk(), and StartDataTxTimers().
Definition at line 626 of file mac-low.h.
Referenced by CalculateOverallTxTime(), CalculateTransmissionTime(), DoDispose(), FastAckTimeout(), ForwardDown(), GetAckDuration(), GetBlockAckDuration(), GetCtsDuration(), NavCounterResetCtsMissed(), NotifyNav(), SendCtsToSelf(), SendDataAfterCts(), SendDataPacket(), SendRtsForPacket(), SetPhy(), StartDataTxTimers(), StartTransmission(), and SuperFastAckTimeout().
|
private |
Definition at line 668 of file mac-low.h.
Referenced by DoDispose(), and SetupPhyMacLowListener().
|
private |
|
private |
Definition at line 665 of file mac-low.h.
Referenced by MacLow(), ReceiveOk(), and SetPromisc().
|
private |
|
private |
Definition at line 628 of file mac-low.h.
Referenced by ReceiveOk(), RxCompleteBufferedPacketsUntilFirstLost(), RxCompleteBufferedPacketsWithSmallerSequence(), and SetRxCallback().
|
private |
Definition at line 651 of file mac-low.h.
Referenced by GetAddress(), NotifyNav(), ReceiveOk(), SendCtsToSelf(), SendRtsForPacket(), and SetAddress().
|
private |
Definition at line 640 of file mac-low.h.
Referenced by CancelAllEvents(), DoDispose(), and ReceiveOk().
|
private |
Definition at line 639 of file mac-low.h.
Referenced by CancelAllEvents(), DoDispose(), and ReceiveOk().
|
private |
Definition at line 641 of file mac-low.h.
Referenced by CancelAllEvents(), DoDispose(), ReceiveOk(), and SendCtsToSelf().
|
private |
|
private |
Definition at line 658 of file mac-low.h.
Referenced by GetSlotTime(), and SetSlotTime().
|
private |
Definition at line 627 of file mac-low.h.
Referenced by BlockAckTimeout(), CalculateOverallTxTime(), CalculateTransmissionTime(), CtsTimeout(), DoDispose(), FastAckTimeout(), GetAckTxVector(), GetBlockAckTxVector(), GetCtsToSelfTxVector(), GetCtsTxVector(), GetDataTxVector(), GetRtsTxVector(), NeedCtsToSelf(), NormalAckTimeout(), NotifySwitchingStartNow(), ReceiveOk(), SendDataAfterCts(), SendDataPacket(), SendRtsForPacket(), SetWifiRemoteStationManager(), StartDataTxTimers(), and SuperFastAckTimeout().
|
private |
Definition at line 635 of file mac-low.h.
Referenced by CancelAllEvents(), DoDispose(), ReceiveOk(), and StartDataTxTimers().
|
private |
Definition at line 649 of file mac-low.h.
Referenced by ReceiveError(), ReceiveOk(), SendBlockAckResponse(), SendCtsToSelf(), SendDataPacket(), SendRtsForPacket(), StartDataTxTimers(), and StartTransmission().
|
private |
Definition at line 645 of file mac-low.h.
Referenced by CancelAllEvents(), DoDispose(), and StartDataTxTimers().
|
private |
Definition at line 642 of file mac-low.h.
Referenced by CancelAllEvents(), DoDispose(), ReceiveOk(), and StartDataTxTimers().