1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31#ifndef __DESC_H__
32#define __DESC_H__
33
34#include <linux/types.h>
35#include <linux/mm.h>
36#include "ttype.h"
37#include "tether.h"
38
39
40
41
42#define CB_MAX_BUF_SIZE 2900U
43
44
45#define CB_MAX_TX_BUF_SIZE CB_MAX_BUF_SIZE
46#define CB_MAX_RX_BUF_SIZE_NORMAL CB_MAX_BUF_SIZE
47
48#define CB_BEACON_BUF_SIZE 512U
49
50#define MAX_TOTAL_SIZE_WITH_ALL_HEADERS CB_MAX_BUF_SIZE
51
52#define MAX_INTERRUPT_SIZE 32
53
54#define RX_BLOCKS 64
55#define TX_BLOCKS 32
56
57#define CB_MAX_RX_DESC 128
58#define CB_MIN_RX_DESC 16
59#define CB_MAX_TX_DESC 128
60#define CB_MIN_TX_DESC 16
61
62#define CB_RD_NUM 64
63#define CB_TD_NUM 64
64
65
66
67
68#define RSR_ADDRBROAD 0x80
69#define RSR_ADDRMULTI 0x40
70#define RSR_ADDRUNI 0x00
71#define RSR_IVLDTYP 0x20
72#define RSR_IVLDLEN 0x10
73#define RSR_BSSIDOK 0x08
74#define RSR_CRCOK 0x04
75#define RSR_BCNSSIDOK 0x02
76#define RSR_ADDROK 0x01
77
78
79
80
81#define NEWRSR_DECRYPTOK 0x10
82#define NEWRSR_CFPIND 0x08
83#define NEWRSR_HWUTSF 0x04
84#define NEWRSR_BCNHITAID 0x02
85#define NEWRSR_BCNHITAID0 0x01
86
87
88
89
90#define TSR_RETRYTMO 0x08
91#define TSR_TMO 0x04
92#define TSR_ACKDATA 0x02
93#define TSR_VALID 0x01
94
95#define CB_PROTOCOL_RESERVED_SECTION 16
96
97
98
99
100#define CB_MAX_TX_ABORT_RETRY 3
101
102#define FIFOCTL_AUTO_FB_1 0x1000
103#define FIFOCTL_AUTO_FB_0 0x0800
104#define FIFOCTL_GRPACK 0x0400
105#define FIFOCTL_11GA 0x0300
106#define FIFOCTL_11GB 0x0200
107#define FIFOCTL_11B 0x0100
108#define FIFOCTL_11A 0x0000
109#define FIFOCTL_RTS 0x0080
110#define FIFOCTL_ISDMA0 0x0040
111#define FIFOCTL_GENINT 0x0020
112#define FIFOCTL_TMOEN 0x0010
113#define FIFOCTL_LRETRY 0x0008
114#define FIFOCTL_CRCDIS 0x0004
115#define FIFOCTL_NEEDACK 0x0002
116#define FIFOCTL_LHEAD 0x0001
117
118
119#define FRAGCTL_AES 0x0300
120#define FRAGCTL_TKIP 0x0200
121#define FRAGCTL_LEGACY 0x0100
122#define FRAGCTL_NONENCRYPT 0x0000
123
124
125
126
127#define FRAGCTL_ENDFRAG 0x0003
128#define FRAGCTL_MIDFRAG 0x0002
129#define FRAGCTL_STAFRAG 0x0001
130#define FRAGCTL_NONFRAG 0x0000
131
132
133
134#define TYPE_TXDMA0 0
135#define TYPE_AC0DMA 1
136#define TYPE_ATIMDMA 2
137#define TYPE_SYNCDMA 3
138#define TYPE_MAXTD 2
139
140#define TYPE_BEACONDMA 4
141
142#define TYPE_RXDMA0 0
143#define TYPE_RXDMA1 1
144#define TYPE_MAXRD 2
145
146
147#define TD_FLAGS_NETIF_SKB 0x01
148#define TD_FLAGS_PRIV_SKB 0x02
149#define TD_FLAGS_PS_RETRY 0x04
150
151
152
153
154
155
156
157typedef struct tagSRrvTime_gRTS {
158 WORD wRTSTxRrvTime_ba;
159 WORD wRTSTxRrvTime_aa;
160 WORD wRTSTxRrvTime_bb;
161 WORD wReserved;
162 WORD wTxRrvTime_b;
163 WORD wTxRrvTime_a;
164} __attribute__ ((__packed__))
165SRrvTime_gRTS, *PSRrvTime_gRTS;
166
167typedef const SRrvTime_gRTS *PCSRrvTime_gRTS;
168
169typedef struct tagSRrvTime_gCTS {
170 WORD wCTSTxRrvTime_ba;
171 WORD wReserved;
172 WORD wTxRrvTime_b;
173 WORD wTxRrvTime_a;
174} __attribute__ ((__packed__))
175SRrvTime_gCTS, *PSRrvTime_gCTS;
176
177typedef const SRrvTime_gCTS *PCSRrvTime_gCTS;
178
179typedef struct tagSRrvTime_ab {
180 WORD wRTSTxRrvTime;
181 WORD wTxRrvTime;
182} __attribute__ ((__packed__))
183SRrvTime_ab, *PSRrvTime_ab;
184
185typedef const SRrvTime_ab *PCSRrvTime_ab;
186
187typedef struct tagSRrvTime_atim {
188 WORD wCTSTxRrvTime_ba;
189 WORD wTxRrvTime_a;
190} __attribute__ ((__packed__))
191SRrvTime_atim, *PSRrvTime_atim;
192
193typedef const SRrvTime_atim *PCSRrvTime_atim;
194
195
196
197
198typedef struct tagSRTSData {
199 WORD wFrameControl;
200 WORD wDurationID;
201 BYTE abyRA[ETH_ALEN];
202 BYTE abyTA[ETH_ALEN];
203} __attribute__ ((__packed__))
204SRTSData, *PSRTSData;
205
206typedef const SRTSData *PCSRTSData;
207
208typedef struct tagSRTS_g {
209 BYTE bySignalField_b;
210 BYTE byServiceField_b;
211 WORD wTransmitLength_b;
212 BYTE bySignalField_a;
213 BYTE byServiceField_a;
214 WORD wTransmitLength_a;
215 WORD wDuration_ba;
216 WORD wDuration_aa;
217 WORD wDuration_bb;
218 WORD wReserved;
219 SRTSData Data;
220} __attribute__ ((__packed__))
221SRTS_g, *PSRTS_g;
222typedef const SRTS_g *PCSRTS_g;
223
224typedef struct tagSRTS_g_FB {
225 BYTE bySignalField_b;
226 BYTE byServiceField_b;
227 WORD wTransmitLength_b;
228 BYTE bySignalField_a;
229 BYTE byServiceField_a;
230 WORD wTransmitLength_a;
231 WORD wDuration_ba;
232 WORD wDuration_aa;
233 WORD wDuration_bb;
234 WORD wReserved;
235 WORD wRTSDuration_ba_f0;
236 WORD wRTSDuration_aa_f0;
237 WORD wRTSDuration_ba_f1;
238 WORD wRTSDuration_aa_f1;
239 SRTSData Data;
240} __attribute__ ((__packed__))
241SRTS_g_FB, *PSRTS_g_FB;
242
243typedef const SRTS_g_FB *PCSRTS_g_FB;
244
245typedef struct tagSRTS_ab {
246 BYTE bySignalField;
247 BYTE byServiceField;
248 WORD wTransmitLength;
249 WORD wDuration;
250 WORD wReserved;
251 SRTSData Data;
252} __attribute__ ((__packed__))
253SRTS_ab, *PSRTS_ab;
254
255typedef const SRTS_ab *PCSRTS_ab;
256
257typedef struct tagSRTS_a_FB {
258 BYTE bySignalField;
259 BYTE byServiceField;
260 WORD wTransmitLength;
261 WORD wDuration;
262 WORD wReserved;
263 WORD wRTSDuration_f0;
264 WORD wRTSDuration_f1;
265 SRTSData Data;
266} __attribute__ ((__packed__))
267SRTS_a_FB, *PSRTS_a_FB;
268
269typedef const SRTS_a_FB *PCSRTS_a_FB;
270
271
272
273
274
275typedef struct tagSCTSData {
276 WORD wFrameControl;
277 WORD wDurationID;
278 BYTE abyRA[ETH_ALEN];
279 WORD wReserved;
280} __attribute__ ((__packed__))
281SCTSData, *PSCTSData;
282
283typedef struct tagSCTS {
284 BYTE bySignalField_b;
285 BYTE byServiceField_b;
286 WORD wTransmitLength_b;
287 WORD wDuration_ba;
288 WORD wReserved;
289 SCTSData Data;
290} __attribute__ ((__packed__))
291SCTS, *PSCTS;
292
293typedef const SCTS *PCSCTS;
294
295typedef struct tagSCTS_FB {
296 BYTE bySignalField_b;
297 BYTE byServiceField_b;
298 WORD wTransmitLength_b;
299 WORD wDuration_ba;
300 WORD wReserved;
301 WORD wCTSDuration_ba_f0;
302 WORD wCTSDuration_ba_f1;
303 SCTSData Data;
304} __attribute__ ((__packed__))
305SCTS_FB, *PSCTS_FB;
306
307typedef const SCTS_FB *PCSCTS_FB;
308
309
310
311
312typedef struct tagSTxBufHead {
313 DWORD adwTxKey[4];
314 WORD wFIFOCtl;
315 WORD wTimeStamp;
316 WORD wFragCtl;
317 WORD wReserved;
318} __attribute__ ((__packed__))
319STxBufHead, *PSTxBufHead;
320typedef const STxBufHead *PCSTxBufHead;
321
322typedef struct tagSTxShortBufHead {
323 WORD wFIFOCtl;
324 WORD wTimeStamp;
325} __attribute__ ((__packed__))
326STxShortBufHead, *PSTxShortBufHead;
327typedef const STxShortBufHead *PCSTxShortBufHead;
328
329
330
331
332typedef struct tagSTxDataHead_g {
333 BYTE bySignalField_b;
334 BYTE byServiceField_b;
335 WORD wTransmitLength_b;
336 BYTE bySignalField_a;
337 BYTE byServiceField_a;
338 WORD wTransmitLength_a;
339 WORD wDuration_b;
340 WORD wDuration_a;
341 WORD wTimeStampOff_b;
342 WORD wTimeStampOff_a;
343} __attribute__ ((__packed__))
344STxDataHead_g, *PSTxDataHead_g;
345
346typedef const STxDataHead_g *PCSTxDataHead_g;
347
348typedef struct tagSTxDataHead_g_FB {
349 BYTE bySignalField_b;
350 BYTE byServiceField_b;
351 WORD wTransmitLength_b;
352 BYTE bySignalField_a;
353 BYTE byServiceField_a;
354 WORD wTransmitLength_a;
355 WORD wDuration_b;
356 WORD wDuration_a;
357 WORD wDuration_a_f0;
358 WORD wDuration_a_f1;
359 WORD wTimeStampOff_b;
360 WORD wTimeStampOff_a;
361} __attribute__ ((__packed__))
362STxDataHead_g_FB, *PSTxDataHead_g_FB;
363typedef const STxDataHead_g_FB *PCSTxDataHead_g_FB;
364
365typedef struct tagSTxDataHead_ab {
366 BYTE bySignalField;
367 BYTE byServiceField;
368 WORD wTransmitLength;
369 WORD wDuration;
370 WORD wTimeStampOff;
371} __attribute__ ((__packed__))
372STxDataHead_ab, *PSTxDataHead_ab;
373typedef const STxDataHead_ab *PCSTxDataHead_ab;
374
375typedef struct tagSTxDataHead_a_FB {
376 BYTE bySignalField;
377 BYTE byServiceField;
378 WORD wTransmitLength;
379 WORD wDuration;
380 WORD wTimeStampOff;
381 WORD wDuration_f0;
382 WORD wDuration_f1;
383} __attribute__ ((__packed__))
384STxDataHead_a_FB, *PSTxDataHead_a_FB;
385typedef const STxDataHead_a_FB *PCSTxDataHead_a_FB;
386
387
388
389
390typedef struct tagSMICHDRHead {
391 DWORD adwHDR0[4];
392 DWORD adwHDR1[4];
393 DWORD adwHDR2[4];
394} __attribute__ ((__packed__))
395SMICHDRHead, *PSMICHDRHead;
396
397typedef const SMICHDRHead *PCSMICHDRHead;
398
399typedef struct tagSBEACONCtl {
400 DWORD BufReady : 1;
401 DWORD TSF : 15;
402 DWORD BufLen : 11;
403 DWORD Reserved : 5;
404} __attribute__ ((__packed__))
405SBEACONCtl;
406
407typedef struct tagSSecretKey {
408 DWORD dwLowDword;
409 BYTE byHighByte;
410} __attribute__ ((__packed__))
411SSecretKey;
412
413typedef struct tagSKeyEntry {
414 BYTE abyAddrHi[2];
415 WORD wKCTL;
416 BYTE abyAddrLo[4];
417 DWORD dwKey0[4];
418 DWORD dwKey1[4];
419 DWORD dwKey2[4];
420 DWORD dwKey3[4];
421 DWORD dwKey4[4];
422} __attribute__ ((__packed__))
423SKeyEntry;
424
425
426
427
428
429
430
431
432#endif
433