]> Pileus Git - ~andy/linux/blob - drivers/staging/vt6656/rxtx.h
Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[~andy/linux] / drivers / staging / vt6656 / rxtx.h
1 /*
2  * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc.
3  * All rights reserved.
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License along
16  * with this program; if not, write to the Free Software Foundation, Inc.,
17  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18  *
19  * File: rxtx.h
20  *
21  * Purpose:
22  *
23  * Author: Jerry Chen
24  *
25  * Date: Jun. 27, 2002
26  *
27  */
28
29 #ifndef __RXTX_H__
30 #define __RXTX_H__
31
32 #include "ttype.h"
33 #include "device.h"
34 #include "wcmd.h"
35
36 /*---------------------  Export Definitions -------------------------*/
37
38 /*---------------------  Export Classes  ----------------------------*/
39
40 //
41 // RTS buffer header
42 //
43 typedef struct tagSRTSDataF {
44     WORD    wFrameControl;
45     WORD    wDurationID;
46     BYTE    abyRA[ETH_ALEN];
47     BYTE    abyTA[ETH_ALEN];
48 } SRTSDataF, *PSRTSDataF;
49
50 //
51 // CTS buffer header
52 //
53 typedef struct tagSCTSDataF {
54     WORD    wFrameControl;
55     WORD    wDurationID;
56     BYTE    abyRA[ETH_ALEN];
57     WORD    wReserved;
58 } SCTSDataF, *PSCTSDataF;
59
60 //
61 // MICHDR data header
62 //
63 typedef struct tagSMICHDR {
64         u32 adwHDR0[4];
65         u32 adwHDR1[4];
66         u32 adwHDR2[4];
67 } SMICHDR, *PSMICHDR;
68
69
70 typedef struct tagSTX_NAF_G_RTS
71 {
72     //RsvTime
73     WORD            wRTSTxRrvTime_ba;
74     WORD            wRTSTxRrvTime_aa;
75     WORD            wRTSTxRrvTime_bb;
76     WORD            wReserved2;
77     WORD            wTxRrvTime_b;
78     WORD            wTxRrvTime_a;
79
80     //RTS
81     BYTE            byRTSSignalField_b;
82     BYTE            byRTSServiceField_b;
83     WORD            wRTSTransmitLength_b;
84     BYTE            byRTSSignalField_a;
85     BYTE            byRTSServiceField_a;
86     WORD            wRTSTransmitLength_a;
87     WORD            wRTSDuration_ba;
88     WORD            wRTSDuration_aa;
89     WORD            wRTSDuration_bb;
90     WORD            wReserved3;
91     SRTSDataF       sRTS;
92
93     //Data
94     BYTE            bySignalField_b;
95     BYTE            byServiceField_b;
96     WORD            wTransmitLength_b;
97     BYTE            bySignalField_a;
98     BYTE            byServiceField_a;
99     WORD            wTransmitLength_a;
100     WORD            wDuration_b;
101     WORD            wDuration_a;
102     WORD            wTimeStampOff_b;
103     WORD            wTimeStampOff_a;
104
105 } TX_NAF_G_RTS, *PTX_NAF_G_RTS;
106
107 typedef struct tagSTX_NAF_G_RTS_MIC
108 {
109     //RsvTime
110     WORD            wRTSTxRrvTime_ba;
111     WORD            wRTSTxRrvTime_aa;
112     WORD            wRTSTxRrvTime_bb;
113     WORD            wReserved2;
114     WORD            wTxRrvTime_b;
115     WORD            wTxRrvTime_a;
116
117     SMICHDR         sMICHDR;
118
119     //RTS
120     BYTE            byRTSSignalField_b;
121     BYTE            byRTSServiceField_b;
122     WORD            wRTSTransmitLength_b;
123     BYTE            byRTSSignalField_a;
124     BYTE            byRTSServiceField_a;
125     WORD            wRTSTransmitLength_a;
126     WORD            wRTSDuration_ba;
127     WORD            wRTSDuration_aa;
128     WORD            wRTSDuration_bb;
129     WORD            wReserved3;
130     SRTSDataF       sRTS;
131
132     //Data
133     BYTE            bySignalField_b;
134     BYTE            byServiceField_b;
135     WORD            wTransmitLength_b;
136     BYTE            bySignalField_a;
137     BYTE            byServiceField_a;
138     WORD            wTransmitLength_a;
139     WORD            wDuration_b;
140     WORD            wDuration_a;
141     WORD            wTimeStampOff_b;
142     WORD            wTimeStampOff_a;
143
144 } TX_NAF_G_RTS_MIC, *PTX_NAF_G_RTS_MIC;
145
146 typedef struct tagSTX_NAF_G_CTS
147 {
148     //RsvTime
149     WORD            wCTSTxRrvTime_ba;
150     WORD            wReserved2;
151     WORD            wTxRrvTime_b;
152     WORD            wTxRrvTime_a;
153
154     //CTS
155     BYTE            byCTSSignalField_b;
156     BYTE            byCTSServiceField_b;
157     WORD            wCTSTransmitLength_b;
158     WORD            wCTSDuration_ba;
159     WORD            wReserved3;
160     SCTSDataF       sCTS;
161
162     //Data
163     BYTE            bySignalField_b;
164     BYTE            byServiceField_b;
165     WORD            wTransmitLength_b;
166     BYTE            bySignalField_a;
167     BYTE            byServiceField_a;
168     WORD            wTransmitLength_a;
169     WORD            wDuration_b;
170     WORD            wDuration_a;
171     WORD            wTimeStampOff_b;
172     WORD            wTimeStampOff_a;
173
174 } TX_NAF_G_CTS, *PTX_NAF_G_CTS;
175
176
177 typedef struct tagSTX_NAF_G_CTS_MIC
178 {
179     //RsvTime
180     WORD            wCTSTxRrvTime_ba;
181     WORD            wReserved2;
182     WORD            wTxRrvTime_b;
183     WORD            wTxRrvTime_a;
184
185
186     SMICHDR         sMICHDR;
187
188     //CTS
189     BYTE            byCTSSignalField_b;
190     BYTE            byCTSServiceField_b;
191     WORD            wCTSTransmitLength_b;
192     WORD            wCTSDuration_ba;
193     WORD            wReserved3;
194     SCTSDataF       sCTS;
195
196     //Data
197     BYTE            bySignalField_b;
198     BYTE            byServiceField_b;
199     WORD            wTransmitLength_b;
200     BYTE            bySignalField_a;
201     BYTE            byServiceField_a;
202     WORD            wTransmitLength_a;
203     WORD            wDuration_b;
204     WORD            wDuration_a;
205     WORD            wTimeStampOff_b;
206     WORD            wTimeStampOff_a;
207
208 } TX_NAF_G_CTS_MIC, *PTX_NAF_G_CTS_MIC;
209
210
211 typedef struct tagSTX_NAF_G_BEACON
212 {
213     WORD            wFIFOCtl;
214     WORD            wTimeStamp;
215
216     //CTS
217     BYTE            byCTSSignalField_b;
218     BYTE            byCTSServiceField_b;
219     WORD            wCTSTransmitLength_b;
220     WORD            wCTSDuration_ba;
221     WORD            wReserved1;
222     SCTSDataF       sCTS;
223
224     //Data
225     BYTE            bySignalField_a;
226     BYTE            byServiceField_a;
227     WORD            wTransmitLength_a;
228     WORD            wDuration_a;
229     WORD            wTimeStampOff_a;
230
231
232 } TX_NAF_G_BEACON, *PTX_NAF_G_BEACON;
233
234
235 typedef struct tagSTX_NAF_AB_RTS
236 {
237     //RsvTime
238     WORD            wRTSTxRrvTime_ab;
239     WORD            wTxRrvTime_ab;
240
241     //RTS
242     BYTE            byRTSSignalField_ab;
243     BYTE            byRTSServiceField_ab;
244     WORD            wRTSTransmitLength_ab;
245     WORD            wRTSDuration_ab;
246     WORD            wReserved2;
247     SRTSDataF       sRTS;
248
249     //Data
250     BYTE            bySignalField_ab;
251     BYTE            byServiceField_ab;
252     WORD            wTransmitLength_ab;
253     WORD            wDuration_ab;
254     WORD            wTimeStampOff_ab;
255
256
257 } TX_NAF_AB_RTS, *PTX_NAF_AB_RTS;
258
259
260 typedef struct tagSTX_NAF_AB_RTS_MIC
261 {
262     //RsvTime
263     WORD            wRTSTxRrvTime_ab;
264     WORD            wTxRrvTime_ab;
265
266     SMICHDR         sMICHDR;
267
268     //RTS
269     BYTE            byRTSSignalField_ab;
270     BYTE            byRTSServiceField_ab;
271     WORD            wRTSTransmitLength_ab;
272     WORD            wRTSDuration_ab;
273     WORD            wReserved2;
274     SRTSDataF       sRTS;
275
276     //Data
277     BYTE            bySignalField_ab;
278     BYTE            byServiceField_ab;
279     WORD            wTransmitLength_ab;
280     WORD            wDuration_ab;
281     WORD            wTimeStampOff_ab;
282
283
284 } TX_NAF_AB_RTS_MIC, *PTX_NAF_AB_RTS_MIC;
285
286
287
288 typedef struct tagSTX_NAF_AB_CTS
289 {
290     //RsvTime
291     WORD            wReserved2;
292     WORD            wTxRrvTime_ab;
293
294     //Data
295     BYTE            bySignalField_ab;
296     BYTE            byServiceField_ab;
297     WORD            wTransmitLength_ab;
298     WORD            wDuration_ab;
299     WORD            wTimeStampOff_ab;
300
301 } TX_NAF_AB_CTS, *PTX_NAF_AB_CTS;
302
303 typedef struct tagSTX_NAF_AB_CTS_MIC
304 {
305     //RsvTime
306     WORD            wReserved2;
307     WORD            wTxRrvTime_ab;
308
309     SMICHDR         sMICHDR;
310
311     //Data
312     BYTE            bySignalField_ab;
313     BYTE            byServiceField_ab;
314     WORD            wTransmitLength_ab;
315     WORD            wDuration_ab;
316     WORD            wTimeStampOff_ab;
317
318 } TX_NAF_AB_CTS_MIC, *PTX_NAF_AB_CTS_MIC;
319
320
321 typedef struct tagSTX_NAF_AB_BEACON
322 {
323     WORD            wFIFOCtl;
324     WORD            wTimeStamp;
325
326    //Data
327     BYTE            bySignalField_ab;
328     BYTE            byServiceField_ab;
329     WORD            wTransmitLength_ab;
330     WORD            wDuration_ab;
331     WORD            wTimeStampOff_ab;
332
333 } TX_NAF_AB_BEACON, *PTX_NAF_AB_BEACON;
334
335 typedef struct tagSTX_AF_G_RTS
336 {
337     //RsvTime
338     WORD            wRTSTxRrvTime_ba;
339     WORD            wRTSTxRrvTime_aa;
340     WORD            wRTSTxRrvTime_bb;
341     WORD            wReserved2;
342     WORD            wTxRrvTime_b;
343     WORD            wTxRrvTime_a;
344
345     //RTS
346     BYTE            byRTSSignalField_b;
347     BYTE            byRTSServiceField_b;
348     WORD            wRTSTransmitLength_b;
349     BYTE            byRTSSignalField_a;
350     BYTE            byRTSServiceField_a;
351     WORD            wRTSTransmitLength_a;
352     WORD            wRTSDuration_ba;
353     WORD            wRTSDuration_aa;
354     WORD            wRTSDuration_bb;
355     WORD            wReserved3;
356     WORD            wRTSDuration_ba_f0;
357     WORD            wRTSDuration_aa_f0;
358     WORD            wRTSDuration_ba_f1;
359     WORD            wRTSDuration_aa_f1;
360     SRTSDataF       sRTS;
361
362     //Data
363     BYTE            bySignalField_b;
364     BYTE            byServiceField_b;
365     WORD            wTransmitLength_b;
366     BYTE            bySignalField_a;
367     BYTE            byServiceField_a;
368     WORD            wTransmitLength_a;
369     WORD            wDuration_b;
370     WORD            wDuration_a;
371     WORD            wDuration_a_f0;
372     WORD            wDuration_a_f1;
373     WORD            wTimeStampOff_b;
374     WORD            wTimeStampOff_a;
375
376 } TX_AF_G_RTS, *PTX_AF_G_RTS;
377
378
379 typedef struct tagSTX_AF_G_RTS_MIC
380 {
381     //RsvTime
382     WORD            wRTSTxRrvTime_ba;
383     WORD            wRTSTxRrvTime_aa;
384     WORD            wRTSTxRrvTime_bb;
385     WORD            wReserved2;
386     WORD            wTxRrvTime_b;
387     WORD            wTxRrvTime_a;
388
389     SMICHDR         sMICHDR;
390
391     //RTS
392     BYTE            byRTSSignalField_b;
393     BYTE            byRTSServiceField_b;
394     WORD            wRTSTransmitLength_b;
395     BYTE            byRTSSignalField_a;
396     BYTE            byRTSServiceField_a;
397     WORD            wRTSTransmitLength_a;
398     WORD            wRTSDuration_ba;
399     WORD            wRTSDuration_aa;
400     WORD            wRTSDuration_bb;
401     WORD            wReserved3;
402     WORD            wRTSDuration_ba_f0;
403     WORD            wRTSDuration_aa_f0;
404     WORD            wRTSDuration_ba_f1;
405     WORD            wRTSDuration_aa_f1;
406     SRTSDataF       sRTS;
407
408     //Data
409     BYTE            bySignalField_b;
410     BYTE            byServiceField_b;
411     WORD            wTransmitLength_b;
412     BYTE            bySignalField_a;
413     BYTE            byServiceField_a;
414     WORD            wTransmitLength_a;
415     WORD            wDuration_b;
416     WORD            wDuration_a;
417     WORD            wDuration_a_f0;
418     WORD            wDuration_a_f1;
419     WORD            wTimeStampOff_b;
420     WORD            wTimeStampOff_a;
421
422 } TX_AF_G_RTS_MIC, *PTX_AF_G_RTS_MIC;
423
424
425
426 typedef struct tagSTX_AF_G_CTS
427 {
428     //RsvTime
429     WORD            wCTSTxRrvTime_ba;
430     WORD            wReserved2;
431     WORD            wTxRrvTime_b;
432     WORD            wTxRrvTime_a;
433
434     //CTS
435     BYTE            byCTSSignalField_b;
436     BYTE            byCTSServiceField_b;
437     WORD            wCTSTransmitLength_b;
438     WORD            wCTSDuration_ba;
439     WORD            wReserved3;
440     WORD            wCTSDuration_ba_f0;
441     WORD            wCTSDuration_ba_f1;
442     SCTSDataF       sCTS;
443
444     //Data
445     BYTE            bySignalField_b;
446     BYTE            byServiceField_b;
447     WORD            wTransmitLength_b;
448     BYTE            bySignalField_a;
449     BYTE            byServiceField_a;
450     WORD            wTransmitLength_a;
451     WORD            wDuration_b;
452     WORD            wDuration_a;
453     WORD            wDuration_a_f0;
454     WORD            wDuration_a_f1;
455     WORD            wTimeStampOff_b;
456     WORD            wTimeStampOff_a;
457
458 } TX_AF_G_CTS, *PTX_AF_G_CTS;
459
460
461 typedef struct tagSTX_AF_G_CTS_MIC
462 {
463     //RsvTime
464     WORD            wCTSTxRrvTime_ba;
465     WORD            wReserved2;
466     WORD            wTxRrvTime_b;
467     WORD            wTxRrvTime_a;
468
469
470     SMICHDR         sMICHDR;
471
472     //CTS
473     BYTE            byCTSSignalField_b;
474     BYTE            byCTSServiceField_b;
475     WORD            wCTSTransmitLength_b;
476     WORD            wCTSDuration_ba;
477     WORD            wReserved3;
478     WORD            wCTSDuration_ba_f0;
479     WORD            wCTSDuration_ba_f1;
480     SCTSDataF       sCTS;
481
482     //Data
483     BYTE            bySignalField_b;
484     BYTE            byServiceField_b;
485     WORD            wTransmitLength_b;
486     BYTE            bySignalField_a;
487     BYTE            byServiceField_a;
488     WORD            wTransmitLength_a;
489     WORD            wDuration_b;
490     WORD            wDuration_a;
491     WORD            wDuration_a_f0;
492     WORD            wDuration_a_f1;
493     WORD            wTimeStampOff_b;
494     WORD            wTimeStampOff_a;
495
496 } TX_AF_G_CTS_MIC, *PTX_AF_G_CTS_MIC;
497
498
499
500 typedef struct tagSTX_AF_A_RTS
501 {
502     //RsvTime
503     WORD            wRTSTxRrvTime_a;
504     WORD            wTxRrvTime_a;
505
506     //RTS
507     BYTE            byRTSSignalField_a;
508     BYTE            byRTSServiceField_a;
509     WORD            wRTSTransmitLength_a;
510     WORD            wRTSDuration_a;
511     WORD            wReserved2;
512     WORD            wRTSDuration_a_f0;
513     WORD            wRTSDuration_a_f1;
514     SRTSDataF       sRTS;
515
516     //Data
517     BYTE            bySignalField_a;
518     BYTE            byServiceField_a;
519     WORD            wTransmitLength_a;
520     WORD            wDuration_a;
521     WORD            wTimeStampOff_a;
522     WORD            wDuration_a_f0;
523     WORD            wDuration_a_f1;
524
525 } TX_AF_A_RTS, *PTX_AF_A_RTS;
526
527
528 typedef struct tagSTX_AF_A_RTS_MIC
529 {
530     //RsvTime
531     WORD            wRTSTxRrvTime_a;
532     WORD            wTxRrvTime_a;
533
534     SMICHDR         sMICHDR;
535
536     //RTS
537     BYTE            byRTSSignalField_a;
538     BYTE            byRTSServiceField_a;
539     WORD            wRTSTransmitLength_a;
540     WORD            wRTSDuration_a;
541     WORD            wReserved2;
542     WORD            wRTSDuration_a_f0;
543     WORD            wRTSDuration_a_f1;
544     SRTSDataF       sRTS;
545
546     //Data
547     BYTE            bySignalField_a;
548     BYTE            byServiceField_a;
549     WORD            wTransmitLength_a;
550     WORD            wDuration_a;
551     WORD            wTimeStampOff_a;
552     WORD            wDuration_a_f0;
553     WORD            wDuration_a_f1;
554
555 } TX_AF_A_RTS_MIC, *PTX_AF_A_RTS_MIC;
556
557
558
559 typedef struct tagSTX_AF_A_CTS
560 {
561     //RsvTime
562     WORD            wReserved2;
563     WORD            wTxRrvTime_a;
564
565     //Data
566     BYTE            bySignalField_a;
567     BYTE            byServiceField_a;
568     WORD            wTransmitLength_a;
569     WORD            wDuration_a;
570     WORD            wTimeStampOff_a;
571     WORD            wDuration_a_f0;
572     WORD            wDuration_a_f1;
573
574 } TX_AF_A_CTS, *PTX_AF_A_CTS;
575
576
577 typedef struct tagSTX_AF_A_CTS_MIC
578 {
579     //RsvTime
580     WORD            wReserved2;
581     WORD            wTxRrvTime_a;
582
583     SMICHDR         sMICHDR;
584
585     //Data
586     BYTE            bySignalField_a;
587     BYTE            byServiceField_a;
588     WORD            wTransmitLength_a;
589     WORD            wDuration_a;
590     WORD            wTimeStampOff_a;
591     WORD            wDuration_a_f0;
592     WORD            wDuration_a_f1;
593
594 } TX_AF_A_CTS_MIC, *PTX_AF_A_CTS_MIC;
595
596
597 //
598 // union with all of the TX Buffer Type
599 //
600 typedef union tagUTX_BUFFER_CONTAINER
601 {
602     TX_NAF_G_RTS                    RTS_G;
603     TX_NAF_G_RTS_MIC                RTS_G_MIC;
604     TX_NAF_G_CTS                    CTS_G;
605     TX_NAF_G_CTS_MIC                CTS_G_MIC;
606     //TX_NAF_G_BEACON                 Beacon_G;
607     TX_NAF_AB_RTS                   RTS_AB;
608     TX_NAF_AB_RTS_MIC               RTS_AB_MIC;
609     TX_NAF_AB_CTS                   CTS_AB;
610     TX_NAF_AB_CTS_MIC               CTS_AB_MIC;
611     //TX_NAF_AB_BEACON                Beacon_AB;
612     TX_AF_G_RTS                     RTS_G_AutoFB;
613     TX_AF_G_RTS_MIC                 RTS_G_AutoFB_MIC;
614     TX_AF_G_CTS                     CTS_G_AutoFB;
615     TX_AF_G_CTS_MIC                 CTS_G_AutoFB_MIC;
616     TX_AF_A_RTS                     RTS_A_AutoFB;
617     TX_AF_A_RTS_MIC                 RTS_A_AutoFB_MIC;
618     TX_AF_A_CTS                     CTS_A_AutoFB;
619     TX_AF_A_CTS_MIC                 CTS_A_AutoFB_MIC;
620
621 } TX_BUFFER_CONTAINER, *PTX_BUFFER_CONTAINER;
622
623
624 //
625 // Remote NDIS message format
626 //
627 typedef struct tagSTX_BUFFER
628 {
629     BYTE                            byType;
630     BYTE                            byPKTNO;
631     WORD                            wTxByteCount;
632
633         u32 adwTxKey[4];
634     WORD                            wFIFOCtl;
635     WORD                            wTimeStamp;
636     WORD                            wFragCtl;
637     WORD                            wReserved;
638
639
640     // Actual message
641     TX_BUFFER_CONTAINER             BufferHeader;
642
643 } TX_BUFFER, *PTX_BUFFER;
644
645
646 //
647 // Remote NDIS message format
648 //
649 typedef struct tagSBEACON_BUFFER
650 {
651     BYTE                            byType;
652     BYTE                            byPKTNO;
653     WORD                            wTxByteCount;
654
655     WORD                            wFIFOCtl;
656     WORD                            wTimeStamp;
657
658     // Actual message
659     TX_BUFFER_CONTAINER             BufferHeader;
660
661 } BEACON_BUFFER, *PBEACON_BUFFER;
662
663
664 /*---------------------  Export Variables  --------------------------*/
665
666 /*---------------------  Export Functions  --------------------------*/
667
668 void vDMA0_tx_80211(struct vnt_private *, struct sk_buff *skb);
669 int nsDMA_tx_packet(struct vnt_private *, u32 uDMAIdx, struct sk_buff *skb);
670 CMD_STATUS csMgmt_xmit(struct vnt_private *, struct vnt_tx_mgmt *);
671 CMD_STATUS csBeacon_xmit(struct vnt_private *, struct vnt_tx_mgmt *);
672 int bRelayPacketSend(struct vnt_private *, u8 *pbySkbData, u32 uDataLen,
673         u32 uNodeIndex);
674
675 #endif /* __RXTX_H__ */