19485SMikore.Li@Sun.COM /* 29485SMikore.Li@Sun.COM * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 39485SMikore.Li@Sun.COM * Use is subject to license terms. 49485SMikore.Li@Sun.COM */ 59485SMikore.Li@Sun.COM 69485SMikore.Li@Sun.COM /* 79485SMikore.Li@Sun.COM * Copyright (c) 2008 Weongyo Jeong 89485SMikore.Li@Sun.COM * All rights reserved. 99485SMikore.Li@Sun.COM * 109485SMikore.Li@Sun.COM * Redistribution and use in source and binary forms, with or without 119485SMikore.Li@Sun.COM * modification, are permitted provided that the following conditions 129485SMikore.Li@Sun.COM * are met: 139485SMikore.Li@Sun.COM * 1. Redistributions of source code must retain the above copyright 149485SMikore.Li@Sun.COM * notice, this list of conditions and the following disclaimer, 159485SMikore.Li@Sun.COM * without modification. 169485SMikore.Li@Sun.COM * 2. Redistributions in binary form must reproduce at minimum a disclaimer 179485SMikore.Li@Sun.COM * similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any 189485SMikore.Li@Sun.COM * redistribution must be conditioned upon including a substantially 199485SMikore.Li@Sun.COM * similar Disclaimer requirement for further binary redistribution. 209485SMikore.Li@Sun.COM * 219485SMikore.Li@Sun.COM * NO WARRANTY 229485SMikore.Li@Sun.COM * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 239485SMikore.Li@Sun.COM * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 249485SMikore.Li@Sun.COM * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY 259485SMikore.Li@Sun.COM * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 269485SMikore.Li@Sun.COM * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, 279485SMikore.Li@Sun.COM * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 289485SMikore.Li@Sun.COM * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 299485SMikore.Li@Sun.COM * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 309485SMikore.Li@Sun.COM * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 319485SMikore.Li@Sun.COM * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 329485SMikore.Li@Sun.COM * THE POSSIBILITY OF SUCH DAMAGES. 339485SMikore.Li@Sun.COM */ 349485SMikore.Li@Sun.COM #ifndef _URTW_VAR_H 359485SMikore.Li@Sun.COM #define _URTW_VAR_H 369485SMikore.Li@Sun.COM 379485SMikore.Li@Sun.COM #ifdef __cplusplus 389485SMikore.Li@Sun.COM extern "C" { 399485SMikore.Li@Sun.COM #endif 409485SMikore.Li@Sun.COM 41*10364SMikore.Li@Sun.COM #define URTW_RX_DATA_LIST_COUNT (2) 429485SMikore.Li@Sun.COM #define URTW_TX_DATA_LIST_COUNT (16) 439485SMikore.Li@Sun.COM #define URTW_RX_MAXSIZE (0x9c4) 449485SMikore.Li@Sun.COM #define URTW_TX_MAXSIZE URTW_RX_MAXSIZE 459485SMikore.Li@Sun.COM 469485SMikore.Li@Sun.COM #define UT_READ_VENDOR_DEVICE (USB_DEV_REQ_TYPE_VENDOR |\ 479485SMikore.Li@Sun.COM USB_DEV_REQ_DEV_TO_HOST) 489485SMikore.Li@Sun.COM 499485SMikore.Li@Sun.COM #define UT_WRITE_VENDOR_DEVICE (USB_DEV_REQ_TYPE_VENDOR |\ 509485SMikore.Li@Sun.COM USB_DEV_REQ_HOST_TO_DEV) 519485SMikore.Li@Sun.COM 529485SMikore.Li@Sun.COM #define USBD_INVAL (-1) 539485SMikore.Li@Sun.COM #define URTW_TX_TIMEOUT (5) 549485SMikore.Li@Sun.COM 559485SMikore.Li@Sun.COM typedef int usbd_status; 569485SMikore.Li@Sun.COM 579485SMikore.Li@Sun.COM #define URTW_MAX_CHANNELS (15) 589485SMikore.Li@Sun.COM #define LOW_PRIORITY_PIPE (0) 599485SMikore.Li@Sun.COM #define NORMAL_PRIORITY_PIPE (1) 609485SMikore.Li@Sun.COM #define URTW_LED_LINKOFF_BLINK (1000*1000) 619485SMikore.Li@Sun.COM #define URTW_LED_LINKON_BLINK (300*1000) 629485SMikore.Li@Sun.COM 63*10364SMikore.Li@Sun.COM struct urtw_rf { 64*10364SMikore.Li@Sun.COM /* RF methods */ 65*10364SMikore.Li@Sun.COM usbd_status (*init)(struct urtw_rf *); 66*10364SMikore.Li@Sun.COM usbd_status (*set_chan)(struct urtw_rf *, int); 67*10364SMikore.Li@Sun.COM usbd_status (*set_sens)(struct urtw_rf *); 68*10364SMikore.Li@Sun.COM 69*10364SMikore.Li@Sun.COM /* RF attributes */ 70*10364SMikore.Li@Sun.COM struct urtw_softc *rf_sc; 71*10364SMikore.Li@Sun.COM uint32_t max_sens; 72*10364SMikore.Li@Sun.COM int32_t sens; 73*10364SMikore.Li@Sun.COM }; 74*10364SMikore.Li@Sun.COM 759485SMikore.Li@Sun.COM struct urtw_softc { 769485SMikore.Li@Sun.COM struct ieee80211com sc_ic; 779485SMikore.Li@Sun.COM dev_info_t *sc_dev; 789485SMikore.Li@Sun.COM kmutex_t sc_genlock; 799485SMikore.Li@Sun.COM kmutex_t tx_lock; 809485SMikore.Li@Sun.COM kmutex_t rx_lock; 819485SMikore.Li@Sun.COM usb_client_dev_data_t *sc_udev; 829485SMikore.Li@Sun.COM usb_pipe_handle_t sc_rxpipe; 839485SMikore.Li@Sun.COM usb_pipe_handle_t sc_txpipe_low; 849485SMikore.Li@Sun.COM usb_pipe_handle_t sc_txpipe_normal; 859485SMikore.Li@Sun.COM 869485SMikore.Li@Sun.COM int sc_tx_low_queued; 879485SMikore.Li@Sun.COM int sc_tx_normal_queued; 889485SMikore.Li@Sun.COM int rx_queued; 899485SMikore.Li@Sun.COM timeout_id_t sc_scan_id; 909485SMikore.Li@Sun.COM uint32_t sc_need_sched; 919485SMikore.Li@Sun.COM int dwelltime; 929485SMikore.Li@Sun.COM /* kstats */ 939485SMikore.Li@Sun.COM uint32_t sc_tx_nobuf; 949485SMikore.Li@Sun.COM uint32_t sc_rx_nobuf; 959485SMikore.Li@Sun.COM uint32_t sc_rx_err; 969485SMikore.Li@Sun.COM 979485SMikore.Li@Sun.COM int sc_flags; 989485SMikore.Li@Sun.COM int sc_arg; 999485SMikore.Li@Sun.COM int (*sc_newstate)(struct ieee80211com *, 1009485SMikore.Li@Sun.COM enum ieee80211_state, int); 1019485SMikore.Li@Sun.COM 1029485SMikore.Li@Sun.COM int sc_epromtype; 1039485SMikore.Li@Sun.COM #define URTW_EEPROM_93C46 0 1049485SMikore.Li@Sun.COM #define URTW_EEPROM_93C56 1 1059485SMikore.Li@Sun.COM uint8_t sc_crcmon; 1069485SMikore.Li@Sun.COM uint8_t sc_bssid[IEEE80211_ADDR_LEN]; 1079485SMikore.Li@Sun.COM 108*10364SMikore.Li@Sun.COM struct urtw_rf sc_rf; 109*10364SMikore.Li@Sun.COM 1109485SMikore.Li@Sun.COM /* for LED */ 1119485SMikore.Li@Sun.COM kmutex_t sc_ledlock; 1129485SMikore.Li@Sun.COM timeout_id_t sc_led_ch; 1139485SMikore.Li@Sun.COM uint8_t sc_psr; 1149485SMikore.Li@Sun.COM uint8_t sc_strategy; 1159485SMikore.Li@Sun.COM uint8_t sc_led_freq; 1169485SMikore.Li@Sun.COM #define URTW_LED_GPIO 1 1179485SMikore.Li@Sun.COM uint8_t sc_gpio_ledon; 1189485SMikore.Li@Sun.COM uint8_t sc_gpio_ledinprogress; 1199485SMikore.Li@Sun.COM uint8_t sc_gpio_ledstate; 1209485SMikore.Li@Sun.COM uint8_t sc_gpio_ledpin; 1219485SMikore.Li@Sun.COM uint8_t sc_gpio_blinktime; 1229485SMikore.Li@Sun.COM uint8_t sc_gpio_blinkstate; 1239485SMikore.Li@Sun.COM uint8_t sc_rts_retry; 1249485SMikore.Li@Sun.COM uint8_t sc_tx_retry; 1259485SMikore.Li@Sun.COM uint8_t sc_preamble_mode; 1269485SMikore.Li@Sun.COM int sc_currate; 1279485SMikore.Li@Sun.COM /* TX power */ 1289485SMikore.Li@Sun.COM uint8_t sc_txpwr_cck[URTW_MAX_CHANNELS]; 1299485SMikore.Li@Sun.COM uint8_t sc_txpwr_cck_base; 1309485SMikore.Li@Sun.COM uint8_t sc_txpwr_ofdm[URTW_MAX_CHANNELS]; 1319485SMikore.Li@Sun.COM uint8_t sc_txpwr_ofdm_base; 132*10364SMikore.Li@Sun.COM 133*10364SMikore.Li@Sun.COM uint8_t sc_hwrev; 134*10364SMikore.Li@Sun.COM int (*urtw_init)(void *); 1359485SMikore.Li@Sun.COM }; 1369485SMikore.Li@Sun.COM #define URTW_FLAG_RUNNING (1 << 0) 1379485SMikore.Li@Sun.COM #define URTW_FLAG_SUSPEND (1 << 1) 138*10364SMikore.Li@Sun.COM #define URTW_FLAG_PLUGIN_ONLINE (1 << 2) 139*10364SMikore.Li@Sun.COM #define URTW_FLAG_HP (1 << 3) 1409485SMikore.Li@Sun.COM 1419485SMikore.Li@Sun.COM #define URTW_IS_PLUGIN_ONLINE(_sc) \ 1429485SMikore.Li@Sun.COM ((_sc)->sc_flags & URTW_FLAG_PLUGIN_ONLINE) 1439485SMikore.Li@Sun.COM #define URTW_IS_RUNNING(_sc) \ 1449485SMikore.Li@Sun.COM ((_sc)->sc_flags & URTW_FLAG_RUNNING) 1459485SMikore.Li@Sun.COM #define URTW_IS_NOT_RUNNING(_sc) \ 1469485SMikore.Li@Sun.COM (((_sc)->sc_flags & URTW_FLAG_RUNNING) == 0) 1479485SMikore.Li@Sun.COM #define URTW_IS_SUSPENDING(_sc) ((_sc)->sc_flags & URTW_FLAG_SUSPEND) 1489485SMikore.Li@Sun.COM 1499485SMikore.Li@Sun.COM #define URTW_LOCK(sc) mutex_enter(&(sc)->sc_genlock) 1509485SMikore.Li@Sun.COM #define URTW_UNLOCK(sc) mutex_exit(&(sc)->sc_genlock) 1519485SMikore.Li@Sun.COM #define URTW_LEDLOCK(sc) mutex_enter(&(sc)->sc_ledlock) 1529485SMikore.Li@Sun.COM #define URTW_LEDUNLOCK(sc) mutex_exit(&(sc)->sc_ledlock) 1539485SMikore.Li@Sun.COM 1549485SMikore.Li@Sun.COM #ifdef __cplusplus 1559485SMikore.Li@Sun.COM } 1569485SMikore.Li@Sun.COM #endif 1579485SMikore.Li@Sun.COM 1589485SMikore.Li@Sun.COM #endif /* _URTW_VAR_H */ 159