xref: /onnv-gate/usr/src/uts/common/io/urtw/urtw_var.h (revision 10364:b6fbd1c0a94d)
19485SMikore.Li@Sun.COM /*
29485SMikore.Li@Sun.COM  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
39485SMikore.Li@Sun.COM  * Use is subject to license terms.
49485SMikore.Li@Sun.COM  */
59485SMikore.Li@Sun.COM 
69485SMikore.Li@Sun.COM /*
79485SMikore.Li@Sun.COM  * Copyright (c) 2008 Weongyo Jeong
89485SMikore.Li@Sun.COM  * All rights reserved.
99485SMikore.Li@Sun.COM  *
109485SMikore.Li@Sun.COM  * Redistribution and use in source and binary forms, with or without
119485SMikore.Li@Sun.COM  * modification, are permitted provided that the following conditions
129485SMikore.Li@Sun.COM  * are met:
139485SMikore.Li@Sun.COM  * 1. Redistributions of source code must retain the above copyright
149485SMikore.Li@Sun.COM  *    notice, this list of conditions and the following disclaimer,
159485SMikore.Li@Sun.COM  *    without modification.
169485SMikore.Li@Sun.COM  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
179485SMikore.Li@Sun.COM  *    similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
189485SMikore.Li@Sun.COM  *    redistribution must be conditioned upon including a substantially
199485SMikore.Li@Sun.COM  *    similar Disclaimer requirement for further binary redistribution.
209485SMikore.Li@Sun.COM  *
219485SMikore.Li@Sun.COM  * NO WARRANTY
229485SMikore.Li@Sun.COM  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
239485SMikore.Li@Sun.COM  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
249485SMikore.Li@Sun.COM  * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
259485SMikore.Li@Sun.COM  * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
269485SMikore.Li@Sun.COM  * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,
279485SMikore.Li@Sun.COM  * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
289485SMikore.Li@Sun.COM  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
299485SMikore.Li@Sun.COM  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
309485SMikore.Li@Sun.COM  * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
319485SMikore.Li@Sun.COM  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
329485SMikore.Li@Sun.COM  * THE POSSIBILITY OF SUCH DAMAGES.
339485SMikore.Li@Sun.COM  */
349485SMikore.Li@Sun.COM #ifndef	_URTW_VAR_H
359485SMikore.Li@Sun.COM #define	_URTW_VAR_H
369485SMikore.Li@Sun.COM 
379485SMikore.Li@Sun.COM #ifdef __cplusplus
389485SMikore.Li@Sun.COM extern "C" {
399485SMikore.Li@Sun.COM #endif
409485SMikore.Li@Sun.COM 
41*10364SMikore.Li@Sun.COM #define	URTW_RX_DATA_LIST_COUNT	(2)
429485SMikore.Li@Sun.COM #define	URTW_TX_DATA_LIST_COUNT	(16)
439485SMikore.Li@Sun.COM #define	URTW_RX_MAXSIZE	(0x9c4)
449485SMikore.Li@Sun.COM #define	URTW_TX_MAXSIZE	URTW_RX_MAXSIZE
459485SMikore.Li@Sun.COM 
469485SMikore.Li@Sun.COM #define	UT_READ_VENDOR_DEVICE (USB_DEV_REQ_TYPE_VENDOR |\
479485SMikore.Li@Sun.COM 	USB_DEV_REQ_DEV_TO_HOST)
489485SMikore.Li@Sun.COM 
499485SMikore.Li@Sun.COM #define	UT_WRITE_VENDOR_DEVICE (USB_DEV_REQ_TYPE_VENDOR |\
509485SMikore.Li@Sun.COM 	USB_DEV_REQ_HOST_TO_DEV)
519485SMikore.Li@Sun.COM 
529485SMikore.Li@Sun.COM #define	USBD_INVAL (-1)
539485SMikore.Li@Sun.COM #define	URTW_TX_TIMEOUT	(5)
549485SMikore.Li@Sun.COM 
559485SMikore.Li@Sun.COM typedef int usbd_status;
569485SMikore.Li@Sun.COM 
579485SMikore.Li@Sun.COM #define	URTW_MAX_CHANNELS (15)
589485SMikore.Li@Sun.COM #define	LOW_PRIORITY_PIPE (0)
599485SMikore.Li@Sun.COM #define	NORMAL_PRIORITY_PIPE (1)
609485SMikore.Li@Sun.COM #define	URTW_LED_LINKOFF_BLINK	(1000*1000)
619485SMikore.Li@Sun.COM #define	URTW_LED_LINKON_BLINK	(300*1000)
629485SMikore.Li@Sun.COM 
63*10364SMikore.Li@Sun.COM struct urtw_rf {
64*10364SMikore.Li@Sun.COM 	/* RF methods */
65*10364SMikore.Li@Sun.COM 	usbd_status			(*init)(struct urtw_rf *);
66*10364SMikore.Li@Sun.COM 	usbd_status			(*set_chan)(struct urtw_rf *, int);
67*10364SMikore.Li@Sun.COM 	usbd_status			(*set_sens)(struct urtw_rf *);
68*10364SMikore.Li@Sun.COM 
69*10364SMikore.Li@Sun.COM 	/* RF attributes */
70*10364SMikore.Li@Sun.COM 	struct urtw_softc		*rf_sc;
71*10364SMikore.Li@Sun.COM 	uint32_t			max_sens;
72*10364SMikore.Li@Sun.COM 	int32_t				sens;
73*10364SMikore.Li@Sun.COM };
74*10364SMikore.Li@Sun.COM 
759485SMikore.Li@Sun.COM struct urtw_softc {
769485SMikore.Li@Sun.COM 	struct ieee80211com	sc_ic;
779485SMikore.Li@Sun.COM 	dev_info_t		*sc_dev;
789485SMikore.Li@Sun.COM 	kmutex_t		sc_genlock;
799485SMikore.Li@Sun.COM 	kmutex_t		tx_lock;
809485SMikore.Li@Sun.COM 	kmutex_t		rx_lock;
819485SMikore.Li@Sun.COM 	usb_client_dev_data_t	*sc_udev;
829485SMikore.Li@Sun.COM 	usb_pipe_handle_t	sc_rxpipe;
839485SMikore.Li@Sun.COM 	usb_pipe_handle_t	sc_txpipe_low;
849485SMikore.Li@Sun.COM 	usb_pipe_handle_t	sc_txpipe_normal;
859485SMikore.Li@Sun.COM 
869485SMikore.Li@Sun.COM 	int			sc_tx_low_queued;
879485SMikore.Li@Sun.COM 	int 			sc_tx_normal_queued;
889485SMikore.Li@Sun.COM 	int			rx_queued;
899485SMikore.Li@Sun.COM 	timeout_id_t		sc_scan_id;
909485SMikore.Li@Sun.COM 	uint32_t		sc_need_sched;
919485SMikore.Li@Sun.COM 	int			dwelltime;
929485SMikore.Li@Sun.COM 	/* kstats */
939485SMikore.Li@Sun.COM 	uint32_t		sc_tx_nobuf;
949485SMikore.Li@Sun.COM 	uint32_t		sc_rx_nobuf;
959485SMikore.Li@Sun.COM 	uint32_t		sc_rx_err;
969485SMikore.Li@Sun.COM 
979485SMikore.Li@Sun.COM 	int			sc_flags;
989485SMikore.Li@Sun.COM 	int			sc_arg;
999485SMikore.Li@Sun.COM 	int			(*sc_newstate)(struct ieee80211com *,
1009485SMikore.Li@Sun.COM 				    enum ieee80211_state, int);
1019485SMikore.Li@Sun.COM 
1029485SMikore.Li@Sun.COM 	int				sc_epromtype;
1039485SMikore.Li@Sun.COM #define	URTW_EEPROM_93C46		0
1049485SMikore.Li@Sun.COM #define	URTW_EEPROM_93C56		1
1059485SMikore.Li@Sun.COM 	uint8_t				sc_crcmon;
1069485SMikore.Li@Sun.COM 	uint8_t				sc_bssid[IEEE80211_ADDR_LEN];
1079485SMikore.Li@Sun.COM 
108*10364SMikore.Li@Sun.COM 	struct urtw_rf			sc_rf;
109*10364SMikore.Li@Sun.COM 
1109485SMikore.Li@Sun.COM 	/* for LED  */
1119485SMikore.Li@Sun.COM 	kmutex_t			sc_ledlock;
1129485SMikore.Li@Sun.COM 	timeout_id_t			sc_led_ch;
1139485SMikore.Li@Sun.COM 	uint8_t				sc_psr;
1149485SMikore.Li@Sun.COM 	uint8_t				sc_strategy;
1159485SMikore.Li@Sun.COM 	uint8_t				sc_led_freq;
1169485SMikore.Li@Sun.COM #define	URTW_LED_GPIO			1
1179485SMikore.Li@Sun.COM 	uint8_t				sc_gpio_ledon;
1189485SMikore.Li@Sun.COM 	uint8_t				sc_gpio_ledinprogress;
1199485SMikore.Li@Sun.COM 	uint8_t				sc_gpio_ledstate;
1209485SMikore.Li@Sun.COM 	uint8_t				sc_gpio_ledpin;
1219485SMikore.Li@Sun.COM 	uint8_t				sc_gpio_blinktime;
1229485SMikore.Li@Sun.COM 	uint8_t				sc_gpio_blinkstate;
1239485SMikore.Li@Sun.COM 	uint8_t				sc_rts_retry;
1249485SMikore.Li@Sun.COM 	uint8_t				sc_tx_retry;
1259485SMikore.Li@Sun.COM 	uint8_t				sc_preamble_mode;
1269485SMikore.Li@Sun.COM 	int				sc_currate;
1279485SMikore.Li@Sun.COM 	/* TX power  */
1289485SMikore.Li@Sun.COM 	uint8_t				sc_txpwr_cck[URTW_MAX_CHANNELS];
1299485SMikore.Li@Sun.COM 	uint8_t				sc_txpwr_cck_base;
1309485SMikore.Li@Sun.COM 	uint8_t				sc_txpwr_ofdm[URTW_MAX_CHANNELS];
1319485SMikore.Li@Sun.COM 	uint8_t				sc_txpwr_ofdm_base;
132*10364SMikore.Li@Sun.COM 
133*10364SMikore.Li@Sun.COM 	uint8_t				sc_hwrev;
134*10364SMikore.Li@Sun.COM 	int				(*urtw_init)(void *);
1359485SMikore.Li@Sun.COM };
1369485SMikore.Li@Sun.COM #define	URTW_FLAG_RUNNING	(1 << 0)
1379485SMikore.Li@Sun.COM #define	URTW_FLAG_SUSPEND	(1 << 1)
138*10364SMikore.Li@Sun.COM #define	URTW_FLAG_PLUGIN_ONLINE	(1 << 2)
139*10364SMikore.Li@Sun.COM #define	URTW_FLAG_HP		(1 << 3)
1409485SMikore.Li@Sun.COM 
1419485SMikore.Li@Sun.COM #define	URTW_IS_PLUGIN_ONLINE(_sc) \
1429485SMikore.Li@Sun.COM 	((_sc)->sc_flags & URTW_FLAG_PLUGIN_ONLINE)
1439485SMikore.Li@Sun.COM #define	URTW_IS_RUNNING(_sc) \
1449485SMikore.Li@Sun.COM 	((_sc)->sc_flags & URTW_FLAG_RUNNING)
1459485SMikore.Li@Sun.COM #define	URTW_IS_NOT_RUNNING(_sc) \
1469485SMikore.Li@Sun.COM 	(((_sc)->sc_flags & URTW_FLAG_RUNNING) == 0)
1479485SMikore.Li@Sun.COM #define	URTW_IS_SUSPENDING(_sc)	((_sc)->sc_flags & URTW_FLAG_SUSPEND)
1489485SMikore.Li@Sun.COM 
1499485SMikore.Li@Sun.COM #define	URTW_LOCK(sc)		mutex_enter(&(sc)->sc_genlock)
1509485SMikore.Li@Sun.COM #define	URTW_UNLOCK(sc)		mutex_exit(&(sc)->sc_genlock)
1519485SMikore.Li@Sun.COM #define	URTW_LEDLOCK(sc)	mutex_enter(&(sc)->sc_ledlock)
1529485SMikore.Li@Sun.COM #define	URTW_LEDUNLOCK(sc)	mutex_exit(&(sc)->sc_ledlock)
1539485SMikore.Li@Sun.COM 
1549485SMikore.Li@Sun.COM #ifdef __cplusplus
1559485SMikore.Li@Sun.COM }
1569485SMikore.Li@Sun.COM #endif
1579485SMikore.Li@Sun.COM 
1589485SMikore.Li@Sun.COM #endif /* _URTW_VAR_H */
159