if_uralvar.h revision 187378
174462Salfred/* $FreeBSD: head/sys/dev/usb2/wlan/if_uralvar.h 187378 2009-01-18 05:35:58Z thompsa $ */ 274462Salfred 374462Salfred/*- 4261057Smav * Copyright (c) 2005 5261057Smav * Damien Bergamini <damien.bergamini@free.fr> 6261057Smav * 7261057Smav * Permission to use, copy, modify, and distribute this software for any 8261057Smav * purpose with or without fee is hereby granted, provided that the above 9261057Smav * copyright notice and this permission notice appear in all copies. 10261057Smav * 11261057Smav * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 12261057Smav * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 13261057Smav * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 14261057Smav * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 15261057Smav * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 16261057Smav * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 17261057Smav * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 18261057Smav */ 19261057Smav 20261057Smavstruct ural_node { 21261057Smav struct ieee80211_node ni; 22261057Smav struct ieee80211_amrr_node amn; 23261057Smav}; 24261057Smav 25261057Smav#define URAL_NODE(ni) ((struct ural_node *)(ni)) 26261057Smav 27261057Smavstruct ural_vap { 28261057Smav struct ieee80211vap vap; 29261057Smav struct ieee80211_beacon_offsets bo; 3074462Salfred struct ieee80211_amrr amrr; 3174462Salfred 3274462Salfred int (*newstate) (struct ieee80211vap *, 3374462Salfred enum ieee80211_state, int); 3474462Salfred}; 3574462Salfred 3674462Salfred#define URAL_VAP(vap) ((struct ural_vap *)(vap)) 3774462Salfred 3874462Salfredstruct ural_config_copy_chan { 3974462Salfred uint32_t chan_to_ieee; 4074462Salfred enum ieee80211_phymode chan_to_mode; 4174462Salfred uint8_t chan_is_5ghz:1; 4274462Salfred uint8_t chan_is_2ghz:1; 4374462Salfred uint8_t chan_is_b:1; 4474462Salfred uint8_t chan_is_a:1; 4574462Salfred uint8_t chan_is_g:1; 4674462Salfred uint8_t unused:3; 4774462Salfred}; 4874462Salfred 4974462Salfredstruct ural_config_copy_bss { 5074462Salfred uint16_t ni_intval; 5174462Salfred uint8_t ni_bssid[IEEE80211_ADDR_LEN]; 5274462Salfred uint8_t fixed_rate_none; 5374462Salfred}; 5474462Salfred 5574462Salfredstruct ural_config_copy { 5674462Salfred struct ural_config_copy_chan ic_curchan; 5774462Salfred struct ural_config_copy_chan ic_bsschan; 5874462Salfred struct ural_config_copy_bss iv_bss; 5974462Salfred 6074462Salfred enum ieee80211_opmode ic_opmode; 6174462Salfred uint32_t ic_flags; 6274462Salfred uint32_t if_flags; 6374462Salfred 6474462Salfred uint16_t ic_txpowlimit; 6574462Salfred uint16_t ic_curmode; 6674462Salfred 6793032Simp uint8_t ic_myaddr[IEEE80211_ADDR_LEN]; 6893032Simp uint8_t if_broadcastaddr[IEEE80211_ADDR_LEN]; 6974462Salfred}; 7074462Salfred 7174462Salfredstruct ural_rx_radiotap_header { 7274462Salfred struct ieee80211_radiotap_header wr_ihdr; 7374462Salfred uint8_t wr_flags; 7474462Salfred uint8_t wr_rate; 7574462Salfred uint16_t wr_chan_freq; 7674462Salfred uint16_t wr_chan_flags; 7774462Salfred uint8_t wr_antenna; 7874462Salfred uint8_t wr_antsignal; 7993032Simp}; 8074462Salfred 8174462Salfred#define RAL_RX_RADIOTAP_PRESENT \ 8274462Salfred ((1 << IEEE80211_RADIOTAP_FLAGS) | \ 8374462Salfred (1 << IEEE80211_RADIOTAP_RATE) | \ 8474462Salfred (1 << IEEE80211_RADIOTAP_CHANNEL) | \ 8574462Salfred (1 << IEEE80211_RADIOTAP_ANTENNA) | \ 8674462Salfred (1 << IEEE80211_RADIOTAP_DB_ANTSIGNAL)) 8793032Simp 8874462Salfredstruct ural_tx_radiotap_header { 8974462Salfred struct ieee80211_radiotap_header wt_ihdr; 9074462Salfred uint8_t wt_flags; 9174462Salfred uint8_t wt_rate; 9274462Salfred uint16_t wt_chan_freq; 9374462Salfred uint16_t wt_chan_flags; 9474462Salfred uint8_t wt_antenna; 9593032Simp}; 9693032Simp 9793032Simp#define RAL_TX_RADIOTAP_PRESENT \ 9874462Salfred ((1 << IEEE80211_RADIOTAP_FLAGS) | \ 9974462Salfred (1 << IEEE80211_RADIOTAP_RATE) | \ 10074462Salfred (1 << IEEE80211_RADIOTAP_CHANNEL) | \ 10174462Salfred (1 << IEEE80211_RADIOTAP_ANTENNA)) 10274462Salfred 10374462Salfredstruct ural_bbp_prom { 10474462Salfred uint8_t val; 10593032Simp uint8_t reg; 10674462Salfred} __packed; 10774462Salfred 10874462Salfredstruct ural_ifq { 10974462Salfred struct mbuf *ifq_head; 11074462Salfred struct mbuf *ifq_tail; 11174462Salfred uint16_t ifq_len; 11293032Simp}; 11374462Salfred 11474462Salfredenum { 11574462Salfred URAL_BULK_DT_WR, 116 URAL_BULK_DT_RD, 117 URAL_BULK_CS_WR, 118 URAL_BULK_CS_RD, 119 URAL_N_TRANSFER = 4, 120}; 121 122struct ural_softc { 123 struct ifnet *sc_ifp; 124 125 struct ural_ifq sc_tx_queue; 126 struct usb2_config_td sc_config_td; 127 struct ural_tx_desc sc_tx_desc; 128 struct ural_rx_desc sc_rx_desc; 129 struct mtx sc_mtx; 130 struct usb2_callout sc_watchdog; 131 struct ural_bbp_prom sc_bbp_prom[16]; 132 struct ural_rx_radiotap_header sc_rxtap; 133 struct ural_tx_radiotap_header sc_txtap; 134 135 struct usb2_xfer *sc_xfer[URAL_N_TRANSFER]; 136 struct usb2_device *sc_udev; 137 const struct ieee80211_rate_table *sc_rates; 138 139 enum ieee80211_state sc_ns_state; 140 uint32_t sc_unit; 141 uint32_t sc_asic_rev; 142 uint32_t sc_rf_regs[4]; 143 int sc_ns_arg; 144 145 uint16_t sc_flags; 146#define URAL_FLAG_READ_STALL 0x0001 147#define URAL_FLAG_WRITE_STALL 0x0002 148#define URAL_FLAG_LL_READY 0x0004 149#define URAL_FLAG_HL_READY 0x0008 150#define URAL_FLAG_WAIT_COMMAND 0x0010 151 uint16_t sc_txtap_len; 152 uint16_t sc_rxtap_len; 153 uint16_t sc_sta[11]; 154 155 uint8_t sc_rf_rev; 156 uint8_t sc_txpow[14]; 157 uint8_t sc_led_mode; 158 uint8_t sc_hw_radio; 159 uint8_t sc_rx_ant; 160 uint8_t sc_tx_ant; 161 uint8_t sc_nb_ant; 162 uint8_t sc_amrr_timer; 163 uint8_t sc_myaddr[IEEE80211_ADDR_LEN]; 164 165 char sc_name[32]; 166}; 167