Annotation of sys/dev/pci/if_ipwvar.h, Revision 1.1
1.1 ! nbrk 1: /* $OpenBSD: if_ipwvar.h,v 1.14 2006/08/19 12:03:05 damien Exp $ */
! 2:
! 3: /*-
! 4: * Copyright (c) 2004-2006
! 5: * Damien Bergamini <damien.bergamini@free.fr>. All rights reserved.
! 6: *
! 7: * Redistribution and use in source and binary forms, with or without
! 8: * modification, are permitted provided that the following conditions
! 9: * are met:
! 10: * 1. Redistributions of source code must retain the above copyright
! 11: * notice unmodified, this list of conditions, and the following
! 12: * disclaimer.
! 13: * 2. Redistributions in binary form must reproduce the above copyright
! 14: * notice, this list of conditions and the following disclaimer in the
! 15: * documentation and/or other materials provided with the distribution.
! 16: *
! 17: * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
! 18: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
! 19: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
! 20: * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
! 21: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
! 22: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
! 23: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
! 24: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
! 25: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
! 26: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
! 27: * SUCH DAMAGE.
! 28: */
! 29:
! 30: struct ipw_firmware {
! 31: u_char *data;
! 32: u_char *main;
! 33: size_t main_size;
! 34: u_char *ucode;
! 35: size_t ucode_size;
! 36: };
! 37:
! 38: struct ipw_soft_bd {
! 39: struct ipw_bd *bd;
! 40: int type;
! 41: #define IPW_SBD_TYPE_NOASSOC 0
! 42: #define IPW_SBD_TYPE_COMMAND 1
! 43: #define IPW_SBD_TYPE_HEADER 2
! 44: #define IPW_SBD_TYPE_DATA 3
! 45: void *priv;
! 46: };
! 47:
! 48: struct ipw_soft_hdr {
! 49: struct ipw_hdr hdr;
! 50: bus_dmamap_t map;
! 51: SLIST_ENTRY(ipw_soft_hdr) next;
! 52: };
! 53:
! 54: struct ipw_soft_buf {
! 55: struct mbuf *m;
! 56: struct ieee80211_node *ni;
! 57: bus_dmamap_t map;
! 58: SLIST_ENTRY(ipw_soft_buf) next;
! 59: };
! 60:
! 61: struct ipw_rx_radiotap_header {
! 62: struct ieee80211_radiotap_header wr_ihdr;
! 63: uint8_t wr_flags;
! 64: uint16_t wr_chan_freq;
! 65: uint16_t wr_chan_flags;
! 66: uint8_t wr_antsignal;
! 67: } __packed;
! 68:
! 69: #define IPW_RX_RADIOTAP_PRESENT \
! 70: ((1 << IEEE80211_RADIOTAP_FLAGS) | \
! 71: (1 << IEEE80211_RADIOTAP_CHANNEL) | \
! 72: (1 << IEEE80211_RADIOTAP_DB_ANTSIGNAL))
! 73:
! 74: struct ipw_tx_radiotap_header {
! 75: struct ieee80211_radiotap_header wt_ihdr;
! 76: uint8_t wt_flags;
! 77: uint16_t wt_chan_freq;
! 78: uint16_t wt_chan_flags;
! 79: } __packed;
! 80:
! 81: #define IPW_TX_RADIOTAP_PRESENT \
! 82: ((1 << IEEE80211_RADIOTAP_FLAGS) | \
! 83: (1 << IEEE80211_RADIOTAP_CHANNEL))
! 84:
! 85: #define IPW_MAX_NSEG 1
! 86:
! 87: struct ipw_softc {
! 88: struct device sc_dev;
! 89:
! 90: struct ieee80211com sc_ic;
! 91: int (*sc_newstate)(struct ieee80211com *,
! 92: enum ieee80211_state, int);
! 93:
! 94: uint32_t flags;
! 95: #define IPW_FLAG_FW_INITED (1 << 0)
! 96:
! 97: struct resource *irq;
! 98: struct resource *mem;
! 99: bus_space_tag_t sc_st;
! 100: bus_space_handle_t sc_sh;
! 101: void *sc_ih;
! 102: pci_chipset_tag_t sc_pct;
! 103: pcitag_t sc_pcitag;
! 104: bus_size_t sc_sz;
! 105:
! 106: int sc_tx_timer;
! 107:
! 108: bus_dma_tag_t sc_dmat;
! 109:
! 110: bus_dmamap_t tbd_map;
! 111: bus_dmamap_t rbd_map;
! 112: bus_dmamap_t status_map;
! 113: bus_dmamap_t cmd_map;
! 114:
! 115: bus_dma_segment_t tbd_seg;
! 116: bus_dma_segment_t rbd_seg;
! 117: bus_dma_segment_t status_seg;
! 118: bus_dma_segment_t cmd_seg;
! 119:
! 120: struct ipw_bd *tbd_list;
! 121: struct ipw_bd *rbd_list;
! 122: struct ipw_status *status_list;
! 123:
! 124: struct ipw_cmd cmd;
! 125: struct ipw_soft_bd stbd_list[IPW_NTBD];
! 126: struct ipw_soft_buf tx_sbuf_list[IPW_NDATA];
! 127: struct ipw_soft_hdr shdr_list[IPW_NDATA];
! 128: struct ipw_soft_bd srbd_list[IPW_NRBD];
! 129: struct ipw_soft_buf rx_sbuf_list[IPW_NRBD];
! 130:
! 131: SLIST_HEAD(, ipw_soft_hdr) free_shdr;
! 132: SLIST_HEAD(, ipw_soft_buf) free_sbuf;
! 133:
! 134: uint32_t table1_base;
! 135: uint32_t table2_base;
! 136:
! 137: uint32_t txcur;
! 138: uint32_t txold;
! 139: uint32_t rxcur;
! 140: int txfree;
! 141:
! 142: void *powerhook;
! 143:
! 144: #if NBPFILTER > 0
! 145: caddr_t sc_drvbpf;
! 146:
! 147: union {
! 148: struct ipw_rx_radiotap_header th;
! 149: uint8_t pad[64];
! 150: } sc_rxtapu;
! 151: #define sc_rxtap sc_rxtapu.th
! 152: int sc_rxtap_len;
! 153:
! 154: union {
! 155: struct ipw_tx_radiotap_header th;
! 156: uint8_t pad[64];
! 157: } sc_txtapu;
! 158: #define sc_txtap sc_txtapu.th
! 159: int sc_txtap_len;
! 160: #endif
! 161: };
CVSweb