1*10115c80Sfei feng - Sun Microsystems - Beijing China /* 2*10115c80Sfei feng - Sun Microsystems - Beijing China * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 3*10115c80Sfei feng - Sun Microsystems - Beijing China * Use is subject to license terms. 4*10115c80Sfei feng - Sun Microsystems - Beijing China */ 5*10115c80Sfei feng - Sun Microsystems - Beijing China 6*10115c80Sfei feng - Sun Microsystems - Beijing China /* 7*10115c80Sfei feng - Sun Microsystems - Beijing China * Copyright (c) 2006 8*10115c80Sfei feng - Sun Microsystems - Beijing China * Damien Bergamini <damien.bergamini@free.fr> 9*10115c80Sfei feng - Sun Microsystems - Beijing China * 10*10115c80Sfei feng - Sun Microsystems - Beijing China * Permission to use, copy, modify, and distribute this software for any 11*10115c80Sfei feng - Sun Microsystems - Beijing China * purpose with or without fee is hereby granted, provided that the above 12*10115c80Sfei feng - Sun Microsystems - Beijing China * copyright notice and this permission notice appear in all copies. 13*10115c80Sfei feng - Sun Microsystems - Beijing China * 14*10115c80Sfei feng - Sun Microsystems - Beijing China * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 15*10115c80Sfei feng - Sun Microsystems - Beijing China * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 16*10115c80Sfei feng - Sun Microsystems - Beijing China * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 17*10115c80Sfei feng - Sun Microsystems - Beijing China * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 18*10115c80Sfei feng - Sun Microsystems - Beijing China * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 19*10115c80Sfei feng - Sun Microsystems - Beijing China * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 20*10115c80Sfei feng - Sun Microsystems - Beijing China * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 21*10115c80Sfei feng - Sun Microsystems - Beijing China */ 22*10115c80Sfei feng - Sun Microsystems - Beijing China 23*10115c80Sfei feng - Sun Microsystems - Beijing China #ifndef _RT2661_VAR_H 24*10115c80Sfei feng - Sun Microsystems - Beijing China #define _RT2661_VAR_H 25*10115c80Sfei feng - Sun Microsystems - Beijing China 26*10115c80Sfei feng - Sun Microsystems - Beijing China #ifdef __cplusplus 27*10115c80Sfei feng - Sun Microsystems - Beijing China extern "C" { 28*10115c80Sfei feng - Sun Microsystems - Beijing China #endif 29*10115c80Sfei feng - Sun Microsystems - Beijing China 30*10115c80Sfei feng - Sun Microsystems - Beijing China struct dma_area { 31*10115c80Sfei feng - Sun Microsystems - Beijing China ddi_acc_handle_t acc_hdl; /* handle for memory */ 32*10115c80Sfei feng - Sun Microsystems - Beijing China caddr_t mem_va; /* CPU VA of memory */ 33*10115c80Sfei feng - Sun Microsystems - Beijing China uint32_t nslots; /* number of slots */ 34*10115c80Sfei feng - Sun Microsystems - Beijing China uint32_t size; /* size per slot */ 35*10115c80Sfei feng - Sun Microsystems - Beijing China size_t alength; /* allocated size */ 36*10115c80Sfei feng - Sun Microsystems - Beijing China 37*10115c80Sfei feng - Sun Microsystems - Beijing China ddi_dma_handle_t dma_hdl; /* DMA handle */ 38*10115c80Sfei feng - Sun Microsystems - Beijing China offset_t offset; /* relative to handle */ 39*10115c80Sfei feng - Sun Microsystems - Beijing China ddi_dma_cookie_t cookie; /* associated cookie */ 40*10115c80Sfei feng - Sun Microsystems - Beijing China uint32_t ncookies; /* must be 1 */ 41*10115c80Sfei feng - Sun Microsystems - Beijing China uint32_t token; /* arbitrary identifier */ 42*10115c80Sfei feng - Sun Microsystems - Beijing China }; 43*10115c80Sfei feng - Sun Microsystems - Beijing China 44*10115c80Sfei feng - Sun Microsystems - Beijing China struct rt2661_tx_data { 45*10115c80Sfei feng - Sun Microsystems - Beijing China struct dma_area txdata_dma; 46*10115c80Sfei feng - Sun Microsystems - Beijing China caddr_t buf; 47*10115c80Sfei feng - Sun Microsystems - Beijing China uint32_t paddr; 48*10115c80Sfei feng - Sun Microsystems - Beijing China struct ieee80211_node *ni; 49*10115c80Sfei feng - Sun Microsystems - Beijing China }; 50*10115c80Sfei feng - Sun Microsystems - Beijing China 51*10115c80Sfei feng - Sun Microsystems - Beijing China struct rt2661_tx_ring { 52*10115c80Sfei feng - Sun Microsystems - Beijing China struct dma_area txdesc_dma; 53*10115c80Sfei feng - Sun Microsystems - Beijing China uint32_t paddr; 54*10115c80Sfei feng - Sun Microsystems - Beijing China struct rt2661_tx_desc *desc; 55*10115c80Sfei feng - Sun Microsystems - Beijing China struct rt2661_tx_data *data; 56*10115c80Sfei feng - Sun Microsystems - Beijing China int count; 57*10115c80Sfei feng - Sun Microsystems - Beijing China int queued; 58*10115c80Sfei feng - Sun Microsystems - Beijing China int cur; 59*10115c80Sfei feng - Sun Microsystems - Beijing China int next; 60*10115c80Sfei feng - Sun Microsystems - Beijing China int stat; 61*10115c80Sfei feng - Sun Microsystems - Beijing China }; 62*10115c80Sfei feng - Sun Microsystems - Beijing China 63*10115c80Sfei feng - Sun Microsystems - Beijing China struct rt2661_rx_data { 64*10115c80Sfei feng - Sun Microsystems - Beijing China struct dma_area rxdata_dma; 65*10115c80Sfei feng - Sun Microsystems - Beijing China caddr_t buf; 66*10115c80Sfei feng - Sun Microsystems - Beijing China uint32_t paddr; 67*10115c80Sfei feng - Sun Microsystems - Beijing China }; 68*10115c80Sfei feng - Sun Microsystems - Beijing China 69*10115c80Sfei feng - Sun Microsystems - Beijing China struct rt2661_rx_ring { 70*10115c80Sfei feng - Sun Microsystems - Beijing China struct dma_area rxdesc_dma; 71*10115c80Sfei feng - Sun Microsystems - Beijing China uint32_t paddr; 72*10115c80Sfei feng - Sun Microsystems - Beijing China struct rt2661_rx_desc *desc; 73*10115c80Sfei feng - Sun Microsystems - Beijing China struct rt2661_rx_data *data; 74*10115c80Sfei feng - Sun Microsystems - Beijing China int count; 75*10115c80Sfei feng - Sun Microsystems - Beijing China int cur; 76*10115c80Sfei feng - Sun Microsystems - Beijing China int next; 77*10115c80Sfei feng - Sun Microsystems - Beijing China }; 78*10115c80Sfei feng - Sun Microsystems - Beijing China 79*10115c80Sfei feng - Sun Microsystems - Beijing China struct rt2661_amrr { 80*10115c80Sfei feng - Sun Microsystems - Beijing China uint_t amrr_min_success_threshold; 81*10115c80Sfei feng - Sun Microsystems - Beijing China uint_t amrr_max_success_threshold; 82*10115c80Sfei feng - Sun Microsystems - Beijing China }; 83*10115c80Sfei feng - Sun Microsystems - Beijing China 84*10115c80Sfei feng - Sun Microsystems - Beijing China struct rt2661_amrr_node { 85*10115c80Sfei feng - Sun Microsystems - Beijing China int amn_success; 86*10115c80Sfei feng - Sun Microsystems - Beijing China int amn_recovery; 87*10115c80Sfei feng - Sun Microsystems - Beijing China int amn_success_threshold; 88*10115c80Sfei feng - Sun Microsystems - Beijing China int amn_txcnt; 89*10115c80Sfei feng - Sun Microsystems - Beijing China int amn_retrycnt; 90*10115c80Sfei feng - Sun Microsystems - Beijing China }; 91*10115c80Sfei feng - Sun Microsystems - Beijing China 92*10115c80Sfei feng - Sun Microsystems - Beijing China struct rt2661_node { 93*10115c80Sfei feng - Sun Microsystems - Beijing China struct ieee80211_node ni; 94*10115c80Sfei feng - Sun Microsystems - Beijing China struct rt2661_amrr_node amn; 95*10115c80Sfei feng - Sun Microsystems - Beijing China }; 96*10115c80Sfei feng - Sun Microsystems - Beijing China 97*10115c80Sfei feng - Sun Microsystems - Beijing China struct rt2661_softc { 98*10115c80Sfei feng - Sun Microsystems - Beijing China struct ieee80211com sc_ic; 99*10115c80Sfei feng - Sun Microsystems - Beijing China dev_info_t *sc_dev; 100*10115c80Sfei feng - Sun Microsystems - Beijing China 101*10115c80Sfei feng - Sun Microsystems - Beijing China /* ddi reg handler */ 102*10115c80Sfei feng - Sun Microsystems - Beijing China ddi_acc_handle_t sc_cfg_handle; 103*10115c80Sfei feng - Sun Microsystems - Beijing China caddr_t sc_cfg_base; 104*10115c80Sfei feng - Sun Microsystems - Beijing China 105*10115c80Sfei feng - Sun Microsystems - Beijing China /* ddi i/o handler */ 106*10115c80Sfei feng - Sun Microsystems - Beijing China ddi_acc_handle_t sc_io_handle; 107*10115c80Sfei feng - Sun Microsystems - Beijing China caddr_t sc_io_base; 108*10115c80Sfei feng - Sun Microsystems - Beijing China 109*10115c80Sfei feng - Sun Microsystems - Beijing China uint16_t sc_cachelsz; 110*10115c80Sfei feng - Sun Microsystems - Beijing China uint32_t sc_dmabuf_size; 111*10115c80Sfei feng - Sun Microsystems - Beijing China 112*10115c80Sfei feng - Sun Microsystems - Beijing China struct rt2661_amrr amrr; 113*10115c80Sfei feng - Sun Microsystems - Beijing China 114*10115c80Sfei feng - Sun Microsystems - Beijing China struct rt2661_tx_ring txq[4]; 115*10115c80Sfei feng - Sun Microsystems - Beijing China struct rt2661_tx_ring mgtq; 116*10115c80Sfei feng - Sun Microsystems - Beijing China struct rt2661_rx_ring rxq; 117*10115c80Sfei feng - Sun Microsystems - Beijing China 118*10115c80Sfei feng - Sun Microsystems - Beijing China /* interrupt */ 119*10115c80Sfei feng - Sun Microsystems - Beijing China ddi_iblock_cookie_t sc_iblock; 120*10115c80Sfei feng - Sun Microsystems - Beijing China ddi_softint_handle_t sc_softintr_hdl; 121*10115c80Sfei feng - Sun Microsystems - Beijing China ddi_intr_handle_t *sc_intr_htable; 122*10115c80Sfei feng - Sun Microsystems - Beijing China uint_t sc_intr_pri; 123*10115c80Sfei feng - Sun Microsystems - Beijing China 124*10115c80Sfei feng - Sun Microsystems - Beijing China kmutex_t sc_genlock; 125*10115c80Sfei feng - Sun Microsystems - Beijing China kmutex_t sc_txlock; 126*10115c80Sfei feng - Sun Microsystems - Beijing China kmutex_t sc_rxlock; 127*10115c80Sfei feng - Sun Microsystems - Beijing China 128*10115c80Sfei feng - Sun Microsystems - Beijing China int sc_tx_timer; 129*10115c80Sfei feng - Sun Microsystems - Beijing China uint32_t sc_rx_pend; 130*10115c80Sfei feng - Sun Microsystems - Beijing China timeout_id_t sc_scan_id; 131*10115c80Sfei feng - Sun Microsystems - Beijing China timeout_id_t sc_rssadapt_id; 132*10115c80Sfei feng - Sun Microsystems - Beijing China timeout_id_t sc_stat_id; 133*10115c80Sfei feng - Sun Microsystems - Beijing China enum ieee80211_state sc_ostate; 134*10115c80Sfei feng - Sun Microsystems - Beijing China 135*10115c80Sfei feng - Sun Microsystems - Beijing China struct ieee80211_channel *sc_curchan; 136*10115c80Sfei feng - Sun Microsystems - Beijing China 137*10115c80Sfei feng - Sun Microsystems - Beijing China uint8_t rf_rev; 138*10115c80Sfei feng - Sun Microsystems - Beijing China uint8_t rfprog; 139*10115c80Sfei feng - Sun Microsystems - Beijing China uint8_t rffreq; 140*10115c80Sfei feng - Sun Microsystems - Beijing China 141*10115c80Sfei feng - Sun Microsystems - Beijing China uint32_t rf_regs[4]; 142*10115c80Sfei feng - Sun Microsystems - Beijing China int8_t txpow[38]; 143*10115c80Sfei feng - Sun Microsystems - Beijing China 144*10115c80Sfei feng - Sun Microsystems - Beijing China struct { 145*10115c80Sfei feng - Sun Microsystems - Beijing China uint8_t reg; 146*10115c80Sfei feng - Sun Microsystems - Beijing China uint8_t val; 147*10115c80Sfei feng - Sun Microsystems - Beijing China } bbp_prom[16]; 148*10115c80Sfei feng - Sun Microsystems - Beijing China 149*10115c80Sfei feng - Sun Microsystems - Beijing China 150*10115c80Sfei feng - Sun Microsystems - Beijing China int hw_radio; 151*10115c80Sfei feng - Sun Microsystems - Beijing China int rx_ant; 152*10115c80Sfei feng - Sun Microsystems - Beijing China int tx_ant; 153*10115c80Sfei feng - Sun Microsystems - Beijing China int nb_ant; 154*10115c80Sfei feng - Sun Microsystems - Beijing China int ext_2ghz_lna; 155*10115c80Sfei feng - Sun Microsystems - Beijing China int ext_5ghz_lna; 156*10115c80Sfei feng - Sun Microsystems - Beijing China int rssi_2ghz_corr; 157*10115c80Sfei feng - Sun Microsystems - Beijing China int rssi_5ghz_corr; 158*10115c80Sfei feng - Sun Microsystems - Beijing China 159*10115c80Sfei feng - Sun Microsystems - Beijing China int ncalls; 160*10115c80Sfei feng - Sun Microsystems - Beijing China int avg_rssi; 161*10115c80Sfei feng - Sun Microsystems - Beijing China int sifs; 162*10115c80Sfei feng - Sun Microsystems - Beijing China uint8_t bbp18; 163*10115c80Sfei feng - Sun Microsystems - Beijing China uint8_t bbp21; 164*10115c80Sfei feng - Sun Microsystems - Beijing China uint8_t bbp22; 165*10115c80Sfei feng - Sun Microsystems - Beijing China uint8_t bbp16; 166*10115c80Sfei feng - Sun Microsystems - Beijing China uint8_t bbp17; 167*10115c80Sfei feng - Sun Microsystems - Beijing China uint8_t bbp64; 168*10115c80Sfei feng - Sun Microsystems - Beijing China 169*10115c80Sfei feng - Sun Microsystems - Beijing China /* kstats */ 170*10115c80Sfei feng - Sun Microsystems - Beijing China uint32_t sc_tx_nobuf; 171*10115c80Sfei feng - Sun Microsystems - Beijing China uint32_t sc_rx_nobuf; 172*10115c80Sfei feng - Sun Microsystems - Beijing China uint32_t sc_tx_err; 173*10115c80Sfei feng - Sun Microsystems - Beijing China uint32_t sc_rx_err; 174*10115c80Sfei feng - Sun Microsystems - Beijing China uint32_t sc_tx_retries; 175*10115c80Sfei feng - Sun Microsystems - Beijing China 176*10115c80Sfei feng - Sun Microsystems - Beijing China uint32_t sc_need_sched; 177*10115c80Sfei feng - Sun Microsystems - Beijing China uint32_t sc_flags; 178*10115c80Sfei feng - Sun Microsystems - Beijing China uint32_t sc_rcr; 179*10115c80Sfei feng - Sun Microsystems - Beijing China int (*sc_newstate)(struct ieee80211com *, 180*10115c80Sfei feng - Sun Microsystems - Beijing China enum ieee80211_state, int); 181*10115c80Sfei feng - Sun Microsystems - Beijing China }; 182*10115c80Sfei feng - Sun Microsystems - Beijing China 183*10115c80Sfei feng - Sun Microsystems - Beijing China #define RT2661_GLOCK(_sc) mutex_enter(&(_sc)->sc_genlock) 184*10115c80Sfei feng - Sun Microsystems - Beijing China #define RT2661_GUNLOCK(_sc) mutex_exit(&(_sc)->sc_genlock) 185*10115c80Sfei feng - Sun Microsystems - Beijing China 186*10115c80Sfei feng - Sun Microsystems - Beijing China #define RT2661_INPUT_RUNNING (1 << 0) 187*10115c80Sfei feng - Sun Microsystems - Beijing China #define RT2661_F_RUNNING (1 << 1) 188*10115c80Sfei feng - Sun Microsystems - Beijing China #define RT2661_F_SUSPEND (1 << 2) 189*10115c80Sfei feng - Sun Microsystems - Beijing China #define RT2661_F_FWLOADED (1 << 3) 190*10115c80Sfei feng - Sun Microsystems - Beijing China #define RT2661_F_QUIESCE (1 << 4) 191*10115c80Sfei feng - Sun Microsystems - Beijing China 192*10115c80Sfei feng - Sun Microsystems - Beijing China #define RT2661_RCR_PROMISC (1 << 0) 193*10115c80Sfei feng - Sun Microsystems - Beijing China #define RT2661_RCR_MULTI (1 << 1) 194*10115c80Sfei feng - Sun Microsystems - Beijing China 195*10115c80Sfei feng - Sun Microsystems - Beijing China #define RT2661_IS_RUNNING(_sc) (((_sc)->sc_flags & RT2661_F_RUNNING)) 196*10115c80Sfei feng - Sun Microsystems - Beijing China #define RT2661_IS_SUSPEND(_sc) (((_sc)->sc_flags & RT2661_F_SUSPEND)) 197*10115c80Sfei feng - Sun Microsystems - Beijing China #define RT2661_IS_FWLOADED(_sc) (((_sc)->sc_flags & RT2661_F_FWLOADED)) 198*10115c80Sfei feng - Sun Microsystems - Beijing China #define RT2661_IS_FASTREBOOT(_sc) (((_sc)->sc_flags & RT2661_F_QUIESCE)) 199*10115c80Sfei feng - Sun Microsystems - Beijing China 200*10115c80Sfei feng - Sun Microsystems - Beijing China #define RT2661_DMA_SYNC(area, flag) ((void) ddi_dma_sync((area).dma_hdl,\ 201*10115c80Sfei feng - Sun Microsystems - Beijing China (area).offset, (area).alength, (flag))) 202*10115c80Sfei feng - Sun Microsystems - Beijing China 203*10115c80Sfei feng - Sun Microsystems - Beijing China #define RT2661_SUCCESS 0 204*10115c80Sfei feng - Sun Microsystems - Beijing China #define RT2661_FAILURE -1 205*10115c80Sfei feng - Sun Microsystems - Beijing China 206*10115c80Sfei feng - Sun Microsystems - Beijing China #ifdef __cplusplus 207*10115c80Sfei feng - Sun Microsystems - Beijing China } 208*10115c80Sfei feng - Sun Microsystems - Beijing China #endif 209*10115c80Sfei feng - Sun Microsystems - Beijing China 210*10115c80Sfei feng - Sun Microsystems - Beijing China #endif /* _RT2661_VAR_H */ 211