Go to the source code of this file.
|
| #define | HT_GROUP_RATES 8 |
| |
| #define | VHT_GROUP_RATES 10 |
| |
| #define | HT_BANDWIDTHS 2 |
| |
| #define | VHT_BANDWIDTHS 4 |
| |
| #define | HT_NSS 4 |
| |
| #define | VHT_NSS 8 |
| |
| #define | HT_GROUPS 16 |
| |
| #define | VHT_GROUPS 64 |
| |
| #define | GetRateId(index, isVht) (isVht ? (index%VHT_GROUP_RATES):(index%HT_GROUP_RATES)) |
| |
| #define | GetGroupId(index, isVht) (isVht ? (index/VHT_GROUP_RATES):(index/HT_GROUP_RATES)) |
| |
| #define | GetIndex(grpId, rateId, isVht) (isVht ? (grpId*VHT_GROUP_RATES + rateId):(grpId*HT_GROUP_RATES + rateId)) |
| |
| #define | IsEqual(b1, g1, s1, b2, g2, s2) ((b1 == b2 && g1 == g2 && s1 ==s2) ? true:false) |
| |
| #define | SEED_r &NETWORK->ppstruDeviceList[0]->ulSeed[0],&NETWORK->ppstruDeviceList[0]->ulSeed[1] |
| |
| #define | rand01() (fn_NetSim_Utilities_GenerateRandomNo(SEED_r)/NETSIM_RAND_MAX) |
| |
| #define | tSlot(phy) (phy->plmeCharacteristics.aSlotTime) |
| |
| #define | ackTime(phy) (phy->plmeCharacteristics.aSIFSTime + get_preamble_time(phy) + (getAckSize(phy) * 8)/phy->dControlFrameDataRate) |
| |
| #define | firstTransmissionTime(phy, byte, rate) (phy->plmeCharacteristics.aSIFSTime + get_preamble_time(phy)+ byte*8/rate) |
| |
| #define | transmissionTime(phy, byte, rate) (byte*8/rate) |
| |
|
| static Ptr_MinstrelHtPerRemoteStation | getMinstrelInfo (NETSIM_ID dev, NETSIM_ID ifid, NETSIM_ID recv) |
| |
| void | Ht_InitMinstrel (NETSIM_ID nDevId, NETSIM_ID nifid) |
| |
| static void | CheckInit (Ptr_MinstrelHtPerRemoteStation station, NETSIM_ID devid, NETSIM_ID ifid) |
| |
| static void | InitSampleTable (Ptr_MinstrelHtPerRemoteStation station) |
| |
| static void | InitGroupTable (Ptr_MinstrelHtPerRemoteStation station) |
| |
| void | DoReportAmpduStatus (NETSIM_ID devid, NETSIM_ID ifid, NETSIM_ID recvid, UINT success, UINT failed) |
| |
| static void | UpdatePacketCounter (Ptr_MinstrelHtPerRemoteStation station, UINT success, UINT failed) |
| |
| static void | UpdateRetry (Ptr_MinstrelHtPerRemoteStation station) |
| |
| static void | UpdateStats (Ptr_MinstrelHtPerRemoteStation station) |
| |
| static void | UpdateRate (Ptr_MinstrelHtPerRemoteStation station) |
| |
| static UINT | FindRate (Ptr_MinstrelHtPerRemoteStation station) |
| |
| static void | SetStationThRate (Ptr_MinstrelHtPerRemoteStation station) |
| |
| static void | SetStationProbRate (Ptr_MinstrelHtPerRemoteStation station) |
| |
| static UINT | GetNextSample (Ptr_MinstrelHtPerRemoteStation station) |
| |
| static void | SetNextSample (Ptr_MinstrelHtPerRemoteStation station) |
| |
| static double | CalculateEwmsd (double oldEwmsd, double currentProb, double ewmaProb, double ewmaWeight) |
| |
| static double | CalculateThroughput (Ptr_MinstrelHtPerRemoteStation station, UINT grpId, UINT rateId) |
| |
| static void | CalculateRetransmits (Ptr_MinstrelHtPerRemoteStation station, UINT index) |
| |
| BOOL | Ht_DoNeedDataRetransmission (NETSIM_ID devid, NETSIM_ID ifid, NETSIM_ID recvid) |
| |
| static UINT | CountRetries (Ptr_MinstrelHtPerRemoteStation station) |
| |
| static UINT | GetLowestIndex (Ptr_MinstrelHtPerRemoteStation station) |
| |
| static UINT | GetHighestIndex (Ptr_MinstrelHtPerRemoteStation station) |
| |
| struct stru_802_11_Phy_Parameters_HT | getTxRate (NETSIM_ID devid, NETSIM_ID ifid, NETSIM_ID recvid) |
| |
| void | HT_Minstrel_Free (NETSIM_ID nDevId, NETSIM_ID nifid) |
| |
◆ ackTime
| #define ackTime |
( |
|
phy | ) |
(phy->plmeCharacteristics.aSIFSTime + get_preamble_time(phy) + (getAckSize(phy) * 8)/phy->dControlFrameDataRate) |
◆ firstTransmissionTime
| #define firstTransmissionTime |
( |
|
phy, |
|
|
|
byte, |
|
|
|
rate |
|
) |
| (phy->plmeCharacteristics.aSIFSTime + get_preamble_time(phy)+ byte*8/rate) |
◆ GetGroupId
◆ GetIndex
◆ GetRateId
◆ HT_BANDWIDTHS
◆ HT_GROUP_RATES
◆ HT_GROUPS
◆ HT_NSS
◆ IsEqual
| #define IsEqual |
( |
|
b1, |
|
|
|
g1, |
|
|
|
s1, |
|
|
|
b2, |
|
|
|
g2, |
|
|
|
s2 |
|
) |
| ((b1 == b2 && g1 == g2 && s1 ==s2) ? true:false) |
◆ rand01
◆ SEED_r
| #define SEED_r &NETWORK->ppstruDeviceList[0]->ulSeed[0],&NETWORK->ppstruDeviceList[0]->ulSeed[1] |
◆ transmissionTime
| #define transmissionTime |
( |
|
phy, |
|
|
|
byte, |
|
|
|
rate |
|
) |
| (byte*8/rate) |
◆ tSlot
| #define tSlot |
( |
|
phy | ) |
(phy->plmeCharacteristics.aSlotTime) |
◆ VHT_BANDWIDTHS
◆ VHT_GROUP_RATES
| #define VHT_GROUP_RATES 10 |
◆ VHT_GROUPS
◆ VHT_NSS
◆ CalculateEwmsd()
| static double CalculateEwmsd |
( |
double |
oldEwmsd, |
|
|
double |
currentProb, |
|
|
double |
ewmaProb, |
|
|
double |
ewmaWeight |
|
) |
| |
|
static |
◆ CalculateRetransmits()
◆ CalculateThroughput()
◆ CheckInit()
◆ CountRetries()
◆ DoReportAmpduStatus()
◆ FindRate()
◆ GetHighestIndex()
◆ GetLowestIndex()
◆ getMinstrelInfo()
◆ GetNextSample()
◆ getTxRate()
◆ Ht_DoNeedDataRetransmission()
◆ Ht_InitMinstrel()
◆ HT_Minstrel_Free()
◆ InitGroupTable()
◆ InitSampleTable()
◆ SetNextSample()
◆ SetStationProbRate()
◆ SetStationThRate()
◆ UpdatePacketCounter()
◆ UpdateRate()
Retry Chain table is implemented here. Note this Retry Chain is different from Legacy Minstrel.
Try | LOOKAROUND RATE | NORMAL RATE
1 | Random rate | Best throughput 2 | Next best throughput | Next best throughput 3 | Best probability | Best probability
Note: For clarity, multiple blocks of if's and else's are used Following implementation in Linux, in MinstrelHT Lowest baserate is not used. Explanation can be found here: http://marc.info/?l=linux-wireless&m=144602778611966&w=2
Definition at line 346 of file Minstrel_ht.c.
◆ UpdateRetry()
◆ UpdateStats()