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