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

Annotation of sys/dev/ic/awivar.h, Revision 1.1

1.1     ! nbrk        1: /* $OpenBSD: awivar.h,v 1.6 2003/10/21 18:58:49 jmc Exp $ */
        !             2: /* $NetBSD: awivar.h,v 1.12 2000/07/21 04:48:56 onoe Exp $ */
        !             3:
        !             4: /*-
        !             5:  * Copyright (c) 1999 The NetBSD Foundation, Inc.
        !             6:  * All rights reserved.
        !             7:  *
        !             8:  * This code is derived from software contributed to The NetBSD Foundation
        !             9:  * by Bill Sommerfeld
        !            10:  *
        !            11:  * Redistribution and use in source and binary forms, with or without
        !            12:  * modification, are permitted provided that the following conditions
        !            13:  * are met:
        !            14:  * 1. Redistributions of source code must retain the above copyright
        !            15:  *    notice, this list of conditions and the following disclaimer.
        !            16:  * 2. Redistributions in binary form must reproduce the above copyright
        !            17:  *    notice, this list of conditions and the following disclaimer in the
        !            18:  *    documentation and/or other materials provided with the distribution.
        !            19:  * 3. All advertising materials mentioning features or use of this software
        !            20:  *    must display the following acknowledgement:
        !            21:  *        This product includes software developed by the NetBSD
        !            22:  *        Foundation, Inc. and its contributors.
        !            23:  * 4. Neither the name of The NetBSD Foundation nor the names of its
        !            24:  *    contributors may be used to endorse or promote products derived
        !            25:  *    from this software without specific prior written permission.
        !            26:  *
        !            27:  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
        !            28:  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
        !            29:  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
        !            30:  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
        !            31:  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
        !            32:  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
        !            33:  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
        !            34:  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
        !            35:  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
        !            36:  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        !            37:  * POSSIBILITY OF SUCH DAMAGE.
        !            38:  */
        !            39:
        !            40: /* timer values in msec */
        !            41: #define        AWI_SELFTEST_TIMEOUT    5000
        !            42: #define        AWI_CMD_TIMEOUT         2000
        !            43: #define        AWI_LOCKOUT_TIMEOUT     50
        !            44: #define        AWI_ASCAN_DURATION      100
        !            45: #define        AWI_ASCAN_WAIT          3000
        !            46: #define        AWI_PSCAN_DURATION      200
        !            47: #define        AWI_PSCAN_WAIT          5000
        !            48: #define        AWI_TRANS_TIMEOUT       2000
        !            49:
        !            50: #define        AWI_NTXBUFS             4
        !            51: #define        AWI_MAX_KEYLEN          16
        !            52:
        !            53: enum awi_status {
        !            54:        AWI_ST_INIT,
        !            55:        AWI_ST_SCAN,
        !            56:        AWI_ST_SETSS,
        !            57:        AWI_ST_SYNC,
        !            58:        AWI_ST_AUTH,
        !            59:        AWI_ST_ASSOC,
        !            60:        AWI_ST_RUNNING
        !            61: };
        !            62:
        !            63: struct awi_bss
        !            64: {
        !            65:        TAILQ_ENTRY(awi_bss)    list;
        !            66:        u_int8_t        esrc[ETHER_ADDR_LEN];
        !            67:        u_int8_t        chanset;        /* channel set to use */
        !            68:        u_int8_t        pattern;        /* hop pattern to use */
        !            69:        u_int8_t        index;          /* index to use */
        !            70:        u_int8_t        rssi;           /* strength of this beacon */
        !            71:        u_int16_t       dwell_time;     /* dwell time */
        !            72:        u_int8_t        timestamp[8];   /* timestamp of this bss */
        !            73:        u_int8_t        bssid[ETHER_ADDR_LEN];
        !            74:        u_int16_t       capinfo;
        !            75:        u_int32_t       rxtime;         /* unit's local time */
        !            76:        u_int16_t       interval;       /* beacon interval */
        !            77:        u_int8_t        txrate;
        !            78:        u_int8_t        fails;
        !            79:        u_int8_t        essid[IEEE80211_NWID_LEN + 2];
        !            80: };
        !            81:
        !            82: struct awi_wep_algo {
        !            83:        char            *awa_name;
        !            84:        int             (*awa_ctxlen)(void);
        !            85:        void            (*awa_setkey)(void *, u_char *, int);
        !            86:        void            (*awa_encrypt)(void *, u_char *, u_char *, int);
        !            87:        void            (*awa_decrypt)(void *, u_char *, u_char *, int);
        !            88: };
        !            89:
        !            90: struct awi_softc
        !            91: {
        !            92: #ifdef __NetBSD__
        !            93:        struct device           sc_dev;
        !            94:        struct ethercom         sc_ec;
        !            95:        void                    *sc_ih; /* interrupt handler */
        !            96: #endif
        !            97: #ifdef __FreeBSD__
        !            98: #if __FreeBSD__ >= 4
        !            99:        struct {
        !           100:                char    dv_xname[64];   /*XXX*/
        !           101:        }                       sc_dev;
        !           102: #else
        !           103:        struct device           sc_dev;
        !           104: #endif
        !           105: #endif
        !           106: #ifdef __OpenBSD__
        !           107:        struct device           sc_dev;
        !           108:        struct arpcom           sc_arpcom;
        !           109:        void                    *sc_ih; /* interrupt handler */
        !           110: #endif
        !           111:        struct am79c930_softc   sc_chip;
        !           112:        struct ifnet            *sc_ifp;
        !           113:        int                     (*sc_enable)(struct awi_softc *);
        !           114:        void                    (*sc_disable)(struct awi_softc *);
        !           115:
        !           116:        struct ifmedia          sc_media;
        !           117:        enum awi_status         sc_status;
        !           118:        unsigned int            sc_enabled:1,
        !           119:                                sc_busy:1,
        !           120:                                sc_cansleep:1,
        !           121:                                sc_invalid:1,
        !           122:                                sc_enab_intr:1,
        !           123:                                sc_format_llc:1,
        !           124:                                sc_start_bss:1,
        !           125:                                sc_rawbpf:1,
        !           126:                                sc_no_bssid:1,
        !           127:                                sc_active_scan:1,
        !           128:                                sc_attached:1;  /* attach has succeeded */
        !           129:        u_int8_t                sc_cmd_inprog;
        !           130:        int                     sc_sleep_cnt;
        !           131:
        !           132:        int                     sc_mgt_timer;
        !           133:
        !           134:        TAILQ_HEAD(, awi_bss)   sc_scan;
        !           135:        u_int8_t                sc_scan_cur;
        !           136:        u_int8_t                sc_scan_min;
        !           137:        u_int8_t                sc_scan_max;
        !           138:        u_int8_t                sc_scan_set;
        !           139:        struct awi_bss          sc_bss;
        !           140:        u_int8_t                sc_ownssid[IEEE80211_NWID_LEN + 2];
        !           141:        u_int8_t                sc_ownch;
        !           142:
        !           143:        int                     sc_rx_timer;
        !           144:        u_int32_t               sc_rxdoff;
        !           145:        u_int32_t               sc_rxmoff;
        !           146:        struct mbuf             *sc_rxpend;
        !           147:
        !           148:        int                     sc_tx_timer;
        !           149:        u_int8_t                sc_tx_rate;
        !           150:        struct ifqueue          sc_mgtq;
        !           151:        u_int32_t               sc_txbase;
        !           152:        u_int32_t               sc_txend;
        !           153:        u_int32_t               sc_txnext;
        !           154:        u_int32_t               sc_txdone;
        !           155:
        !           156:        int                     sc_wep_keylen[IEEE80211_WEP_NKID]; /* keylen */
        !           157:        u_int8_t                sc_wep_key[IEEE80211_WEP_NKID][AWI_MAX_KEYLEN];
        !           158:        int                     sc_wep_defkid;
        !           159:        void                    *sc_wep_ctx;    /* work area */
        !           160:        struct awi_wep_algo     *sc_wep_algo;
        !           161:
        !           162:        u_char                  sc_banner[AWI_BANNER_LEN];
        !           163:        struct awi_mib_local    sc_mib_local;
        !           164:        struct awi_mib_addr     sc_mib_addr;
        !           165:        struct awi_mib_mac      sc_mib_mac;
        !           166:        struct awi_mib_stat     sc_mib_stat;
        !           167:        struct awi_mib_mgt      sc_mib_mgt;
        !           168:        struct awi_mib_phy      sc_mib_phy;
        !           169: };
        !           170:
        !           171: #define awi_read_1(sc, off) ((sc)->sc_chip.sc_ops->read_1)(&sc->sc_chip, off)
        !           172: #define awi_read_2(sc, off) ((sc)->sc_chip.sc_ops->read_2)(&sc->sc_chip, off)
        !           173: #define awi_read_4(sc, off) ((sc)->sc_chip.sc_ops->read_4)(&sc->sc_chip, off)
        !           174: #define awi_read_bytes(sc, off, ptr, len) ((sc)->sc_chip.sc_ops->read_bytes)(&sc->sc_chip, off, ptr, len)
        !           175:
        !           176: #define awi_write_1(sc, off, val) \
        !           177:        ((sc)->sc_chip.sc_ops->write_1)(&sc->sc_chip, off, val)
        !           178: #define awi_write_2(sc, off, val) \
        !           179:        ((sc)->sc_chip.sc_ops->write_2)(&sc->sc_chip, off, val)
        !           180: #define awi_write_4(sc, off, val) \
        !           181:        ((sc)->sc_chip.sc_ops->write_4)(&sc->sc_chip, off, val)
        !           182: #define awi_write_bytes(sc, off, ptr, len) \
        !           183:        ((sc)->sc_chip.sc_ops->write_bytes)(&sc->sc_chip, off, ptr, len)
        !           184:
        !           185: #define awi_drvstate(sc, state) \
        !           186:        awi_write_1(sc, AWI_DRIVERSTATE, \
        !           187:            ((state) | AWI_DRV_AUTORXLED|AWI_DRV_AUTOTXLED))
        !           188:
        !           189: /* unaligned little endian access */
        !           190: #define        LE_READ_2(p)                                                    \
        !           191:        (((u_int8_t *)(p))[0] | (((u_int8_t *)(p))[1] << 8))
        !           192: #define        LE_READ_4(p)                                                    \
        !           193:        (((u_int8_t *)(p))[0] | (((u_int8_t *)(p))[1] << 8) |           \
        !           194:         (((u_int8_t *)(p))[2] << 16) | (((u_int8_t *)(p))[3] << 24))
        !           195: #define        LE_WRITE_2(p, v)                                                \
        !           196:        ((((u_int8_t *)(p))[0] = ((u_int32_t)(v) & 0xff)),              \
        !           197:         (((u_int8_t *)(p))[1] = (((u_int32_t)(v) >> 8) & 0xff)))
        !           198: #define        LE_WRITE_4(p, v)                                                \
        !           199:        ((((u_int8_t *)(p))[0] = ((u_int32_t)(v) & 0xff)),              \
        !           200:         (((u_int8_t *)(p))[1] = (((u_int32_t)(v) >> 8) & 0xff)),       \
        !           201:         (((u_int8_t *)(p))[2] = (((u_int32_t)(v) >> 16) & 0xff)),      \
        !           202:         (((u_int8_t *)(p))[3] = (((u_int32_t)(v) >> 24) & 0xff)))
        !           203:
        !           204: #define        AWI_80211_RATE(rate)    (((rate) & 0x7f) * 5)
        !           205:
        !           206: int    awi_attach(struct awi_softc *);
        !           207: int    awi_intr(void *);
        !           208: void   awi_reset(struct awi_softc *);
        !           209: #ifndef __FreeBSD__
        !           210: int    awi_activate(struct device *, enum devact);
        !           211: int    awi_detach(struct awi_softc *);
        !           212: void   awi_power(struct awi_softc *, int);
        !           213: #endif
        !           214:
        !           215: void awi_stop(struct awi_softc *sc);
        !           216: int awi_init(struct awi_softc *sc);
        !           217: int awi_init_region(struct awi_softc *);
        !           218: int awi_wicfg(struct ifnet *, u_long, caddr_t);
        !           219:
        !           220: int awi_wep_setnwkey(struct awi_softc *, struct ieee80211_nwkey *);
        !           221: int awi_wep_getnwkey(struct awi_softc *, struct ieee80211_nwkey *);
        !           222: int awi_wep_getalgo(struct awi_softc *);
        !           223: int awi_wep_setalgo(struct awi_softc *, int);
        !           224: int awi_wep_setkey(struct awi_softc *, int, unsigned char *, int);
        !           225: int awi_wep_getkey(struct awi_softc *, int, unsigned char *, int *);
        !           226: struct mbuf *awi_wep_encrypt(struct awi_softc *, struct mbuf *, int);
        !           227:
        !           228: #ifdef __FreeBSD__
        !           229: /* Provide mem* for compat with NetBSD to fix LINT */
        !           230: static __inline int
        !           231: memcmp(const void *b1, const void *b2, size_t len)
        !           232: {
        !           233:        return (bcmp(b1, b2, len));
        !           234: }
        !           235:
        !           236: static __inline void *
        !           237: memset(void *b, int c, size_t len)
        !           238: {
        !           239:        bzero(b, len);
        !           240:        return (b);
        !           241: }
        !           242: #endif

CVSweb