[BACK]Return to if_wpivar.h CVS log [TXT][DIR] Up to [local] / sys / dev / pci

Annotation of sys/dev/pci/if_wpivar.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: if_wpivar.h,v 1.12 2007/06/16 14:15:37 damien Exp $   */
                      2:
                      3: /*-
                      4:  * Copyright (c) 2006, 2007
                      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 wpi_rx_radiotap_header {
                     21:        struct ieee80211_radiotap_header wr_ihdr;
                     22:        uint64_t        wr_tsft;
                     23:        uint8_t         wr_flags;
                     24:        uint8_t         wr_rate;
                     25:        uint16_t        wr_chan_freq;
                     26:        uint16_t        wr_chan_flags;
                     27:        int8_t          wr_dbm_antsignal;
                     28:        int8_t          wr_dbm_antnoise;
                     29:        uint8_t         wr_antenna;
                     30: } __packed;
                     31:
                     32: #define WPI_RX_RADIOTAP_PRESENT                                                \
                     33:        ((1 << IEEE80211_RADIOTAP_TSFT) |                               \
                     34:         (1 << IEEE80211_RADIOTAP_FLAGS) |                              \
                     35:         (1 << IEEE80211_RADIOTAP_RATE) |                               \
                     36:         (1 << IEEE80211_RADIOTAP_CHANNEL) |                            \
                     37:         (1 << IEEE80211_RADIOTAP_DBM_ANTSIGNAL) |                      \
                     38:         (1 << IEEE80211_RADIOTAP_DBM_ANTNOISE) |                       \
                     39:         (1 << IEEE80211_RADIOTAP_ANTENNA))
                     40:
                     41: struct wpi_tx_radiotap_header {
                     42:        struct ieee80211_radiotap_header wt_ihdr;
                     43:        uint8_t         wt_flags;
                     44:        uint8_t         wt_rate;
                     45:        uint16_t        wt_chan_freq;
                     46:        uint16_t        wt_chan_flags;
                     47:        uint8_t         wt_hwqueue;
                     48: } __packed;
                     49:
                     50: #define WPI_TX_RADIOTAP_PRESENT                                                \
                     51:        ((1 << IEEE80211_RADIOTAP_FLAGS) |                              \
                     52:         (1 << IEEE80211_RADIOTAP_RATE) |                               \
                     53:         (1 << IEEE80211_RADIOTAP_CHANNEL) |                            \
                     54:         (1 << IEEE80211_RADIOTAP_HWQUEUE))
                     55:
                     56: struct wpi_dma_info {
                     57:        bus_dma_tag_t           tag;
                     58:        bus_dmamap_t            map;
                     59:        bus_dma_segment_t       seg;
                     60:        bus_addr_t              paddr;
                     61:        caddr_t                 vaddr;
                     62:        bus_size_t              size;
                     63: };
                     64:
                     65: struct wpi_tx_data {
                     66:        bus_dmamap_t            map;
                     67:        struct mbuf             *m;
                     68:        struct ieee80211_node   *ni;
                     69: };
                     70:
                     71: struct wpi_tx_ring {
                     72:        struct wpi_dma_info     desc_dma;
                     73:        struct wpi_dma_info     cmd_dma;
                     74:        struct wpi_tx_desc      *desc;
                     75:        struct wpi_tx_cmd       *cmd;
                     76:        struct wpi_tx_data      *data;
                     77:        int                     qid;
                     78:        int                     count;
                     79:        int                     queued;
                     80:        int                     cur;
                     81: };
                     82:
                     83: #define WPI_RBUF_COUNT (WPI_RX_RING_COUNT + 16)
                     84:
                     85: struct wpi_softc;
                     86:
                     87: struct wpi_rbuf {
                     88:        struct wpi_softc        *sc;
                     89:        caddr_t                 vaddr;
                     90:        bus_addr_t              paddr;
                     91:        SLIST_ENTRY(wpi_rbuf)   next;
                     92: };
                     93:
                     94: struct wpi_rx_data {
                     95:        struct mbuf     *m;
                     96: };
                     97:
                     98: struct wpi_rx_ring {
                     99:        struct wpi_dma_info     desc_dma;
                    100:        struct wpi_dma_info     buf_dma;
                    101:        uint32_t                *desc;
                    102:        struct wpi_rx_data      data[WPI_RX_RING_COUNT];
                    103:        struct wpi_rbuf         rbuf[WPI_RBUF_COUNT];
                    104:        SLIST_HEAD(, wpi_rbuf)  freelist;
                    105:        int                     cur;
                    106: };
                    107:
                    108: struct wpi_node {
                    109:        struct  ieee80211_node          ni;     /* must be the first */
                    110:        struct  ieee80211_amrr_node     amn;
                    111: };
                    112:
                    113: struct wpi_power_sample {
                    114:        uint8_t index;
                    115:        int8_t  power;
                    116: };
                    117:
                    118: struct wpi_power_group {
                    119: #define WPI_SAMPLES_COUNT      5
                    120:        struct  wpi_power_sample samples[WPI_SAMPLES_COUNT];
                    121:        uint8_t chan;
                    122:        int8_t  maxpwr;
                    123:        int16_t temp;
                    124: };
                    125:
                    126: struct wpi_softc {
                    127:        struct device           sc_dev;
                    128:
                    129:        struct ieee80211com     sc_ic;
                    130:        int                     (*sc_newstate)(struct ieee80211com *,
                    131:                                    enum ieee80211_state, int);
                    132:        struct ieee80211_amrr   amrr;
                    133:
                    134:        bus_dma_tag_t           sc_dmat;
                    135:
                    136:        /* shared area */
                    137:        struct wpi_dma_info     shared_dma;
                    138:        struct wpi_shared       *shared;
                    139:
                    140:        /* firmware DMA transfer */
                    141:        struct wpi_dma_info     fw_dma;
                    142:
                    143:        /* rings */
                    144:        struct wpi_tx_ring      txq[4];
                    145:        struct wpi_tx_ring      cmdq;
                    146:        struct wpi_rx_ring      rxq;
                    147:
                    148:        bus_space_tag_t         sc_st;
                    149:        bus_space_handle_t      sc_sh;
                    150:        void                    *sc_ih;
                    151:        pci_chipset_tag_t       sc_pct;
                    152:        pcitag_t                sc_pcitag;
                    153:        bus_size_t              sc_sz;
                    154:
                    155:        struct ksensordev       sensordev;
                    156:        struct ksensor          sensor;
                    157:        struct timeout          calib_to;
                    158:        int                     calib_cnt;
                    159:
                    160:        struct wpi_config       config;
                    161:        int                     temp;
                    162:
                    163:        uint8_t                 cap;
                    164:        uint16_t                rev;
                    165:        uint8_t                 type;
                    166:        struct wpi_power_group  groups[WPI_POWER_GROUPS_COUNT];
                    167:        int8_t                  maxpwr[IEEE80211_CHAN_MAX];
                    168:
                    169:        int                     sc_tx_timer;
                    170:        void                    *powerhook;
                    171:
                    172: #if NBPFILTER > 0
                    173:        caddr_t                 sc_drvbpf;
                    174:
                    175:        union {
                    176:                struct wpi_rx_radiotap_header th;
                    177:                uint8_t pad[IEEE80211_RADIOTAP_HDRLEN];
                    178:        } sc_rxtapu;
                    179: #define sc_rxtap       sc_rxtapu.th
                    180:        int                     sc_rxtap_len;
                    181:
                    182:        union {
                    183:                struct wpi_tx_radiotap_header th;
                    184:                uint8_t pad[IEEE80211_RADIOTAP_HDRLEN];
                    185:        } sc_txtapu;
                    186: #define sc_txtap       sc_txtapu.th
                    187:        int                     sc_txtap_len;
                    188: #endif
                    189: };

CVSweb