xref: /onnv-gate/usr/src/uts/common/io/urtw/urtw_var.h (revision 9485:da1442e8c885)
1*9485SMikore.Li@Sun.COM /*
2*9485SMikore.Li@Sun.COM  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
3*9485SMikore.Li@Sun.COM  * Use is subject to license terms.
4*9485SMikore.Li@Sun.COM  */
5*9485SMikore.Li@Sun.COM 
6*9485SMikore.Li@Sun.COM /*
7*9485SMikore.Li@Sun.COM  * Copyright (c) 2008 Weongyo Jeong
8*9485SMikore.Li@Sun.COM  * All rights reserved.
9*9485SMikore.Li@Sun.COM  *
10*9485SMikore.Li@Sun.COM  * Redistribution and use in source and binary forms, with or without
11*9485SMikore.Li@Sun.COM  * modification, are permitted provided that the following conditions
12*9485SMikore.Li@Sun.COM  * are met:
13*9485SMikore.Li@Sun.COM  * 1. Redistributions of source code must retain the above copyright
14*9485SMikore.Li@Sun.COM  *    notice, this list of conditions and the following disclaimer,
15*9485SMikore.Li@Sun.COM  *    without modification.
16*9485SMikore.Li@Sun.COM  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
17*9485SMikore.Li@Sun.COM  *    similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
18*9485SMikore.Li@Sun.COM  *    redistribution must be conditioned upon including a substantially
19*9485SMikore.Li@Sun.COM  *    similar Disclaimer requirement for further binary redistribution.
20*9485SMikore.Li@Sun.COM  *
21*9485SMikore.Li@Sun.COM  * NO WARRANTY
22*9485SMikore.Li@Sun.COM  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23*9485SMikore.Li@Sun.COM  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24*9485SMikore.Li@Sun.COM  * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
25*9485SMikore.Li@Sun.COM  * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
26*9485SMikore.Li@Sun.COM  * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,
27*9485SMikore.Li@Sun.COM  * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
28*9485SMikore.Li@Sun.COM  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
29*9485SMikore.Li@Sun.COM  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
30*9485SMikore.Li@Sun.COM  * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
31*9485SMikore.Li@Sun.COM  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
32*9485SMikore.Li@Sun.COM  * THE POSSIBILITY OF SUCH DAMAGES.
33*9485SMikore.Li@Sun.COM  */
34*9485SMikore.Li@Sun.COM #ifndef	_URTW_VAR_H
35*9485SMikore.Li@Sun.COM #define	_URTW_VAR_H
36*9485SMikore.Li@Sun.COM 
37*9485SMikore.Li@Sun.COM #ifdef __cplusplus
38*9485SMikore.Li@Sun.COM extern "C" {
39*9485SMikore.Li@Sun.COM #endif
40*9485SMikore.Li@Sun.COM 
41*9485SMikore.Li@Sun.COM #define	URTW_RX_DATA_LIST_COUNT	(1)
42*9485SMikore.Li@Sun.COM #define	URTW_TX_DATA_LIST_COUNT	(16)
43*9485SMikore.Li@Sun.COM #define	URTW_RX_MAXSIZE	(0x9c4)
44*9485SMikore.Li@Sun.COM #define	URTW_TX_MAXSIZE	URTW_RX_MAXSIZE
45*9485SMikore.Li@Sun.COM 
46*9485SMikore.Li@Sun.COM #define	UT_READ_VENDOR_DEVICE (USB_DEV_REQ_TYPE_VENDOR |\
47*9485SMikore.Li@Sun.COM 	USB_DEV_REQ_DEV_TO_HOST)
48*9485SMikore.Li@Sun.COM 
49*9485SMikore.Li@Sun.COM #define	UT_WRITE_VENDOR_DEVICE (USB_DEV_REQ_TYPE_VENDOR |\
50*9485SMikore.Li@Sun.COM 	USB_DEV_REQ_HOST_TO_DEV)
51*9485SMikore.Li@Sun.COM 
52*9485SMikore.Li@Sun.COM #define	USBD_INVAL (-1)
53*9485SMikore.Li@Sun.COM #define	URTW_TX_TIMEOUT	(5)
54*9485SMikore.Li@Sun.COM 
55*9485SMikore.Li@Sun.COM typedef int usbd_status;
56*9485SMikore.Li@Sun.COM 
57*9485SMikore.Li@Sun.COM #define	URTW_MAX_CHANNELS (15)
58*9485SMikore.Li@Sun.COM #define	LOW_PRIORITY_PIPE (0)
59*9485SMikore.Li@Sun.COM #define	NORMAL_PRIORITY_PIPE (1)
60*9485SMikore.Li@Sun.COM #define	URTW_LED_LINKOFF_BLINK	(1000*1000)
61*9485SMikore.Li@Sun.COM #define	URTW_LED_LINKON_BLINK	(300*1000)
62*9485SMikore.Li@Sun.COM 
63*9485SMikore.Li@Sun.COM struct urtw_softc {
64*9485SMikore.Li@Sun.COM 	struct ieee80211com	sc_ic;
65*9485SMikore.Li@Sun.COM 	dev_info_t		*sc_dev;
66*9485SMikore.Li@Sun.COM 	kmutex_t		sc_genlock;
67*9485SMikore.Li@Sun.COM 	kmutex_t		tx_lock;
68*9485SMikore.Li@Sun.COM 	kmutex_t		rx_lock;
69*9485SMikore.Li@Sun.COM 	usb_client_dev_data_t	*sc_udev;
70*9485SMikore.Li@Sun.COM 	usb_pipe_handle_t	sc_rxpipe;
71*9485SMikore.Li@Sun.COM 	usb_pipe_handle_t	sc_txpipe_low;
72*9485SMikore.Li@Sun.COM 	usb_pipe_handle_t	sc_txpipe_normal;
73*9485SMikore.Li@Sun.COM 
74*9485SMikore.Li@Sun.COM 	int			sc_tx_low_queued;
75*9485SMikore.Li@Sun.COM 	int 			sc_tx_normal_queued;
76*9485SMikore.Li@Sun.COM 	int			rx_queued;
77*9485SMikore.Li@Sun.COM 	timeout_id_t		sc_scan_id;
78*9485SMikore.Li@Sun.COM 	uint32_t		sc_need_sched;
79*9485SMikore.Li@Sun.COM 	int			dwelltime;
80*9485SMikore.Li@Sun.COM 	/* kstats */
81*9485SMikore.Li@Sun.COM 	uint32_t		sc_tx_nobuf;
82*9485SMikore.Li@Sun.COM 	uint32_t		sc_rx_nobuf;
83*9485SMikore.Li@Sun.COM 	uint32_t		sc_rx_err;
84*9485SMikore.Li@Sun.COM 
85*9485SMikore.Li@Sun.COM 	int			sc_flags;
86*9485SMikore.Li@Sun.COM 	int			sc_arg;
87*9485SMikore.Li@Sun.COM 	int			(*sc_newstate)(struct ieee80211com *,
88*9485SMikore.Li@Sun.COM 				    enum ieee80211_state, int);
89*9485SMikore.Li@Sun.COM 
90*9485SMikore.Li@Sun.COM 	int				sc_epromtype;
91*9485SMikore.Li@Sun.COM #define	URTW_EEPROM_93C46		0
92*9485SMikore.Li@Sun.COM #define	URTW_EEPROM_93C56		1
93*9485SMikore.Li@Sun.COM 	uint8_t				sc_crcmon;
94*9485SMikore.Li@Sun.COM 	uint8_t				sc_bssid[IEEE80211_ADDR_LEN];
95*9485SMikore.Li@Sun.COM 
96*9485SMikore.Li@Sun.COM 	/* for RF  */
97*9485SMikore.Li@Sun.COM 	usbd_status			(*sc_rf_init)(struct urtw_softc *);
98*9485SMikore.Li@Sun.COM 	usbd_status			(*sc_rf_set_chan)(struct urtw_softc *,
99*9485SMikore.Li@Sun.COM 					    int);
100*9485SMikore.Li@Sun.COM 	usbd_status			(*sc_rf_set_sens)(struct urtw_softc *,
101*9485SMikore.Li@Sun.COM 					    int);
102*9485SMikore.Li@Sun.COM 	uint8_t				sc_rfchip;
103*9485SMikore.Li@Sun.COM 	uint32_t			sc_max_sens;
104*9485SMikore.Li@Sun.COM 	uint32_t			sc_sens;
105*9485SMikore.Li@Sun.COM 	/* for LED  */
106*9485SMikore.Li@Sun.COM 	kmutex_t			sc_ledlock;
107*9485SMikore.Li@Sun.COM 	timeout_id_t			sc_led_ch;
108*9485SMikore.Li@Sun.COM 	uint8_t				sc_psr;
109*9485SMikore.Li@Sun.COM 	uint8_t				sc_strategy;
110*9485SMikore.Li@Sun.COM 	uint8_t				sc_led_freq;
111*9485SMikore.Li@Sun.COM #define	URTW_LED_GPIO			1
112*9485SMikore.Li@Sun.COM 	uint8_t				sc_gpio_ledon;
113*9485SMikore.Li@Sun.COM 	uint8_t				sc_gpio_ledinprogress;
114*9485SMikore.Li@Sun.COM 	uint8_t				sc_gpio_ledstate;
115*9485SMikore.Li@Sun.COM 	uint8_t				sc_gpio_ledpin;
116*9485SMikore.Li@Sun.COM 	uint8_t				sc_gpio_blinktime;
117*9485SMikore.Li@Sun.COM 	uint8_t				sc_gpio_blinkstate;
118*9485SMikore.Li@Sun.COM 	uint8_t				sc_rts_retry;
119*9485SMikore.Li@Sun.COM 	uint8_t				sc_tx_retry;
120*9485SMikore.Li@Sun.COM 	uint8_t				sc_preamble_mode;
121*9485SMikore.Li@Sun.COM 	int				sc_currate;
122*9485SMikore.Li@Sun.COM 	/* TX power  */
123*9485SMikore.Li@Sun.COM 	uint8_t				sc_txpwr_cck[URTW_MAX_CHANNELS];
124*9485SMikore.Li@Sun.COM 	uint8_t				sc_txpwr_cck_base;
125*9485SMikore.Li@Sun.COM 	uint8_t				sc_txpwr_ofdm[URTW_MAX_CHANNELS];
126*9485SMikore.Li@Sun.COM 	uint8_t				sc_txpwr_ofdm_base;
127*9485SMikore.Li@Sun.COM };
128*9485SMikore.Li@Sun.COM #define	URTW_FLAG_RUNNING	(1 << 0)
129*9485SMikore.Li@Sun.COM #define	URTW_FLAG_SUSPEND	(1 << 1)
130*9485SMikore.Li@Sun.COM #define	URTW_FLAG_PLUGIN_ONLINE		(1 << 2)
131*9485SMikore.Li@Sun.COM 
132*9485SMikore.Li@Sun.COM #define	URTW_IS_PLUGIN_ONLINE(_sc) \
133*9485SMikore.Li@Sun.COM 	((_sc)->sc_flags & URTW_FLAG_PLUGIN_ONLINE)
134*9485SMikore.Li@Sun.COM #define	URTW_IS_RUNNING(_sc) \
135*9485SMikore.Li@Sun.COM 	((_sc)->sc_flags & URTW_FLAG_RUNNING)
136*9485SMikore.Li@Sun.COM #define	URTW_IS_NOT_RUNNING(_sc) \
137*9485SMikore.Li@Sun.COM 	(((_sc)->sc_flags & URTW_FLAG_RUNNING) == 0)
138*9485SMikore.Li@Sun.COM #define	URTW_IS_SUSPENDING(_sc)	((_sc)->sc_flags & URTW_FLAG_SUSPEND)
139*9485SMikore.Li@Sun.COM 
140*9485SMikore.Li@Sun.COM #define	URTW_LOCK(sc)		mutex_enter(&(sc)->sc_genlock)
141*9485SMikore.Li@Sun.COM #define	URTW_UNLOCK(sc)		mutex_exit(&(sc)->sc_genlock)
142*9485SMikore.Li@Sun.COM #define	URTW_LEDLOCK(sc)	mutex_enter(&(sc)->sc_ledlock)
143*9485SMikore.Li@Sun.COM #define	URTW_LEDUNLOCK(sc)	mutex_exit(&(sc)->sc_ledlock)
144*9485SMikore.Li@Sun.COM 
145*9485SMikore.Li@Sun.COM #ifdef __cplusplus
146*9485SMikore.Li@Sun.COM }
147*9485SMikore.Li@Sun.COM #endif
148*9485SMikore.Li@Sun.COM 
149*9485SMikore.Li@Sun.COM #endif /* _URTW_VAR_H */
150