root/dev/usb/if_uathreg.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


    1 /*      $OpenBSD: if_uathreg.h,v 1.2 2006/09/18 16:34:23 damien Exp $   */
    2 
    3 /*-
    4  * Copyright (c) 2006
    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 #define UATH_CONFIG_NO          1
   21 #define UATH_IFACE_INDEX        0
   22 
   23 /* all fields are big endian */
   24 struct uath_fwblock {
   25         uint32_t        flags;
   26 #define UATH_WRITE_BLOCK        (1 << 4)
   27 
   28         uint32_t        len;
   29 #define UATH_MAX_FWBLOCK_SIZE   2048
   30 
   31         uint32_t        total;
   32         uint32_t        remain;
   33         uint32_t        rxtotal;
   34         uint32_t        pad[123];
   35 } __packed;
   36 
   37 #define UATH_MAX_RXCMDSZ        512
   38 #define UATH_MAX_TXCMDSZ        512
   39 
   40 struct uath_cmd_hdr {
   41         uint32_t        len;
   42         uint32_t        code;
   43 #define UATH_CMD_SETUP          0x01
   44 #define UATH_CMD_02             0x02
   45 #define UATH_CMD_READ_MAC       0x03
   46 #define UATH_CMD_WRITE_MAC      0x04
   47 #define UATH_CMD_READ_EEPROM    0x05
   48 #define UATH_CMD_STATS          0x06
   49 #define UATH_CMD_07             0x07
   50 #define UATH_CMD_SHUTDOWN       0x08
   51 #define UATH_CMD_0B             0x0b
   52 #define UATH_CMD_0C             0x0c
   53 #define UATH_CMD_0F             0x0f
   54 #define UATH_NOTIF_STATS        0x10
   55 #define UATH_NOTIF_READY        0x12
   56 #define UATH_NOTIF_TX           0x13
   57 #define UATH_CMD_15             0x15
   58 #define UATH_CMD_SET_LED        0x17
   59 #define UATH_CMD_SET_XLED       0x18
   60 #define UATH_CMD_1B             0x1b
   61 #define UATH_CMD_1E             0x1e
   62 #define UATH_CMD_CRYPTO         0x1d
   63 #define UATH_CMD_SET_STATE      0x20
   64 #define UATH_CMD_SET_BSSID      0x21
   65 #define UATH_CMD_24             0x24
   66 #define UATH_CMD_SET_RATES      0x26
   67 #define UATH_CMD_27             0x27
   68 #define UATH_CMD_2E             0x2e
   69 #define UATH_CMD_31             0x31
   70 #define UATH_CMD_SET_FILTER     0x32
   71 #define UATH_CMD_SET_CHAN       0x34
   72 #define UATH_CMD_RESET          0x35
   73 #define UATH_CMD_SET_QUEUE      0x3a
   74 #define UATH_CMD_RESET_QUEUE    0x3b
   75 
   76         uint32_t        priv;   /* driver private data */
   77         uint32_t        magic;
   78         uint32_t        reserved2[4];
   79 } __packed;
   80 
   81 struct uath_rx_desc {
   82         uint32_t        len;
   83         uint32_t        reserved1[8];
   84         uint32_t        rssi;
   85         uint32_t        freq;
   86         uint32_t        reserved2[5];
   87 } __packed;
   88 
   89 #define UATH_MAKECTL(qid, len)  htobe32((qid) << 16 | (len))
   90 
   91 struct uath_tx_desc {
   92         uint32_t        len;
   93         uint32_t        priv;   /* driver private data */
   94         uint32_t        type;
   95 #define UATH_TX_DATA    0xe
   96 #define UATH_TX_NULL    0xf
   97 
   98         uint32_t        magic;
   99         uint32_t        dest;
  100 #define UATH_ID_BSS             2
  101 #define UATH_ID_BROADCAST       0xffffffff
  102 
  103         uint32_t        flags;
  104 #define UATH_TX_NOTIFY  (1 << 24)       /* f/w will send a UATH_NOTIF_TX */
  105 
  106         uint32_t        paylen;
  107 } __packed;
  108 
  109 /* structure for command UATH_CMD_SETUP */
  110 struct uath_cmd_setup {
  111         uint32_t        magic1;
  112         uint32_t        magic2;
  113         uint32_t        magic3;
  114         uint32_t        magic4;
  115 } __packed;
  116 
  117 /* structure for commands UATH_CMD_READ_MAC and UATH_CMD_READ_EEPROM */
  118 struct uath_read_mac {
  119         uint32_t        len;
  120         uint8_t         data[32];
  121 } __packed;
  122 
  123 /* structure for command UATH_CMD_WRITE_MAC */
  124 struct uath_write_mac {
  125         uint32_t        reg;
  126         uint32_t        len;
  127         uint8_t         data[32];
  128 } __packed;
  129 
  130 /* structure for command UATH_CMD_0B */
  131 struct uath_cmd_0b {
  132         uint32_t        code;
  133         uint32_t        reserved;
  134         uint32_t        size;
  135         uint8_t         data[44];
  136 } __packed;
  137 
  138 /* structure for command UATH_CMD_0C */
  139 struct uath_cmd_0c {
  140         uint32_t        magic1;
  141         uint32_t        magic2;
  142         uint32_t        magic3;
  143 } __packed;
  144 
  145 /* structure for command UATH_CMD_SET_LED */
  146 struct uath_cmd_led {
  147         uint32_t        which;
  148 #define UATH_LED_LINK           0
  149 #define UATH_LED_ACTIVITY       1
  150 
  151         uint32_t        state;
  152 #define UATH_LED_OFF    0
  153 #define UATH_LED_ON     1
  154 } __packed;
  155 
  156 /* structure for command UATH_CMD_SET_XLED */
  157 struct uath_cmd_xled {
  158         uint32_t        which;
  159         uint32_t        rate;
  160         uint32_t        mode;
  161 } __packed;
  162 
  163 /* structure for command UATH_CMD_CRYPTO */
  164 struct uath_cmd_crypto {
  165         uint32_t        keyidx;
  166 #define UATH_DEFAULT_KEY        6
  167 
  168         uint32_t        magic1;
  169         uint32_t        size;
  170         uint32_t        reserved1;
  171         uint32_t        mask;
  172         uint8_t         addr[IEEE80211_ADDR_LEN];
  173         uint16_t        reserved2;
  174         uint32_t        flags;
  175         uint32_t        reserved3[2];
  176         uint8_t         key[68];
  177         uint8_t         magic2[136];
  178         uint8_t         magic3[136];
  179 } __packed;
  180 
  181 /* structure for command UATH_CMD_SET_RATES */
  182 struct uath_cmd_rates {
  183         uint32_t        magic1;
  184         uint32_t        reserved;
  185         uint32_t        size;
  186         uint8_t         nrates;
  187 #define UATH_MAX_NRATES 30
  188         uint8_t         rates[UATH_MAX_NRATES];
  189 } __packed;
  190 
  191 /* structure for command UATH_CMD_SET_CHAN */
  192 struct uath_set_chan {
  193         uint32_t        flags;
  194         uint32_t        freq;
  195         uint32_t        magic1;
  196         uint32_t        magic2;
  197         uint32_t        reserved1;
  198         uint32_t        magic3;
  199         uint32_t        reserved2;
  200 } __packed;
  201 
  202 /* structure for command UATH_CMD_SET_QUEUE */
  203 struct uath_qinfo {
  204         uint32_t        qid;
  205 #define UATH_AC_TO_QID(ac)      (ac)    /* id function */
  206 
  207         uint32_t        size;
  208         uint32_t        ac;
  209         uint32_t        aifsn;
  210         uint32_t        logcwmin;
  211         uint32_t        logcwmax;
  212         uint32_t        txop;
  213         uint32_t        acm;
  214         uint32_t        magic1;
  215         uint32_t        magic2;
  216 } __packed;
  217 
  218 /* structure for command UATH_CMD_31 */
  219 struct uath_cmd_31 {
  220         uint32_t        magic1;
  221         uint32_t        magic2;
  222 } __packed;
  223 
  224 /* structure for command UATH_CMD_SET_FILTER */
  225 struct uath_cmd_filter {
  226         uint32_t        filter;
  227         uint32_t        flags;
  228 } __packed;
  229 
  230 /* structure for command UATH_CMD_SET_BSSID */
  231 struct uath_cmd_bssid {
  232         uint32_t        reserved1;
  233         uint32_t        flags1;
  234         uint32_t        flags2;
  235         uint32_t        reserved2;
  236         uint32_t        len;
  237         uint8_t         bssid[IEEE80211_ADDR_LEN];
  238 } __packed;
  239 
  240 
  241 #define UATH_EEPROM_MACADDR     0x0b
  242 #define UATH_EEPROM_RXBUFSZ     0x0f
  243 
  244 #define UATH_MAX_TXBUFSZ        \
  245         (sizeof (uint32_t) + sizeof (struct uath_tx_desc) + IEEE80211_MAX_LEN)
  246 
  247 #define UATH_MIN_RXBUFSZ                                                \
  248         (((sizeof (uint32_t) + sizeof (struct ieee80211_frame_min) +    \
  249            sizeof (struct uath_rx_desc)) + 3) & ~3)

/* [<][>][^][v][top][bottom][index][help] */