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