Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh...
[pandora-kernel.git] / 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     DWORD   adwHDR0[4];
65     DWORD   adwHDR1[4];
66     DWORD   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     DWORD                           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 BOOL
669 bPacketToWirelessUsb(
670       PSDevice         pDevice,
671       BYTE             byPktType,
672       PBYTE            usbPacketBuf,
673       BOOL             bNeedEncrypt,
674       unsigned int             cbPayloadSize,
675       unsigned int             uDMAIdx,
676       PSEthernetHeader psEthHeader,
677       PBYTE            pPacket,
678       PSKeyItem        pTransmitKey,
679       unsigned int             uNodeIndex,
680       WORD             wCurrentRate,
681      unsigned int             *pcbHeaderLen,
682      unsigned int             *pcbTotalLen
683     );
684
685 void vDMA0_tx_80211(PSDevice  pDevice, struct sk_buff *skb);
686 NTSTATUS nsDMA_tx_packet(PSDevice  pDevice,
687                          unsigned int uDMAIdx,
688                          struct sk_buff *skb);
689 CMD_STATUS csMgmt_xmit(PSDevice pDevice, PSTxMgmtPacket pPacket);
690 CMD_STATUS csBeacon_xmit(PSDevice pDevice, PSTxMgmtPacket pPacket);
691 BOOL bRelayPacketSend(PSDevice pDevice, PBYTE pbySkbData,
692                       unsigned int uDataLen, unsigned int uNodeIndex);
693
694 #endif /* __RXTX_H__ */