Annotation of sys/dev/ic/rt2560var.h, Revision 1.1
1.1 ! nbrk 1: /* $OpenBSD: rt2560var.h,v 1.5 2006/10/22 12:14:44 damien Exp $ */
! 2:
! 3: /*-
! 4: * Copyright (c) 2005, 2006
! 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: struct rt2560_rx_radiotap_header {
! 21: struct ieee80211_radiotap_header wr_ihdr;
! 22: uint64_t wr_tsf;
! 23: uint8_t wr_flags;
! 24: uint8_t wr_rate;
! 25: uint16_t wr_chan_freq;
! 26: uint16_t wr_chan_flags;
! 27: uint8_t wr_antenna;
! 28: uint8_t wr_antsignal;
! 29: } __packed;
! 30:
! 31: #define RT2560_RX_RADIOTAP_PRESENT \
! 32: ((1 << IEEE80211_RADIOTAP_TSFT) | \
! 33: (1 << IEEE80211_RADIOTAP_FLAGS) | \
! 34: (1 << IEEE80211_RADIOTAP_RATE) | \
! 35: (1 << IEEE80211_RADIOTAP_CHANNEL) | \
! 36: (1 << IEEE80211_RADIOTAP_ANTENNA) | \
! 37: (1 << IEEE80211_RADIOTAP_DB_ANTSIGNAL))
! 38:
! 39: struct rt2560_tx_radiotap_header {
! 40: struct ieee80211_radiotap_header wt_ihdr;
! 41: uint8_t wt_flags;
! 42: uint8_t wt_rate;
! 43: uint16_t wt_chan_freq;
! 44: uint16_t wt_chan_flags;
! 45: uint8_t wt_antenna;
! 46: } __packed;
! 47:
! 48: #define RT2560_TX_RADIOTAP_PRESENT \
! 49: ((1 << IEEE80211_RADIOTAP_FLAGS) | \
! 50: (1 << IEEE80211_RADIOTAP_RATE) | \
! 51: (1 << IEEE80211_RADIOTAP_CHANNEL) | \
! 52: (1 << IEEE80211_RADIOTAP_ANTENNA))
! 53:
! 54: struct rt2560_tx_data {
! 55: bus_dmamap_t map;
! 56: struct mbuf *m;
! 57: struct ieee80211_node *ni;
! 58: };
! 59:
! 60: struct rt2560_tx_ring {
! 61: bus_dmamap_t map;
! 62: bus_dma_segment_t seg;
! 63: bus_addr_t physaddr;
! 64: struct rt2560_tx_desc *desc;
! 65: struct rt2560_tx_data *data;
! 66: int count;
! 67: int queued;
! 68: int cur;
! 69: int next;
! 70: int cur_encrypt;
! 71: int next_encrypt;
! 72: };
! 73:
! 74: struct rt2560_rx_data {
! 75: bus_dmamap_t map;
! 76: struct mbuf *m;
! 77: int drop;
! 78: };
! 79:
! 80: struct rt2560_rx_ring {
! 81: bus_dmamap_t map;
! 82: bus_dma_segment_t seg;
! 83: bus_addr_t physaddr;
! 84: struct rt2560_rx_desc *desc;
! 85: struct rt2560_rx_data *data;
! 86: int count;
! 87: int cur;
! 88: int next;
! 89: int cur_decrypt;
! 90: };
! 91:
! 92: struct rt2560_node {
! 93: struct ieee80211_node ni;
! 94: struct ieee80211_amrr_node amn;
! 95: };
! 96:
! 97: struct rt2560_softc {
! 98: struct device sc_dev;
! 99:
! 100: struct ieee80211com sc_ic;
! 101: int (*sc_newstate)(struct ieee80211com *,
! 102: enum ieee80211_state, int);
! 103: struct ieee80211_amrr amrr;
! 104:
! 105: int (*sc_enable)(struct rt2560_softc *);
! 106: void (*sc_disable)(struct rt2560_softc *);
! 107: void (*sc_power)(struct rt2560_softc *, int);
! 108:
! 109: bus_dma_tag_t sc_dmat;
! 110: bus_space_tag_t sc_st;
! 111: bus_space_handle_t sc_sh;
! 112:
! 113: struct timeout scan_to;
! 114: struct timeout amrr_to;
! 115:
! 116: int sc_flags;
! 117: #define RT2560_ENABLED (1 << 0)
! 118: #define RT2560_UPDATE_SLOT (1 << 1)
! 119: #define RT2560_SET_SLOTTIME (1 << 2)
! 120:
! 121: int sc_tx_timer;
! 122:
! 123: uint32_t asic_rev;
! 124: uint8_t rf_rev;
! 125:
! 126: struct rt2560_tx_ring txq;
! 127: struct rt2560_tx_ring prioq;
! 128: struct rt2560_tx_ring atimq;
! 129: struct rt2560_tx_ring bcnq;
! 130: struct rt2560_rx_ring rxq;
! 131:
! 132: uint32_t rf_regs[4];
! 133: uint8_t txpow[14];
! 134:
! 135: struct {
! 136: uint8_t reg;
! 137: uint8_t val;
! 138: } bbp_prom[16];
! 139:
! 140: int led_mode;
! 141: int hw_radio;
! 142: int rx_ant;
! 143: int tx_ant;
! 144: int nb_ant;
! 145:
! 146: uint8_t *erp;
! 147:
! 148: #if NBPFILTER > 0
! 149: caddr_t sc_drvbpf;
! 150:
! 151: union {
! 152: struct rt2560_rx_radiotap_header th;
! 153: uint8_t pad[64];
! 154: } sc_rxtapu;
! 155: #define sc_rxtap sc_rxtapu.th
! 156: int sc_rxtap_len;
! 157:
! 158: union {
! 159: struct rt2560_tx_radiotap_header th;
! 160: uint8_t pad[64];
! 161: } sc_txtapu;
! 162: #define sc_txtap sc_txtapu.th
! 163: int sc_txtap_len;
! 164: #endif
! 165: void *sc_sdhook; /* shutdown hook */
! 166: void *sc_powerhook; /* power management hook */
! 167: };
! 168:
! 169: int rt2560_attach(void *, int);
! 170: int rt2560_detach(void *);
! 171: int rt2560_intr(void *);
! 172: void rt2560_shutdown(void *);
CVSweb