#include <linux/netdevice.h>#include <linux/types.h>#include <linux/skbuff.h>#include <linux/debugfs.h>#include <linux/random.h>#include <linux/ieee80211.h>#include <net/mac80211.h>#include "rate.h"#include "rc80211_minstrel.h"#include "rc80211_minstrel_ht.h"
Go to the source code of this file.
Defines | |
| #define | AVG_PKT_SIZE 1200 |
| #define | EWMA_LEVEL 75 |
| #define | MCS_DURATION(streams, sgi, bps) MCS_SYMBOL_TIME(sgi, MCS_NSYMS((streams) * (bps))) |
| #define | MCS_GROUP(_streams, _sgi, _ht40) |
| #define | MCS_NBITS (AVG_PKT_SIZE << 3) |
| #define | MCS_NSYMS(bps) ((MCS_NBITS + (bps) - 1) / (bps)) |
| #define | MCS_SYMBOL_TIME(sgi, syms) |
| #define | SAMPLE_COLUMNS 10 |
Functions | |
| static void | init_sample_table (void) |
| static void | minstrel_aggr_check (struct minstrel_priv *mp, struct ieee80211_sta *pubsta, struct sk_buff *skb) |
| static void | minstrel_calc_rate_ewma (struct minstrel_priv *mp, struct minstrel_rate_stats *mr) |
| static void | minstrel_calc_retransmit (struct minstrel_priv *mp, struct minstrel_ht_sta *mi, int index) |
| static void | minstrel_downgrade_rate (struct minstrel_ht_sta *mi, unsigned int *idx, bool primary) |
| static int | minstrel_ewma (int old, int new, int weight) |
| static int | minstrel_get_duration (int index) |
| static struct minstrel_rate_stats * | minstrel_get_ratestats (struct minstrel_ht_sta *mi, int index) |
| static int | minstrel_get_sample_rate (struct minstrel_priv *mp, struct minstrel_ht_sta *mi) |
| static void * | minstrel_ht_alloc (struct ieee80211_hw *hw, struct dentry *debugfsdir) |
| static void * | minstrel_ht_alloc_sta (void *priv, struct ieee80211_sta *sta, gfp_t gfp) |
| static void | minstrel_ht_calc_tp (struct minstrel_priv *mp, struct minstrel_ht_sta *mi, int group, int rate) |
| static void | minstrel_ht_free (void *priv) |
| static void | minstrel_ht_free_sta (void *priv, struct ieee80211_sta *sta, void *priv_sta) |
| static int | minstrel_ht_get_group_idx (struct ieee80211_tx_rate *rate) |
| static void | minstrel_ht_get_rate (void *priv, struct ieee80211_sta *sta, void *priv_sta, struct ieee80211_tx_rate_control *txrc) |
| static void | minstrel_ht_rate_init (void *priv, struct ieee80211_supported_band *sband, struct ieee80211_sta *sta, void *priv_sta) |
| static void | minstrel_ht_rate_update (void *priv, struct ieee80211_supported_band *sband, struct ieee80211_sta *sta, void *priv_sta, u32 changed, enum nl80211_channel_type oper_chan_type) |
| static void | minstrel_ht_set_rate (struct minstrel_priv *mp, struct minstrel_ht_sta *mi, struct ieee80211_tx_rate *rate, int index, struct ieee80211_tx_rate_control *txrc, bool sample, bool rtscts) |
| static void | minstrel_ht_tx_status (void *priv, struct ieee80211_supported_band *sband, struct ieee80211_sta *sta, void *priv_sta, struct sk_buff *skb) |
| static bool | minstrel_ht_txstat_valid (struct ieee80211_tx_rate *rate) |
| static void | minstrel_ht_update_caps (void *priv, struct ieee80211_supported_band *sband, struct ieee80211_sta *sta, void *priv_sta, enum nl80211_channel_type oper_chan_type) |
| static void | minstrel_ht_update_stats (struct minstrel_priv *mp, struct minstrel_ht_sta *mi) |
| static void | minstrel_next_sample_idx (struct minstrel_ht_sta *mi) |
| void | rc80211_minstrel_ht_exit (void) |
| int __init | rc80211_minstrel_ht_init (void) |
Variables | |
| static struct rate_control_ops | mac80211_minstrel_ht |
| struct mcs_group | minstrel_mcs_groups [] |
| static u8 | sample_table [SAMPLE_COLUMNS][MCS_GROUP_RATES] |
| #define AVG_PKT_SIZE 1200 |
Definition at line 19 of file kernel-3.2/rc80211_minstrel_ht.c.
| #define EWMA_LEVEL 75 |
Definition at line 21 of file kernel-3.2/rc80211_minstrel_ht.c.
| #define MCS_DURATION | ( | streams, | |
| sgi, | |||
| bps | |||
| ) | MCS_SYMBOL_TIME(sgi, MCS_NSYMS((streams) * (bps))) |
Definition at line 37 of file kernel-3.2/rc80211_minstrel_ht.c.
| #define MCS_GROUP | ( | _streams, | |
| _sgi, | |||
| _ht40 | |||
| ) |
{ \
.streams = _streams, \
.flags = \
(_sgi ? IEEE80211_TX_RC_SHORT_GI : 0) | \
(_ht40 ? IEEE80211_TX_RC_40_MHZ_WIDTH : 0), \
.duration = { \
MCS_DURATION(_streams, _sgi, _ht40 ? 54 : 26), \
MCS_DURATION(_streams, _sgi, _ht40 ? 108 : 52), \
MCS_DURATION(_streams, _sgi, _ht40 ? 162 : 78), \
MCS_DURATION(_streams, _sgi, _ht40 ? 216 : 104), \
MCS_DURATION(_streams, _sgi, _ht40 ? 324 : 156), \
MCS_DURATION(_streams, _sgi, _ht40 ? 432 : 208), \
MCS_DURATION(_streams, _sgi, _ht40 ? 486 : 234), \
MCS_DURATION(_streams, _sgi, _ht40 ? 540 : 260) \
} \
}
Definition at line 40 of file kernel-3.2/rc80211_minstrel_ht.c.
| #define MCS_NBITS (AVG_PKT_SIZE << 3) |
Definition at line 24 of file kernel-3.2/rc80211_minstrel_ht.c.
Definition at line 27 of file kernel-3.2/rc80211_minstrel_ht.c.
| #define MCS_SYMBOL_TIME | ( | sgi, | |
| syms | |||
| ) |
(sgi ? \
((syms) * 18 + 4) / 5 : /* syms * 3.6 us */ \
(syms) << 2 /* syms * 4 us */ \
)
Definition at line 30 of file kernel-3.2/rc80211_minstrel_ht.c.
| #define SAMPLE_COLUMNS 10 |
Definition at line 20 of file kernel-3.2/rc80211_minstrel_ht.c.
| static void init_sample_table | ( | void | ) | [static] |
Definition at line 867 of file kernel-3.2/rc80211_minstrel_ht.c.
| static void minstrel_aggr_check | ( | struct minstrel_priv * | mp, |
| struct ieee80211_sta * | pubsta, | ||
| struct sk_buff * | skb | ||
| ) | [static] |
Definition at line 360 of file kernel-3.2/rc80211_minstrel_ht.c.
| static void minstrel_calc_rate_ewma | ( | struct minstrel_priv * | mp, |
| struct minstrel_rate_stats * | mr | ||
| ) | [static] |
Definition at line 133 of file kernel-3.2/rc80211_minstrel_ht.c.
| static void minstrel_calc_retransmit | ( | struct minstrel_priv * | mp, |
| struct minstrel_ht_sta * | mi, | ||
| int | index | ||
| ) | [static] |
Definition at line 463 of file kernel-3.2/rc80211_minstrel_ht.c.
| static void minstrel_downgrade_rate | ( | struct minstrel_ht_sta * | mi, |
| unsigned int * | idx, | ||
| bool | primary | ||
| ) | [static] |
Definition at line 335 of file kernel-3.2/rc80211_minstrel_ht.c.
| static int minstrel_ewma | ( | int | old, |
| int | new, | ||
| int | weight | ||
| ) | [static] |
Definition at line 94 of file kernel-3.2/rc80211_minstrel_ht.c.
| static int minstrel_get_duration | ( | int | index | ) | [inline, static] |
Definition at line 544 of file kernel-3.2/rc80211_minstrel_ht.c.
| static struct minstrel_rate_stats* minstrel_get_ratestats | ( | struct minstrel_ht_sta * | mi, |
| int | index | ||
| ) | [static, read] |
Definition at line 123 of file kernel-3.2/rc80211_minstrel_ht.c.
| static int minstrel_get_sample_rate | ( | struct minstrel_priv * | mp, |
| struct minstrel_ht_sta * | mi | ||
| ) | [static] |
Definition at line 551 of file kernel-3.2/rc80211_minstrel_ht.c.
| static void* minstrel_ht_alloc | ( | struct ieee80211_hw * | hw, |
| struct dentry * | debugfsdir | ||
| ) | [static] |
Definition at line 838 of file kernel-3.2/rc80211_minstrel_ht.c.
| static void* minstrel_ht_alloc_sta | ( | void * | priv, |
| struct ieee80211_sta * | sta, | ||
| gfp_t | gfp | ||
| ) | [static] |
Definition at line 791 of file kernel-3.2/rc80211_minstrel_ht.c.
| static void minstrel_ht_calc_tp | ( | struct minstrel_priv * | mp, |
| struct minstrel_ht_sta * | mi, | ||
| int | group, | ||
| int | rate | ||
| ) | [static] |
Definition at line 159 of file kernel-3.2/rc80211_minstrel_ht.c.
| static void minstrel_ht_free | ( | void * | priv | ) | [static] |
Definition at line 844 of file kernel-3.2/rc80211_minstrel_ht.c.
| static void minstrel_ht_free_sta | ( | void * | priv, |
| struct ieee80211_sta * | sta, | ||
| void * | priv_sta | ||
| ) | [static] |
Definition at line 828 of file kernel-3.2/rc80211_minstrel_ht.c.
| static int minstrel_ht_get_group_idx | ( | struct ieee80211_tx_rate * | rate | ) | [static] |
Definition at line 103 of file kernel-3.2/rc80211_minstrel_ht.c.
| static void minstrel_ht_get_rate | ( | void * | priv, |
| struct ieee80211_sta * | sta, | ||
| void * | priv_sta, | ||
| struct ieee80211_tx_rate_control * | txrc | ||
| ) | [static] |
Definition at line 596 of file kernel-3.2/rc80211_minstrel_ht.c.
| static void minstrel_ht_rate_init | ( | void * | priv, |
| struct ieee80211_supported_band * | sband, | ||
| struct ieee80211_sta * | sta, | ||
| void * | priv_sta | ||
| ) | [static] |
Definition at line 774 of file kernel-3.2/rc80211_minstrel_ht.c.
| static void minstrel_ht_rate_update | ( | void * | priv, |
| struct ieee80211_supported_band * | sband, | ||
| struct ieee80211_sta * | sta, | ||
| void * | priv_sta, | ||
| u32 | changed, | ||
| enum nl80211_channel_type | oper_chan_type | ||
| ) | [static] |
Definition at line 783 of file kernel-3.2/rc80211_minstrel_ht.c.
| static void minstrel_ht_set_rate | ( | struct minstrel_priv * | mp, |
| struct minstrel_ht_sta * | mi, | ||
| struct ieee80211_tx_rate * | rate, | ||
| int | index, | ||
| struct ieee80211_tx_rate_control * | txrc, | ||
| bool | sample, | ||
| bool | rtscts | ||
| ) | [static] |
Definition at line 516 of file kernel-3.2/rc80211_minstrel_ht.c.
| static void minstrel_ht_tx_status | ( | void * | priv, |
| struct ieee80211_supported_band * | sband, | ||
| struct ieee80211_sta * | sta, | ||
| void * | priv_sta, | ||
| struct sk_buff * | skb | ||
| ) | [static] |
Definition at line 383 of file kernel-3.2/rc80211_minstrel_ht.c.
| static bool minstrel_ht_txstat_valid | ( | struct ieee80211_tx_rate * | rate | ) | [static] |
Definition at line 301 of file kernel-3.2/rc80211_minstrel_ht.c.
| static void minstrel_ht_update_caps | ( | void * | priv, |
| struct ieee80211_supported_band * | sband, | ||
| struct ieee80211_sta * | sta, | ||
| void * | priv_sta, | ||
| enum nl80211_channel_type | oper_chan_type | ||
| ) | [static] |
Definition at line 683 of file kernel-3.2/rc80211_minstrel_ht.c.
| static void minstrel_ht_update_stats | ( | struct minstrel_priv * | mp, |
| struct minstrel_ht_sta * | mi | ||
| ) | [static] |
Definition at line 187 of file kernel-3.2/rc80211_minstrel_ht.c.
| static void minstrel_next_sample_idx | ( | struct minstrel_ht_sta * | mi | ) | [static] |
Definition at line 313 of file kernel-3.2/rc80211_minstrel_ht.c.
| void rc80211_minstrel_ht_exit | ( | void | ) |
Definition at line 894 of file kernel-3.2/rc80211_minstrel_ht.c.
| int __init rc80211_minstrel_ht_init | ( | void | ) |
Definition at line 887 of file kernel-3.2/rc80211_minstrel_ht.c.
struct rate_control_ops mac80211_minstrel_ht [static] |
{
.name = "minstrel_ht",
.tx_status = minstrel_ht_tx_status,
.get_rate = minstrel_ht_get_rate,
.rate_init = minstrel_ht_rate_init,
.rate_update = minstrel_ht_rate_update,
.alloc_sta = minstrel_ht_alloc_sta,
.free_sta = minstrel_ht_free_sta,
.alloc = minstrel_ht_alloc,
.free = minstrel_ht_free,
}
Definition at line 849 of file kernel-3.2/rc80211_minstrel_ht.c.
| struct mcs_group minstrel_mcs_groups[] |
{
MCS_GROUP(1, 0, 0),
MCS_GROUP(2, 0, 0),
MCS_GROUP(3, 0, 0),
MCS_GROUP(1, 1, 0),
MCS_GROUP(2, 1, 0),
MCS_GROUP(3, 1, 0),
MCS_GROUP(1, 0, 1),
MCS_GROUP(2, 0, 1),
MCS_GROUP(3, 0, 1),
MCS_GROUP(1, 1, 1),
MCS_GROUP(2, 1, 1),
MCS_GROUP(3, 1, 1),
}
Definition at line 62 of file kernel-3.2/rc80211_minstrel_ht.c.
u8 sample_table[SAMPLE_COLUMNS][MCS_GROUP_RATES] [static] |
Definition at line 88 of file kernel-3.2/rc80211_minstrel_ht.c.