• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6.36/drivers/staging/vt6656/
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//
43typedef 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//
53typedef 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//
63typedef struct tagSMICHDR {
64    DWORD   adwHDR0[4];
65    DWORD   adwHDR1[4];
66    DWORD   adwHDR2[4];
67} SMICHDR, *PSMICHDR;
68
69
70typedef 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
107typedef 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
146typedef 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
177typedef 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
211typedef 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
235typedef 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
260typedef 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
288typedef 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
303typedef 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
321typedef 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
335typedef 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
379typedef 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
426typedef 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
461typedef 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
500typedef 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
528typedef 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
559typedef 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
577typedef 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//
600typedef 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//
627typedef 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//
649typedef 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
668BOOL
669bPacketToWirelessUsb(
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
685void vDMA0_tx_80211(PSDevice  pDevice, struct sk_buff *skb);
686int nsDMA_tx_packet(PSDevice pDevice,
687		    unsigned int uDMAIdx,
688		    struct sk_buff *skb);
689CMD_STATUS csMgmt_xmit(PSDevice pDevice, PSTxMgmtPacket pPacket);
690CMD_STATUS csBeacon_xmit(PSDevice pDevice, PSTxMgmtPacket pPacket);
691BOOL bRelayPacketSend(PSDevice pDevice, PBYTE pbySkbData,
692		      unsigned int uDataLen, unsigned int uNodeIndex);
693
694#endif /* __RXTX_H__ */
695