diff options
author | Felix Fietkau <nbd@openwrt.org> | 2008-10-05 12:07:45 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-10-06 18:14:57 -0400 |
commit | cccf129f820e431d84690729254a32f1709328fb (patch) | |
tree | 0539c013be61ba6c8eeb0790ccb7df50bf2cb3bd /net/mac80211/rc80211_minstrel.h | |
parent | 2f7fe87034298d94301315ba4bb65c7284c709d0 (diff) |
mac80211: add the 'minstrel' rate control algorithm
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/rc80211_minstrel.h')
-rw-r--r-- | net/mac80211/rc80211_minstrel.h | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/net/mac80211/rc80211_minstrel.h b/net/mac80211/rc80211_minstrel.h new file mode 100644 index 000000000000..9a90a6aee043 --- /dev/null +++ b/net/mac80211/rc80211_minstrel.h | |||
@@ -0,0 +1,85 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2008 Felix Fietkau <nbd@openwrt.org> | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License version 2 as | ||
6 | * published by the Free Software Foundation. | ||
7 | */ | ||
8 | |||
9 | #ifndef __RC_MINSTREL_H | ||
10 | #define __RC_MINSTREL_H | ||
11 | |||
12 | struct minstrel_rate { | ||
13 | int bitrate; | ||
14 | int rix; | ||
15 | |||
16 | unsigned int perfect_tx_time; | ||
17 | unsigned int ack_time; | ||
18 | |||
19 | unsigned int retry_count; | ||
20 | unsigned int retry_count_cts; | ||
21 | unsigned int retry_count_rtscts; | ||
22 | unsigned int adjusted_retry_count; | ||
23 | |||
24 | u32 success; | ||
25 | u32 attempts; | ||
26 | u32 last_attempts; | ||
27 | u32 last_success; | ||
28 | |||
29 | /* parts per thousand */ | ||
30 | u32 cur_prob; | ||
31 | u32 probability; | ||
32 | |||
33 | /* per-rate throughput */ | ||
34 | u32 cur_tp; | ||
35 | u32 throughput; | ||
36 | |||
37 | u64 succ_hist; | ||
38 | u64 att_hist; | ||
39 | }; | ||
40 | |||
41 | struct minstrel_sta_info { | ||
42 | unsigned long stats_update; | ||
43 | unsigned int sp_ack_dur; | ||
44 | unsigned int rate_avg; | ||
45 | |||
46 | unsigned int lowest_rix; | ||
47 | |||
48 | unsigned int max_tp_rate; | ||
49 | unsigned int max_tp_rate2; | ||
50 | unsigned int max_prob_rate; | ||
51 | unsigned int packet_count; | ||
52 | unsigned int sample_count; | ||
53 | int sample_deferred; | ||
54 | |||
55 | unsigned int sample_idx; | ||
56 | unsigned int sample_column; | ||
57 | |||
58 | int n_rates; | ||
59 | struct minstrel_rate *r; | ||
60 | |||
61 | /* sampling table */ | ||
62 | u8 *sample_table; | ||
63 | |||
64 | #ifdef CONFIG_MAC80211_DEBUGFS | ||
65 | struct dentry *dbg_stats; | ||
66 | #endif | ||
67 | }; | ||
68 | |||
69 | struct minstrel_priv { | ||
70 | struct ieee80211_hw *hw; | ||
71 | bool has_mrr; | ||
72 | unsigned int cw_min; | ||
73 | unsigned int cw_max; | ||
74 | unsigned int max_retry; | ||
75 | unsigned int ewma_level; | ||
76 | unsigned int segment_size; | ||
77 | unsigned int update_interval; | ||
78 | unsigned int lookaround_rate; | ||
79 | unsigned int lookaround_rate_mrr; | ||
80 | }; | ||
81 | |||
82 | void minstrel_add_sta_debugfs(void *priv, void *priv_sta, struct dentry *dir); | ||
83 | void minstrel_remove_sta_debugfs(void *priv, void *priv_sta); | ||
84 | |||
85 | #endif | ||