#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.