xref: /onnv-gate/usr/src/uts/common/io/rum/rum_var.h (revision 9345:59181dd902dd)
18000SQuaker.Fang@Sun.COM /*
2*9345SQuaker.Fang@Sun.COM  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
38000SQuaker.Fang@Sun.COM  * Use is subject to license terms.
48000SQuaker.Fang@Sun.COM  */
58000SQuaker.Fang@Sun.COM 
68000SQuaker.Fang@Sun.COM /*
78000SQuaker.Fang@Sun.COM  * Copyright (c) 2005, 2006 Damien Bergamini <damien.bergamini@free.fr>
88000SQuaker.Fang@Sun.COM  * Copyright (c) 2006 Niall O'Higgins <niallo@openbsd.org>
98000SQuaker.Fang@Sun.COM  *
108000SQuaker.Fang@Sun.COM  * Permission to use, copy, modify, and distribute this software for any
118000SQuaker.Fang@Sun.COM  * purpose with or without fee is hereby granted, provided that the above
128000SQuaker.Fang@Sun.COM  * copyright notice and this permission notice appear in all copies.
138000SQuaker.Fang@Sun.COM  *
148000SQuaker.Fang@Sun.COM  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
158000SQuaker.Fang@Sun.COM  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
168000SQuaker.Fang@Sun.COM  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
178000SQuaker.Fang@Sun.COM  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
188000SQuaker.Fang@Sun.COM  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
198000SQuaker.Fang@Sun.COM  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
208000SQuaker.Fang@Sun.COM  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
218000SQuaker.Fang@Sun.COM  */
228000SQuaker.Fang@Sun.COM #ifndef	_RUM_VAR_H
238000SQuaker.Fang@Sun.COM #define	_RUM_VAR_H
248000SQuaker.Fang@Sun.COM 
258000SQuaker.Fang@Sun.COM #ifdef __cplusplus
268000SQuaker.Fang@Sun.COM extern "C" {
278000SQuaker.Fang@Sun.COM #endif
288000SQuaker.Fang@Sun.COM 
298000SQuaker.Fang@Sun.COM #define	RAL_FLAG_RUNNING	(1<<0)
308000SQuaker.Fang@Sun.COM 
318000SQuaker.Fang@Sun.COM #define	RAL_RCR_PROMISC		(1<<0)
328000SQuaker.Fang@Sun.COM #define	RAL_RCR_MULTI		(2<<0)
338000SQuaker.Fang@Sun.COM 
348000SQuaker.Fang@Sun.COM #ifndef	DDI_NT_NET_WIFI
358000SQuaker.Fang@Sun.COM #define	DDI_NT_NET_WIFI		"ddi_network:wifi"
368000SQuaker.Fang@Sun.COM #endif
378000SQuaker.Fang@Sun.COM 
388000SQuaker.Fang@Sun.COM /*
398000SQuaker.Fang@Sun.COM  * Bit flags in the ral_dbg_flags
408000SQuaker.Fang@Sun.COM  */
418000SQuaker.Fang@Sun.COM #define	RAL_DBG_MSG		0x000001
428000SQuaker.Fang@Sun.COM #define	RAL_DBG_ERR		0x000002
438000SQuaker.Fang@Sun.COM #define	RAL_DBG_USB		0x000004
448000SQuaker.Fang@Sun.COM #define	RAL_DBG_TX		0x000008
458000SQuaker.Fang@Sun.COM #define	RAL_DBG_RX		0x000010
468000SQuaker.Fang@Sun.COM #define	RAL_DBG_IOCTL		0x000020
478000SQuaker.Fang@Sun.COM #define	RAL_DBG_HW		0x000040
488000SQuaker.Fang@Sun.COM #define	RAL_DBG_ALL		0x000fff
498000SQuaker.Fang@Sun.COM 
508000SQuaker.Fang@Sun.COM #define	RAL_RX_LIST_COUNT	8
518000SQuaker.Fang@Sun.COM #define	RAL_TX_LIST_COUNT	8
528000SQuaker.Fang@Sun.COM 
538000SQuaker.Fang@Sun.COM struct rum_amrr {
548000SQuaker.Fang@Sun.COM 	int	txcnt;
558000SQuaker.Fang@Sun.COM 	int	retrycnt;
568000SQuaker.Fang@Sun.COM 	int	success;
578000SQuaker.Fang@Sun.COM 	int	success_threshold;
588000SQuaker.Fang@Sun.COM 	int	recovery;
598000SQuaker.Fang@Sun.COM };
608000SQuaker.Fang@Sun.COM 
618000SQuaker.Fang@Sun.COM struct rum_softc {
628000SQuaker.Fang@Sun.COM 	struct ieee80211com	sc_ic;
638000SQuaker.Fang@Sun.COM 	dev_info_t		*sc_dev;
648000SQuaker.Fang@Sun.COM 
658000SQuaker.Fang@Sun.COM 	usb_client_dev_data_t	*sc_udev;	/* usb dev */
668000SQuaker.Fang@Sun.COM 
678000SQuaker.Fang@Sun.COM 	int			sc_rx_no;
688000SQuaker.Fang@Sun.COM 	int			sc_tx_no;
698000SQuaker.Fang@Sun.COM 
708000SQuaker.Fang@Sun.COM 	uint8_t			rf_rev;
718000SQuaker.Fang@Sun.COM 	uint8_t			rffreq;
728000SQuaker.Fang@Sun.COM 
738000SQuaker.Fang@Sun.COM 	kmutex_t		sc_genlock;
748000SQuaker.Fang@Sun.COM 
758000SQuaker.Fang@Sun.COM 	usb_pipe_handle_t	sc_rx_pipeh;
768000SQuaker.Fang@Sun.COM 	usb_pipe_handle_t	sc_tx_pipeh;
778000SQuaker.Fang@Sun.COM 
788000SQuaker.Fang@Sun.COM 	enum ieee80211_state	sc_state;
798000SQuaker.Fang@Sun.COM 	struct rum_amrr		amrr;
808000SQuaker.Fang@Sun.COM 
818000SQuaker.Fang@Sun.COM 	kmutex_t		tx_lock;
828000SQuaker.Fang@Sun.COM 	kmutex_t		rx_lock;
838000SQuaker.Fang@Sun.COM 
848000SQuaker.Fang@Sun.COM 	int			tx_queued;
858000SQuaker.Fang@Sun.COM 	int			rx_queued;
868000SQuaker.Fang@Sun.COM 
878000SQuaker.Fang@Sun.COM 	int			sc_tx_timer;
888000SQuaker.Fang@Sun.COM 
898000SQuaker.Fang@Sun.COM 	timeout_id_t		sc_scan_id;
908000SQuaker.Fang@Sun.COM 	timeout_id_t		sc_amrr_id;
918000SQuaker.Fang@Sun.COM 
928000SQuaker.Fang@Sun.COM 	uint32_t		sc_need_sched;
938000SQuaker.Fang@Sun.COM 	uint32_t		sc_flags;
948000SQuaker.Fang@Sun.COM 	uint32_t		sc_rcr;		/* RAL RCR */
958000SQuaker.Fang@Sun.COM 
968000SQuaker.Fang@Sun.COM 	int			dwelltime;
978000SQuaker.Fang@Sun.COM 
988000SQuaker.Fang@Sun.COM 	uint32_t		sta[6];
998000SQuaker.Fang@Sun.COM 	uint32_t		rf_regs[4];
1008000SQuaker.Fang@Sun.COM 	uint8_t			txpow[44];
1018000SQuaker.Fang@Sun.COM 
1028000SQuaker.Fang@Sun.COM #pragma pack(1)
1038000SQuaker.Fang@Sun.COM 	struct {
1048000SQuaker.Fang@Sun.COM 		uint8_t	val;
1058000SQuaker.Fang@Sun.COM 		uint8_t	reg;
1068000SQuaker.Fang@Sun.COM 	}			bbp_prom[16];
1078000SQuaker.Fang@Sun.COM #pragma pack()
1088000SQuaker.Fang@Sun.COM 
1098000SQuaker.Fang@Sun.COM 	int			hw_radio;
1108000SQuaker.Fang@Sun.COM 	int			rx_ant;
1118000SQuaker.Fang@Sun.COM 	int			tx_ant;
1128000SQuaker.Fang@Sun.COM 	int			nb_ant;
1138000SQuaker.Fang@Sun.COM 	int			ext_2ghz_lna;
1148000SQuaker.Fang@Sun.COM 	int			ext_5ghz_lna;
1158000SQuaker.Fang@Sun.COM 	int			rssi_2ghz_corr;
1168000SQuaker.Fang@Sun.COM 	int			rssi_5ghz_corr;
1178000SQuaker.Fang@Sun.COM 	int			sifs;
1188000SQuaker.Fang@Sun.COM 	uint8_t			bbp17;
1198000SQuaker.Fang@Sun.COM 
1208000SQuaker.Fang@Sun.COM 	/* kstats */
1218000SQuaker.Fang@Sun.COM 	uint32_t		sc_tx_nobuf;
1228000SQuaker.Fang@Sun.COM 	uint32_t		sc_rx_nobuf;
1238000SQuaker.Fang@Sun.COM 	uint32_t		sc_tx_err;
1248000SQuaker.Fang@Sun.COM 	uint32_t		sc_rx_err;
1258000SQuaker.Fang@Sun.COM 	uint32_t		sc_tx_retries;
1268000SQuaker.Fang@Sun.COM 
1278000SQuaker.Fang@Sun.COM 	int			(*sc_newstate)(struct ieee80211com *,
1288000SQuaker.Fang@Sun.COM 				    enum ieee80211_state, int);
1298000SQuaker.Fang@Sun.COM };
1308000SQuaker.Fang@Sun.COM 
1318000SQuaker.Fang@Sun.COM #define	RAL_IS_RUNNING(_sc)	((_sc)->sc_flags & RAL_FLAG_RUNNING)
1328000SQuaker.Fang@Sun.COM #define	RAL_LOCK(sc)		mutex_enter(&(sc)->sc_genlock)
1338000SQuaker.Fang@Sun.COM #define	RAL_UNLOCK(sc)		mutex_exit(&(sc)->sc_genlock)
1348000SQuaker.Fang@Sun.COM 
1358000SQuaker.Fang@Sun.COM #define	MAC2STR(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
1368000SQuaker.Fang@Sun.COM #define	MACSTR "%02x:%02x:%02x:%02x:%02x:%02x"
1378000SQuaker.Fang@Sun.COM 
1388000SQuaker.Fang@Sun.COM #ifdef __cplusplus
1398000SQuaker.Fang@Sun.COM }
1408000SQuaker.Fang@Sun.COM #endif
1418000SQuaker.Fang@Sun.COM 
1428000SQuaker.Fang@Sun.COM #endif /* _RUM_VAR_H */
143