hold a list of per-remote-station state. More...
#include <wifi-remote-station-manager.h>
Public Member Functions | |
WifiRemoteStationManager () | |
virtual | ~WifiRemoteStationManager () |
void | AddBasicMode (WifiMode mode) |
void | AddSupportedMode (Mac48Address address, WifiMode mode) |
WifiMode | GetAckMode (Mac48Address address, WifiMode dataMode) |
WifiMode | GetBasicMode (uint32_t i) const |
WifiMode | GetCtsMode (Mac48Address address, WifiMode rtsMode) |
WifiMode | GetDataMode (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet, uint32_t fullPacketSize) |
WifiMode | GetDefaultMode (void) const |
uint32_t | GetFragmentationThreshold (void) const |
uint32_t | GetFragmentOffset (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet, uint32_t fragmentNumber) |
uint32_t | GetFragmentSize (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet, uint32_t fragmentNumber) |
WifiRemoteStationInfo | GetInfo (Mac48Address address) |
uint32_t | GetMaxSlrc (void) const |
uint32_t | GetMaxSsrc (void) const |
uint32_t | GetNBasicModes (void) const |
WifiMode | GetNonUnicastMode (void) const |
uint32_t | GetRtsCtsThreshold (void) const |
WifiMode | GetRtsMode (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet) |
bool | IsAssociated (Mac48Address address) const |
bool | IsBrandNew (Mac48Address address) const |
bool | IsLastFragment (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet, uint32_t fragmentNumber) |
bool | IsWaitAssocTxOk (Mac48Address address) const |
bool | NeedDataRetransmission (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet) |
bool | NeedFragmentation (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet) |
bool | NeedRts (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet) |
bool | NeedRtsRetransmission (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet) |
void | PrepareForQueue (Mac48Address address, const WifiMacHeader *header, Ptr< const Packet > packet, uint32_t fullPacketSize) |
void | RecordDisassociated (Mac48Address address) |
void | RecordGotAssocTxFailed (Mac48Address address) |
void | RecordGotAssocTxOk (Mac48Address address) |
void | RecordWaitAssocTxOk (Mac48Address address) |
void | ReportDataFailed (Mac48Address address, const WifiMacHeader *header) |
void | ReportDataOk (Mac48Address address, const WifiMacHeader *header, double ackSnr, WifiMode ackMode, double dataSnr) |
void | ReportFinalDataFailed (Mac48Address address, const WifiMacHeader *header) |
void | ReportFinalRtsFailed (Mac48Address address, const WifiMacHeader *header) |
void | ReportRtsFailed (Mac48Address address, const WifiMacHeader *header) |
void | ReportRtsOk (Mac48Address address, const WifiMacHeader *header, double ctsSnr, WifiMode ctsMode, double rtsSnr) |
void | ReportRxOk (Mac48Address address, const WifiMacHeader *header, double rxSnr, WifiMode txMode) |
void | Reset (void) |
void | Reset (Mac48Address address) |
void | SetFragmentationThreshold (uint32_t threshold) |
void | SetMaxSlrc (uint32_t maxSlrc) |
void | SetMaxSsrc (uint32_t maxSsrc) |
void | SetRtsCtsThreshold (uint32_t threshold) |
virtual void | SetupPhy (Ptr< WifiPhy > phy) |
![]() | |
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 | Start (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) |
Static Public Member Functions | |
static TypeId | GetTypeId (void) |
Protected Member Functions | |
virtual void | DoDispose (void) |
uint32_t | GetNSupported (const WifiRemoteStation *station) const |
WifiMode | GetSupported (const WifiRemoteStation *station, uint32_t i) const |
![]() | |
Object (const Object &o) | |
virtual void | DoStart (void) |
virtual void | NotifyNewAggregate (void) |
Private Types | |
typedef std::vector < WifiRemoteStation * > | Stations |
typedef std::vector < WifiRemoteStationState * > | StationStates |
Private Member Functions | |
virtual WifiRemoteStation * | DoCreateStation (void) const =0 |
virtual WifiMode | DoGetDataMode (WifiRemoteStation *station, uint32_t size)=0 |
uint32_t | DoGetFragmentationThreshold (void) const |
virtual WifiMode | DoGetRtsMode (WifiRemoteStation *station)=0 |
virtual bool | DoNeedDataRetransmission (WifiRemoteStation *station, Ptr< const Packet > packet, bool normally) |
virtual bool | DoNeedFragmentation (WifiRemoteStation *station, Ptr< const Packet > packet, bool normally) |
virtual bool | DoNeedRts (WifiRemoteStation *station, Ptr< const Packet > packet, bool normally) |
virtual bool | DoNeedRtsRetransmission (WifiRemoteStation *station, Ptr< const Packet > packet, bool normally) |
virtual void | DoReportDataFailed (WifiRemoteStation *station)=0 |
virtual void | DoReportDataOk (WifiRemoteStation *station, double ackSnr, WifiMode ackMode, double dataSnr)=0 |
virtual void | DoReportFinalDataFailed (WifiRemoteStation *station)=0 |
virtual void | DoReportFinalRtsFailed (WifiRemoteStation *station)=0 |
virtual void | DoReportRtsFailed (WifiRemoteStation *station)=0 |
virtual void | DoReportRtsOk (WifiRemoteStation *station, double ctsSnr, WifiMode ctsMode, double rtsSnr)=0 |
virtual void | DoReportRxOk (WifiRemoteStation *station, double rxSnr, WifiMode txMode)=0 |
void | DoSetFragmentationThreshold (uint32_t threshold) |
WifiMode | GetControlAnswerMode (Mac48Address address, WifiMode reqMode) |
uint32_t | GetNFragments (const WifiMacHeader *header, Ptr< const Packet > packet) |
virtual bool | IsLowLatency (void) const =0 |
WifiRemoteStation * | Lookup (Mac48Address address, uint8_t tid) const |
WifiRemoteStation * | Lookup (Mac48Address address, const WifiMacHeader *header) const |
Find a remote station by its remote address and TID taken from MAC header. | |
WifiRemoteStationState * | LookupState (Mac48Address address) const |
Private Attributes | |
double | m_avgSlrcCoefficient |
WifiModeList | m_bssBasicRateSet |
WifiMode | m_defaultTxMode |
uint32_t | m_fragmentationThreshold |
bool | m_isLowLatency |
TracedCallback< Mac48Address > | m_macTxDataFailed |
TracedCallback< Mac48Address > | m_macTxFinalDataFailed |
TracedCallback< Mac48Address > | m_macTxFinalRtsFailed |
TracedCallback< Mac48Address > | m_macTxRtsFailed |
uint32_t | m_maxSlrc |
uint32_t | m_maxSsrc |
WifiMode | m_nonUnicastMode |
uint32_t | m_rtsCtsThreshold |
StationStates | m_states |
Stations | m_stations |
Ptr< WifiPhy > | m_wifiPhy |
hold a list of per-remote-station state.
ns3::WifiRemoteStationManager is accessible through the following paths with Config::Set and Config::Connect:
Definition at line 81 of file wifi-remote-station-manager.h.
|
private |
Definition at line 401 of file wifi-remote-station-manager.h.
|
private |
Definition at line 402 of file wifi-remote-station-manager.h.
ns3::WifiRemoteStationManager::WifiRemoteStationManager | ( | ) |
Definition at line 191 of file wifi-remote-station-manager.cc.
|
virtual |
Definition at line 195 of file wifi-remote-station-manager.cc.
void ns3::WifiRemoteStationManager::AddBasicMode | ( | WifiMode | mode | ) |
Definition at line 789 of file wifi-remote-station-manager.cc.
References GetBasicMode(), GetNBasicModes(), and m_bssBasicRateSet.
Referenced by ns3::StaWifiMac::Receive(), and ns3::MeshWifiInterfaceMac::Receive().
void ns3::WifiRemoteStationManager::AddSupportedMode | ( | Mac48Address | address, |
WifiMode | mode | ||
) |
Invoked in a STA or AP to store the set of modes supported by a destination which is also supported locally. The set of supported modes includes the BSSBasicRateSet.
Definition at line 275 of file wifi-remote-station-manager.cc.
References ns3::Mac48Address::IsGroup(), LookupState(), and NS_ASSERT.
Referenced by ns3::AdhocWifiMac::Enqueue(), ns3::MeshWifiInterfaceMac::ForwardDown(), ns3::StaWifiMac::Receive(), ns3::ApWifiMac::Receive(), ns3::MeshWifiInterfaceMac::Receive(), and Reset().
|
privatepure virtual |
Referenced by Lookup().
|
protectedvirtual |
This method is called by Object::Dispose or by the object's destructor, whichever comes first.
Subclasses are expected to implement their real destruction code in an overriden version of this method and chain up to their parent's implementation once they are done. i.e., for simplicity, the destructor of every subclass should be empty and its content should be moved to the associated DoDispose method.
It is safe to call GetObject from within this method.
Reimplemented from ns3::Object.
Definition at line 199 of file wifi-remote-station-manager.cc.
References m_states, and m_stations.
|
privatepure virtual |
station | the station with which we need to communicate |
size | size of the packet or fragment we want to send |
Note: This method is called before sending a unicast packet or a fragment of a unicast packet to decide which transmission mode to use.
Referenced by GetDataMode(), and PrepareForQueue().
|
private |
Definition at line 532 of file wifi-remote-station-manager.cc.
References m_fragmentationThreshold.
Referenced by GetFragmentationThreshold(), and GetTypeId().
|
privatepure virtual |
station | the station with which we need to communicate |
Note: This method is called before sending an rts to a station to decide which transmission mode to use for the rts.
Referenced by GetRtsMode(), and PrepareForQueue().
|
privatevirtual |
station | the station with which we need to communicate |
packet | the packet to send |
normally | indicates whether the normal 802.11 data retransmission mechanism would request that the data is retransmitted or not. |
Note: This method is called after a unicast packet transmission has been attempted and has failed.
Definition at line 837 of file wifi-remote-station-manager.cc.
Referenced by NeedDataRetransmission().
|
privatevirtual |
station | the station with which we need to communicate |
packet | the packet to send |
normally | indicates whether the normal 802.11 data fragmentation mechanism would request that the data packet is fragmented or not. |
Note: This method is called before sending a unicast packet.
Definition at line 843 of file wifi-remote-station-manager.cc.
Referenced by NeedFragmentation().
|
privatevirtual |
station | the station with which we need to communicate |
packet | the packet to send |
normally | indicates whether the normal 802.11 rts enable mechanism would request that the rts is sent or not. |
Note: This method is called before a unicast packet is sent on the medium.
Definition at line 825 of file wifi-remote-station-manager.cc.
Referenced by NeedRts().
|
privatevirtual |
station | the station with which we need to communicate |
packet | the packet to send |
normally | indicates whether the normal 802.11 rts enable mechanism would request that the rts is retransmitted or not. |
Note: This method is called after an rts/cts handshake has been attempted and has failed.
Definition at line 831 of file wifi-remote-station-manager.cc.
Referenced by NeedRtsRetransmission().
|
privatepure virtual |
|
privatepure virtual |
|
privatepure virtual |
|
privatepure virtual |
|
privatepure virtual |
|
privatepure virtual |
|
privatepure virtual |
|
private |
Definition at line 503 of file wifi-remote-station-manager.cc.
References m_fragmentationThreshold, and NS_LOG_WARN.
Referenced by GetTypeId(), and SetFragmentationThreshold().
WifiMode ns3::WifiRemoteStationManager::GetAckMode | ( | Mac48Address | address, |
WifiMode | dataMode | ||
) |
address | |
dataMode | the transmission mode used to send an ACK we just received |
Definition at line 703 of file wifi-remote-station-manager.cc.
References GetControlAnswerMode(), ns3::Mac48Address::IsGroup(), and NS_ASSERT.
Referenced by ns3::MacLow::GetAckTxModeForData().
WifiMode ns3::WifiRemoteStationManager::GetBasicMode | ( | uint32_t | i | ) | const |
Definition at line 806 of file wifi-remote-station-manager.cc.
References m_bssBasicRateSet, and NS_ASSERT.
Referenced by AddBasicMode(), ns3::MeshWifiInterfaceMac::CheckSupportedRates(), ns3::IdealWifiManager::DoGetRtsMode(), GetNonUnicastMode(), ns3::ApWifiMac::GetSupportedRates(), ns3::MeshWifiInterfaceMac::GetSupportedRates(), and ns3::ApWifiMac::Receive().
|
private |
The standard has relatively unambiguous rules for selecting a control response rate (the below is quoted from IEEE 802.11-2007, Section 9.6):
To allow the transmitting STA to calculate the contents of the Duration/ID field, a STA responding to a received frame shall transmit its Control Response frame (either CTS or ACK), other than the BlockAck control frame, at the highest rate in the BSSBasicRateSet parameter that is less than or equal to the rate of the immediately previous frame in the frame exchange sequence (as defined in 9.12) and that is of the same modulation class (see 9.6.1) as the received frame...
If no suitable basic rate was found, we search the mandatory rates. The standard (IEEE 802.11-2007, Section 9.6) says:
...If no rate contained in the BSSBasicRateSet parameter meets these conditions, then the control frame sent in response to a received frame shall be transmitted at the highest mandatory rate of the PHY that is less than or equal to the rate of the received frame, and that is of the same modulation class as the received frame. In addition, the Control Response frame shall be sent using the same PHY options as the received frame, unless they conflict with the requirement to use the BSSBasicRateSet parameter.
TODO: Note that we're ignoring the last sentence for now, because there is not yet any manipulation here of PHY options.
If we still haven't found a suitable rate for the response then someone has messed up the simulation config. This probably means that the WifiPhyStandard is not set correctly, or that a rate that is not supported by the PHY has been explicitly requested in a WifiRemoteStationManager (or descendant) configuration.
Either way, it is serious - we can either disobey the standard or fail, and I have chosen to do the latter...
Definition at line 591 of file wifi-remote-station-manager.cc.
References GetDefaultMode(), ns3::WifiPhy::GetMode(), ns3::WifiMode::GetModulationClass(), ns3::WifiPhy::GetNModes(), ns3::WifiMode::GetPhyRate(), ns3::WifiMode::IsMandatory(), m_bssBasicRateSet, m_wifiPhy, and NS_FATAL_ERROR.
Referenced by GetAckMode(), and GetCtsMode().
WifiMode ns3::WifiRemoteStationManager::GetCtsMode | ( | Mac48Address | address, |
WifiMode | rtsMode | ||
) |
address | remote address |
rtsMode | the transmission mode used to send an RTS we just received |
Definition at line 697 of file wifi-remote-station-manager.cc.
References GetControlAnswerMode(), ns3::Mac48Address::IsGroup(), and NS_ASSERT.
Referenced by ns3::MacLow::GetCtsTxModeForRts().
WifiMode ns3::WifiRemoteStationManager::GetDataMode | ( | Mac48Address | address, |
const WifiMacHeader * | header, | ||
Ptr< const Packet > | packet, | ||
uint32_t | fullPacketSize | ||
) |
address | remote address |
header | MAC header |
packet | the packet to send |
fullPacketSize | the size of the packet after its 802.11 MAC header has been added. |
Definition at line 359 of file wifi-remote-station-manager.cc.
References DoGetDataMode(), ns3::TxModeTag::GetDataMode(), GetNonUnicastMode(), ns3::Mac48Address::IsGroup(), IsLowLatency(), Lookup(), and NS_ASSERT.
Referenced by ns3::dot11s::AirtimeLinkMetricCalculator::CalculateMetric(), and ns3::MacLow::GetDataTxMode().
WifiMode ns3::WifiRemoteStationManager::GetDefaultMode | ( | void | ) | const |
Definition at line 772 of file wifi-remote-station-manager.cc.
References m_defaultTxMode.
Referenced by ns3::IdealWifiManager::DoGetDataMode(), ns3::IdealWifiManager::DoGetRtsMode(), GetControlAnswerMode(), LookupState(), and Reset().
uint32_t ns3::WifiRemoteStationManager::GetFragmentationThreshold | ( | void | ) | const |
Definition at line 241 of file wifi-remote-station-manager.cc.
References DoGetFragmentationThreshold().
Referenced by GetFragmentOffset(), GetFragmentSize(), GetNFragments(), and NeedFragmentation().
uint32_t ns3::WifiRemoteStationManager::GetFragmentOffset | ( | Mac48Address | address, |
const WifiMacHeader * | header, | ||
Ptr< const Packet > | packet, | ||
uint32_t | fragmentNumber | ||
) |
address | remote address |
header | MAC header |
packet | the packet to send |
fragmentNumber | the fragment index of the next fragment to send (starts at zero). |
Definition at line 574 of file wifi-remote-station-manager.cc.
References GetFragmentationThreshold(), GetNFragments(), ns3::WifiMacHeader::GetSize(), ns3::Mac48Address::IsGroup(), NS_ASSERT, and ns3::WIFI_MAC_FCS_LENGTH.
Referenced by ns3::EdcaTxopN::GetFragmentOffset(), and ns3::DcaTxop::GetFragmentOffset().
uint32_t ns3::WifiRemoteStationManager::GetFragmentSize | ( | Mac48Address | address, |
const WifiMacHeader * | header, | ||
Ptr< const Packet > | packet, | ||
uint32_t | fragmentNumber | ||
) |
address | remote address |
header | MAC header |
packet | the packet to send |
fragmentNumber | the fragment index of the next fragment to send (starts at zero). |
Definition at line 552 of file wifi-remote-station-manager.cc.
References GetFragmentationThreshold(), GetNFragments(), ns3::WifiMacHeader::GetSize(), ns3::Packet::GetSize(), ns3::Mac48Address::IsGroup(), NS_ASSERT, and ns3::WIFI_MAC_FCS_LENGTH.
Referenced by ns3::EdcaTxopN::GetFragmentSize(), ns3::DcaTxop::GetFragmentSize(), ns3::EdcaTxopN::GetNextFragmentSize(), and ns3::DcaTxop::GetNextFragmentSize().
WifiRemoteStationInfo ns3::WifiRemoteStationManager::GetInfo | ( | Mac48Address | address | ) |
Definition at line 710 of file wifi-remote-station-manager.cc.
References LookupState(), and ns3::WifiRemoteStationState::m_info.
Referenced by ns3::dot11s::AirtimeLinkMetricCalculator::CalculateMetric().
uint32_t ns3::WifiRemoteStationManager::GetMaxSlrc | ( | void | ) | const |
Definition at line 231 of file wifi-remote-station-manager.cc.
References m_maxSlrc.
Referenced by NeedDataRetransmission().
uint32_t ns3::WifiRemoteStationManager::GetMaxSsrc | ( | void | ) | const |
Definition at line 226 of file wifi-remote-station-manager.cc.
References m_maxSsrc.
Referenced by NeedRtsRetransmission().
uint32_t ns3::WifiRemoteStationManager::GetNBasicModes | ( | void | ) | const |
Definition at line 801 of file wifi-remote-station-manager.cc.
References m_bssBasicRateSet.
Referenced by AddBasicMode(), ns3::MeshWifiInterfaceMac::CheckSupportedRates(), ns3::IdealWifiManager::DoGetRtsMode(), ns3::ApWifiMac::GetSupportedRates(), ns3::MeshWifiInterfaceMac::GetSupportedRates(), and ns3::ApWifiMac::Receive().
|
private |
Definition at line 538 of file wifi-remote-station-manager.cc.
References GetFragmentationThreshold(), ns3::WifiMacHeader::GetSize(), ns3::Packet::GetSize(), and ns3::WIFI_MAC_FCS_LENGTH.
Referenced by GetFragmentOffset(), GetFragmentSize(), and IsLastFragment().
WifiMode ns3::WifiRemoteStationManager::GetNonUnicastMode | ( | void | ) | const |
Definition at line 812 of file wifi-remote-station-manager.cc.
References GetBasicMode(), and m_nonUnicastMode.
Referenced by GetDataMode().
|
protected |
Definition at line 856 of file wifi-remote-station-manager.cc.
References ns3::WifiRemoteStationState::m_operationalRateSet, and ns3::WifiRemoteStation::m_state.
Referenced by ns3::MinstrelWifiManager::CheckInit(), ns3::AmrrWifiManager::DoGetDataMode(), ns3::OnoeWifiManager::DoGetDataMode(), ns3::IdealWifiManager::DoGetDataMode(), ns3::AarfWifiManager::DoReportDataOk(), ns3::AarfcdWifiManager::DoReportDataOk(), ns3::CaraWifiManager::DoReportDataOk(), ns3::RraaWifiManager::GetMaxRate(), GetSupported(), ns3::AmrrWifiManager::IncreaseRate(), ns3::AmrrWifiManager::IsMaxRate(), ns3::AmrrWifiManager::UpdateMode(), and ns3::OnoeWifiManager::UpdateMode().
uint32_t ns3::WifiRemoteStationManager::GetRtsCtsThreshold | ( | void | ) | const |
Definition at line 236 of file wifi-remote-station-manager.cc.
References m_rtsCtsThreshold.
Referenced by NeedRts().
WifiMode ns3::WifiRemoteStationManager::GetRtsMode | ( | Mac48Address | address, |
const WifiMacHeader * | header, | ||
Ptr< const Packet > | packet | ||
) |
address | remote address |
header | MAC header |
packet | the packet to send |
Definition at line 377 of file wifi-remote-station-manager.cc.
References DoGetRtsMode(), ns3::TxModeTag::GetRtsMode(), ns3::Mac48Address::IsGroup(), IsLowLatency(), Lookup(), and NS_ASSERT.
Referenced by ns3::MacLow::GetRtsTxMode().
|
protected |
Definition at line 850 of file wifi-remote-station-manager.cc.
References GetNSupported(), ns3::WifiRemoteStationState::m_operationalRateSet, ns3::WifiRemoteStation::m_state, and NS_ASSERT.
Referenced by ns3::AarfWifiManager::DoGetDataMode(), ns3::CaraWifiManager::DoGetDataMode(), ns3::AarfcdWifiManager::DoGetDataMode(), ns3::AmrrWifiManager::DoGetDataMode(), ns3::OnoeWifiManager::DoGetDataMode(), ns3::ArfWifiManager::DoGetDataMode(), ns3::IdealWifiManager::DoGetDataMode(), ns3::RraaWifiManager::DoGetDataMode(), ns3::MinstrelWifiManager::DoGetDataMode(), ns3::AarfWifiManager::DoGetRtsMode(), ns3::AarfcdWifiManager::DoGetRtsMode(), ns3::CaraWifiManager::DoGetRtsMode(), ns3::AmrrWifiManager::DoGetRtsMode(), ns3::OnoeWifiManager::DoGetRtsMode(), ns3::ArfWifiManager::DoGetRtsMode(), ns3::RraaWifiManager::DoGetRtsMode(), ns3::MinstrelWifiManager::DoGetRtsMode(), ns3::RraaWifiManager::GetThresholds(), and ns3::MinstrelWifiManager::RateInit().
|
static |
Reimplemented from ns3::Object.
Reimplemented in ns3::MinstrelWifiManager, ns3::IdealWifiManager, ns3::ArfWifiManager, ns3::OnoeWifiManager, ns3::AmrrWifiManager, ns3::RraaWifiManager, ns3::AarfcdWifiManager, ns3::CaraWifiManager, ns3::AarfWifiManager, and ns3::ConstantRateWifiManager.
Definition at line 135 of file wifi-remote-station-manager.cc.
References DoGetFragmentationThreshold(), DoSetFragmentationThreshold(), IsLowLatency(), m_macTxDataFailed, m_macTxFinalDataFailed, m_macTxFinalRtsFailed, m_macTxRtsFailed, m_maxSlrc, m_maxSsrc, m_nonUnicastMode, m_rtsCtsThreshold, ns3::MakeTraceSourceAccessor(), and ns3::TypeId::SetParent().
bool ns3::WifiRemoteStationManager::IsAssociated | ( | Mac48Address | address | ) | const |
Definition at line 299 of file wifi-remote-station-manager.cc.
References ns3::WifiRemoteStationState::GOT_ASSOC_TX_OK, ns3::Mac48Address::IsGroup(), LookupState(), and ns3::WifiRemoteStationState::m_state.
Referenced by ns3::ApWifiMac::Enqueue(), and ns3::ApWifiMac::Receive().
bool ns3::WifiRemoteStationManager::IsBrandNew | ( | Mac48Address | address | ) | const |
Definition at line 290 of file wifi-remote-station-manager.cc.
References ns3::WifiRemoteStationState::BRAND_NEW, ns3::Mac48Address::IsGroup(), LookupState(), and ns3::WifiRemoteStationState::m_state.
Referenced by ns3::AdhocWifiMac::Enqueue(), and ns3::MeshWifiInterfaceMac::ForwardDown().
bool ns3::WifiRemoteStationManager::IsLastFragment | ( | Mac48Address | address, |
const WifiMacHeader * | header, | ||
Ptr< const Packet > | packet, | ||
uint32_t | fragmentNumber | ||
) |
address | remote address |
header | MAC header |
packet | the packet to send |
fragmentNumber | the fragment index of the next fragment to send (starts at zero). |
Definition at line 583 of file wifi-remote-station-manager.cc.
References GetNFragments(), ns3::Mac48Address::IsGroup(), and NS_ASSERT.
Referenced by ns3::EdcaTxopN::IsLastFragment(), and ns3::DcaTxop::IsLastFragment().
|
privatepure virtual |
Note: In this context, low vs high latency is defined in IEEE 802.11 Rate Adaptation: A Practical Approach, by M. Lacage, M.H. Manshaei, and T. Turletti.
Referenced by GetDataMode(), GetRtsMode(), GetTypeId(), and PrepareForQueue().
bool ns3::WifiRemoteStationManager::IsWaitAssocTxOk | ( | Mac48Address | address | ) | const |
Definition at line 308 of file wifi-remote-station-manager.cc.
References ns3::Mac48Address::IsGroup(), LookupState(), ns3::WifiRemoteStationState::m_state, and ns3::WifiRemoteStationState::WAIT_ASSOC_TX_OK.
Referenced by ns3::ApWifiMac::TxFailed(), and ns3::ApWifiMac::TxOk().
|
private |
Definition at line 748 of file wifi-remote-station-manager.cc.
References DoCreateStation(), LookupState(), ns3::WifiRemoteStation::m_slrc, ns3::WifiRemoteStation::m_ssrc, ns3::WifiRemoteStation::m_state, m_stations, and ns3::WifiRemoteStation::m_tid.
Referenced by GetDataMode(), GetRtsMode(), Lookup(), NeedDataRetransmission(), NeedFragmentation(), NeedRts(), NeedRtsRetransmission(), PrepareForQueue(), ReportDataFailed(), ReportDataOk(), ReportFinalDataFailed(), ReportFinalRtsFailed(), ReportRtsFailed(), ReportRtsOk(), and ReportRxOk().
|
private |
Find a remote station by its remote address and TID taken from MAC header.
Definition at line 734 of file wifi-remote-station-manager.cc.
References ns3::WifiMacHeader::GetQosTid(), ns3::WifiMacHeader::IsQosData(), and Lookup().
|
private |
Definition at line 717 of file wifi-remote-station-manager.cc.
References ns3::WifiRemoteStationState::BRAND_NEW, GetDefaultMode(), ns3::WifiRemoteStationState::m_address, ns3::WifiRemoteStationState::m_operationalRateSet, ns3::WifiRemoteStationState::m_state, and m_states.
Referenced by AddSupportedMode(), GetInfo(), IsAssociated(), IsBrandNew(), IsWaitAssocTxOk(), Lookup(), RecordDisassociated(), RecordGotAssocTxFailed(), RecordGotAssocTxOk(), RecordWaitAssocTxOk(), and Reset().
bool ns3::WifiRemoteStationManager::NeedDataRetransmission | ( | Mac48Address | address, |
const WifiMacHeader * | header, | ||
Ptr< const Packet > | packet | ||
) |
address | remote address |
header | MAC header |
packet | the packet to send |
Definition at line 481 of file wifi-remote-station-manager.cc.
References DoNeedDataRetransmission(), GetMaxSlrc(), ns3::Mac48Address::IsGroup(), Lookup(), and NS_ASSERT.
Referenced by ns3::EdcaTxopN::NeedDataRetransmission(), and ns3::DcaTxop::NeedDataRetransmission().
bool ns3::WifiRemoteStationManager::NeedFragmentation | ( | Mac48Address | address, |
const WifiMacHeader * | header, | ||
Ptr< const Packet > | packet | ||
) |
address | remote address |
header | MAC header |
packet | the packet to send |
Definition at line 490 of file wifi-remote-station-manager.cc.
References DoNeedFragmentation(), GetFragmentationThreshold(), ns3::WifiMacHeader::GetSize(), ns3::Packet::GetSize(), ns3::Mac48Address::IsGroup(), Lookup(), and ns3::WIFI_MAC_FCS_LENGTH.
Referenced by ns3::EdcaTxopN::NeedFragmentation(), and ns3::DcaTxop::NeedFragmentation().
bool ns3::WifiRemoteStationManager::NeedRts | ( | Mac48Address | address, |
const WifiMacHeader * | header, | ||
Ptr< const Packet > | packet | ||
) |
address | remote address |
header | MAC header |
packet | the packet to send |
Definition at line 461 of file wifi-remote-station-manager.cc.
References DoNeedRts(), GetRtsCtsThreshold(), ns3::WifiMacHeader::GetSize(), ns3::Packet::GetSize(), ns3::Mac48Address::IsGroup(), Lookup(), and ns3::WIFI_MAC_FCS_LENGTH.
Referenced by ns3::EdcaTxopN::NeedRts(), and ns3::DcaTxop::NeedRts().
bool ns3::WifiRemoteStationManager::NeedRtsRetransmission | ( | Mac48Address | address, |
const WifiMacHeader * | header, | ||
Ptr< const Packet > | packet | ||
) |
address | remote address |
header | MAC header |
packet | the packet to send |
Definition at line 472 of file wifi-remote-station-manager.cc.
References DoNeedRtsRetransmission(), GetMaxSsrc(), ns3::Mac48Address::IsGroup(), Lookup(), and NS_ASSERT.
Referenced by ns3::EdcaTxopN::NeedRtsRetransmission(), and ns3::DcaTxop::NeedRtsRetransmission().
void ns3::WifiRemoteStationManager::PrepareForQueue | ( | Mac48Address | address, |
const WifiMacHeader * | header, | ||
Ptr< const Packet > | packet, | ||
uint32_t | fullPacketSize | ||
) |
address | remote address |
header | MAC header |
packet | the packet to queue |
fullPacketSize | the size of the packet after its 802.11 MAC header has been added. |
This method is typically invoked just before queuing a packet for transmission. It is a no-op unless the IsLowLatency attribute of the attached ns3::WifiRemoteStationManager is set to false, in which case, the tx parameters of the packet are calculated and stored in the packet as a tag. These tx parameters are later retrieved from GetDadaMode and GetRtsMode.
Definition at line 341 of file wifi-remote-station-manager.cc.
References ns3::Packet::AddPacketTag(), data, DoGetDataMode(), DoGetRtsMode(), ns3::Mac48Address::IsGroup(), IsLowLatency(), and Lookup().
Referenced by ns3::EdcaTxopN::PushFront(), ns3::DcaTxop::Queue(), and ns3::EdcaTxopN::Queue().
void ns3::WifiRemoteStationManager::RecordDisassociated | ( | Mac48Address | address | ) |
Definition at line 335 of file wifi-remote-station-manager.cc.
References ns3::WifiRemoteStationState::DISASSOC, ns3::Mac48Address::IsGroup(), LookupState(), ns3::WifiRemoteStationState::m_state, and NS_ASSERT.
Referenced by ns3::AdhocWifiMac::Enqueue(), ns3::MeshWifiInterfaceMac::ForwardDown(), and ns3::ApWifiMac::Receive().
void ns3::WifiRemoteStationManager::RecordGotAssocTxFailed | ( | Mac48Address | address | ) |
Definition at line 329 of file wifi-remote-station-manager.cc.
References ns3::WifiRemoteStationState::DISASSOC, ns3::Mac48Address::IsGroup(), LookupState(), ns3::WifiRemoteStationState::m_state, and NS_ASSERT.
Referenced by ns3::ApWifiMac::TxFailed().
void ns3::WifiRemoteStationManager::RecordGotAssocTxOk | ( | Mac48Address | address | ) |
Definition at line 323 of file wifi-remote-station-manager.cc.
References ns3::WifiRemoteStationState::GOT_ASSOC_TX_OK, ns3::Mac48Address::IsGroup(), LookupState(), ns3::WifiRemoteStationState::m_state, and NS_ASSERT.
Referenced by ns3::ApWifiMac::TxOk().
void ns3::WifiRemoteStationManager::RecordWaitAssocTxOk | ( | Mac48Address | address | ) |
Definition at line 317 of file wifi-remote-station-manager.cc.
References ns3::Mac48Address::IsGroup(), LookupState(), ns3::WifiRemoteStationState::m_state, NS_ASSERT, and ns3::WifiRemoteStationState::WAIT_ASSOC_TX_OK.
Referenced by ns3::ApWifiMac::Receive().
void ns3::WifiRemoteStationManager::ReportDataFailed | ( | Mac48Address | address, |
const WifiMacHeader * | header | ||
) |
Should be invoked whenever the AckTimeout associated to a transmission attempt expires.
Definition at line 401 of file wifi-remote-station-manager.cc.
References DoReportDataFailed(), ns3::Mac48Address::IsGroup(), Lookup(), m_macTxDataFailed, and NS_ASSERT.
Referenced by ns3::MacLow::BlockAckTimeout(), ns3::MacLow::FastAckTimeout(), ns3::MacLow::NormalAckTimeout(), and ns3::MacLow::SuperFastAckTimeout().
void ns3::WifiRemoteStationManager::ReportDataOk | ( | Mac48Address | address, |
const WifiMacHeader * | header, | ||
double | ackSnr, | ||
WifiMode | ackMode, | ||
double | dataSnr | ||
) |
Should be invoked whenever we receive the Ack associated to a data packet we just sent.
Definition at line 420 of file wifi-remote-station-manager.cc.
References DoReportDataOk(), ns3::Mac48Address::IsGroup(), Lookup(), and NS_ASSERT.
Referenced by ns3::MacLow::ReceiveOk().
void ns3::WifiRemoteStationManager::ReportFinalDataFailed | ( | Mac48Address | address, |
const WifiMacHeader * | header | ||
) |
Should be invoked after calling ReportDataFailed if NeedDataRetransmission returns false
Definition at line 440 of file wifi-remote-station-manager.cc.
References DoReportFinalDataFailed(), ns3::Mac48Address::IsGroup(), Lookup(), m_macTxFinalDataFailed, and NS_ASSERT.
Referenced by ns3::EdcaTxopN::MissedAck(), and ns3::DcaTxop::MissedAck().
void ns3::WifiRemoteStationManager::ReportFinalRtsFailed | ( | Mac48Address | address, |
const WifiMacHeader * | header | ||
) |
Should be invoked after calling ReportRtsFailed if NeedRtsRetransmission returns false
Definition at line 430 of file wifi-remote-station-manager.cc.
References DoReportFinalRtsFailed(), ns3::Mac48Address::IsGroup(), Lookup(), m_macTxFinalRtsFailed, and NS_ASSERT.
Referenced by ns3::EdcaTxopN::MissedCts(), and ns3::DcaTxop::MissedCts().
void ns3::WifiRemoteStationManager::ReportRtsFailed | ( | Mac48Address | address, |
const WifiMacHeader * | header | ||
) |
Should be invoked whenever the RtsTimeout associated to a transmission attempt expires.
Definition at line 392 of file wifi-remote-station-manager.cc.
References DoReportRtsFailed(), ns3::Mac48Address::IsGroup(), Lookup(), m_macTxRtsFailed, and NS_ASSERT.
Referenced by ns3::MacLow::CtsTimeout().
void ns3::WifiRemoteStationManager::ReportRtsOk | ( | Mac48Address | address, |
const WifiMacHeader * | header, | ||
double | ctsSnr, | ||
WifiMode | ctsMode, | ||
double | rtsSnr | ||
) |
Should be invoked whenever we receive the Cts associated to an RTS we just sent.
Definition at line 410 of file wifi-remote-station-manager.cc.
References DoReportRtsOk(), ns3::Mac48Address::IsGroup(), Lookup(), and NS_ASSERT.
Referenced by ns3::MacLow::ReceiveOk().
void ns3::WifiRemoteStationManager::ReportRxOk | ( | Mac48Address | address, |
const WifiMacHeader * | header, | ||
double | rxSnr, | ||
WifiMode | txMode | ||
) |
address | remote address |
header | MAC header |
rxSnr | the snr of the packet received |
txMode | the transmission mode used for the packet received. |
Should be invoked whenever a packet is successfully received.
Definition at line 450 of file wifi-remote-station-manager.cc.
References DoReportRxOk(), ns3::Mac48Address::IsGroup(), and Lookup().
Referenced by ns3::MacLow::ReceiveOk().
void ns3::WifiRemoteStationManager::Reset | ( | void | ) |
Definition at line 777 of file wifi-remote-station-manager.cc.
References ns3::WifiMode::IsMandatory(), m_bssBasicRateSet, m_defaultTxMode, m_stations, and NS_ASSERT.
Referenced by ns3::MacLow::NotifySwitchingStartNow(), and SetupPhy().
void ns3::WifiRemoteStationManager::Reset | ( | Mac48Address | address | ) |
Invoked in an AP upon disassociation of a specific STA.
Definition at line 267 of file wifi-remote-station-manager.cc.
References AddSupportedMode(), GetDefaultMode(), ns3::Mac48Address::IsGroup(), LookupState(), and NS_ASSERT.
void ns3::WifiRemoteStationManager::SetFragmentationThreshold | ( | uint32_t | threshold | ) |
Definition at line 261 of file wifi-remote-station-manager.cc.
References DoSetFragmentationThreshold().
void ns3::WifiRemoteStationManager::SetMaxSlrc | ( | uint32_t | maxSlrc | ) |
Definition at line 251 of file wifi-remote-station-manager.cc.
References m_maxSlrc.
void ns3::WifiRemoteStationManager::SetMaxSsrc | ( | uint32_t | maxSsrc | ) |
Definition at line 246 of file wifi-remote-station-manager.cc.
References m_maxSsrc.
void ns3::WifiRemoteStationManager::SetRtsCtsThreshold | ( | uint32_t | threshold | ) |
Definition at line 256 of file wifi-remote-station-manager.cc.
References m_rtsCtsThreshold.
Reimplemented in ns3::MinstrelWifiManager, and ns3::IdealWifiManager.
Definition at line 213 of file wifi-remote-station-manager.cc.
References ns3::WifiPhy::GetMode(), m_defaultTxMode, m_wifiPhy, and Reset().
Referenced by ns3::WifiNetDevice::CompleteConfig().
|
private |
Definition at line 433 of file wifi-remote-station-manager.h.
|
private |
This member is the list of WifiMode objects that comprise the BSSBasicRateSet parameter. This list is constructed through calls to WifiRemoteStationManager::AddBasicMode(), and an API that allows external access to it is available through WifiRemoteStationManager::GetNBasicModes() and WifiRemoteStationManager::GetBasicMode().
Definition at line 425 of file wifi-remote-station-manager.h.
Referenced by AddBasicMode(), GetBasicMode(), GetControlAnswerMode(), GetNBasicModes(), and Reset().
|
private |
Definition at line 415 of file wifi-remote-station-manager.h.
Referenced by GetDefaultMode(), Reset(), and SetupPhy().
|
private |
Definition at line 431 of file wifi-remote-station-manager.h.
Referenced by DoGetFragmentationThreshold(), and DoSetFragmentationThreshold().
|
private |
Definition at line 427 of file wifi-remote-station-manager.h.
|
private |
The trace source fired when the transmission of a single data packet has failed
Definition at line 441 of file wifi-remote-station-manager.h.
Referenced by GetTypeId(), and ReportDataFailed().
|
private |
The trace source fired when the transmission of a data packet has exceeded the maximum number of attempts
Definition at line 451 of file wifi-remote-station-manager.h.
Referenced by GetTypeId(), and ReportFinalDataFailed().
|
private |
The trace source fired when the transmission of a RTS has exceeded the maximum number of attempts
Definition at line 446 of file wifi-remote-station-manager.h.
Referenced by GetTypeId(), and ReportFinalRtsFailed().
|
private |
The trace source fired when the transmission of a single RTS has failed
Definition at line 437 of file wifi-remote-station-manager.h.
Referenced by GetTypeId(), and ReportRtsFailed().
|
private |
Definition at line 429 of file wifi-remote-station-manager.h.
Referenced by GetMaxSlrc(), GetTypeId(), and SetMaxSlrc().
|
private |
Definition at line 428 of file wifi-remote-station-manager.h.
Referenced by GetMaxSsrc(), GetTypeId(), and SetMaxSsrc().
|
private |
Definition at line 432 of file wifi-remote-station-manager.h.
Referenced by GetNonUnicastMode(), and GetTypeId().
|
private |
Definition at line 430 of file wifi-remote-station-manager.h.
Referenced by GetRtsCtsThreshold(), GetTypeId(), and SetRtsCtsThreshold().
|
private |
Definition at line 404 of file wifi-remote-station-manager.h.
Referenced by DoDispose(), and LookupState().
|
private |
Definition at line 405 of file wifi-remote-station-manager.h.
Referenced by DoDispose(), Lookup(), and Reset().
This is a pointer to the WifiPhy associated with this WifiRemoteStationManager that is set on call to WifiRemoteStationManager::SetupPhy(). Through this pointer the station manager can determine PHY characteristics, such as the set of all transmission rates that may be supported (the "DeviceRateSet").
Definition at line 414 of file wifi-remote-station-manager.h.
Referenced by GetControlAnswerMode(), and SetupPhy().