2 * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc.
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.
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.
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.
36 /*--------------------- Export Definitions -------------------------*/
38 /*--------------------- Export Classes ----------------------------*/
43 typedef struct tagSRTSDataF
{
46 BYTE abyRA
[U_ETHER_ADDR_LEN
];
47 BYTE abyTA
[U_ETHER_ADDR_LEN
];
48 } SRTSDataF
, *PSRTSDataF
;
53 typedef struct tagSCTSDataF
{
56 BYTE abyRA
[U_ETHER_ADDR_LEN
];
58 } SCTSDataF
, *PSCTSDataF
;
63 typedef struct tagSMICHDR
{
70 typedef struct tagSTX_NAF_G_RTS
73 WORD wRTSTxRrvTime_ba
;
74 WORD wRTSTxRrvTime_aa
;
75 WORD wRTSTxRrvTime_bb
;
81 BYTE byRTSSignalField_b
;
82 BYTE byRTSServiceField_b
;
83 WORD wRTSTransmitLength_b
;
84 BYTE byRTSSignalField_a
;
85 BYTE byRTSServiceField_a
;
86 WORD wRTSTransmitLength_a
;
95 BYTE byServiceField_b
;
96 WORD wTransmitLength_b
;
98 BYTE byServiceField_a
;
99 WORD wTransmitLength_a
;
102 WORD wTimeStampOff_b
;
103 WORD wTimeStampOff_a
;
105 } TX_NAF_G_RTS
, *PTX_NAF_G_RTS
;
107 typedef struct tagSTX_NAF_G_RTS_MIC
110 WORD wRTSTxRrvTime_ba
;
111 WORD wRTSTxRrvTime_aa
;
112 WORD wRTSTxRrvTime_bb
;
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
;
133 BYTE bySignalField_b
;
134 BYTE byServiceField_b
;
135 WORD wTransmitLength_b
;
136 BYTE bySignalField_a
;
137 BYTE byServiceField_a
;
138 WORD wTransmitLength_a
;
141 WORD wTimeStampOff_b
;
142 WORD wTimeStampOff_a
;
144 } TX_NAF_G_RTS_MIC
, *PTX_NAF_G_RTS_MIC
;
146 typedef struct tagSTX_NAF_G_CTS
149 WORD wCTSTxRrvTime_ba
;
155 BYTE byCTSSignalField_b
;
156 BYTE byCTSServiceField_b
;
157 WORD wCTSTransmitLength_b
;
158 WORD wCTSDuration_ba
;
163 BYTE bySignalField_b
;
164 BYTE byServiceField_b
;
165 WORD wTransmitLength_b
;
166 BYTE bySignalField_a
;
167 BYTE byServiceField_a
;
168 WORD wTransmitLength_a
;
171 WORD wTimeStampOff_b
;
172 WORD wTimeStampOff_a
;
174 } TX_NAF_G_CTS
, *PTX_NAF_G_CTS
;
177 typedef struct tagSTX_NAF_G_CTS_MIC
180 WORD wCTSTxRrvTime_ba
;
189 BYTE byCTSSignalField_b
;
190 BYTE byCTSServiceField_b
;
191 WORD wCTSTransmitLength_b
;
192 WORD wCTSDuration_ba
;
197 BYTE bySignalField_b
;
198 BYTE byServiceField_b
;
199 WORD wTransmitLength_b
;
200 BYTE bySignalField_a
;
201 BYTE byServiceField_a
;
202 WORD wTransmitLength_a
;
205 WORD wTimeStampOff_b
;
206 WORD wTimeStampOff_a
;
208 } TX_NAF_G_CTS_MIC
, *PTX_NAF_G_CTS_MIC
;
211 typedef struct tagSTX_NAF_G_BEACON
217 BYTE byCTSSignalField_b
;
218 BYTE byCTSServiceField_b
;
219 WORD wCTSTransmitLength_b
;
220 WORD wCTSDuration_ba
;
225 BYTE bySignalField_a
;
226 BYTE byServiceField_a
;
227 WORD wTransmitLength_a
;
229 WORD wTimeStampOff_a
;
232 } TX_NAF_G_BEACON
, *PTX_NAF_G_BEACON
;
235 typedef struct tagSTX_NAF_AB_RTS
238 WORD wRTSTxRrvTime_ab
;
242 BYTE byRTSSignalField_ab
;
243 BYTE byRTSServiceField_ab
;
244 WORD wRTSTransmitLength_ab
;
245 WORD wRTSDuration_ab
;
250 BYTE bySignalField_ab
;
251 BYTE byServiceField_ab
;
252 WORD wTransmitLength_ab
;
254 WORD wTimeStampOff_ab
;
257 } TX_NAF_AB_RTS
, *PTX_NAF_AB_RTS
;
260 typedef struct tagSTX_NAF_AB_RTS_MIC
263 WORD wRTSTxRrvTime_ab
;
269 BYTE byRTSSignalField_ab
;
270 BYTE byRTSServiceField_ab
;
271 WORD wRTSTransmitLength_ab
;
272 WORD wRTSDuration_ab
;
277 BYTE bySignalField_ab
;
278 BYTE byServiceField_ab
;
279 WORD wTransmitLength_ab
;
281 WORD wTimeStampOff_ab
;
284 } TX_NAF_AB_RTS_MIC
, *PTX_NAF_AB_RTS_MIC
;
288 typedef struct tagSTX_NAF_AB_CTS
295 BYTE bySignalField_ab
;
296 BYTE byServiceField_ab
;
297 WORD wTransmitLength_ab
;
299 WORD wTimeStampOff_ab
;
301 } TX_NAF_AB_CTS
, *PTX_NAF_AB_CTS
;
303 typedef struct tagSTX_NAF_AB_CTS_MIC
312 BYTE bySignalField_ab
;
313 BYTE byServiceField_ab
;
314 WORD wTransmitLength_ab
;
316 WORD wTimeStampOff_ab
;
318 } TX_NAF_AB_CTS_MIC
, *PTX_NAF_AB_CTS_MIC
;
321 typedef struct tagSTX_NAF_AB_BEACON
327 BYTE bySignalField_ab
;
328 BYTE byServiceField_ab
;
329 WORD wTransmitLength_ab
;
331 WORD wTimeStampOff_ab
;
333 } TX_NAF_AB_BEACON
, *PTX_NAF_AB_BEACON
;
335 typedef struct tagSTX_AF_G_RTS
338 WORD wRTSTxRrvTime_ba
;
339 WORD wRTSTxRrvTime_aa
;
340 WORD wRTSTxRrvTime_bb
;
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
;
356 WORD wRTSDuration_ba_f0
;
357 WORD wRTSDuration_aa_f0
;
358 WORD wRTSDuration_ba_f1
;
359 WORD wRTSDuration_aa_f1
;
363 BYTE bySignalField_b
;
364 BYTE byServiceField_b
;
365 WORD wTransmitLength_b
;
366 BYTE bySignalField_a
;
367 BYTE byServiceField_a
;
368 WORD wTransmitLength_a
;
373 WORD wTimeStampOff_b
;
374 WORD wTimeStampOff_a
;
376 } TX_AF_G_RTS
, *PTX_AF_G_RTS
;
379 typedef struct tagSTX_AF_G_RTS_MIC
382 WORD wRTSTxRrvTime_ba
;
383 WORD wRTSTxRrvTime_aa
;
384 WORD wRTSTxRrvTime_bb
;
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
;
402 WORD wRTSDuration_ba_f0
;
403 WORD wRTSDuration_aa_f0
;
404 WORD wRTSDuration_ba_f1
;
405 WORD wRTSDuration_aa_f1
;
409 BYTE bySignalField_b
;
410 BYTE byServiceField_b
;
411 WORD wTransmitLength_b
;
412 BYTE bySignalField_a
;
413 BYTE byServiceField_a
;
414 WORD wTransmitLength_a
;
419 WORD wTimeStampOff_b
;
420 WORD wTimeStampOff_a
;
422 } TX_AF_G_RTS_MIC
, *PTX_AF_G_RTS_MIC
;
426 typedef struct tagSTX_AF_G_CTS
429 WORD wCTSTxRrvTime_ba
;
435 BYTE byCTSSignalField_b
;
436 BYTE byCTSServiceField_b
;
437 WORD wCTSTransmitLength_b
;
438 WORD wCTSDuration_ba
;
440 WORD wCTSDuration_ba_f0
;
441 WORD wCTSDuration_ba_f1
;
445 BYTE bySignalField_b
;
446 BYTE byServiceField_b
;
447 WORD wTransmitLength_b
;
448 BYTE bySignalField_a
;
449 BYTE byServiceField_a
;
450 WORD wTransmitLength_a
;
455 WORD wTimeStampOff_b
;
456 WORD wTimeStampOff_a
;
458 } TX_AF_G_CTS
, *PTX_AF_G_CTS
;
461 typedef struct tagSTX_AF_G_CTS_MIC
464 WORD wCTSTxRrvTime_ba
;
473 BYTE byCTSSignalField_b
;
474 BYTE byCTSServiceField_b
;
475 WORD wCTSTransmitLength_b
;
476 WORD wCTSDuration_ba
;
478 WORD wCTSDuration_ba_f0
;
479 WORD wCTSDuration_ba_f1
;
483 BYTE bySignalField_b
;
484 BYTE byServiceField_b
;
485 WORD wTransmitLength_b
;
486 BYTE bySignalField_a
;
487 BYTE byServiceField_a
;
488 WORD wTransmitLength_a
;
493 WORD wTimeStampOff_b
;
494 WORD wTimeStampOff_a
;
496 } TX_AF_G_CTS_MIC
, *PTX_AF_G_CTS_MIC
;
500 typedef struct tagSTX_AF_A_RTS
503 WORD wRTSTxRrvTime_a
;
507 BYTE byRTSSignalField_a
;
508 BYTE byRTSServiceField_a
;
509 WORD wRTSTransmitLength_a
;
512 WORD wRTSDuration_a_f0
;
513 WORD wRTSDuration_a_f1
;
517 BYTE bySignalField_a
;
518 BYTE byServiceField_a
;
519 WORD wTransmitLength_a
;
521 WORD wTimeStampOff_a
;
525 } TX_AF_A_RTS
, *PTX_AF_A_RTS
;
528 typedef struct tagSTX_AF_A_RTS_MIC
531 WORD wRTSTxRrvTime_a
;
537 BYTE byRTSSignalField_a
;
538 BYTE byRTSServiceField_a
;
539 WORD wRTSTransmitLength_a
;
542 WORD wRTSDuration_a_f0
;
543 WORD wRTSDuration_a_f1
;
547 BYTE bySignalField_a
;
548 BYTE byServiceField_a
;
549 WORD wTransmitLength_a
;
551 WORD wTimeStampOff_a
;
555 } TX_AF_A_RTS_MIC
, *PTX_AF_A_RTS_MIC
;
559 typedef struct tagSTX_AF_A_CTS
566 BYTE bySignalField_a
;
567 BYTE byServiceField_a
;
568 WORD wTransmitLength_a
;
570 WORD wTimeStampOff_a
;
574 } TX_AF_A_CTS
, *PTX_AF_A_CTS
;
577 typedef struct tagSTX_AF_A_CTS_MIC
586 BYTE bySignalField_a
;
587 BYTE byServiceField_a
;
588 WORD wTransmitLength_a
;
590 WORD wTimeStampOff_a
;
594 } TX_AF_A_CTS_MIC
, *PTX_AF_A_CTS_MIC
;
598 // union with all of the TX Buffer Type
600 typedef union tagUTX_BUFFER_CONTAINER
603 TX_NAF_G_RTS_MIC RTS_G_MIC
;
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
;
621 } TX_BUFFER_CONTAINER
, *PTX_BUFFER_CONTAINER
;
625 // Remote NDIS message format
627 typedef struct tagSTX_BUFFER
641 TX_BUFFER_CONTAINER BufferHeader
;
643 } TX_BUFFER
, *PTX_BUFFER
;
647 // Remote NDIS message format
649 typedef struct tagSBEACON_BUFFER
659 TX_BUFFER_CONTAINER BufferHeader
;
661 } BEACON_BUFFER
, *PBEACON_BUFFER
;
664 /*--------------------- Export Variables --------------------------*/
666 /*--------------------- Export Functions --------------------------*/
669 bPacketToWirelessUsb(
672 IN PBYTE usbPacketBuf
,
673 IN BOOL bNeedEncrypt
,
674 IN UINT cbPayloadSize
,
676 IN PSEthernetHeader psEthHeader
,
678 IN PSKeyItem pTransmitKey
,
680 IN WORD wCurrentRate
,
681 OUT UINT
*pcbHeaderLen
,
682 OUT UINT
*pcbTotalLen
685 VOID
vDMA0_tx_80211(PSDevice pDevice
, struct sk_buff
*skb
);
686 NTSTATUS
nsDMA_tx_packet(PSDevice pDevice
, UINT uDMAIdx
, struct sk_buff
*skb
);
687 CMD_STATUS
csMgmt_xmit(PSDevice pDevice
, PSTxMgmtPacket pPacket
);
688 CMD_STATUS
csBeacon_xmit(PSDevice pDevice
, PSTxMgmtPacket pPacket
);
689 BOOL
bRelayPacketSend(PSDevice pDevice
, PBYTE pbySkbData
, UINT uDataLen
, UINT uNodeIndex
);