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