Annotation of sys/dev/usb/if_uathreg.h, Revision 1.1
1.1 ! nbrk 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)
CVSweb