1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 #define UATH_CONFIG_NO 1
21 #define UATH_IFACE_INDEX 0
22
23
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;
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;
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)
105
106 uint32_t paylen;
107 } __packed;
108
109
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
118 struct uath_read_mac {
119 uint32_t len;
120 uint8_t data[32];
121 } __packed;
122
123
124 struct uath_write_mac {
125 uint32_t reg;
126 uint32_t len;
127 uint8_t data[32];
128 } __packed;
129
130
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
139 struct uath_cmd_0c {
140 uint32_t magic1;
141 uint32_t magic2;
142 uint32_t magic3;
143 } __packed;
144
145
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
157 struct uath_cmd_xled {
158 uint32_t which;
159 uint32_t rate;
160 uint32_t mode;
161 } __packed;
162
163
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
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
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
203 struct uath_qinfo {
204 uint32_t qid;
205 #define UATH_AC_TO_QID(ac) (ac)
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
219 struct uath_cmd_31 {
220 uint32_t magic1;
221 uint32_t magic2;
222 } __packed;
223
224
225 struct uath_cmd_filter {
226 uint32_t filter;
227 uint32_t flags;
228 } __packed;
229
230
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)