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