1*9485SMikore.Li@Sun.COM /* 2*9485SMikore.Li@Sun.COM * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 3*9485SMikore.Li@Sun.COM * Use is subject to license terms. 4*9485SMikore.Li@Sun.COM */ 5*9485SMikore.Li@Sun.COM 6*9485SMikore.Li@Sun.COM /* 7*9485SMikore.Li@Sun.COM * Copyright (c) 2008 Weongyo Jeong 8*9485SMikore.Li@Sun.COM * All rights reserved. 9*9485SMikore.Li@Sun.COM * 10*9485SMikore.Li@Sun.COM * Redistribution and use in source and binary forms, with or without 11*9485SMikore.Li@Sun.COM * modification, are permitted provided that the following conditions 12*9485SMikore.Li@Sun.COM * are met: 13*9485SMikore.Li@Sun.COM * 1. Redistributions of source code must retain the above copyright 14*9485SMikore.Li@Sun.COM * notice, this list of conditions and the following disclaimer, 15*9485SMikore.Li@Sun.COM * without modification. 16*9485SMikore.Li@Sun.COM * 2. Redistributions in binary form must reproduce at minimum a disclaimer 17*9485SMikore.Li@Sun.COM * similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any 18*9485SMikore.Li@Sun.COM * redistribution must be conditioned upon including a substantially 19*9485SMikore.Li@Sun.COM * similar Disclaimer requirement for further binary redistribution. 20*9485SMikore.Li@Sun.COM * 21*9485SMikore.Li@Sun.COM * NO WARRANTY 22*9485SMikore.Li@Sun.COM * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 23*9485SMikore.Li@Sun.COM * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 24*9485SMikore.Li@Sun.COM * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY 25*9485SMikore.Li@Sun.COM * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 26*9485SMikore.Li@Sun.COM * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, 27*9485SMikore.Li@Sun.COM * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 28*9485SMikore.Li@Sun.COM * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 29*9485SMikore.Li@Sun.COM * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 30*9485SMikore.Li@Sun.COM * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 31*9485SMikore.Li@Sun.COM * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 32*9485SMikore.Li@Sun.COM * THE POSSIBILITY OF SUCH DAMAGES. 33*9485SMikore.Li@Sun.COM */ 34*9485SMikore.Li@Sun.COM #ifndef _URTW_VAR_H 35*9485SMikore.Li@Sun.COM #define _URTW_VAR_H 36*9485SMikore.Li@Sun.COM 37*9485SMikore.Li@Sun.COM #ifdef __cplusplus 38*9485SMikore.Li@Sun.COM extern "C" { 39*9485SMikore.Li@Sun.COM #endif 40*9485SMikore.Li@Sun.COM 41*9485SMikore.Li@Sun.COM #define URTW_RX_DATA_LIST_COUNT (1) 42*9485SMikore.Li@Sun.COM #define URTW_TX_DATA_LIST_COUNT (16) 43*9485SMikore.Li@Sun.COM #define URTW_RX_MAXSIZE (0x9c4) 44*9485SMikore.Li@Sun.COM #define URTW_TX_MAXSIZE URTW_RX_MAXSIZE 45*9485SMikore.Li@Sun.COM 46*9485SMikore.Li@Sun.COM #define UT_READ_VENDOR_DEVICE (USB_DEV_REQ_TYPE_VENDOR |\ 47*9485SMikore.Li@Sun.COM USB_DEV_REQ_DEV_TO_HOST) 48*9485SMikore.Li@Sun.COM 49*9485SMikore.Li@Sun.COM #define UT_WRITE_VENDOR_DEVICE (USB_DEV_REQ_TYPE_VENDOR |\ 50*9485SMikore.Li@Sun.COM USB_DEV_REQ_HOST_TO_DEV) 51*9485SMikore.Li@Sun.COM 52*9485SMikore.Li@Sun.COM #define USBD_INVAL (-1) 53*9485SMikore.Li@Sun.COM #define URTW_TX_TIMEOUT (5) 54*9485SMikore.Li@Sun.COM 55*9485SMikore.Li@Sun.COM typedef int usbd_status; 56*9485SMikore.Li@Sun.COM 57*9485SMikore.Li@Sun.COM #define URTW_MAX_CHANNELS (15) 58*9485SMikore.Li@Sun.COM #define LOW_PRIORITY_PIPE (0) 59*9485SMikore.Li@Sun.COM #define NORMAL_PRIORITY_PIPE (1) 60*9485SMikore.Li@Sun.COM #define URTW_LED_LINKOFF_BLINK (1000*1000) 61*9485SMikore.Li@Sun.COM #define URTW_LED_LINKON_BLINK (300*1000) 62*9485SMikore.Li@Sun.COM 63*9485SMikore.Li@Sun.COM struct urtw_softc { 64*9485SMikore.Li@Sun.COM struct ieee80211com sc_ic; 65*9485SMikore.Li@Sun.COM dev_info_t *sc_dev; 66*9485SMikore.Li@Sun.COM kmutex_t sc_genlock; 67*9485SMikore.Li@Sun.COM kmutex_t tx_lock; 68*9485SMikore.Li@Sun.COM kmutex_t rx_lock; 69*9485SMikore.Li@Sun.COM usb_client_dev_data_t *sc_udev; 70*9485SMikore.Li@Sun.COM usb_pipe_handle_t sc_rxpipe; 71*9485SMikore.Li@Sun.COM usb_pipe_handle_t sc_txpipe_low; 72*9485SMikore.Li@Sun.COM usb_pipe_handle_t sc_txpipe_normal; 73*9485SMikore.Li@Sun.COM 74*9485SMikore.Li@Sun.COM int sc_tx_low_queued; 75*9485SMikore.Li@Sun.COM int sc_tx_normal_queued; 76*9485SMikore.Li@Sun.COM int rx_queued; 77*9485SMikore.Li@Sun.COM timeout_id_t sc_scan_id; 78*9485SMikore.Li@Sun.COM uint32_t sc_need_sched; 79*9485SMikore.Li@Sun.COM int dwelltime; 80*9485SMikore.Li@Sun.COM /* kstats */ 81*9485SMikore.Li@Sun.COM uint32_t sc_tx_nobuf; 82*9485SMikore.Li@Sun.COM uint32_t sc_rx_nobuf; 83*9485SMikore.Li@Sun.COM uint32_t sc_rx_err; 84*9485SMikore.Li@Sun.COM 85*9485SMikore.Li@Sun.COM int sc_flags; 86*9485SMikore.Li@Sun.COM int sc_arg; 87*9485SMikore.Li@Sun.COM int (*sc_newstate)(struct ieee80211com *, 88*9485SMikore.Li@Sun.COM enum ieee80211_state, int); 89*9485SMikore.Li@Sun.COM 90*9485SMikore.Li@Sun.COM int sc_epromtype; 91*9485SMikore.Li@Sun.COM #define URTW_EEPROM_93C46 0 92*9485SMikore.Li@Sun.COM #define URTW_EEPROM_93C56 1 93*9485SMikore.Li@Sun.COM uint8_t sc_crcmon; 94*9485SMikore.Li@Sun.COM uint8_t sc_bssid[IEEE80211_ADDR_LEN]; 95*9485SMikore.Li@Sun.COM 96*9485SMikore.Li@Sun.COM /* for RF */ 97*9485SMikore.Li@Sun.COM usbd_status (*sc_rf_init)(struct urtw_softc *); 98*9485SMikore.Li@Sun.COM usbd_status (*sc_rf_set_chan)(struct urtw_softc *, 99*9485SMikore.Li@Sun.COM int); 100*9485SMikore.Li@Sun.COM usbd_status (*sc_rf_set_sens)(struct urtw_softc *, 101*9485SMikore.Li@Sun.COM int); 102*9485SMikore.Li@Sun.COM uint8_t sc_rfchip; 103*9485SMikore.Li@Sun.COM uint32_t sc_max_sens; 104*9485SMikore.Li@Sun.COM uint32_t sc_sens; 105*9485SMikore.Li@Sun.COM /* for LED */ 106*9485SMikore.Li@Sun.COM kmutex_t sc_ledlock; 107*9485SMikore.Li@Sun.COM timeout_id_t sc_led_ch; 108*9485SMikore.Li@Sun.COM uint8_t sc_psr; 109*9485SMikore.Li@Sun.COM uint8_t sc_strategy; 110*9485SMikore.Li@Sun.COM uint8_t sc_led_freq; 111*9485SMikore.Li@Sun.COM #define URTW_LED_GPIO 1 112*9485SMikore.Li@Sun.COM uint8_t sc_gpio_ledon; 113*9485SMikore.Li@Sun.COM uint8_t sc_gpio_ledinprogress; 114*9485SMikore.Li@Sun.COM uint8_t sc_gpio_ledstate; 115*9485SMikore.Li@Sun.COM uint8_t sc_gpio_ledpin; 116*9485SMikore.Li@Sun.COM uint8_t sc_gpio_blinktime; 117*9485SMikore.Li@Sun.COM uint8_t sc_gpio_blinkstate; 118*9485SMikore.Li@Sun.COM uint8_t sc_rts_retry; 119*9485SMikore.Li@Sun.COM uint8_t sc_tx_retry; 120*9485SMikore.Li@Sun.COM uint8_t sc_preamble_mode; 121*9485SMikore.Li@Sun.COM int sc_currate; 122*9485SMikore.Li@Sun.COM /* TX power */ 123*9485SMikore.Li@Sun.COM uint8_t sc_txpwr_cck[URTW_MAX_CHANNELS]; 124*9485SMikore.Li@Sun.COM uint8_t sc_txpwr_cck_base; 125*9485SMikore.Li@Sun.COM uint8_t sc_txpwr_ofdm[URTW_MAX_CHANNELS]; 126*9485SMikore.Li@Sun.COM uint8_t sc_txpwr_ofdm_base; 127*9485SMikore.Li@Sun.COM }; 128*9485SMikore.Li@Sun.COM #define URTW_FLAG_RUNNING (1 << 0) 129*9485SMikore.Li@Sun.COM #define URTW_FLAG_SUSPEND (1 << 1) 130*9485SMikore.Li@Sun.COM #define URTW_FLAG_PLUGIN_ONLINE (1 << 2) 131*9485SMikore.Li@Sun.COM 132*9485SMikore.Li@Sun.COM #define URTW_IS_PLUGIN_ONLINE(_sc) \ 133*9485SMikore.Li@Sun.COM ((_sc)->sc_flags & URTW_FLAG_PLUGIN_ONLINE) 134*9485SMikore.Li@Sun.COM #define URTW_IS_RUNNING(_sc) \ 135*9485SMikore.Li@Sun.COM ((_sc)->sc_flags & URTW_FLAG_RUNNING) 136*9485SMikore.Li@Sun.COM #define URTW_IS_NOT_RUNNING(_sc) \ 137*9485SMikore.Li@Sun.COM (((_sc)->sc_flags & URTW_FLAG_RUNNING) == 0) 138*9485SMikore.Li@Sun.COM #define URTW_IS_SUSPENDING(_sc) ((_sc)->sc_flags & URTW_FLAG_SUSPEND) 139*9485SMikore.Li@Sun.COM 140*9485SMikore.Li@Sun.COM #define URTW_LOCK(sc) mutex_enter(&(sc)->sc_genlock) 141*9485SMikore.Li@Sun.COM #define URTW_UNLOCK(sc) mutex_exit(&(sc)->sc_genlock) 142*9485SMikore.Li@Sun.COM #define URTW_LEDLOCK(sc) mutex_enter(&(sc)->sc_ledlock) 143*9485SMikore.Li@Sun.COM #define URTW_LEDUNLOCK(sc) mutex_exit(&(sc)->sc_ledlock) 144*9485SMikore.Li@Sun.COM 145*9485SMikore.Li@Sun.COM #ifdef __cplusplus 146*9485SMikore.Li@Sun.COM } 147*9485SMikore.Li@Sun.COM #endif 148*9485SMikore.Li@Sun.COM 149*9485SMikore.Li@Sun.COM #endif /* _URTW_VAR_H */ 150