diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/rc.h')
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/rc.h | 48 |
1 files changed, 31 insertions, 17 deletions
diff --git a/drivers/net/wireless/ath/ath9k/rc.h b/drivers/net/wireless/ath/ath9k/rc.h index dc1082654501..c3d850207bee 100644 --- a/drivers/net/wireless/ath/ath9k/rc.h +++ b/drivers/net/wireless/ath/ath9k/rc.h | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * Copyright (c) 2004 Sam Leffler, Errno Consulting | 2 | * Copyright (c) 2004 Sam Leffler, Errno Consulting |
| 3 | * Copyright (c) 2004 Video54 Technologies, Inc. | 3 | * Copyright (c) 2004 Video54 Technologies, Inc. |
| 4 | * Copyright (c) 2008-2009 Atheros Communications Inc. | 4 | * Copyright (c) 2008-2011 Atheros Communications Inc. |
| 5 | * | 5 | * |
| 6 | * Permission to use, copy, modify, and/or distribute this software for any | 6 | * Permission to use, copy, modify, and/or distribute this software for any |
| 7 | * purpose with or without fee is hereby granted, provided that the above | 7 | * purpose with or without fee is hereby granted, provided that the above |
| @@ -135,20 +135,21 @@ enum { | |||
| 135 | 135 | ||
| 136 | /** | 136 | /** |
| 137 | * struct ath_rate_table - Rate Control table | 137 | * struct ath_rate_table - Rate Control table |
| 138 | * @valid: valid for use in rate control | 138 | * @rate_cnt: total number of rates for the given wireless mode |
| 139 | * @valid_single_stream: valid for use in rate control for | 139 | * @mcs_start: MCS rate index offset |
| 140 | * single stream operation | 140 | * @rate_flags: Rate Control flags |
| 141 | * @phy: CCK/OFDM | 141 | * @phy: CCK/OFDM/HT20/HT40 |
| 142 | * @ratekbps: rate in Kbits per second | 142 | * @ratekbps: rate in Kbits per second |
| 143 | * @user_ratekbps: user rate in Kbits per second | 143 | * @user_ratekbps: user rate in Kbits per second |
| 144 | * @ratecode: rate that goes into HW descriptors | 144 | * @ratecode: rate that goes into HW descriptors |
| 145 | * @short_preamble: Mask for enabling short preamble in ratecode for CCK | ||
| 146 | * @dot11rate: value that goes into supported | 145 | * @dot11rate: value that goes into supported |
| 147 | * rates info element of MLME | 146 | * rates info element of MLME |
| 148 | * @ctrl_rate: Index of next lower basic rate, used for duration computation | 147 | * @ctrl_rate: Index of next lower basic rate, used for duration computation |
| 149 | * @max_4ms_framelen: maximum frame length(bytes) for tx duration | 148 | * @cw40index: Index of rates having 40MHz channel width |
| 149 | * @sgi_index: Index of rates having Short Guard Interval | ||
| 150 | * @ht_index: high throughput rates having 40MHz channel width and | ||
| 151 | * Short Guard Interval | ||
| 150 | * @probe_interval: interval for rate control to probe for other rates | 152 | * @probe_interval: interval for rate control to probe for other rates |
| 151 | * @rssi_reduce_interval: interval for rate control to reduce rssi | ||
| 152 | * @initial_ratemax: initial ratemax value | 153 | * @initial_ratemax: initial ratemax value |
| 153 | */ | 154 | */ |
| 154 | struct ath_rate_table { | 155 | struct ath_rate_table { |
| @@ -175,6 +176,13 @@ struct ath_rateset { | |||
| 175 | u8 rs_rates[ATH_RATE_MAX]; | 176 | u8 rs_rates[ATH_RATE_MAX]; |
| 176 | }; | 177 | }; |
| 177 | 178 | ||
| 179 | struct ath_rc_stats { | ||
| 180 | u32 success; | ||
| 181 | u32 retries; | ||
| 182 | u32 xretries; | ||
| 183 | u8 per; | ||
| 184 | }; | ||
| 185 | |||
| 178 | /** | 186 | /** |
| 179 | * struct ath_rate_priv - Rate Control priv data | 187 | * struct ath_rate_priv - Rate Control priv data |
| 180 | * @state: RC state | 188 | * @state: RC state |
| @@ -187,7 +195,6 @@ struct ath_rateset { | |||
| 187 | * @rate_max_phy: phy index for the max rate | 195 | * @rate_max_phy: phy index for the max rate |
| 188 | * @per: PER for every valid rate in % | 196 | * @per: PER for every valid rate in % |
| 189 | * @probe_interval: interval for ratectrl to probe for other rates | 197 | * @probe_interval: interval for ratectrl to probe for other rates |
| 190 | * @prev_data_rix: rate idx of last data frame | ||
| 191 | * @ht_cap: HT capabilities | 198 | * @ht_cap: HT capabilities |
| 192 | * @neg_rates: Negotatied rates | 199 | * @neg_rates: Negotatied rates |
| 193 | * @neg_ht_rates: Negotiated HT rates | 200 | * @neg_ht_rates: Negotiated HT rates |
| @@ -206,17 +213,13 @@ struct ath_rate_priv { | |||
| 206 | u32 probe_time; | 213 | u32 probe_time; |
| 207 | u32 per_down_time; | 214 | u32 per_down_time; |
| 208 | u32 probe_interval; | 215 | u32 probe_interval; |
| 209 | u32 prev_data_rix; | ||
| 210 | u32 tx_triglevel_max; | ||
| 211 | struct ath_rateset neg_rates; | 216 | struct ath_rateset neg_rates; |
| 212 | struct ath_rateset neg_ht_rates; | 217 | struct ath_rateset neg_ht_rates; |
| 213 | struct ath_rate_softc *asc; | 218 | const struct ath_rate_table *rate_table; |
| 214 | }; | ||
| 215 | 219 | ||
| 216 | #define ATH_TX_INFO_FRAME_TYPE_INTERNAL (1 << 0) | 220 | struct dentry *debugfs_rcstats; |
| 217 | #define ATH_TX_INFO_FRAME_TYPE_PAUSE (1 << 1) | 221 | struct ath_rc_stats rcstats[RATE_TABLE_SIZE]; |
| 218 | #define ATH_TX_INFO_XRETRY (1 << 3) | 222 | }; |
| 219 | #define ATH_TX_INFO_UNDERRUN (1 << 4) | ||
| 220 | 223 | ||
| 221 | enum ath9k_internal_frame_type { | 224 | enum ath9k_internal_frame_type { |
| 222 | ATH9K_IFT_NOT_INTERNAL, | 225 | ATH9K_IFT_NOT_INTERNAL, |
| @@ -224,7 +227,18 @@ enum ath9k_internal_frame_type { | |||
| 224 | ATH9K_IFT_UNPAUSE | 227 | ATH9K_IFT_UNPAUSE |
| 225 | }; | 228 | }; |
| 226 | 229 | ||
| 230 | #ifdef CONFIG_ATH9K_RATE_CONTROL | ||
| 227 | int ath_rate_control_register(void); | 231 | int ath_rate_control_register(void); |
| 228 | void ath_rate_control_unregister(void); | 232 | void ath_rate_control_unregister(void); |
| 233 | #else | ||
| 234 | static inline int ath_rate_control_register(void) | ||
| 235 | { | ||
| 236 | return 0; | ||
| 237 | } | ||
| 238 | |||
| 239 | static inline void ath_rate_control_unregister(void) | ||
| 240 | { | ||
| 241 | } | ||
| 242 | #endif | ||
| 229 | 243 | ||
| 230 | #endif /* RC_H */ | 244 | #endif /* RC_H */ |
