xref: /titanic_51/usr/src/uts/common/io/rum/rum_var.h (revision 1a932f2eab9b00d713acc4205d96ca2485bf2712)
187c96ac5SQuaker Fang /*
2*1a932f2eSQuaker Fang  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
387c96ac5SQuaker Fang  * Use is subject to license terms.
487c96ac5SQuaker Fang  */
587c96ac5SQuaker Fang 
687c96ac5SQuaker Fang /*
787c96ac5SQuaker Fang  * Copyright (c) 2005, 2006 Damien Bergamini <damien.bergamini@free.fr>
887c96ac5SQuaker Fang  * Copyright (c) 2006 Niall O'Higgins <niallo@openbsd.org>
987c96ac5SQuaker Fang  *
1087c96ac5SQuaker Fang  * Permission to use, copy, modify, and distribute this software for any
1187c96ac5SQuaker Fang  * purpose with or without fee is hereby granted, provided that the above
1287c96ac5SQuaker Fang  * copyright notice and this permission notice appear in all copies.
1387c96ac5SQuaker Fang  *
1487c96ac5SQuaker Fang  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
1587c96ac5SQuaker Fang  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
1687c96ac5SQuaker Fang  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
1787c96ac5SQuaker Fang  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1887c96ac5SQuaker Fang  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
1987c96ac5SQuaker Fang  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
2087c96ac5SQuaker Fang  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
2187c96ac5SQuaker Fang  */
2287c96ac5SQuaker Fang #ifndef	_RUM_VAR_H
2387c96ac5SQuaker Fang #define	_RUM_VAR_H
2487c96ac5SQuaker Fang 
2587c96ac5SQuaker Fang #ifdef __cplusplus
2687c96ac5SQuaker Fang extern "C" {
2787c96ac5SQuaker Fang #endif
2887c96ac5SQuaker Fang 
2987c96ac5SQuaker Fang #define	RAL_FLAG_RUNNING	(1<<0)
3087c96ac5SQuaker Fang 
3187c96ac5SQuaker Fang #define	RAL_RCR_PROMISC		(1<<0)
3287c96ac5SQuaker Fang #define	RAL_RCR_MULTI		(2<<0)
3387c96ac5SQuaker Fang 
3487c96ac5SQuaker Fang #ifndef	DDI_NT_NET_WIFI
3587c96ac5SQuaker Fang #define	DDI_NT_NET_WIFI		"ddi_network:wifi"
3687c96ac5SQuaker Fang #endif
3787c96ac5SQuaker Fang 
3887c96ac5SQuaker Fang /*
3987c96ac5SQuaker Fang  * Bit flags in the ral_dbg_flags
4087c96ac5SQuaker Fang  */
4187c96ac5SQuaker Fang #define	RAL_DBG_MSG		0x000001
4287c96ac5SQuaker Fang #define	RAL_DBG_ERR		0x000002
4387c96ac5SQuaker Fang #define	RAL_DBG_USB		0x000004
4487c96ac5SQuaker Fang #define	RAL_DBG_TX		0x000008
4587c96ac5SQuaker Fang #define	RAL_DBG_RX		0x000010
4687c96ac5SQuaker Fang #define	RAL_DBG_IOCTL		0x000020
4787c96ac5SQuaker Fang #define	RAL_DBG_HW		0x000040
4887c96ac5SQuaker Fang #define	RAL_DBG_ALL		0x000fff
4987c96ac5SQuaker Fang 
5087c96ac5SQuaker Fang #define	RAL_RX_LIST_COUNT	8
5187c96ac5SQuaker Fang #define	RAL_TX_LIST_COUNT	8
5287c96ac5SQuaker Fang 
5387c96ac5SQuaker Fang struct rum_amrr {
5487c96ac5SQuaker Fang 	int	txcnt;
5587c96ac5SQuaker Fang 	int	retrycnt;
5687c96ac5SQuaker Fang 	int	success;
5787c96ac5SQuaker Fang 	int	success_threshold;
5887c96ac5SQuaker Fang 	int	recovery;
5987c96ac5SQuaker Fang };
6087c96ac5SQuaker Fang 
6187c96ac5SQuaker Fang struct rum_softc {
6287c96ac5SQuaker Fang 	struct ieee80211com	sc_ic;
6387c96ac5SQuaker Fang 	dev_info_t		*sc_dev;
6487c96ac5SQuaker Fang 
6587c96ac5SQuaker Fang 	usb_client_dev_data_t	*sc_udev;	/* usb dev */
6687c96ac5SQuaker Fang 
6787c96ac5SQuaker Fang 	int			sc_rx_no;
6887c96ac5SQuaker Fang 	int			sc_tx_no;
6987c96ac5SQuaker Fang 
7087c96ac5SQuaker Fang 	uint8_t			rf_rev;
7187c96ac5SQuaker Fang 	uint8_t			rffreq;
7287c96ac5SQuaker Fang 
7387c96ac5SQuaker Fang 	kmutex_t		sc_genlock;
7487c96ac5SQuaker Fang 
7587c96ac5SQuaker Fang 	usb_pipe_handle_t	sc_rx_pipeh;
7687c96ac5SQuaker Fang 	usb_pipe_handle_t	sc_tx_pipeh;
7787c96ac5SQuaker Fang 
7887c96ac5SQuaker Fang 	enum ieee80211_state	sc_state;
7987c96ac5SQuaker Fang 	struct rum_amrr		amrr;
8087c96ac5SQuaker Fang 
8187c96ac5SQuaker Fang 	kmutex_t		tx_lock;
8287c96ac5SQuaker Fang 	kmutex_t		rx_lock;
8387c96ac5SQuaker Fang 
8487c96ac5SQuaker Fang 	int			tx_queued;
8587c96ac5SQuaker Fang 	int			rx_queued;
8687c96ac5SQuaker Fang 
8787c96ac5SQuaker Fang 	int			sc_tx_timer;
8887c96ac5SQuaker Fang 
8987c96ac5SQuaker Fang 	timeout_id_t		sc_scan_id;
9087c96ac5SQuaker Fang 	timeout_id_t		sc_amrr_id;
9187c96ac5SQuaker Fang 
9287c96ac5SQuaker Fang 	uint32_t		sc_need_sched;
9387c96ac5SQuaker Fang 	uint32_t		sc_flags;
9487c96ac5SQuaker Fang 	uint32_t		sc_rcr;		/* RAL RCR */
9587c96ac5SQuaker Fang 
9687c96ac5SQuaker Fang 	int			dwelltime;
9787c96ac5SQuaker Fang 
9887c96ac5SQuaker Fang 	uint32_t		sta[6];
9987c96ac5SQuaker Fang 	uint32_t		rf_regs[4];
10087c96ac5SQuaker Fang 	uint8_t			txpow[44];
10187c96ac5SQuaker Fang 
10287c96ac5SQuaker Fang #pragma pack(1)
10387c96ac5SQuaker Fang 	struct {
10487c96ac5SQuaker Fang 		uint8_t	val;
10587c96ac5SQuaker Fang 		uint8_t	reg;
10687c96ac5SQuaker Fang 	}			bbp_prom[16];
10787c96ac5SQuaker Fang #pragma pack()
10887c96ac5SQuaker Fang 
10987c96ac5SQuaker Fang 	int			hw_radio;
11087c96ac5SQuaker Fang 	int			rx_ant;
11187c96ac5SQuaker Fang 	int			tx_ant;
11287c96ac5SQuaker Fang 	int			nb_ant;
11387c96ac5SQuaker Fang 	int			ext_2ghz_lna;
11487c96ac5SQuaker Fang 	int			ext_5ghz_lna;
11587c96ac5SQuaker Fang 	int			rssi_2ghz_corr;
11687c96ac5SQuaker Fang 	int			rssi_5ghz_corr;
11787c96ac5SQuaker Fang 	int			sifs;
11887c96ac5SQuaker Fang 	uint8_t			bbp17;
11987c96ac5SQuaker Fang 
12087c96ac5SQuaker Fang 	/* kstats */
12187c96ac5SQuaker Fang 	uint32_t		sc_tx_nobuf;
12287c96ac5SQuaker Fang 	uint32_t		sc_rx_nobuf;
12387c96ac5SQuaker Fang 	uint32_t		sc_tx_err;
12487c96ac5SQuaker Fang 	uint32_t		sc_rx_err;
12587c96ac5SQuaker Fang 	uint32_t		sc_tx_retries;
12687c96ac5SQuaker Fang 
12787c96ac5SQuaker Fang 	int			(*sc_newstate)(struct ieee80211com *,
12887c96ac5SQuaker Fang 				    enum ieee80211_state, int);
12987c96ac5SQuaker Fang };
13087c96ac5SQuaker Fang 
13187c96ac5SQuaker Fang #define	RAL_IS_RUNNING(_sc)	((_sc)->sc_flags & RAL_FLAG_RUNNING)
13287c96ac5SQuaker Fang #define	RAL_LOCK(sc)		mutex_enter(&(sc)->sc_genlock)
13387c96ac5SQuaker Fang #define	RAL_UNLOCK(sc)		mutex_exit(&(sc)->sc_genlock)
13487c96ac5SQuaker Fang 
13587c96ac5SQuaker Fang #define	MAC2STR(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
13687c96ac5SQuaker Fang #define	MACSTR "%02x:%02x:%02x:%02x:%02x:%02x"
13787c96ac5SQuaker Fang 
13887c96ac5SQuaker Fang #ifdef __cplusplus
13987c96ac5SQuaker Fang }
14087c96ac5SQuaker Fang #endif
14187c96ac5SQuaker Fang 
14287c96ac5SQuaker Fang #endif /* _RUM_VAR_H */
143