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

Annotation of sys/dev/pcmcia/if_malovar.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: if_malovar.h,v 1.24 2007/08/09 21:24:02 mglocker Exp $ */
        !             2:
        !             3: /*
        !             4:  * Copyright (c) 2007 Marcus Glocker <mglocker@openbsd.org>
        !             5:  *
        !             6:  * Permission to use, copy, modify, and distribute this software for any
        !             7:  * purpose with or without fee is hereby granted, provided that the above
        !             8:  * copyright notice and this permission notice appear in all copies.
        !             9:  *
        !            10:  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
        !            11:  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
        !            12:  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
        !            13:  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
        !            14:  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
        !            15:  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
        !            16:  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
        !            17:  */
        !            18:
        !            19: /* simplify bus space access */
        !            20: #define MALO_READ_1(sc, reg) \
        !            21:        bus_space_read_1((sc)->sc_iot, (sc)->sc_ioh, (reg))
        !            22: #define MALO_READ_2(sc, reg) \
        !            23:        bus_space_read_2((sc)->sc_iot, (sc)->sc_ioh, (reg))
        !            24: #define        MALO_READ_MULTI_2(sc, reg, off, size) \
        !            25:        bus_space_read_raw_multi_2((sc)->sc_iot, (sc)->sc_ioh, (reg), (off), \
        !            26:        (size))
        !            27: #define MALO_WRITE_1(sc, reg, val) \
        !            28:        bus_space_write_1((sc)->sc_iot, (sc)->sc_ioh, (reg), (val))
        !            29: #define MALO_WRITE_2(sc, reg, val) \
        !            30:        bus_space_write_2((sc)->sc_iot, (sc)->sc_ioh, (reg), (val))
        !            31: #define MALO_WRITE_MULTI_2(sc, reg, off, size) \
        !            32:        bus_space_write_raw_multi_2((sc)->sc_iot, (sc)->sc_ioh, (reg), (off), \
        !            33:        (size))
        !            34:
        !            35: /* miscellaneous */
        !            36: #define MALO_FW_HELPER_BSIZE   256     /* helper FW block size */
        !            37: #define MALO_FW_HELPER_LOADED  0x10    /* helper FW loaded */
        !            38: #define MALO_FW_MAIN_MAXRETRY  20      /* main FW block resend max retry */
        !            39: #define MALO_CMD_BUFFER_SIZE   256     /* cmd buffer */
        !            40:
        !            41: /* device flags */
        !            42: #define MALO_DEVICE_ATTACHED   (1 << 0)
        !            43: #define MALO_FW_LOADED         (1 << 1)
        !            44: #define MALO_ASSOC_FAILED      (1 << 2)
        !            45:
        !            46: /*
        !            47:  * FW command structures
        !            48:  */
        !            49: struct malo_cmd_header {
        !            50:        uint16_t        cmd;
        !            51:        uint16_t        size;
        !            52:        uint16_t        seqnum;
        !            53:        uint16_t        result;
        !            54:        /* malo_cmd_body */
        !            55: };
        !            56:
        !            57: struct malo_cmd_body_spec {
        !            58:        uint16_t        hw_if_version;
        !            59:        uint16_t        hw_version;
        !            60:        uint16_t        num_of_wcb;
        !            61:        uint16_t        num_of_mcast;
        !            62:        uint8_t         macaddr[ETHER_ADDR_LEN];
        !            63:        uint16_t        regioncode;
        !            64:        uint16_t        num_of_antenna;
        !            65:        uint32_t        fw_version;
        !            66:        uint32_t        wcbbase;
        !            67:        uint32_t        rxpdrdptr;
        !            68:        uint32_t        rxpdwrptr;
        !            69:        uint32_t        fw_capinfo;
        !            70: } __packed;
        !            71:
        !            72: struct malo_cmd_body_scan {
        !            73:        uint8_t         bsstype;
        !            74:        uint8_t         bssid[ETHER_ADDR_LEN];
        !            75:        /* malo_cmd_tlv_ssid */
        !            76:        /* malo_cmd_tlv_chanlist */
        !            77:        /* malo_cmd_tlv_rates */
        !            78:        /* malo_cmd_tlv_numprobes */
        !            79: } __packed;
        !            80:
        !            81: struct malo_cmd_body_rsp_scan {
        !            82:        uint16_t        bufsize;
        !            83:        uint8_t         numofset;
        !            84: } __packed;
        !            85: struct malo_cmd_body_rsp_scan_set {
        !            86:        uint16_t        size;
        !            87:        uint8_t         bssid[ETHER_ADDR_LEN];
        !            88:        uint8_t         rssi;
        !            89:        uint8_t         timestamp[8];
        !            90:        uint16_t        beaconintvl;
        !            91:        uint16_t        capinfo;
        !            92: } __packed;
        !            93:
        !            94: struct malo_cmd_body_auth {
        !            95:        uint8_t         peermac[ETHER_ADDR_LEN];
        !            96:        uint8_t         authtype;
        !            97: } __packed;
        !            98:
        !            99: #define MALO_WEP_ACTION_TYPE_ADD       0x02
        !           100: #define MALO_WEP_ACTION_TYPE_REMOVE    0x04
        !           101: #define MALO_WEP_ACTION_TYPE_DEFAULT   0x08
        !           102: #define MALO_WEP_KEY_TYPE_40BIT                0x01
        !           103: #define MALO_WEP_KEY_TYPE_104BIT       0x02
        !           104: struct malo_cmd_body_wep {
        !           105:        uint16_t        action;
        !           106:        uint16_t        key_index;
        !           107:        uint8_t         key_type_1;
        !           108:        uint8_t         key_type_2;
        !           109:        uint8_t         key_type_3;
        !           110:        uint8_t         key_type_4;
        !           111:        uint8_t         key_value_1[16];
        !           112:        uint8_t         key_value_2[16];
        !           113:        uint8_t         key_value_3[16];
        !           114:        uint8_t         key_value_4[16];
        !           115: } __packed;
        !           116:
        !           117: #define MALO_OID_BSS           0x00
        !           118: #define MALO_OID_RATE          0x01
        !           119: #define MALO_OID_BCNPERIOD     0x02
        !           120: #define MALO_OID_DTIMPERIOD    0x03
        !           121: #define MALO_OID_ASSOCTIMEOUT  0x04
        !           122: #define MALO_OID_RTSTRESH      0x05
        !           123: #define MALO_OID_SHORTRETRY    0x06
        !           124: #define MALO_OID_LONGRETRY     0x07
        !           125: #define MALO_OID_FRAGTRESH     0x08
        !           126: #define MALO_OID_80211D                0x09
        !           127: #define MALO_OID_80211H                0x0a
        !           128: struct malo_cmd_body_snmp {
        !           129:        uint16_t        action;
        !           130:        uint16_t        oid;
        !           131:        uint16_t        size;
        !           132:        uint8_t         data[128];
        !           133: } __packed;
        !           134:
        !           135: struct malo_cmd_body_radio {
        !           136:        uint16_t        action;
        !           137:        uint16_t        control;
        !           138: } __packed;
        !           139:
        !           140: struct malo_cmd_body_channel {
        !           141:        uint16_t        action;
        !           142:        uint16_t        channel;
        !           143:        uint16_t        rftype;
        !           144:        uint16_t        reserved;
        !           145:        uint8_t         channel_list[32];
        !           146: } __packed;
        !           147:
        !           148: struct malo_cmd_body_txpower {
        !           149:        uint16_t        action;
        !           150:        int16_t         txpower;
        !           151: } __packed;
        !           152:
        !           153: struct malo_cmd_body_antenna {
        !           154:        uint16_t        action;
        !           155:        uint16_t        antenna_mode;
        !           156: } __packed;
        !           157:
        !           158: struct malo_cmd_body_macctrl {
        !           159:        uint16_t        action;
        !           160:        uint16_t        reserved;
        !           161: } __packed;
        !           162:
        !           163: struct malo_cmd_body_assoc {
        !           164:        uint8_t         peermac[ETHER_ADDR_LEN];
        !           165:        uint16_t        capinfo;
        !           166:        uint16_t        listenintrv;
        !           167:        uint16_t        bcnperiod;
        !           168:        uint8_t         dtimperiod;
        !           169:        /* malo_cmd_tlv_ssid */
        !           170:        /* malo_cmd_tlv_phy */
        !           171:        /* malo_cmd_tlv_cf */
        !           172:        /* malo_cmd_tlv_rate */
        !           173: } __packed;
        !           174:
        !           175: struct malo_cmd_body_rsp_assoc {
        !           176:        uint16_t        capinfo;
        !           177:        uint16_t        status;
        !           178:        uint16_t        assoc_id;
        !           179:        uint16_t        info_len;
        !           180:        /* uint8_t      info[270] */
        !           181: } __packed;
        !           182:
        !           183: struct malo_cmd_body_80211d {
        !           184:        uint16_t        action;
        !           185:        /* malo_cmd_tlv_80211d */
        !           186: } __packed;
        !           187:
        !           188: struct malo_cmd_body_bgscan_config {
        !           189:        uint16_t        action;
        !           190:        uint8_t         enable;
        !           191:        uint8_t         bsstype;
        !           192:        uint8_t         chperscan;
        !           193:        uint8_t         discard;
        !           194:        uint16_t        reserved;
        !           195:        uint32_t        scanintvl;
        !           196:        uint32_t        storecond;
        !           197:        uint32_t        reportcond;
        !           198:        uint16_t        maxscanres;
        !           199: } __packed;
        !           200:
        !           201: struct malo_cmd_body_bgscan_query {
        !           202:        uint8_t         flush;
        !           203: } __packed;
        !           204:
        !           205: struct malo_cmd_body_rate {
        !           206:        uint16_t        action;
        !           207:        uint16_t        hwauto;
        !           208:        uint16_t        ratebitmap;
        !           209: } __packed;
        !           210:
        !           211: /*
        !           212:  * FW command TLV structures
        !           213:  */
        !           214: #define MALO_TLV_TYPE_SSID     0x0000
        !           215: #define MALO_TLV_TYPE_RATES    0x0001
        !           216: #define MALO_TLV_TYPE_PHY      0x0003
        !           217: #define MALO_TLV_TYPE_CF       0x0004
        !           218: #define MALO_TLV_TYPE_80211D   0x0007
        !           219: #define MALO_TLV_TYPE_CHANLIST 0x0101
        !           220: #define MALO_TLV_TYPE_NUMPROBES        0x0102
        !           221: #define MALO_TLV_TYPE_PASSEID  0x010a
        !           222:
        !           223: struct malo_cmd_tlv_ssid {
        !           224:        uint16_t        type;
        !           225:        uint16_t        size;
        !           226:        uint8_t         data[1];
        !           227: } __packed;
        !           228:
        !           229: struct malo_cmd_tlv_rates {
        !           230:        uint16_t        type;
        !           231:        uint16_t        size;
        !           232:        uint8_t         data[1];
        !           233: } __packed;
        !           234:
        !           235: struct malo_cmd_tlv_phy {
        !           236:        uint16_t        type;
        !           237:        uint16_t        size;
        !           238:        uint8_t         data[1];
        !           239: } __packed;
        !           240:
        !           241: struct malo_cmd_tlv_cf {
        !           242:        uint16_t        type;
        !           243:        uint16_t        size;
        !           244:        uint8_t         data[1];
        !           245: } __packed;
        !           246:
        !           247: struct malo_cmd_tlv_80211d_param {
        !           248:        uint8_t         firstchannel;
        !           249:        uint8_t         numchannels;
        !           250:        uint8_t         maxtxpower;
        !           251: } __packed;
        !           252: struct malo_cmd_tlv_80211d {
        !           253:        uint16_t        type;
        !           254:        uint16_t        size;
        !           255:        uint8_t         countrycode[3];
        !           256:        struct malo_cmd_tlv_80211d_param data[12];
        !           257: } __packed;
        !           258:
        !           259: struct malo_cmd_tlv_chanlist_param {
        !           260:        uint8_t         radiotype;
        !           261:        uint8_t         channumber;
        !           262:        uint8_t         scantype;
        !           263:        uint16_t        minscantime;
        !           264:        uint16_t        maxscantime;
        !           265: } __packed;
        !           266: #define CHANNELS       12
        !           267: struct malo_cmd_tlv_chanlist {
        !           268:        uint16_t        type;
        !           269:        uint16_t        size;
        !           270:        struct malo_cmd_tlv_chanlist_param data[CHANNELS];
        !           271: } __packed;
        !           272:
        !           273: struct malo_cmd_tlv_numprobes {
        !           274:        uint16_t        type;
        !           275:        uint16_t        size;
        !           276:        uint16_t        numprobes;
        !           277: } __packed;
        !           278:
        !           279: struct malo_cmd_tlv_passeid {
        !           280:        uint16_t        type;
        !           281:        uint16_t        size;
        !           282:        uint8_t         data[1];
        !           283: } __packed;
        !           284:
        !           285: /* RX descriptor */
        !           286: #define MALO_RX_STATUS_OK      0x0001
        !           287: struct malo_rx_desc {
        !           288:        uint16_t        status;
        !           289:        uint8_t         snr;
        !           290:        uint8_t         control;
        !           291:        uint16_t        pkglen;
        !           292:        uint8_t         nf;
        !           293:        uint8_t         rate;
        !           294:        uint32_t        pkgoffset;
        !           295:        uint32_t        reserved1;
        !           296:        uint8_t         priority;
        !           297:        uint8_t         reserved2[3];
        !           298: } __packed;
        !           299:
        !           300: /* TX descriptor */
        !           301: struct malo_tx_desc {
        !           302:        uint32_t        status;
        !           303:        uint32_t        control;
        !           304:        uint32_t        pkgoffset;
        !           305:        uint16_t        pkglen;
        !           306:        uint8_t         dstaddrhigh[2];
        !           307:        uint8_t         dstaddrlow[4];
        !           308:        uint8_t         priority;
        !           309:        uint8_t         flags;
        !           310:        uint8_t         reserved[2];
        !           311: } __packed;
        !           312:
        !           313: /* scanned network */
        !           314: struct malo_networks {
        !           315:        uint8_t         bssid[ETHER_ADDR_LEN];
        !           316:        uint8_t         rssi;
        !           317:        uint8_t         timestamp[8];
        !           318:        uint16_t        beaconintvl;
        !           319:        uint16_t        capinfo;
        !           320:        uint8_t         ssid[32];
        !           321:        uint8_t         rates[14];
        !           322:        uint8_t         channel;
        !           323: } __packed;
        !           324:
        !           325: /*
        !           326:  * Softc
        !           327:  */
        !           328: struct malo_softc {
        !           329:        struct device            sc_dev;
        !           330:        struct ieee80211com      sc_ic;
        !           331:        bus_space_tag_t          sc_iot;
        !           332:        bus_space_handle_t       sc_ioh;
        !           333:        int                      (*sc_newstate)
        !           334:                                 (struct ieee80211com *, enum ieee80211_state,
        !           335:                                     int);
        !           336:
        !           337:        int                      sc_flags;
        !           338:        int                      sc_cmd_ctxsave;
        !           339:        void                    *sc_cmd;
        !           340:        void                    *sc_data;
        !           341:        uint8_t                  sc_curchan;
        !           342:        int                      sc_net_num;
        !           343:        int                      sc_net_cur;
        !           344:        struct malo_networks     sc_net[12];
        !           345:        struct timeout           sc_scan_to;
        !           346: };

CVSweb