xref: /illumos-gate/usr/src/uts/common/io/uath/uath_var.h (revision 56f9a274)
1*56f9a274Sfei feng - Sun Microsystems - Beijing China /*
2*56f9a274Sfei feng - Sun Microsystems - Beijing China  *
3*56f9a274Sfei feng - Sun Microsystems - Beijing China  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
4*56f9a274Sfei feng - Sun Microsystems - Beijing China  * Use is subject to license terms.
5*56f9a274Sfei feng - Sun Microsystems - Beijing China  */
6*56f9a274Sfei feng - Sun Microsystems - Beijing China 
7*56f9a274Sfei feng - Sun Microsystems - Beijing China /*
8*56f9a274Sfei feng - Sun Microsystems - Beijing China  * Copyright (c) 2006
9*56f9a274Sfei feng - Sun Microsystems - Beijing China  *	Damien Bergamini <damien.bergamini@free.fr>
10*56f9a274Sfei feng - Sun Microsystems - Beijing China  * Copyright (c) 2006 Sam Leffler, Errno Consulting
11*56f9a274Sfei feng - Sun Microsystems - Beijing China  * Copyright (c) 2008-2009 Weongyo Jeong <weongyo@freebsd.org>
12*56f9a274Sfei feng - Sun Microsystems - Beijing China  *
13*56f9a274Sfei feng - Sun Microsystems - Beijing China  * Permission to use, copy, modify, and distribute this software for any
14*56f9a274Sfei feng - Sun Microsystems - Beijing China  * purpose with or without fee is hereby granted, provided that the above
15*56f9a274Sfei feng - Sun Microsystems - Beijing China  * copyright notice and this permission notice appear in all copies.
16*56f9a274Sfei feng - Sun Microsystems - Beijing China  *
17*56f9a274Sfei feng - Sun Microsystems - Beijing China  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
18*56f9a274Sfei feng - Sun Microsystems - Beijing China  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
19*56f9a274Sfei feng - Sun Microsystems - Beijing China  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
20*56f9a274Sfei feng - Sun Microsystems - Beijing China  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
21*56f9a274Sfei feng - Sun Microsystems - Beijing China  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
22*56f9a274Sfei feng - Sun Microsystems - Beijing China  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
23*56f9a274Sfei feng - Sun Microsystems - Beijing China  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
24*56f9a274Sfei feng - Sun Microsystems - Beijing China  */
25*56f9a274Sfei feng - Sun Microsystems - Beijing China 
26*56f9a274Sfei feng - Sun Microsystems - Beijing China 
27*56f9a274Sfei feng - Sun Microsystems - Beijing China #ifndef	_UATH_VAR_H
28*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	_UATH_VAR_H
29*56f9a274Sfei feng - Sun Microsystems - Beijing China 
30*56f9a274Sfei feng - Sun Microsystems - Beijing China #include <sys/queue.h>
31*56f9a274Sfei feng - Sun Microsystems - Beijing China 
32*56f9a274Sfei feng - Sun Microsystems - Beijing China #ifdef __cplusplus
33*56f9a274Sfei feng - Sun Microsystems - Beijing China extern "C" {
34*56f9a274Sfei feng - Sun Microsystems - Beijing China #endif
35*56f9a274Sfei feng - Sun Microsystems - Beijing China 
36*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_ID_BSS		2	/* Connection ID  */
37*56f9a274Sfei feng - Sun Microsystems - Beijing China 
38*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_RX_DATA_LIST_COUNT	1	/* 128 */
39*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_TX_DATA_LIST_COUNT	8	/* 16 */
40*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_CMD_LIST_COUNT	8	/* 60 */
41*56f9a274Sfei feng - Sun Microsystems - Beijing China 
42*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_DATA_TIMEOUT	10000
43*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_CMD_TIMEOUT	1000
44*56f9a274Sfei feng - Sun Microsystems - Beijing China 
45*56f9a274Sfei feng - Sun Microsystems - Beijing China /*
46*56f9a274Sfei feng - Sun Microsystems - Beijing China  * Useful combinations of channel characteristics from net80211.
47*56f9a274Sfei feng - Sun Microsystems - Beijing China  */
48*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_CHAN_A	\
49*56f9a274Sfei feng - Sun Microsystems - Beijing China 	(IEEE80211_CHAN_5GHZ | IEEE80211_CHAN_OFDM)
50*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_CHAN_B	\
51*56f9a274Sfei feng - Sun Microsystems - Beijing China 	(IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_CCK)
52*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_CHAN_PUREG	\
53*56f9a274Sfei feng - Sun Microsystems - Beijing China 	(IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_OFDM)
54*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_CHAN_G	\
55*56f9a274Sfei feng - Sun Microsystems - Beijing China 	(IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_DYN)
56*56f9a274Sfei feng - Sun Microsystems - Beijing China 
57*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_IS_CHAN_A(_c)		\
58*56f9a274Sfei feng - Sun Microsystems - Beijing China 	(((_c)->ich_flags & UATH_CHAN_A) == UATH_CHAN_A)
59*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_IS_CHAN_B(_c)		\
60*56f9a274Sfei feng - Sun Microsystems - Beijing China 	(((_c)->ich_flags & UATH_CHAN_B) == UATH_CHAN_B)
61*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_IS_CHAN_PUREG(_c)	\
62*56f9a274Sfei feng - Sun Microsystems - Beijing China 	(((_c)->ich_flags & UATH_CHAN_PUREG) == UATH_CHAN_PUREG)
63*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_IS_CHAN_G(_c)		\
64*56f9a274Sfei feng - Sun Microsystems - Beijing China 	(((_c)->ich_flags & UATH_CHAN_G) == UATH_CHAN_G)
65*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_IS_CHAN_ANYG(_c)	\
66*56f9a274Sfei feng - Sun Microsystems - Beijing China 	(UATH_IS_CHAN_PUREG(_c) || UATH_IS_CHAN_G(_c))
67*56f9a274Sfei feng - Sun Microsystems - Beijing China 
68*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_IS_CHAN_OFDM(_c)	\
69*56f9a274Sfei feng - Sun Microsystems - Beijing China 	((_c)->ich_flags & IEEE80211_CHAN_OFDM)
70*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_IS_CHAN_CCK(_c)	\
71*56f9a274Sfei feng - Sun Microsystems - Beijing China 	((_c)->ich_flags & IEEE80211_CHAN_CCK)
72*56f9a274Sfei feng - Sun Microsystems - Beijing China 
73*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_NODE_QOS	0x0002		/* QoS enabled */
74*56f9a274Sfei feng - Sun Microsystems - Beijing China 
75*56f9a274Sfei feng - Sun Microsystems - Beijing China 
76*56f9a274Sfei feng - Sun Microsystems - Beijing China /* flags for sending firmware commands */
77*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_CMD_FLAG_ASYNC	(1 << 0)
78*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_CMD_FLAG_READ	(1 << 1)
79*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_CMD_FLAG_MAGIC	(1 << 2)
80*56f9a274Sfei feng - Sun Microsystems - Beijing China 
81*56f9a274Sfei feng - Sun Microsystems - Beijing China struct uath_cmd {
82*56f9a274Sfei feng - Sun Microsystems - Beijing China 	struct uath_softc	*sc;
83*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t		flags;
84*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t		msgid;
85*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint8_t			*buf;
86*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint16_t		buflen;
87*56f9a274Sfei feng - Sun Microsystems - Beijing China 	void			*odata;		/* NB: tx only */
88*56f9a274Sfei feng - Sun Microsystems - Beijing China 	int			olen;		/* space in odata */
89*56f9a274Sfei feng - Sun Microsystems - Beijing China 	STAILQ_ENTRY(uath_cmd)	next;
90*56f9a274Sfei feng - Sun Microsystems - Beijing China };
91*56f9a274Sfei feng - Sun Microsystems - Beijing China typedef STAILQ_HEAD(, uath_cmd) uath_cmdhead;
92*56f9a274Sfei feng - Sun Microsystems - Beijing China 
93*56f9a274Sfei feng - Sun Microsystems - Beijing China struct uath_data {
94*56f9a274Sfei feng - Sun Microsystems - Beijing China 	struct uath_softc	*sc;
95*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint8_t			*buf;
96*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint16_t		buflen;
97*56f9a274Sfei feng - Sun Microsystems - Beijing China 	struct ieee80211_node	*ni;		/* NB: tx only */
98*56f9a274Sfei feng - Sun Microsystems - Beijing China 	STAILQ_ENTRY(uath_data)	next;
99*56f9a274Sfei feng - Sun Microsystems - Beijing China };
100*56f9a274Sfei feng - Sun Microsystems - Beijing China typedef STAILQ_HEAD(, uath_data) uath_datahead;
101*56f9a274Sfei feng - Sun Microsystems - Beijing China 
102*56f9a274Sfei feng - Sun Microsystems - Beijing China struct uath_cmd_lock {
103*56f9a274Sfei feng - Sun Microsystems - Beijing China 	boolean_t	done;
104*56f9a274Sfei feng - Sun Microsystems - Beijing China 	kmutex_t	mutex;
105*56f9a274Sfei feng - Sun Microsystems - Beijing China 	kcondvar_t	cv;
106*56f9a274Sfei feng - Sun Microsystems - Beijing China };
107*56f9a274Sfei feng - Sun Microsystems - Beijing China 
108*56f9a274Sfei feng - Sun Microsystems - Beijing China struct uath_wme_settings {
109*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint8_t				aifsn;
110*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint8_t				logcwmin;
111*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint8_t				logcwmax;
112*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint16_t			txop;
113*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_TXOP_TO_US(txop)		((txop) << 5)
114*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint8_t				acm;
115*56f9a274Sfei feng - Sun Microsystems - Beijing China };
116*56f9a274Sfei feng - Sun Microsystems - Beijing China 
117*56f9a274Sfei feng - Sun Microsystems - Beijing China struct uath_devcap {
118*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			targetVersion;
119*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			targetRevision;
120*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			macVersion;
121*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			macRevision;
122*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			phyRevision;
123*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			analog5GhzRevision;
124*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			analog2GhzRevision;
125*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			regDomain;
126*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			regCapBits;
127*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			countryCode;
128*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			keyCacheSize;
129*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			numTxQueues;
130*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			connectionIdMax;
131*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			wirelessModes;
132*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_WIRELESS_MODE_11A		0x01
133*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_WIRELESS_MODE_TURBO	0x02
134*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_WIRELESS_MODE_11B		0x04
135*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_WIRELESS_MODE_11G		0x08
136*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_WIRELESS_MODE_108G		0x10
137*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			chanSpreadSupport;
138*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			compressSupport;
139*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			burstSupport;
140*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			fastFramesSupport;
141*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			chapTuningSupport;
142*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			turboGSupport;
143*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			turboPrimeSupport;
144*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			deviceType;
145*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			wmeSupport;
146*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			low2GhzChan;
147*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			high2GhzChan;
148*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			low5GhzChan;
149*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			high5GhzChan;
150*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			supportCipherWEP;
151*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			supportCipherAES_CCM;
152*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			supportCipherTKIP;
153*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			supportCipherMicAES_CCM;
154*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			supportMicTKIP;
155*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			twiceAntennaGain5G;
156*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			twiceAntennaGain2G;
157*56f9a274Sfei feng - Sun Microsystems - Beijing China };
158*56f9a274Sfei feng - Sun Microsystems - Beijing China 
159*56f9a274Sfei feng - Sun Microsystems - Beijing China struct uath_stat {
160*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			st_badchunkseqnum;
161*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			st_invalidlen;
162*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			st_multichunk;
163*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			st_toobigrxpkt;
164*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			st_stopinprogress;
165*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			st_crcerr;
166*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			st_phyerr;
167*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			st_decrypt_crcerr;
168*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			st_decrypt_micerr;
169*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			st_decomperr;
170*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			st_keyerr;
171*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t			st_err;
172*56f9a274Sfei feng - Sun Microsystems - Beijing China 	/* not use CMD/RX/TX queues, so ignore some structure */
173*56f9a274Sfei feng - Sun Microsystems - Beijing China };
174*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_STAT_INC(sc, var)		(sc)->sc_stat.var++
175*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_STAT_DEC(sc, var)		(sc)->sc_stat.var--
176*56f9a274Sfei feng - Sun Microsystems - Beijing China 
177*56f9a274Sfei feng - Sun Microsystems - Beijing China struct uath_softc {
178*56f9a274Sfei feng - Sun Microsystems - Beijing China 	struct ieee80211com	sc_ic;
179*56f9a274Sfei feng - Sun Microsystems - Beijing China 	dev_info_t		*sc_dev;
180*56f9a274Sfei feng - Sun Microsystems - Beijing China 
181*56f9a274Sfei feng - Sun Microsystems - Beijing China 	usb_client_dev_data_t	*sc_udev;	/* usb dev */
182*56f9a274Sfei feng - Sun Microsystems - Beijing China 	int			dev_flags;
183*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t		sc_flags;
184*56f9a274Sfei feng - Sun Microsystems - Beijing China 
185*56f9a274Sfei feng - Sun Microsystems - Beijing China 	usb_pipe_handle_t	rx_cmd_pipe;
186*56f9a274Sfei feng - Sun Microsystems - Beijing China 	usb_pipe_handle_t	rx_data_pipe;
187*56f9a274Sfei feng - Sun Microsystems - Beijing China 	usb_pipe_handle_t	tx_cmd_pipe;
188*56f9a274Sfei feng - Sun Microsystems - Beijing China 	usb_pipe_handle_t	tx_data_pipe;
189*56f9a274Sfei feng - Sun Microsystems - Beijing China 
190*56f9a274Sfei feng - Sun Microsystems - Beijing China 	kmutex_t		sc_genlock;
191*56f9a274Sfei feng - Sun Microsystems - Beijing China 	kmutex_t		sc_rxlock_cmd;
192*56f9a274Sfei feng - Sun Microsystems - Beijing China 	kmutex_t		sc_rxlock_data;
193*56f9a274Sfei feng - Sun Microsystems - Beijing China 	kmutex_t		sc_txlock_cmd;
194*56f9a274Sfei feng - Sun Microsystems - Beijing China 	kmutex_t		sc_txlock_data;
195*56f9a274Sfei feng - Sun Microsystems - Beijing China 
196*56f9a274Sfei feng - Sun Microsystems - Beijing China 	struct uath_cmd		sc_cmd[UATH_CMD_LIST_COUNT];
197*56f9a274Sfei feng - Sun Microsystems - Beijing China 	struct uath_data	sc_rx[UATH_RX_DATA_LIST_COUNT];
198*56f9a274Sfei feng - Sun Microsystems - Beijing China 	struct uath_data	sc_tx[UATH_TX_DATA_LIST_COUNT];
199*56f9a274Sfei feng - Sun Microsystems - Beijing China 
200*56f9a274Sfei feng - Sun Microsystems - Beijing China 	int			tx_cmd_queued;
201*56f9a274Sfei feng - Sun Microsystems - Beijing China 	int			rx_cmd_queued;
202*56f9a274Sfei feng - Sun Microsystems - Beijing China 	int			tx_data_queued;
203*56f9a274Sfei feng - Sun Microsystems - Beijing China 	int			rx_data_queued;
204*56f9a274Sfei feng - Sun Microsystems - Beijing China 
205*56f9a274Sfei feng - Sun Microsystems - Beijing China 	int			sc_cmdid;
206*56f9a274Sfei feng - Sun Microsystems - Beijing China 
207*56f9a274Sfei feng - Sun Microsystems - Beijing China 	struct uath_stat	sc_stat;
208*56f9a274Sfei feng - Sun Microsystems - Beijing China 
209*56f9a274Sfei feng - Sun Microsystems - Beijing China 	struct uath_cmd_lock 	rlock;
210*56f9a274Sfei feng - Sun Microsystems - Beijing China 	struct uath_cmd_lock 	wlock;
211*56f9a274Sfei feng - Sun Microsystems - Beijing China 
212*56f9a274Sfei feng - Sun Microsystems - Beijing China 	struct uath_devcap	sc_devcap;
213*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint8_t			sc_serial[16];
214*56f9a274Sfei feng - Sun Microsystems - Beijing China 
215*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t		sc_msgid;
216*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t		sc_seqnum;
217*56f9a274Sfei feng - Sun Microsystems - Beijing China 
218*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint8_t			sc_intrx_nextnum;
219*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t		sc_intrx_len;
220*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_MAX_INTRX_SIZE		3616
221*56f9a274Sfei feng - Sun Microsystems - Beijing China 
222*56f9a274Sfei feng - Sun Microsystems - Beijing China 	timeout_id_t		sc_scan_id;
223*56f9a274Sfei feng - Sun Microsystems - Beijing China 	timeout_id_t		sc_stat_id;
224*56f9a274Sfei feng - Sun Microsystems - Beijing China 
225*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t		sc_need_sched;
226*56f9a274Sfei feng - Sun Microsystems - Beijing China 
227*56f9a274Sfei feng - Sun Microsystems - Beijing China 	/* kstats */
228*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t		sc_tx_nobuf;
229*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t		sc_rx_nobuf;
230*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t		sc_tx_err;
231*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t		sc_rx_err;
232*56f9a274Sfei feng - Sun Microsystems - Beijing China 	uint32_t		sc_tx_retries;
233*56f9a274Sfei feng - Sun Microsystems - Beijing China 
234*56f9a274Sfei feng - Sun Microsystems - Beijing China 	int			(*sc_newstate)(struct ieee80211com *,
235*56f9a274Sfei feng - Sun Microsystems - Beijing China 				    enum ieee80211_state, int);
236*56f9a274Sfei feng - Sun Microsystems - Beijing China };
237*56f9a274Sfei feng - Sun Microsystems - Beijing China 
238*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_SUCCESS		0
239*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_FAILURE		-1
240*56f9a274Sfei feng - Sun Microsystems - Beijing China 
241*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_FLAG_RUNNING	(1 << 0)
242*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_FLAG_SUSPEND	(1 << 1)
243*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_FLAG_RECONNECT	(1 << 2)
244*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_FLAG_DISCONNECT	(1 << 3)
245*56f9a274Sfei feng - Sun Microsystems - Beijing China 
246*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_LOCK(sc)		mutex_enter(&(sc)->sc_genlock)
247*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_UNLOCK(sc)		mutex_exit(&(sc)->sc_genlock)
248*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_IS_RUNNING(_sc)	((_sc)->sc_flags & UATH_FLAG_RUNNING)
249*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_IS_SUSPEND(_sc)	((_sc)->sc_flags & UATH_FLAG_SUSPEND)
250*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_IS_DISCONNECT(_sc)	((_sc)->sc_flags & UATH_FLAG_DISCONNECT)
251*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_IS_RECONNECT(_sc)	((_sc)->sc_flags & UATH_FLAG_RECONNECT)
252*56f9a274Sfei feng - Sun Microsystems - Beijing China 
253*56f9a274Sfei feng - Sun Microsystems - Beijing China #define	UATH_RESET_INTRX(sc) do {		\
254*56f9a274Sfei feng - Sun Microsystems - Beijing China 	(sc)->sc_intrx_nextnum = 0;		\
255*56f9a274Sfei feng - Sun Microsystems - Beijing China 	(sc)->sc_intrx_len = 0;			\
256*56f9a274Sfei feng - Sun Microsystems - Beijing China 	_NOTE(CONSTCOND)						\
257*56f9a274Sfei feng - Sun Microsystems - Beijing China } while (0)
258*56f9a274Sfei feng - Sun Microsystems - Beijing China 
259*56f9a274Sfei feng - Sun Microsystems - Beijing China 
260*56f9a274Sfei feng - Sun Microsystems - Beijing China #ifdef __cplusplus
261*56f9a274Sfei feng - Sun Microsystems - Beijing China }
262*56f9a274Sfei feng - Sun Microsystems - Beijing China #endif
263*56f9a274Sfei feng - Sun Microsystems - Beijing China 
264*56f9a274Sfei feng - Sun Microsystems - Beijing China #endif /* _UATH_VAR_H */
265