xref: /illumos-gate/usr/src/uts/common/io/arn/arn_rc.h (revision c0c93480)
1dd1de374Slin wang - Sun Microsystems - Beijing China /*
2*c0c93480Slin wang - Sun Microsystems - Beijing China  * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
3dd1de374Slin wang - Sun Microsystems - Beijing China  * Use is subject to license terms.
4dd1de374Slin wang - Sun Microsystems - Beijing China  */
5dd1de374Slin wang - Sun Microsystems - Beijing China 
6dd1de374Slin wang - Sun Microsystems - Beijing China /*
7dd1de374Slin wang - Sun Microsystems - Beijing China  * Copyright (c) 2004 Sam Leffler, Errno Consulting
8dd1de374Slin wang - Sun Microsystems - Beijing China  * Copyright (c) 2004 Video54 Technologies, Inc.
9dd1de374Slin wang - Sun Microsystems - Beijing China  * Copyright (c) 2008 Atheros Communications Inc.
10dd1de374Slin wang - Sun Microsystems - Beijing China  *
11dd1de374Slin wang - Sun Microsystems - Beijing China  * Permission to use, copy, modify, and/or distribute this software for any
12dd1de374Slin wang - Sun Microsystems - Beijing China  * purpose with or without fee is hereby granted, provided that the above
13dd1de374Slin wang - Sun Microsystems - Beijing China  * copyright notice and this permission notice appear in all copies.
14dd1de374Slin wang - Sun Microsystems - Beijing China  *
15dd1de374Slin wang - Sun Microsystems - Beijing China  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
16dd1de374Slin wang - Sun Microsystems - Beijing China  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
17dd1de374Slin wang - Sun Microsystems - Beijing China  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
18dd1de374Slin wang - Sun Microsystems - Beijing China  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
19dd1de374Slin wang - Sun Microsystems - Beijing China  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
20dd1de374Slin wang - Sun Microsystems - Beijing China  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
21dd1de374Slin wang - Sun Microsystems - Beijing China  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
22dd1de374Slin wang - Sun Microsystems - Beijing China  */
23dd1de374Slin wang - Sun Microsystems - Beijing China 
24dd1de374Slin wang - Sun Microsystems - Beijing China #ifndef	_ARN_RC_H
25dd1de374Slin wang - Sun Microsystems - Beijing China #define	_ARN_RC_H
26dd1de374Slin wang - Sun Microsystems - Beijing China 
27dd1de374Slin wang - Sun Microsystems - Beijing China #ifdef __cplusplus
28dd1de374Slin wang - Sun Microsystems - Beijing China extern "C" {
29dd1de374Slin wang - Sun Microsystems - Beijing China #endif
30dd1de374Slin wang - Sun Microsystems - Beijing China 
31dd1de374Slin wang - Sun Microsystems - Beijing China #include "arn_ath9k.h"
32dd1de374Slin wang - Sun Microsystems - Beijing China 
33dd1de374Slin wang - Sun Microsystems - Beijing China struct arn_softc;
34*c0c93480Slin wang - Sun Microsystems - Beijing China struct ath_buf;
35dd1de374Slin wang - Sun Microsystems - Beijing China 
36dd1de374Slin wang - Sun Microsystems - Beijing China #define	ATH_RATE_MAX		30
37dd1de374Slin wang - Sun Microsystems - Beijing China #define	RATE_TABLE_SIZE		64
38dd1de374Slin wang - Sun Microsystems - Beijing China #define	MAX_TX_RATE_PHY		48
39dd1de374Slin wang - Sun Microsystems - Beijing China 
40dd1de374Slin wang - Sun Microsystems - Beijing China /*
41dd1de374Slin wang - Sun Microsystems - Beijing China  * VALID_ALL - valid for 20/40/Legacy,
42dd1de374Slin wang - Sun Microsystems - Beijing China  * VALID - Legacy only,
43dd1de374Slin wang - Sun Microsystems - Beijing China  * VALID_20 - HT 20 only,
44dd1de374Slin wang - Sun Microsystems - Beijing China  * VALID_40 - HT 40 only
45dd1de374Slin wang - Sun Microsystems - Beijing China  */
46dd1de374Slin wang - Sun Microsystems - Beijing China 
47dd1de374Slin wang - Sun Microsystems - Beijing China #define	INVALID		0x0
48dd1de374Slin wang - Sun Microsystems - Beijing China #define	VALID		0x1
49dd1de374Slin wang - Sun Microsystems - Beijing China #define	VALID_20	0x2
50dd1de374Slin wang - Sun Microsystems - Beijing China #define	VALID_40	0x4
51dd1de374Slin wang - Sun Microsystems - Beijing China #define	VALID_2040	(VALID_20|VALID_40)
52dd1de374Slin wang - Sun Microsystems - Beijing China #define	VALID_ALL	(VALID_2040|VALID)
53dd1de374Slin wang - Sun Microsystems - Beijing China 
54*c0c93480Slin wang - Sun Microsystems - Beijing China enum {
55*c0c93480Slin wang - Sun Microsystems - Beijing China 	WLAN_RC_PHY_OFDM,
56*c0c93480Slin wang - Sun Microsystems - Beijing China 	WLAN_RC_PHY_CCK,
57*c0c93480Slin wang - Sun Microsystems - Beijing China 	WLAN_RC_PHY_HT_20_SS,
58*c0c93480Slin wang - Sun Microsystems - Beijing China 	WLAN_RC_PHY_HT_20_DS,
59*c0c93480Slin wang - Sun Microsystems - Beijing China 	WLAN_RC_PHY_HT_40_SS,
60*c0c93480Slin wang - Sun Microsystems - Beijing China 	WLAN_RC_PHY_HT_40_DS,
61*c0c93480Slin wang - Sun Microsystems - Beijing China 	WLAN_RC_PHY_HT_20_SS_HGI,
62*c0c93480Slin wang - Sun Microsystems - Beijing China 	WLAN_RC_PHY_HT_20_DS_HGI,
63*c0c93480Slin wang - Sun Microsystems - Beijing China 	WLAN_RC_PHY_HT_40_SS_HGI,
64*c0c93480Slin wang - Sun Microsystems - Beijing China 	WLAN_RC_PHY_HT_40_DS_HGI,
65*c0c93480Slin wang - Sun Microsystems - Beijing China 	WLAN_RC_PHY_MAX
66*c0c93480Slin wang - Sun Microsystems - Beijing China };
67*c0c93480Slin wang - Sun Microsystems - Beijing China 
68dd1de374Slin wang - Sun Microsystems - Beijing China #define	WLAN_RC_PHY_DS(_phy)	((_phy == WLAN_RC_PHY_HT_20_DS)		|| \
69dd1de374Slin wang - Sun Microsystems - Beijing China 				(_phy == WLAN_RC_PHY_HT_40_DS)		|| \
70dd1de374Slin wang - Sun Microsystems - Beijing China 				(_phy == WLAN_RC_PHY_HT_20_DS_HGI)	|| \
71dd1de374Slin wang - Sun Microsystems - Beijing China 				(_phy == WLAN_RC_PHY_HT_40_DS_HGI))
72dd1de374Slin wang - Sun Microsystems - Beijing China #define	WLAN_RC_PHY_40(_phy)	((_phy == WLAN_RC_PHY_HT_40_SS) 	|| \
73dd1de374Slin wang - Sun Microsystems - Beijing China 				(_phy == WLAN_RC_PHY_HT_40_DS)		|| \
74dd1de374Slin wang - Sun Microsystems - Beijing China 				(_phy == WLAN_RC_PHY_HT_40_SS_HGI)	|| \
75dd1de374Slin wang - Sun Microsystems - Beijing China 				(_phy == WLAN_RC_PHY_HT_40_DS_HGI))
76dd1de374Slin wang - Sun Microsystems - Beijing China #define	WLAN_RC_PHY_SGI(_phy)	((_phy == WLAN_RC_PHY_HT_20_SS_HGI)	|| \
77dd1de374Slin wang - Sun Microsystems - Beijing China 				(_phy == WLAN_RC_PHY_HT_20_DS_HGI)	|| \
78dd1de374Slin wang - Sun Microsystems - Beijing China 				(_phy == WLAN_RC_PHY_HT_40_SS_HGI)	|| \
79dd1de374Slin wang - Sun Microsystems - Beijing China 				(_phy == WLAN_RC_PHY_HT_40_DS_HGI))
80dd1de374Slin wang - Sun Microsystems - Beijing China 
81dd1de374Slin wang - Sun Microsystems - Beijing China #define	WLAN_RC_PHY_HT(_phy)	(_phy >= WLAN_RC_PHY_HT_20_SS)
82dd1de374Slin wang - Sun Microsystems - Beijing China 
83dd1de374Slin wang - Sun Microsystems - Beijing China #define	WLAN_RC_CAP_MODE(capflag)	(((capflag & WLAN_RC_HT_FLAG) ?	\
84dd1de374Slin wang - Sun Microsystems - Beijing China 	(capflag & WLAN_RC_40_FLAG) ? VALID_40 : VALID_20 : VALID))
85dd1de374Slin wang - Sun Microsystems - Beijing China 
86dd1de374Slin wang - Sun Microsystems - Beijing China /*
87dd1de374Slin wang - Sun Microsystems - Beijing China  * Return TRUE if flag supports HT20 && client supports HT20 or
88dd1de374Slin wang - Sun Microsystems - Beijing China  * return TRUE if flag supports HT40 && client supports HT40.
89dd1de374Slin wang - Sun Microsystems - Beijing China  * This is used becos some rates overlap between HT20/HT40.
90dd1de374Slin wang - Sun Microsystems - Beijing China  */
91dd1de374Slin wang - Sun Microsystems - Beijing China #define	WLAN_RC_PHY_HT_VALID(flag, capflag)			\
92dd1de374Slin wang - Sun Microsystems - Beijing China 	(((flag & VALID_20) && !(capflag & WLAN_RC_40_FLAG)) || \
93dd1de374Slin wang - Sun Microsystems - Beijing China 	((flag & VALID_40) && (capflag & WLAN_RC_40_FLAG)))
94dd1de374Slin wang - Sun Microsystems - Beijing China 
95dd1de374Slin wang - Sun Microsystems - Beijing China #define	WLAN_RC_DS_FLAG		(0x01)
96dd1de374Slin wang - Sun Microsystems - Beijing China #define	WLAN_RC_40_FLAG		(0x02)
97dd1de374Slin wang - Sun Microsystems - Beijing China #define	WLAN_RC_SGI_FLAG	(0x04)
98dd1de374Slin wang - Sun Microsystems - Beijing China #define	WLAN_RC_HT_FLAG		(0x08)
99dd1de374Slin wang - Sun Microsystems - Beijing China 
100dd1de374Slin wang - Sun Microsystems - Beijing China /*
101dd1de374Slin wang - Sun Microsystems - Beijing China  * struct ath_rate_table - Rate Control table
102dd1de374Slin wang - Sun Microsystems - Beijing China  * @valid: valid for use in rate control
103dd1de374Slin wang - Sun Microsystems - Beijing China  * @valid_single_stream: valid for use in rate control for
104dd1de374Slin wang - Sun Microsystems - Beijing China  * 	single stream operation
105dd1de374Slin wang - Sun Microsystems - Beijing China  * @phy: CCK/OFDM
106dd1de374Slin wang - Sun Microsystems - Beijing China  * @ratekbps: rate in Kbits per second
107dd1de374Slin wang - Sun Microsystems - Beijing China  * @user_ratekbps: user rate in Kbits per second
108dd1de374Slin wang - Sun Microsystems - Beijing China  * @ratecode: rate that goes into HW descriptors
109dd1de374Slin wang - Sun Microsystems - Beijing China  * @short_preamble: Mask for enabling short preamble in ratecode for CCK
110dd1de374Slin wang - Sun Microsystems - Beijing China  * @dot11rate: value that goes into supported
111dd1de374Slin wang - Sun Microsystems - Beijing China  * 	rates info element of MLME
112dd1de374Slin wang - Sun Microsystems - Beijing China  * @ctrl_rate: Index of next lower basic rate, used for duration computation
113dd1de374Slin wang - Sun Microsystems - Beijing China  * @max_4ms_framelen: maximum frame length(bytes) for tx duration
114dd1de374Slin wang - Sun Microsystems - Beijing China  * @probe_interval: interval for rate control to probe for other rates
115dd1de374Slin wang - Sun Microsystems - Beijing China  * @rssi_reduce_interval: interval for rate control to reduce rssi
116dd1de374Slin wang - Sun Microsystems - Beijing China  * @initial_ratemax: initial ratemax value
117dd1de374Slin wang - Sun Microsystems - Beijing China  */
118dd1de374Slin wang - Sun Microsystems - Beijing China struct ath_rate_table {
119dd1de374Slin wang - Sun Microsystems - Beijing China 	int rate_cnt;
120dd1de374Slin wang - Sun Microsystems - Beijing China 	uint8_t rateCodeToIndex[256];
121dd1de374Slin wang - Sun Microsystems - Beijing China 	struct {
122dd1de374Slin wang - Sun Microsystems - Beijing China 		int valid;
123dd1de374Slin wang - Sun Microsystems - Beijing China 		int valid_single_stream;
124dd1de374Slin wang - Sun Microsystems - Beijing China 		uint8_t phy;
125dd1de374Slin wang - Sun Microsystems - Beijing China 		uint32_t ratekbps;
126dd1de374Slin wang - Sun Microsystems - Beijing China 		uint32_t user_ratekbps;
127dd1de374Slin wang - Sun Microsystems - Beijing China 		uint8_t ratecode;
128dd1de374Slin wang - Sun Microsystems - Beijing China 		uint8_t short_preamble;
129dd1de374Slin wang - Sun Microsystems - Beijing China 		uint8_t dot11rate;
130dd1de374Slin wang - Sun Microsystems - Beijing China 		uint8_t ctrl_rate;
131dd1de374Slin wang - Sun Microsystems - Beijing China 		int8_t rssi_ack_validmin;
132dd1de374Slin wang - Sun Microsystems - Beijing China 		int8_t rssi_ack_deltamin;
133dd1de374Slin wang - Sun Microsystems - Beijing China 		uint8_t base_index;
134dd1de374Slin wang - Sun Microsystems - Beijing China 		uint8_t cw40index;
135dd1de374Slin wang - Sun Microsystems - Beijing China 		uint8_t sgi_index;
136dd1de374Slin wang - Sun Microsystems - Beijing China 		uint8_t ht_index;
137dd1de374Slin wang - Sun Microsystems - Beijing China 		uint32_t max_4ms_framelen;
138dd1de374Slin wang - Sun Microsystems - Beijing China 		uint16_t lpAckDuration;
139dd1de374Slin wang - Sun Microsystems - Beijing China 		uint16_t spAckDuration;
140dd1de374Slin wang - Sun Microsystems - Beijing China 	} info[RATE_TABLE_SIZE];
141dd1de374Slin wang - Sun Microsystems - Beijing China 	uint32_t probe_interval;
142dd1de374Slin wang - Sun Microsystems - Beijing China 	uint32_t rssi_reduce_interval;
143dd1de374Slin wang - Sun Microsystems - Beijing China 	uint8_t initial_ratemax;
144dd1de374Slin wang - Sun Microsystems - Beijing China };
145dd1de374Slin wang - Sun Microsystems - Beijing China 
146dd1de374Slin wang - Sun Microsystems - Beijing China struct ath_tx_ratectrl_state {
147dd1de374Slin wang - Sun Microsystems - Beijing China 	int8_t rssi_thres; /* required rssi for this rate (dB) */
148dd1de374Slin wang - Sun Microsystems - Beijing China 	uint8_t per; /* recent estimate of packet error rate (%) */
149dd1de374Slin wang - Sun Microsystems - Beijing China };
150dd1de374Slin wang - Sun Microsystems - Beijing China 
151dd1de374Slin wang - Sun Microsystems - Beijing China struct ath_rateset {
152dd1de374Slin wang - Sun Microsystems - Beijing China 	uint8_t rs_nrates;
153dd1de374Slin wang - Sun Microsystems - Beijing China 	uint8_t rs_rates[ATH_RATE_MAX];
154dd1de374Slin wang - Sun Microsystems - Beijing China };
155dd1de374Slin wang - Sun Microsystems - Beijing China 
156dd1de374Slin wang - Sun Microsystems - Beijing China /*
157dd1de374Slin wang - Sun Microsystems - Beijing China  * struct ath_rate_priv - Rate Control priv data
158dd1de374Slin wang - Sun Microsystems - Beijing China  * @state: RC state
159dd1de374Slin wang - Sun Microsystems - Beijing China  * @rssi_last: last ACK rssi
160dd1de374Slin wang - Sun Microsystems - Beijing China  * @rssi_last_lookup: last ACK rssi used for lookup
161dd1de374Slin wang - Sun Microsystems - Beijing China  * @rssi_last_prev: previous last ACK rssi
162dd1de374Slin wang - Sun Microsystems - Beijing China  * @rssi_last_prev2: 2nd previous last ACK rssi
163dd1de374Slin wang - Sun Microsystems - Beijing China  * @rssi_sum_cnt: count of rssi_sum for averaging
164dd1de374Slin wang - Sun Microsystems - Beijing China  * @rssi_sum_rate: rate that we are averaging
165dd1de374Slin wang - Sun Microsystems - Beijing China  * @rssi_sum: running sum of rssi for averaging
166dd1de374Slin wang - Sun Microsystems - Beijing China  * @probe_rate: rate we are probing at
167dd1de374Slin wang - Sun Microsystems - Beijing China  * @rssi_time: msec timestamp for last ack rssi
168dd1de374Slin wang - Sun Microsystems - Beijing China  * @rssi_down_time: msec timestamp for last down step
169dd1de374Slin wang - Sun Microsystems - Beijing China  * @probe_time: msec timestamp for last probe
170dd1de374Slin wang - Sun Microsystems - Beijing China  * @hw_maxretry_pktcnt: num of packets since we got HW max retry error
171dd1de374Slin wang - Sun Microsystems - Beijing China  * @max_valid_rate: maximum number of valid rate
172dd1de374Slin wang - Sun Microsystems - Beijing China  * @per_down_time: msec timestamp for last PER down step
173dd1de374Slin wang - Sun Microsystems - Beijing China  * @valid_phy_ratecnt: valid rate count
174dd1de374Slin wang - Sun Microsystems - Beijing China  * @rate_max_phy: phy index for the max rate
175dd1de374Slin wang - Sun Microsystems - Beijing China  * @probe_interval: interval for ratectrl to probe for other rates
176dd1de374Slin wang - Sun Microsystems - Beijing China  * @prev_data_rix: rate idx of last data frame
177dd1de374Slin wang - Sun Microsystems - Beijing China  * @ht_cap: HT capabilities
178dd1de374Slin wang - Sun Microsystems - Beijing China  * @single_stream: When TRUE, only single TX stream possible
179dd1de374Slin wang - Sun Microsystems - Beijing China  * @neg_rates: Negotatied rates
180dd1de374Slin wang - Sun Microsystems - Beijing China  * @neg_ht_rates: Negotiated HT rates
181dd1de374Slin wang - Sun Microsystems - Beijing China  */
182dd1de374Slin wang - Sun Microsystems - Beijing China struct ath_rate_priv {
183dd1de374Slin wang - Sun Microsystems - Beijing China 	int8_t rssi_last;
184dd1de374Slin wang - Sun Microsystems - Beijing China 	int8_t rssi_last_lookup;
185dd1de374Slin wang - Sun Microsystems - Beijing China 	int8_t rssi_last_prev;
186dd1de374Slin wang - Sun Microsystems - Beijing China 	int8_t rssi_last_prev2;
187dd1de374Slin wang - Sun Microsystems - Beijing China 	int32_t rssi_sum_cnt;
188dd1de374Slin wang - Sun Microsystems - Beijing China 	int32_t rssi_sum_rate;
189dd1de374Slin wang - Sun Microsystems - Beijing China 	int32_t rssi_sum;
190dd1de374Slin wang - Sun Microsystems - Beijing China 	uint8_t rate_table_size;
191dd1de374Slin wang - Sun Microsystems - Beijing China 	uint8_t probe_rate;
192dd1de374Slin wang - Sun Microsystems - Beijing China 	uint8_t hw_maxretry_pktcnt;
193dd1de374Slin wang - Sun Microsystems - Beijing China 	uint8_t max_valid_rate;
194dd1de374Slin wang - Sun Microsystems - Beijing China 	uint8_t valid_rate_index[RATE_TABLE_SIZE];
195dd1de374Slin wang - Sun Microsystems - Beijing China 	uint8_t ht_cap;
196dd1de374Slin wang - Sun Microsystems - Beijing China 	uint8_t single_stream;
197dd1de374Slin wang - Sun Microsystems - Beijing China 	uint8_t valid_phy_ratecnt[WLAN_RC_PHY_MAX];
198dd1de374Slin wang - Sun Microsystems - Beijing China 	uint8_t valid_phy_rateidx[WLAN_RC_PHY_MAX][RATE_TABLE_SIZE];
199dd1de374Slin wang - Sun Microsystems - Beijing China 	uint8_t rc_phy_mode;
200dd1de374Slin wang - Sun Microsystems - Beijing China 	uint8_t rate_max_phy;
201dd1de374Slin wang - Sun Microsystems - Beijing China 	uint32_t rssi_time;
202dd1de374Slin wang - Sun Microsystems - Beijing China 	uint32_t rssi_down_time;
203dd1de374Slin wang - Sun Microsystems - Beijing China 	uint32_t probe_time;
204dd1de374Slin wang - Sun Microsystems - Beijing China 	uint32_t per_down_time;
205dd1de374Slin wang - Sun Microsystems - Beijing China 	uint32_t probe_interval;
206dd1de374Slin wang - Sun Microsystems - Beijing China 	uint32_t prev_data_rix;
207dd1de374Slin wang - Sun Microsystems - Beijing China 	uint32_t tx_triglevel_max;
208dd1de374Slin wang - Sun Microsystems - Beijing China 	struct ath_tx_ratectrl_state state[RATE_TABLE_SIZE];
209dd1de374Slin wang - Sun Microsystems - Beijing China 	struct ath_rateset neg_rates;
210dd1de374Slin wang - Sun Microsystems - Beijing China 	struct ath_rateset neg_ht_rates;
211dd1de374Slin wang - Sun Microsystems - Beijing China };
212dd1de374Slin wang - Sun Microsystems - Beijing China 
213*c0c93480Slin wang - Sun Microsystems - Beijing China enum ath9k_internal_frame_type {
214*c0c93480Slin wang - Sun Microsystems - Beijing China 	ATH9K_NOT_INTERNAL,
215*c0c93480Slin wang - Sun Microsystems - Beijing China 	ATH9K_INT_PAUSE,
216*c0c93480Slin wang - Sun Microsystems - Beijing China 	ATH9K_INT_UNPAUSE
217*c0c93480Slin wang - Sun Microsystems - Beijing China };
218*c0c93480Slin wang - Sun Microsystems - Beijing China 
219dd1de374Slin wang - Sun Microsystems - Beijing China struct ath_tx_info_priv {
220dd1de374Slin wang - Sun Microsystems - Beijing China 	struct ath_tx_status tx;
221dd1de374Slin wang - Sun Microsystems - Beijing China 	int n_frames;
222dd1de374Slin wang - Sun Microsystems - Beijing China 	int n_bad_frames;
223dd1de374Slin wang - Sun Microsystems - Beijing China 	boolean_t update_rc;
224*c0c93480Slin wang - Sun Microsystems - Beijing China 	enum ath9k_internal_frame_type frame_type;
225dd1de374Slin wang - Sun Microsystems - Beijing China };
226dd1de374Slin wang - Sun Microsystems - Beijing China 
227dd1de374Slin wang - Sun Microsystems - Beijing China #define	ATH_TX_INFO_PRIV(tx_info)	\
228dd1de374Slin wang - Sun Microsystems - Beijing China 	((struct ath_tx_info_priv *)((tx_info)->rate_driver_data[0]))
229dd1de374Slin wang - Sun Microsystems - Beijing China 
230*c0c93480Slin wang - Sun Microsystems - Beijing China /* Temp private definitions for RC */
231*c0c93480Slin wang - Sun Microsystems - Beijing China struct ath9k_tx_rate {
232*c0c93480Slin wang - Sun Microsystems - Beijing China 	int8_t idx;
233*c0c93480Slin wang - Sun Microsystems - Beijing China 	uint8_t count;
234*c0c93480Slin wang - Sun Microsystems - Beijing China 	uint8_t flags;
235*c0c93480Slin wang - Sun Microsystems - Beijing China };
236*c0c93480Slin wang - Sun Microsystems - Beijing China 
237*c0c93480Slin wang - Sun Microsystems - Beijing China enum ath9k_rate_control_flags {
238*c0c93480Slin wang - Sun Microsystems - Beijing China 	ATH9K_TX_RC_USE_RTS_CTS		= BIT(0),
239*c0c93480Slin wang - Sun Microsystems - Beijing China 	ATH9K_TX_RC_USE_CTS_PROTECT		= BIT(1),
240*c0c93480Slin wang - Sun Microsystems - Beijing China 	ATH9K_TX_RC_USE_SHORT_PREAMBLE	= BIT(2),
241*c0c93480Slin wang - Sun Microsystems - Beijing China 	ATH9K_TX_RC_MCS			= BIT(3),
242*c0c93480Slin wang - Sun Microsystems - Beijing China 	ATH9K_TX_RC_GREEN_FIELD		= BIT(4),
243*c0c93480Slin wang - Sun Microsystems - Beijing China 	ATH9K_TX_RC_40_MHZ_WIDTH		= BIT(5),
244*c0c93480Slin wang - Sun Microsystems - Beijing China 	ATH9K_TX_RC_DUP_DATA		= BIT(6),
245*c0c93480Slin wang - Sun Microsystems - Beijing China 	ATH9K_TX_RC_SHORT_GI		= BIT(7),
246*c0c93480Slin wang - Sun Microsystems - Beijing China };
247*c0c93480Slin wang - Sun Microsystems - Beijing China 
248dd1de374Slin wang - Sun Microsystems - Beijing China /* RATE */
249*c0c93480Slin wang - Sun Microsystems - Beijing China void arn_tx_status(struct arn_softc *sc, struct ath_buf *bf, boolean_t is_data);
250*c0c93480Slin wang - Sun Microsystems - Beijing China void arn_get_rate(struct arn_softc *sc, struct ath_buf *bf,
251*c0c93480Slin wang - Sun Microsystems - Beijing China     struct ieee80211_frame *wh);
252*c0c93480Slin wang - Sun Microsystems - Beijing China void arn_rate_init(struct arn_softc *sc, struct ieee80211_node *in);
253*c0c93480Slin wang - Sun Microsystems - Beijing China 
254*c0c93480Slin wang - Sun Microsystems - Beijing China 
255dd1de374Slin wang - Sun Microsystems - Beijing China void arn_rate_attach(struct arn_softc *sc);
256*c0c93480Slin wang - Sun Microsystems - Beijing China void arn_rate_update(struct arn_softc *sc,
257*c0c93480Slin wang - Sun Microsystems - Beijing China     struct ieee80211_node *in, int32_t rate);
258dd1de374Slin wang - Sun Microsystems - Beijing China void arn_rate_ctl_start(struct arn_softc *sc, struct ieee80211_node *in);
259dd1de374Slin wang - Sun Microsystems - Beijing China void arn_rate_cb(void *arg, struct ieee80211_node *in);
260dd1de374Slin wang - Sun Microsystems - Beijing China void arn_rate_ctl_reset(struct arn_softc *sc, enum ieee80211_state state);
261dd1de374Slin wang - Sun Microsystems - Beijing China void arn_rate_ctl(void *arg, struct ieee80211_node *in);
262dd1de374Slin wang - Sun Microsystems - Beijing China 
263dd1de374Slin wang - Sun Microsystems - Beijing China #ifdef __cplusplus
264dd1de374Slin wang - Sun Microsystems - Beijing China }
265dd1de374Slin wang - Sun Microsystems - Beijing China #endif
266dd1de374Slin wang - Sun Microsystems - Beijing China 
267dd1de374Slin wang - Sun Microsystems - Beijing China #endif /* _ARN_RC_H */
268