Annotation of sys/dev/usb/if_ralvar.h, Revision 1.1
1.1 ! nbrk 1: /* $OpenBSD: if_ralvar.h,v 1.9 2007/06/06 19:25:49 mk Exp $ */
! 2:
! 3: /*-
! 4: * Copyright (c) 2005
! 5: * Damien Bergamini <damien.bergamini@free.fr>
! 6: *
! 7: * Permission to use, copy, modify, and distribute this software for any
! 8: * purpose with or without fee is hereby granted, provided that the above
! 9: * copyright notice and this permission notice appear in all copies.
! 10: *
! 11: * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
! 12: * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
! 13: * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
! 14: * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
! 15: * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
! 16: * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
! 17: * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
! 18: */
! 19:
! 20: #define RAL_RX_LIST_COUNT 1
! 21: #define RAL_TX_LIST_COUNT 8
! 22:
! 23: struct ural_rx_radiotap_header {
! 24: struct ieee80211_radiotap_header wr_ihdr;
! 25: uint8_t wr_flags;
! 26: uint8_t wr_rate;
! 27: uint16_t wr_chan_freq;
! 28: uint16_t wr_chan_flags;
! 29: uint8_t wr_antenna;
! 30: uint8_t wr_antsignal;
! 31: } __packed;
! 32:
! 33: #define RAL_RX_RADIOTAP_PRESENT \
! 34: ((1 << IEEE80211_RADIOTAP_FLAGS) | \
! 35: (1 << IEEE80211_RADIOTAP_RATE) | \
! 36: (1 << IEEE80211_RADIOTAP_CHANNEL) | \
! 37: (1 << IEEE80211_RADIOTAP_ANTENNA) | \
! 38: (1 << IEEE80211_RADIOTAP_DB_ANTSIGNAL))
! 39:
! 40: struct ural_tx_radiotap_header {
! 41: struct ieee80211_radiotap_header wt_ihdr;
! 42: uint8_t wt_flags;
! 43: uint8_t wt_rate;
! 44: uint16_t wt_chan_freq;
! 45: uint16_t wt_chan_flags;
! 46: uint8_t wt_antenna;
! 47: } __packed;
! 48:
! 49: #define RAL_TX_RADIOTAP_PRESENT \
! 50: ((1 << IEEE80211_RADIOTAP_FLAGS) | \
! 51: (1 << IEEE80211_RADIOTAP_RATE) | \
! 52: (1 << IEEE80211_RADIOTAP_CHANNEL) | \
! 53: (1 << IEEE80211_RADIOTAP_ANTENNA))
! 54:
! 55: struct ural_softc;
! 56:
! 57: struct ural_tx_data {
! 58: struct ural_softc *sc;
! 59: usbd_xfer_handle xfer;
! 60: uint8_t *buf;
! 61: struct ieee80211_node *ni;
! 62: };
! 63:
! 64: struct ural_rx_data {
! 65: struct ural_softc *sc;
! 66: usbd_xfer_handle xfer;
! 67: uint8_t *buf;
! 68: struct mbuf *m;
! 69: };
! 70:
! 71: struct ural_softc {
! 72: struct device sc_dev;
! 73: struct ieee80211com sc_ic;
! 74: int (*sc_newstate)(struct ieee80211com *,
! 75: enum ieee80211_state, int);
! 76:
! 77: usbd_device_handle sc_udev;
! 78: usbd_interface_handle sc_iface;
! 79:
! 80: int sc_rx_no;
! 81: int sc_tx_no;
! 82:
! 83: uint32_t asic_rev;
! 84: uint16_t macbbp_rev;
! 85: uint8_t rf_rev;
! 86:
! 87: usbd_xfer_handle amrr_xfer;
! 88:
! 89: usbd_pipe_handle sc_rx_pipeh;
! 90: usbd_pipe_handle sc_tx_pipeh;
! 91:
! 92: enum ieee80211_state sc_state;
! 93: int sc_arg;
! 94: struct usb_task sc_task;
! 95:
! 96: struct ieee80211_amrr amrr;
! 97: struct ieee80211_amrr_node amn;
! 98:
! 99: struct ural_rx_data rx_data[RAL_RX_LIST_COUNT];
! 100: struct ural_tx_data tx_data[RAL_TX_LIST_COUNT];
! 101: int tx_queued;
! 102: int tx_cur;
! 103:
! 104: struct timeout scan_to;
! 105: struct timeout amrr_to;
! 106:
! 107: int sc_tx_timer;
! 108:
! 109: uint16_t sta[11];
! 110: uint32_t rf_regs[4];
! 111: uint8_t txpow[14];
! 112:
! 113: struct {
! 114: uint8_t val;
! 115: uint8_t reg;
! 116: } __packed bbp_prom[16];
! 117:
! 118: int led_mode;
! 119: int hw_radio;
! 120: int rx_ant;
! 121: int tx_ant;
! 122: int nb_ant;
! 123:
! 124: #if NBPFILTER > 0
! 125: caddr_t sc_drvbpf;
! 126:
! 127: union {
! 128: struct ural_rx_radiotap_header th;
! 129: uint8_t pad[64];
! 130: } sc_rxtapu;
! 131: #define sc_rxtap sc_rxtapu.th
! 132: int sc_rxtap_len;
! 133:
! 134: union {
! 135: struct ural_tx_radiotap_header th;
! 136: uint8_t pad[64];
! 137: } sc_txtapu;
! 138: #define sc_txtap sc_txtapu.th
! 139: int sc_txtap_len;
! 140: #endif
! 141: };
CVSweb