23 #ifndef MINSTREL_WIFI_MANAGER_H 
   24 #define MINSTREL_WIFI_MANAGER_H 
   28 #include "ns3/nstime.h" 
   29 #include "ns3/random-variable-stream.h" 
   33 struct MinstrelWifiRemoteStation;
 
  115                               double ctsSnr, 
WifiMode ctsMode, 
double rtsSnr);
 
  117                                double ackSnr, 
WifiMode ackMode, 
double dataSnr);
 
  165   typedef std::vector<std::pair<Time,WifiMode> > 
TxTime;
 
uint32_t m_nsupported
modes supported 
 
void CheckInit(MinstrelWifiRemoteStation *station)
check for initializations 
 
void PrintTable(MinstrelWifiRemoteStation *station)
printing Minstrel Table 
 
keep track of time values and allow control of global simulation resolution 
 
This class mimics the TXVECTOR which is to be passed to the PHY in order to define the parameters whi...
 
Time perfectTxTime
Perfect transmission time calculation, or frame calculation Given a bit rate and a packet length n by...
 
Implementation of Minstrel Rate Control AlgorithmPorting Minstrel from Madwifi and Linux Kernel http:...
 
uint32_t numRateSuccess
number of successful pkts 
 
virtual void DoReportFinalDataFailed(WifiRemoteStation *station)
This method is a pure virtual method that must be implemented by the sub-class. 
 
hold per-remote-station state for Minstrel Wifi manager. 
 
Time m_updateStats
how frequent do we calculate the stats(1/10 seconds) 
 
void UpdateStats(MinstrelWifiRemoteStation *station)
updating the Minstrel Table every 1/10 seconds 
 
uint32_t GetNextSample(MinstrelWifiRemoteStation *station)
getting the next sample from Sample Table 
 
SampleRate m_sampleTable
sample table 
 
represent a single transmission modeA WifiMode is implemented by a single integer which is used to lo...
 
uint32_t retryCount
retry limit 
 
uint32_t FindRate(MinstrelWifiRemoteStation *station)
find a rate to use from Minstrel Table 
 
uint32_t m_pktLen
packet length used for calculate mode TxTime 
 
uint32_t adjustedRetryCount
adjust the retry limit for this rate 
 
virtual void DoReportDataOk(WifiRemoteStation *station, double ackSnr, WifiMode ackMode, double dataSnr)
This method is a pure virtual method that must be implemented by the sub-class. 
 
virtual void DoReportRxOk(WifiRemoteStation *station, double rxSnr, WifiMode txMode)
This method is a pure virtual method that must be implemented by the sub-class. 
 
A struct to contain all information related to a data rate. 
 
uint32_t prevNumRateSuccess
from last rate 
 
void PrintSampleTable(MinstrelWifiRemoteStation *station)
printing Sample Table 
 
uint32_t prevNumRateAttempt
from last rate 
 
virtual void SetupPhy(Ptr< WifiPhy > phy)
Set up PHY associated with this device since it is the object that knows the full set of transmit rat...
 
uint64_t attemptHist
aggregate of all attempts 
 
double m_ewmaLevel
exponential weighted moving average 
 
uint64_t successHist
aggregate of all successes 
 
virtual WifiRemoteStation * DoCreateStation(void) const 
 
virtual WifiTxVector DoGetDataTxVector(WifiRemoteStation *station, uint32_t size)
 
void AddCalcTxTime(WifiMode mode, Time t)
Add transmission time for the given mode to an internal list. 
 
virtual void DoReportFinalRtsFailed(WifiRemoteStation *station)
This method is a pure virtual method that must be implemented by the sub-class. 
 
hold a list of per-remote-station state. 
 
virtual WifiTxVector DoGetRtsTxVector(WifiRemoteStation *station)
 
uint32_t ewmaProb
EWMA calculation ewma_prob =[prob *(100 - ewma_level) + (ewma_prob_old * ewma_level)]/100. 
 
uint32_t numRateAttempt
how many number of attempts so far 
 
TxTime m_calcTxTime
to hold all the calculated TxTime for all modes 
 
virtual bool IsLowLatency(void) const 
 
int64_t AssignStreams(int64_t stream)
Assign a fixed random variable stream number to the random variables used by this model...
 
uint32_t throughput
throughput of a rate 
 
Ptr< UniformRandomVariable > m_uniformRandomVariable
Provides uniform random variables. 
 
void UpdateRetry(MinstrelWifiRemoteStation *station)
update the number of retries and reset accordingly 
 
double m_lookAroundRate
the % to try other rates than our current rate 
 
static TypeId GetTypeId(void)
 
void InitSampleTable(MinstrelWifiRemoteStation *station)
initialize Sample Table 
 
virtual void DoReportRtsFailed(WifiRemoteStation *station)
This method is a pure virtual method that must be implemented by the sub-class. 
 
Time GetCalcTxTime(WifiMode mode) const 
for estimating the TxTime of a packet with a given mode 
 
virtual void DoReportDataFailed(WifiRemoteStation *station)
This method is a pure virtual method that must be implemented by the sub-class. 
 
std::vector< struct RateInfo > MinstrelRate
Data structure for a Minstrel Rate table A vector of a struct RateInfo. 
 
uint32_t m_sampleCol
number of sample columns 
 
virtual ~MinstrelWifiManager()
 
std::vector< std::pair< Time, WifiMode > > TxTime
typedef for a vector of a pair of Time, WifiMode. 
 
virtual void DoReportRtsOk(WifiRemoteStation *station, double ctsSnr, WifiMode ctsMode, double rtsSnr)
This method is a pure virtual method that must be implemented by the sub-class. 
 
a unique identifier for an interface. 
 
MinstrelRate m_minstrelTable
minstrel table 
 
void RateInit(MinstrelWifiRemoteStation *station)
initialize Minstrel Table 
 
std::vector< std::vector< uint32_t > > SampleRate
Data structure for a Sample Rate table A vector of a vector uint32_t. 
 
hold per-remote-station state. 
 
uint32_t prob
(# pkts success )/(# total pkts)