[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

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