aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/rt2860/rtmp.h
diff options
context:
space:
mode:
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2009-09-22 14:44:07 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2009-12-11 15:21:44 -0500
commitca97b8388838ee9ea4b4bad04948f8f7f8a607a3 (patch)
tree2f45db84158e603cbde3871fb9f5137448ef6773 /drivers/staging/rt2860/rtmp.h
parent3441d25f03a078d493777f165194f8623ec2750f (diff)
Staging: rt28x0: updates from vendor's V2.1.0.0 drivers
Port changes from: * 2009_0420_RT2860_Linux_STA_V2.1.0.0 * 2009_0302_RT2870_Linux_STA_v2.1.0.0 * 2009_0525_RT3070_Linux_STA_v2.1.1.0 to in-kernel drivers. From the RT2860 driver release note: [2.1.0.0] 1. New generation schema for multiple OS porting 2. Fixed Ad-hoc ping failed in noisy environment. (Probe Response has too many retry packet then cause "not enough space in MgmtRing") 3. Fixed WPA(2)PSK issue when group cipher of AP is WEP40 or WEP104. 4. Modified iwpriv ra0 get_site_survey: In scan list result: Security shows "NONE" when AP is OPEN/NONE, shows "WEP" when AP is OPEN/WEP or SHARED/WEP, shows "WPAPSK(WPA2PSK)/TKIP(AES)" when AP is WPAPSK(WPA2PSK)/TKIP(AES) shows "WPA(WPA2)/TKIP(AES)" when AP is WPA(WPA2)/TKIP(AES) 5. Support kthread. 6. Add New A band channel list region 15 contains the whole channels in the A band region 4 and the new CE channel 167,169,171,173 7. Add New IEEE802.11r functionality. 8. Fixed WPA2-Enterprise failed when AP reboot or turn off then turn on. 9. Fixed STA cannot connect to 11B only AP when the setting of is PHY_11GN. From the RT2870 driver release note: [V2.1.0.0] 1. New generation schema for multiple OS porting. 2. Fixed Ad-hoc ping failed in noisy environment. (Probe Response has too many retry packet then cause "not enough space in MgmtRing"). 3. Fixed WPS failed with D-Link DIR-628 in 5GHz. 4. Change FastRoaming in DAT file to AutoRoaming. 5. Support kthread. 6. Add New A band channel list region 15 contains the whole channels in the A band region and the new CE channel 167,169,171,173. 7. New IEEE802.11r functionality. From the RT3070 driver release note: Version V2.1.1.0 1. Linux kernel 2.6.29 support. 2. Fix eFuse write from BIN file bug. Version 2.1.0.0 1. New generation schema for multiple OS porting 2. Fixed Ad-hoc ping failed in noisy environment. 3. Modified iwpriv ra0 get_site_survey: 4. Change FastRoaming in DAT file to AutoRoaming. 5. Support kthread. 6. New IEEE802.11r functionality. Tested with RT2860 and RT3070 chipsets. Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging/rt2860/rtmp.h')
-rw-r--r--drivers/staging/rt2860/rtmp.h2876
1 files changed, 1144 insertions, 1732 deletions
diff --git a/drivers/staging/rt2860/rtmp.h b/drivers/staging/rt2860/rtmp.h
index 90fd40f2473..ee047f8fdf7 100644
--- a/drivers/staging/rt2860/rtmp.h
+++ b/drivers/staging/rt2860/rtmp.h
@@ -42,140 +42,45 @@
42 42
43#include "spectrum_def.h" 43#include "spectrum_def.h"
44 44
45#include "aironet.h" 45#include "rtmp_dot11.h"
46 46
47#define VIRTUAL_IF_INC(__pAd) ((__pAd)->VirtualIfCnt++) 47#undef AP_WSC_INCLUDED
48#define VIRTUAL_IF_DEC(__pAd) ((__pAd)->VirtualIfCnt--) 48#undef STA_WSC_INCLUDED
49#define VIRTUAL_IF_NUM(__pAd) ((__pAd)->VirtualIfCnt) 49#undef WSC_INCLUDED
50 50
51#ifdef RT2870
52////////////////////////////////////////////////////////////////////////////
53// The TX_BUFFER structure forms the transmitted USB packet to the device
54////////////////////////////////////////////////////////////////////////////
55typedef struct __TX_BUFFER{
56 union {
57 UCHAR WirelessPacket[TX_BUFFER_NORMSIZE];
58 HEADER_802_11 NullFrame;
59 PSPOLL_FRAME PsPollPacket;
60 RTS_FRAME RTSFrame;
61 }field;
62 UCHAR Aggregation[4]; //Buffer for save Aggregation size.
63} TX_BUFFER, *PTX_BUFFER;
64
65typedef struct __HTTX_BUFFER{
66 union {
67 UCHAR WirelessPacket[MAX_TXBULK_SIZE];
68 HEADER_802_11 NullFrame;
69 PSPOLL_FRAME PsPollPacket;
70 RTS_FRAME RTSFrame;
71 }field;
72 UCHAR Aggregation[4]; //Buffer for save Aggregation size.
73} HTTX_BUFFER, *PHTTX_BUFFER;
74
75
76// used to track driver-generated write irps
77typedef struct _TX_CONTEXT
78{
79 PVOID pAd; //Initialized in MiniportInitialize
80 PURB pUrb; //Initialized in MiniportInitialize
81 PIRP pIrp; //used to cancel pending bulk out.
82 //Initialized in MiniportInitialize
83 PTX_BUFFER TransferBuffer; //Initialized in MiniportInitialize
84 ULONG BulkOutSize;
85 UCHAR BulkOutPipeId;
86 UCHAR SelfIdx;
87 BOOLEAN InUse;
88 BOOLEAN bWaitingBulkOut; // at least one packet is in this TxContext, ready for making IRP anytime.
89 BOOLEAN bFullForBulkOut; // all tx buffer are full , so waiting for tx bulkout.
90 BOOLEAN IRPPending;
91 BOOLEAN LastOne;
92 BOOLEAN bAggregatible;
93 UCHAR Header_802_3[LENGTH_802_3];
94 UCHAR Rsv[2];
95 ULONG DataOffset;
96 UINT TxRate;
97 dma_addr_t data_dma; // urb dma on linux
98
99} TX_CONTEXT, *PTX_CONTEXT, **PPTX_CONTEXT;
100
101
102// used to track driver-generated write irps
103typedef struct _HT_TX_CONTEXT
104{
105 PVOID pAd; //Initialized in MiniportInitialize
106 PURB pUrb; //Initialized in MiniportInitialize
107 PIRP pIrp; //used to cancel pending bulk out.
108 //Initialized in MiniportInitialize
109 PHTTX_BUFFER TransferBuffer; //Initialized in MiniportInitialize
110 ULONG BulkOutSize; // Indicate the total bulk-out size in bytes in one bulk-transmission
111 UCHAR BulkOutPipeId;
112 BOOLEAN IRPPending;
113 BOOLEAN LastOne;
114 BOOLEAN bCurWriting;
115 BOOLEAN bRingEmpty;
116 BOOLEAN bCopySavePad;
117 UCHAR SavedPad[8];
118 UCHAR Header_802_3[LENGTH_802_3];
119 ULONG CurWritePosition; // Indicate the buffer offset which packet will be inserted start from.
120 ULONG CurWriteRealPos; // Indicate the buffer offset which packet now are writing to.
121 ULONG NextBulkOutPosition; // Indicate the buffer start offset of a bulk-transmission
122 ULONG ENextBulkOutPosition; // Indicate the buffer end offset of a bulk-transmission
123 UINT TxRate;
124 dma_addr_t data_dma; // urb dma on linux
125} HT_TX_CONTEXT, *PHT_TX_CONTEXT, **PPHT_TX_CONTEXT;
126 51
127 52
128// 53#if defined(AP_WSC_INCLUDED) || defined(STA_WSC_INCLUDED)
129// Structure to keep track of receive packets and buffers to indicate 54#define WSC_INCLUDED
130// receive data to the protocol. 55#endif
131//
132typedef struct _RX_CONTEXT
133{
134 PUCHAR TransferBuffer;
135 PVOID pAd;
136 PIRP pIrp;//used to cancel pending bulk in.
137 PURB pUrb;
138 //These 2 Boolean shouldn't both be 1 at the same time.
139 ULONG BulkInOffset; // number of packets waiting for reordering .
140 BOOLEAN bRxHandling; // Notify this packet is being process now.
141 BOOLEAN InUse; // USB Hardware Occupied. Wait for USB HW to put packet.
142 BOOLEAN Readable; // Receive Complete back. OK for driver to indicate receiving packet.
143 BOOLEAN IRPPending; // TODO: To be removed
144 atomic_t IrpLock;
145 NDIS_SPIN_LOCK RxContextLock;
146 dma_addr_t data_dma; // urb dma on linux
147} RX_CONTEXT, *PRX_CONTEXT;
148#endif // RT2870 //
149 56
57#include "rtmp_chip.h"
150 58
151//
152// NDIS Version definitions
153//
154#ifdef NDIS50_MINIPORT
155#define RTMP_NDIS_MAJOR_VERSION 5
156#define RTMP_NDIS_MINOR_VERSION 0
157#endif
158 59
159#ifdef NDIS51_MINIPORT
160#define RTMP_NDIS_MAJOR_VERSION 5
161#define RTMP_NDIS_MINOR_VERSION 1
162#endif
163 60
164extern char NIC_VENDOR_DESC[]; 61typedef struct _RTMP_ADAPTER RTMP_ADAPTER;
165extern int NIC_VENDOR_DESC_LEN; 62typedef struct _RTMP_ADAPTER *PRTMP_ADAPTER;
63
64typedef struct _RTMP_CHIP_OP_ RTMP_CHIP_OP;
65
66
67//#define DBG 1
68
69//#define DBG_DIAGNOSE 1
70
71
72//+++Add by shiang for merge MiniportMMRequest() and MiniportDataMMRequest() into one function
73#define MAX_DATAMM_RETRY 3
74#define MGMT_USE_QUEUE_FLAG 0x80
75//---Add by shiang for merge MiniportMMRequest() and MiniportDataMMRequest() into one function
76
77#define MAXSEQ (0xFFF)
166 78
167extern unsigned char SNAP_AIRONET[]; 79extern unsigned char SNAP_AIRONET[];
168extern unsigned char CipherSuiteCiscoCCKM[];
169extern unsigned char CipherSuiteCiscoCCKMLen;
170extern unsigned char CipherSuiteCiscoCCKM24[];
171extern unsigned char CipherSuiteCiscoCCKM24Len;
172extern unsigned char CipherSuiteCCXTkip[];
173extern unsigned char CipherSuiteCCXTkipLen;
174extern unsigned char CISCO_OUI[]; 80extern unsigned char CISCO_OUI[];
175extern UCHAR BaSizeArray[4]; 81extern UCHAR BaSizeArray[4];
176 82
177extern UCHAR BROADCAST_ADDR[MAC_ADDR_LEN]; 83extern UCHAR BROADCAST_ADDR[MAC_ADDR_LEN];
178extern UCHAR MULTICAST_ADDR[MAC_ADDR_LEN];
179extern UCHAR ZERO_MAC_ADDR[MAC_ADDR_LEN]; 84extern UCHAR ZERO_MAC_ADDR[MAC_ADDR_LEN];
180extern ULONG BIT32[32]; 85extern ULONG BIT32[32];
181extern UCHAR BIT8[8]; 86extern UCHAR BIT8[8];
@@ -231,9 +136,11 @@ extern UCHAR WpaIe;
231extern UCHAR Wpa2Ie; 136extern UCHAR Wpa2Ie;
232extern UCHAR IbssIe; 137extern UCHAR IbssIe;
233extern UCHAR Ccx2Ie; 138extern UCHAR Ccx2Ie;
139extern UCHAR WapiIe;
234 140
235extern UCHAR WPA_OUI[]; 141extern UCHAR WPA_OUI[];
236extern UCHAR RSN_OUI[]; 142extern UCHAR RSN_OUI[];
143extern UCHAR WAPI_OUI[];
237extern UCHAR WME_INFO_ELEM[]; 144extern UCHAR WME_INFO_ELEM[];
238extern UCHAR WME_PARM_ELEM[]; 145extern UCHAR WME_PARM_ELEM[];
239extern UCHAR Ccx2QosInfo[]; 146extern UCHAR Ccx2QosInfo[];
@@ -256,28 +163,8 @@ extern UCHAR RateSwitchTable11N2SForABand[];
256 163
257extern UCHAR PRE_N_HT_OUI[]; 164extern UCHAR PRE_N_HT_OUI[];
258 165
259#define MAXSEQ (0xFFF)
260
261struct reordering_mpdu
262{
263 struct reordering_mpdu *next;
264 PNDIS_PACKET pPacket; /* coverted to 802.3 frame */
265 int Sequence; /* sequence number of MPDU */
266 BOOLEAN bAMSDU;
267};
268 166
269struct reordering_list
270{
271 struct reordering_mpdu *next;
272 int qlen;
273};
274 167
275struct reordering_mpdu_pool
276{
277 PVOID mem;
278 NDIS_SPIN_LOCK lock;
279 struct reordering_list freelist;
280};
281 168
282typedef struct _RSSI_SAMPLE { 169typedef struct _RSSI_SAMPLE {
283 CHAR LastRssi0; // last received RSSI 170 CHAR LastRssi0; // last received RSSI
@@ -318,6 +205,7 @@ typedef struct _QUEUE_HEADER {
318 if ((QueueHeader)->Head != NULL) \ 205 if ((QueueHeader)->Head != NULL) \
319 { \ 206 { \
320 pNext = (QueueHeader)->Head->Next; \ 207 pNext = (QueueHeader)->Head->Next; \
208 (QueueHeader)->Head->Next = NULL; \
321 (QueueHeader)->Head = pNext; \ 209 (QueueHeader)->Head = pNext; \
322 if (pNext == NULL) \ 210 if (pNext == NULL) \
323 (QueueHeader)->Tail = NULL; \ 211 (QueueHeader)->Tail = NULL; \
@@ -345,6 +233,19 @@ typedef struct _QUEUE_HEADER {
345 (QueueHeader)->Number++; \ 233 (QueueHeader)->Number++; \
346} 234}
347 235
236#define InsertTailQueueAc(pAd, pEntry, QueueHeader, QueueEntry) \
237{ \
238 ((PQUEUE_ENTRY)QueueEntry)->Next = NULL; \
239 if ((QueueHeader)->Tail) \
240 (QueueHeader)->Tail->Next = (PQUEUE_ENTRY)(QueueEntry); \
241 else \
242 (QueueHeader)->Head = (PQUEUE_ENTRY)(QueueEntry); \
243 (QueueHeader)->Tail = (PQUEUE_ENTRY)(QueueEntry); \
244 (QueueHeader)->Number++; \
245}
246
247
248
348// 249//
349// Macros for flag and ref count operations 250// Macros for flag and ref count operations
350// 251//
@@ -353,15 +254,12 @@ typedef struct _QUEUE_HEADER {
353#define RTMP_CLEAR_FLAGS(_M) ((_M)->Flags = 0) 254#define RTMP_CLEAR_FLAGS(_M) ((_M)->Flags = 0)
354#define RTMP_TEST_FLAG(_M, _F) (((_M)->Flags & (_F)) != 0) 255#define RTMP_TEST_FLAG(_M, _F) (((_M)->Flags & (_F)) != 0)
355#define RTMP_TEST_FLAGS(_M, _F) (((_M)->Flags & (_F)) == (_F)) 256#define RTMP_TEST_FLAGS(_M, _F) (((_M)->Flags & (_F)) == (_F))
356
357#ifdef RT2860
358// Macro for power save flag. 257// Macro for power save flag.
359#define RTMP_SET_PSFLAG(_M, _F) ((_M)->PSFlags |= (_F)) 258#define RTMP_SET_PSFLAG(_M, _F) ((_M)->PSFlags |= (_F))
360#define RTMP_CLEAR_PSFLAG(_M, _F) ((_M)->PSFlags &= ~(_F)) 259#define RTMP_CLEAR_PSFLAG(_M, _F) ((_M)->PSFlags &= ~(_F))
361#define RTMP_CLEAR_PSFLAGS(_M) ((_M)->PSFlags = 0) 260#define RTMP_CLEAR_PSFLAGS(_M) ((_M)->PSFlags = 0)
362#define RTMP_TEST_PSFLAG(_M, _F) (((_M)->PSFlags & (_F)) != 0) 261#define RTMP_TEST_PSFLAG(_M, _F) (((_M)->PSFlags & (_F)) != 0)
363#define RTMP_TEST_PSFLAGS(_M, _F) (((_M)->PSFlags & (_F)) == (_F)) 262#define RTMP_TEST_PSFLAGS(_M, _F) (((_M)->PSFlags & (_F)) == (_F))
364#endif
365 263
366#define OPSTATUS_SET_FLAG(_pAd, _F) ((_pAd)->CommonCfg.OpStatusFlags |= (_F)) 264#define OPSTATUS_SET_FLAG(_pAd, _F) ((_pAd)->CommonCfg.OpStatusFlags |= (_F))
367#define OPSTATUS_CLEAR_FLAG(_pAd, _F) ((_pAd)->CommonCfg.OpStatusFlags &= ~(_F)) 265#define OPSTATUS_CLEAR_FLAG(_pAd, _F) ((_pAd)->CommonCfg.OpStatusFlags &= ~(_F))
@@ -391,51 +289,6 @@ typedef struct _QUEUE_HEADER {
391 (_idx) = (_idx+1) % (_RingSize); \ 289 (_idx) = (_idx+1) % (_RingSize); \
392} 290}
393 291
394#ifdef RT2870
395// We will have a cost down version which mac version is 0x3090xxxx
396#define IS_RT3090(_pAd) ((((_pAd)->MACVersion & 0xffff0000) == 0x30710000) || (((_pAd)->MACVersion & 0xffff0000) == 0x30900000))
397#else
398#define IS_RT3090(_pAd) 0
399#endif
400#define IS_RT3070(_pAd) (((_pAd)->MACVersion & 0xffff0000) == 0x30700000)
401#ifdef RT2870
402#define IS_RT3071(_pAd) (((_pAd)->MACVersion & 0xffff0000) == 0x30710000)
403#define IS_RT30xx(_pAd) (((_pAd)->MACVersion & 0xfff00000) == 0x30700000)
404#endif
405
406#define RING_PACKET_INIT(_TxRing, _idx) \
407{ \
408 _TxRing->Cell[_idx].pNdisPacket = NULL; \
409 _TxRing->Cell[_idx].pNextNdisPacket = NULL; \
410}
411
412#define TXDT_INIT(_TxD) \
413{ \
414 NdisZeroMemory(_TxD, TXD_SIZE); \
415 _TxD->DMADONE = 1; \
416}
417
418//Set last data segment
419#define RING_SET_LASTDS(_TxD, _IsSD0) \
420{ \
421 if (_IsSD0) {_TxD->LastSec0 = 1;} \
422 else {_TxD->LastSec1 = 1;} \
423}
424
425// Increase TxTsc value for next transmission
426// TODO:
427// When i==6, means TSC has done one full cycle, do re-keying stuff follow specs
428// Should send a special event microsoft defined to request re-key
429#define INC_TX_TSC(_tsc) \
430{ \
431 int i=0; \
432 while (++_tsc[i] == 0x0) \
433 { \
434 i++; \
435 if (i == 6) \
436 break; \
437 } \
438}
439 292
440// StaActive.SupportedHtPhy.MCSSet is copied from AP beacon. Don't need to update here. 293// StaActive.SupportedHtPhy.MCSSet is copied from AP beacon. Don't need to update here.
441#define COPY_HTSETTINGS_FROM_MLME_AUX_TO_ACTIVE_CFG(_pAd) \ 294#define COPY_HTSETTINGS_FROM_MLME_AUX_TO_ACTIVE_CFG(_pAd) \
@@ -475,301 +328,12 @@ typedef struct _QUEUE_HEADER {
475// ULONG Value) 328// ULONG Value)
476// 329//
477 330
478//
479// BBP & RF are using indirect access. Before write any value into it.
480// We have to make sure there is no outstanding command pending via checking busy bit.
481//
482#define MAX_BUSY_COUNT 100 // Number of retry before failing access BBP & RF indirect register
483//
484#ifdef RT2860
485#define RTMP_RF_IO_WRITE32(_A, _V) \
486{ \
487 PHY_CSR4_STRUC Value; \
488 ULONG BusyCnt = 0; \
489 if ((_A)->bPCIclkOff) \
490 { \
491 return; \
492 } \
493 do { \
494 RTMP_IO_READ32(_A, RF_CSR_CFG0, &Value.word); \
495 if (Value.field.Busy == IDLE) \
496 break; \
497 BusyCnt++; \
498 } while (BusyCnt < MAX_BUSY_COUNT); \
499 if (BusyCnt < MAX_BUSY_COUNT) \
500 { \
501 RTMP_IO_WRITE32(_A, RF_CSR_CFG0, _V); \
502 } \
503}
504
505#define BBP_IO_READ8_BY_REG_ID(_A, _I, _pV) \
506{ \
507 BBP_CSR_CFG_STRUC BbpCsr; \
508 int i, k; \
509 for (i=0; i<MAX_BUSY_COUNT; i++) \
510 { \
511 RTMP_IO_READ32(_A, BBP_CSR_CFG, &BbpCsr.word); \
512 if (BbpCsr.field.Busy == BUSY) \
513 { \
514 continue; \
515 } \
516 BbpCsr.word = 0; \
517 BbpCsr.field.fRead = 1; \
518 BbpCsr.field.BBP_RW_MODE = 1; \
519 BbpCsr.field.Busy = 1; \
520 BbpCsr.field.RegNum = _I; \
521 RTMP_IO_WRITE32(_A, BBP_CSR_CFG, BbpCsr.word); \
522 for (k=0; k<MAX_BUSY_COUNT; k++) \
523 { \
524 RTMP_IO_READ32(_A, BBP_CSR_CFG, &BbpCsr.word); \
525 if (BbpCsr.field.Busy == IDLE) \
526 break; \
527 } \
528 if ((BbpCsr.field.Busy == IDLE) && \
529 (BbpCsr.field.RegNum == _I)) \
530 { \
531 *(_pV) = (UCHAR)BbpCsr.field.Value; \
532 break; \
533 } \
534 } \
535 if (BbpCsr.field.Busy == BUSY) \
536 { \
537 DBGPRINT_ERR(("DFS BBP read R%d fail\n", _I)); \
538 *(_pV) = (_A)->BbpWriteLatch[_I]; \
539 } \
540}
541
542//#define RTMP_BBP_IO_READ8_BY_REG_ID(_A, _I, _pV) {}
543// Read BBP register by register's ID. Generate PER to test BA
544#define RTMP_BBP_IO_READ8_BY_REG_ID(_A, _I, _pV) \
545{ \
546 BBP_CSR_CFG_STRUC BbpCsr; \
547 int i, k; \
548 if ((_A)->bPCIclkOff == FALSE) \
549 { \
550 for (i=0; i<MAX_BUSY_COUNT; i++) \
551 { \
552 RTMP_IO_READ32(_A, H2M_BBP_AGENT, &BbpCsr.word); \
553 if (BbpCsr.field.Busy == BUSY) \
554 { \
555 continue; \
556 } \
557 BbpCsr.word = 0; \
558 BbpCsr.field.fRead = 1; \
559 BbpCsr.field.BBP_RW_MODE = 1; \
560 BbpCsr.field.Busy = 1; \
561 BbpCsr.field.RegNum = _I; \
562 RTMP_IO_WRITE32(_A, H2M_BBP_AGENT, BbpCsr.word); \
563 AsicSendCommandToMcu(_A, 0x80, 0xff, 0x0, 0x0); \
564 RTMPusecDelay(1000); \
565 for (k=0; k<MAX_BUSY_COUNT; k++) \
566 { \
567 RTMP_IO_READ32(_A, H2M_BBP_AGENT, &BbpCsr.word); \
568 if (BbpCsr.field.Busy == IDLE) \
569 break; \
570 } \
571 if ((BbpCsr.field.Busy == IDLE) && \
572 (BbpCsr.field.RegNum == _I)) \
573 { \
574 *(_pV) = (UCHAR)BbpCsr.field.Value; \
575 break; \
576 } \
577 } \
578 if (BbpCsr.field.Busy == BUSY) \
579 { \
580 DBGPRINT_ERR(("BBP read R%d=0x%x fail\n", _I, BbpCsr.word)); \
581 *(_pV) = (_A)->BbpWriteLatch[_I]; \
582 RTMP_IO_READ32(_A, H2M_BBP_AGENT, &BbpCsr.word); \
583 BbpCsr.field.Busy = 0; \
584 RTMP_IO_WRITE32(_A, H2M_BBP_AGENT, BbpCsr.word); \
585 } \
586 } \
587}
588
589#define BBP_IO_WRITE8_BY_REG_ID(_A, _I, _V) \
590{ \
591 BBP_CSR_CFG_STRUC BbpCsr; \
592 int BusyCnt; \
593 for (BusyCnt=0; BusyCnt<MAX_BUSY_COUNT; BusyCnt++) \
594 { \
595 RTMP_IO_READ32(_A, BBP_CSR_CFG, &BbpCsr.word); \
596 if (BbpCsr.field.Busy == BUSY) \
597 continue; \
598 BbpCsr.word = 0; \
599 BbpCsr.field.fRead = 0; \
600 BbpCsr.field.BBP_RW_MODE = 1; \
601 BbpCsr.field.Busy = 1; \
602 BbpCsr.field.Value = _V; \
603 BbpCsr.field.RegNum = _I; \
604 RTMP_IO_WRITE32(_A, BBP_CSR_CFG, BbpCsr.word); \
605 (_A)->BbpWriteLatch[_I] = _V; \
606 break; \
607 } \
608 if (BusyCnt == MAX_BUSY_COUNT) \
609 { \
610 DBGPRINT_ERR(("BBP write R%d fail\n", _I)); \
611 } \
612}
613
614// Write BBP register by register's ID & value
615#define RTMP_BBP_IO_WRITE8_BY_REG_ID(_A, _I, _V) \
616{ \
617 BBP_CSR_CFG_STRUC BbpCsr; \
618 int BusyCnt; \
619 if ((_A)->bPCIclkOff == FALSE) \
620 { \
621 for (BusyCnt=0; BusyCnt<MAX_BUSY_COUNT; BusyCnt++) \
622 { \
623 RTMP_IO_READ32(_A, H2M_BBP_AGENT, &BbpCsr.word); \
624 if (BbpCsr.field.Busy == BUSY) \
625 continue; \
626 BbpCsr.word = 0; \
627 BbpCsr.field.fRead = 0; \
628 BbpCsr.field.BBP_RW_MODE = 1; \
629 BbpCsr.field.Busy = 1; \
630 BbpCsr.field.Value = _V; \
631 BbpCsr.field.RegNum = _I; \
632 RTMP_IO_WRITE32(_A, H2M_BBP_AGENT, BbpCsr.word); \
633 AsicSendCommandToMcu(_A, 0x80, 0xff, 0x0, 0x0); \
634 if (_A->OpMode == OPMODE_AP) \
635 RTMPusecDelay(1000); \
636 (_A)->BbpWriteLatch[_I] = _V; \
637 break; \
638 } \
639 if (BusyCnt == MAX_BUSY_COUNT) \
640 { \
641 DBGPRINT_ERR(("BBP write R%d=0x%x fail\n", _I, BbpCsr.word)); \
642 RTMP_IO_READ32(_A, H2M_BBP_AGENT, &BbpCsr.word); \
643 BbpCsr.field.Busy = 0; \
644 RTMP_IO_WRITE32(_A, H2M_BBP_AGENT, BbpCsr.word); \
645 } \
646 } \
647}
648#endif /* RT2860 */
649#ifdef RT2870
650#define RTMP_RF_IO_WRITE32(_A, _V) RTUSBWriteRFRegister(_A, _V)
651#define RTMP_BBP_IO_READ8_BY_REG_ID(_A, _I, _pV) RTUSBReadBBPRegister(_A, _I, _pV)
652#define RTMP_BBP_IO_WRITE8_BY_REG_ID(_A, _I, _V) RTUSBWriteBBPRegister(_A, _I, _V)
653
654#define BBP_IO_WRITE8_BY_REG_ID(_A, _I, _V) RTUSBWriteBBPRegister(_A, _I, _V)
655#define BBP_IO_READ8_BY_REG_ID(_A, _I, _pV) RTUSBReadBBPRegister(_A, _I, _pV)
656#endif // RT2870 //
657
658#define MAP_CHANNEL_ID_TO_KHZ(ch, khz) { \
659 switch (ch) \
660 { \
661 case 1: khz = 2412000; break; \
662 case 2: khz = 2417000; break; \
663 case 3: khz = 2422000; break; \
664 case 4: khz = 2427000; break; \
665 case 5: khz = 2432000; break; \
666 case 6: khz = 2437000; break; \
667 case 7: khz = 2442000; break; \
668 case 8: khz = 2447000; break; \
669 case 9: khz = 2452000; break; \
670 case 10: khz = 2457000; break; \
671 case 11: khz = 2462000; break; \
672 case 12: khz = 2467000; break; \
673 case 13: khz = 2472000; break; \
674 case 14: khz = 2484000; break; \
675 case 36: /* UNII */ khz = 5180000; break; \
676 case 40: /* UNII */ khz = 5200000; break; \
677 case 44: /* UNII */ khz = 5220000; break; \
678 case 48: /* UNII */ khz = 5240000; break; \
679 case 52: /* UNII */ khz = 5260000; break; \
680 case 56: /* UNII */ khz = 5280000; break; \
681 case 60: /* UNII */ khz = 5300000; break; \
682 case 64: /* UNII */ khz = 5320000; break; \
683 case 149: /* UNII */ khz = 5745000; break; \
684 case 153: /* UNII */ khz = 5765000; break; \
685 case 157: /* UNII */ khz = 5785000; break; \
686 case 161: /* UNII */ khz = 5805000; break; \
687 case 165: /* UNII */ khz = 5825000; break; \
688 case 100: /* HiperLAN2 */ khz = 5500000; break; \
689 case 104: /* HiperLAN2 */ khz = 5520000; break; \
690 case 108: /* HiperLAN2 */ khz = 5540000; break; \
691 case 112: /* HiperLAN2 */ khz = 5560000; break; \
692 case 116: /* HiperLAN2 */ khz = 5580000; break; \
693 case 120: /* HiperLAN2 */ khz = 5600000; break; \
694 case 124: /* HiperLAN2 */ khz = 5620000; break; \
695 case 128: /* HiperLAN2 */ khz = 5640000; break; \
696 case 132: /* HiperLAN2 */ khz = 5660000; break; \
697 case 136: /* HiperLAN2 */ khz = 5680000; break; \
698 case 140: /* HiperLAN2 */ khz = 5700000; break; \
699 case 34: /* Japan MMAC */ khz = 5170000; break; \
700 case 38: /* Japan MMAC */ khz = 5190000; break; \
701 case 42: /* Japan MMAC */ khz = 5210000; break; \
702 case 46: /* Japan MMAC */ khz = 5230000; break; \
703 case 184: /* Japan */ khz = 4920000; break; \
704 case 188: /* Japan */ khz = 4940000; break; \
705 case 192: /* Japan */ khz = 4960000; break; \
706 case 196: /* Japan */ khz = 4980000; break; \
707 case 208: /* Japan, means J08 */ khz = 5040000; break; \
708 case 212: /* Japan, means J12 */ khz = 5060000; break; \
709 case 216: /* Japan, means J16 */ khz = 5080000; break; \
710 default: khz = 2412000; break; \
711 } \
712 }
713
714#define MAP_KHZ_TO_CHANNEL_ID(khz, ch) { \
715 switch (khz) \
716 { \
717 case 2412000: ch = 1; break; \
718 case 2417000: ch = 2; break; \
719 case 2422000: ch = 3; break; \
720 case 2427000: ch = 4; break; \
721 case 2432000: ch = 5; break; \
722 case 2437000: ch = 6; break; \
723 case 2442000: ch = 7; break; \
724 case 2447000: ch = 8; break; \
725 case 2452000: ch = 9; break; \
726 case 2457000: ch = 10; break; \
727 case 2462000: ch = 11; break; \
728 case 2467000: ch = 12; break; \
729 case 2472000: ch = 13; break; \
730 case 2484000: ch = 14; break; \
731 case 5180000: ch = 36; /* UNII */ break; \
732 case 5200000: ch = 40; /* UNII */ break; \
733 case 5220000: ch = 44; /* UNII */ break; \
734 case 5240000: ch = 48; /* UNII */ break; \
735 case 5260000: ch = 52; /* UNII */ break; \
736 case 5280000: ch = 56; /* UNII */ break; \
737 case 5300000: ch = 60; /* UNII */ break; \
738 case 5320000: ch = 64; /* UNII */ break; \
739 case 5745000: ch = 149; /* UNII */ break; \
740 case 5765000: ch = 153; /* UNII */ break; \
741 case 5785000: ch = 157; /* UNII */ break; \
742 case 5805000: ch = 161; /* UNII */ break; \
743 case 5825000: ch = 165; /* UNII */ break; \
744 case 5500000: ch = 100; /* HiperLAN2 */ break; \
745 case 5520000: ch = 104; /* HiperLAN2 */ break; \
746 case 5540000: ch = 108; /* HiperLAN2 */ break; \
747 case 5560000: ch = 112; /* HiperLAN2 */ break; \
748 case 5580000: ch = 116; /* HiperLAN2 */ break; \
749 case 5600000: ch = 120; /* HiperLAN2 */ break; \
750 case 5620000: ch = 124; /* HiperLAN2 */ break; \
751 case 5640000: ch = 128; /* HiperLAN2 */ break; \
752 case 5660000: ch = 132; /* HiperLAN2 */ break; \
753 case 5680000: ch = 136; /* HiperLAN2 */ break; \
754 case 5700000: ch = 140; /* HiperLAN2 */ break; \
755 case 5170000: ch = 34; /* Japan MMAC */ break; \
756 case 5190000: ch = 38; /* Japan MMAC */ break; \
757 case 5210000: ch = 42; /* Japan MMAC */ break; \
758 case 5230000: ch = 46; /* Japan MMAC */ break; \
759 case 4920000: ch = 184; /* Japan */ break; \
760 case 4940000: ch = 188; /* Japan */ break; \
761 case 4960000: ch = 192; /* Japan */ break; \
762 case 4980000: ch = 196; /* Japan */ break; \
763 case 5040000: ch = 208; /* Japan, means J08 */ break; \
764 case 5060000: ch = 212; /* Japan, means J12 */ break; \
765 case 5080000: ch = 216; /* Japan, means J16 */ break; \
766 default: ch = 1; break; \
767 } \
768 }
769 331
770// 332//
771// Common fragment list structure - Identical to the scatter gather frag list structure 333// Common fragment list structure - Identical to the scatter gather frag list structure
772// 334//
335//#define RTMP_SCATTER_GATHER_ELEMENT SCATTER_GATHER_ELEMENT
336//#define PRTMP_SCATTER_GATHER_ELEMENT PSCATTER_GATHER_ELEMENT
773#define NIC_MAX_PHYS_BUF_COUNT 8 337#define NIC_MAX_PHYS_BUF_COUNT 8
774 338
775typedef struct _RTMP_SCATTER_GATHER_ELEMENT { 339typedef struct _RTMP_SCATTER_GATHER_ELEMENT {
@@ -893,18 +457,11 @@ typedef struct _RTMP_SCATTER_GATHER_LIST {
893 } \ 457 } \
894} 458}
895 459
896#define SWITCH_AB( _pAA, _pBB) \
897{ \
898 PVOID pCC; \
899 pCC = _pBB; \
900 _pBB = _pAA; \
901 _pAA = pCC; \
902}
903 460
904// Enqueue this frame to MLME engine 461// Enqueue this frame to MLME engine
905// We need to enqueue the whole frame because MLME need to pass data type 462// We need to enqueue the whole frame because MLME need to pass data type
906// information from 802.11 header 463// information from 802.11 header
907#ifdef RT2860 464#ifdef RTMP_MAC_PCI
908#define REPORT_MGMT_FRAME_TO_MLME(_pAd, Wcid, _pFrame, _FrameSize, _Rssi0, _Rssi1, _Rssi2, _PlcpSignal) \ 465#define REPORT_MGMT_FRAME_TO_MLME(_pAd, Wcid, _pFrame, _FrameSize, _Rssi0, _Rssi1, _Rssi2, _PlcpSignal) \
909{ \ 466{ \
910 UINT32 High32TSF, Low32TSF; \ 467 UINT32 High32TSF, Low32TSF; \
@@ -912,49 +469,14 @@ typedef struct _RTMP_SCATTER_GATHER_LIST {
912 RTMP_IO_READ32(_pAd, TSF_TIMER_DW0, &Low32TSF); \ 469 RTMP_IO_READ32(_pAd, TSF_TIMER_DW0, &Low32TSF); \
913 MlmeEnqueueForRecv(_pAd, Wcid, High32TSF, Low32TSF, (UCHAR)_Rssi0, (UCHAR)_Rssi1,(UCHAR)_Rssi2,_FrameSize, _pFrame, (UCHAR)_PlcpSignal); \ 470 MlmeEnqueueForRecv(_pAd, Wcid, High32TSF, Low32TSF, (UCHAR)_Rssi0, (UCHAR)_Rssi1,(UCHAR)_Rssi2,_FrameSize, _pFrame, (UCHAR)_PlcpSignal); \
914} 471}
915#endif 472#endif // RTMP_MAC_PCI //
916#ifdef RT2870 473#ifdef RTMP_MAC_USB
917#define REPORT_MGMT_FRAME_TO_MLME(_pAd, Wcid, _pFrame, _FrameSize, _Rssi0, _Rssi1, _Rssi2, _PlcpSignal) \ 474#define REPORT_MGMT_FRAME_TO_MLME(_pAd, Wcid, _pFrame, _FrameSize, _Rssi0, _Rssi1, _Rssi2, _PlcpSignal) \
918{ \ 475{ \
919 UINT32 High32TSF=0, Low32TSF=0; \ 476 UINT32 High32TSF=0, Low32TSF=0; \
920 MlmeEnqueueForRecv(_pAd, Wcid, High32TSF, Low32TSF, (UCHAR)_Rssi0, (UCHAR)_Rssi1,(UCHAR)_Rssi2,_FrameSize, _pFrame, (UCHAR)_PlcpSignal); \ 477 MlmeEnqueueForRecv(_pAd, Wcid, High32TSF, Low32TSF, (UCHAR)_Rssi0, (UCHAR)_Rssi1,(UCHAR)_Rssi2,_FrameSize, _pFrame, (UCHAR)_PlcpSignal); \
921} 478}
922#endif // RT2870 // 479#endif // RTMP_MAC_USB //
923
924//Need to collect each ant's rssi concurrently
925//rssi1 is report to pair2 Ant and rss2 is reprot to pair1 Ant when 4 Ant
926#define COLLECT_RX_ANTENNA_AVERAGE_RSSI(_pAd, _rssi1, _rssi2) \
927{ \
928 SHORT AvgRssi; \
929 UCHAR UsedAnt; \
930 if (_pAd->RxAnt.EvaluatePeriod == 0) \
931 { \
932 UsedAnt = _pAd->RxAnt.Pair1PrimaryRxAnt; \
933 AvgRssi = _pAd->RxAnt.Pair1AvgRssi[UsedAnt]; \
934 if (AvgRssi < 0) \
935 AvgRssi = AvgRssi - (AvgRssi >> 3) + _rssi1; \
936 else \
937 AvgRssi = _rssi1 << 3; \
938 _pAd->RxAnt.Pair1AvgRssi[UsedAnt] = AvgRssi; \
939 } \
940 else \
941 { \
942 UsedAnt = _pAd->RxAnt.Pair1SecondaryRxAnt; \
943 AvgRssi = _pAd->RxAnt.Pair1AvgRssi[UsedAnt]; \
944 if ((AvgRssi < 0) && (_pAd->RxAnt.FirstPktArrivedWhenEvaluate)) \
945 AvgRssi = AvgRssi - (AvgRssi >> 3) + _rssi1; \
946 else \
947 { \
948 _pAd->RxAnt.FirstPktArrivedWhenEvaluate = TRUE; \
949 AvgRssi = _rssi1 << 3; \
950 } \
951 _pAd->RxAnt.Pair1AvgRssi[UsedAnt] = AvgRssi; \
952 _pAd->RxAnt.RcvPktNumWhenEvaluate++; \
953 } \
954}
955
956#define NDIS_QUERY_BUFFER(_NdisBuf, _ppVA, _pBufLen) \
957 NdisQueryBuffer(_NdisBuf, _ppVA, _pBufLen)
958 480
959#define MAC_ADDR_EQUAL(pAddr1,pAddr2) RTMPEqualMemory((PVOID)(pAddr1), (PVOID)(pAddr2), MAC_ADDR_LEN) 481#define MAC_ADDR_EQUAL(pAddr1,pAddr2) RTMPEqualMemory((PVOID)(pAddr1), (PVOID)(pAddr2), MAC_ADDR_LEN)
960#define SSID_EQUAL(ssid1, len1, ssid2, len2) ((len1==len2) && (RTMPEqualMemory(ssid1, ssid2, len1))) 482#define SSID_EQUAL(ssid1, len1, ssid2, len2) ((len1==len2) && (RTMPEqualMemory(ssid1, ssid2, len1)))
@@ -964,59 +486,21 @@ typedef struct _RTMP_SCATTER_GATHER_LIST {
964// 486//
965#define JapanChannelCheck(channel) ((channel == 52) || (channel == 56) || (channel == 60) || (channel == 64)) 487#define JapanChannelCheck(channel) ((channel == 52) || (channel == 56) || (channel == 60) || (channel == 64))
966 488
967#ifdef RT2860 489#define STA_EXTRA_SETTING(_pAd)
490
968#define STA_PORT_SECURED(_pAd) \ 491#define STA_PORT_SECURED(_pAd) \
969{ \ 492{ \
970 _pAd->StaCfg.PortSecured = WPA_802_1X_PORT_SECURED; \ 493 BOOLEAN Cancelled; \
971 RTMP_SET_PSFLAG(_pAd, fRTMP_PS_CAN_GO_SLEEP); \ 494 (_pAd)->StaCfg.PortSecured = WPA_802_1X_PORT_SECURED; \
972 NdisAcquireSpinLock(&(_pAd)->MacTabLock); \ 495 NdisAcquireSpinLock(&((_pAd)->MacTabLock)); \
973 _pAd->MacTab.Content[BSSID_WCID].PortSecured = _pAd->StaCfg.PortSecured; \ 496 (_pAd)->MacTab.Content[BSSID_WCID].PortSecured = (_pAd)->StaCfg.PortSecured; \
497 (_pAd)->MacTab.Content[BSSID_WCID].PrivacyFilter = Ndis802_11PrivFilterAcceptAll;\
974 NdisReleaseSpinLock(&(_pAd)->MacTabLock); \ 498 NdisReleaseSpinLock(&(_pAd)->MacTabLock); \
499 RTMPCancelTimer(&((_pAd)->Mlme.LinkDownTimer), &Cancelled);\
500 STA_EXTRA_SETTING(_pAd); \
975} 501}
976#endif
977#ifdef RT2870
978#define STA_PORT_SECURED(_pAd) \
979{ \
980 _pAd->StaCfg.PortSecured = WPA_802_1X_PORT_SECURED; \
981 NdisAcquireSpinLock(&_pAd->MacTabLock); \
982 _pAd->MacTab.Content[BSSID_WCID].PortSecured = _pAd->StaCfg.PortSecured; \
983 NdisReleaseSpinLock(&_pAd->MacTabLock); \
984}
985#endif
986
987//
988// Register set pair for initialzation register set definition
989//
990typedef struct _RTMP_REG_PAIR
991{
992 ULONG Register;
993 ULONG Value;
994} RTMP_REG_PAIR, *PRTMP_REG_PAIR;
995 502
996typedef struct _REG_PAIR
997{
998 UCHAR Register;
999 UCHAR Value;
1000} REG_PAIR, *PREG_PAIR;
1001 503
1002//
1003// Register set pair for initialzation register set definition
1004//
1005typedef struct _RTMP_RF_REGS
1006{
1007 UCHAR Channel;
1008 ULONG R1;
1009 ULONG R2;
1010 ULONG R3;
1011 ULONG R4;
1012} RTMP_RF_REGS, *PRTMP_RF_REGS;
1013
1014typedef struct _FREQUENCY_ITEM {
1015 UCHAR Channel;
1016 UCHAR N;
1017 UCHAR R;
1018 UCHAR K;
1019} FREQUENCY_ITEM, *PFREQUENCY_ITEM;
1020 504
1021// 505//
1022// Data buffer for DMA operation, the buffer must be contiguous physical memory 506// Data buffer for DMA operation, the buffer must be contiguous physical memory
@@ -1030,35 +514,6 @@ typedef struct _RTMP_DMABUF
1030} RTMP_DMABUF, *PRTMP_DMABUF; 514} RTMP_DMABUF, *PRTMP_DMABUF;
1031 515
1032 516
1033typedef union _HEADER_802_11_SEQ{
1034 struct {
1035 USHORT Frag:4;
1036 USHORT Sequence:12;
1037 } field;
1038 USHORT value;
1039} HEADER_802_11_SEQ, *PHEADER_802_11_SEQ;
1040
1041//
1042// Data buffer for DMA operation, the buffer must be contiguous physical memory
1043// Both DMA to / from CPU use the same structure.
1044//
1045typedef struct _RTMP_REORDERBUF
1046{
1047 BOOLEAN IsFull;
1048 PVOID AllocVa; // TxBuf virtual address
1049 UCHAR Header802_3[14];
1050 HEADER_802_11_SEQ Sequence; //support compressed bitmap BA, so no consider fragment in BA
1051 UCHAR DataOffset;
1052 USHORT Datasize;
1053 ULONG AllocSize;
1054#ifdef RT2860
1055 NDIS_PHYSICAL_ADDRESS AllocPa; // TxBuf physical address
1056#endif
1057#ifdef RT2870
1058 PUCHAR AllocPa;
1059#endif // RT2870 //
1060} RTMP_REORDERBUF, *PRTMP_REORDERBUF;
1061
1062// 517//
1063// Control block (Descriptor) for all ring descriptor DMA operation, buffer must be 518// Control block (Descriptor) for all ring descriptor DMA operation, buffer must be
1064// contiguous physical memory. NDIS_PACKET stored the binding Rx packet descriptor 519// contiguous physical memory. NDIS_PACKET stored the binding Rx packet descriptor
@@ -1078,21 +533,7 @@ typedef struct _RTMP_DMACB
1078 RTMP_DMABUF DmaBuf; // Associated DMA buffer structure 533 RTMP_DMABUF DmaBuf; // Associated DMA buffer structure
1079} RTMP_DMACB, *PRTMP_DMACB; 534} RTMP_DMACB, *PRTMP_DMACB;
1080 535
1081typedef struct _RTMP_TX_BUF
1082{
1083 PQUEUE_ENTRY Next;
1084 UCHAR Index;
1085 ULONG AllocSize; // Control block size
1086 PVOID AllocVa; // Control block virtual address
1087 NDIS_PHYSICAL_ADDRESS AllocPa; // Control block physical address
1088} RTMP_TXBUF, *PRTMP_TXBUF;
1089 536
1090typedef struct _RTMP_RX_BUF
1091{
1092 BOOLEAN InUse;
1093 ULONG ByBaRecIndex;
1094 RTMP_REORDERBUF MAP_RXBuf[MAX_RX_REORDERBUF];
1095} RTMP_RXBUF, *PRTMP_RXBUF;
1096typedef struct _RTMP_TX_RING 537typedef struct _RTMP_TX_RING
1097{ 538{
1098 RTMP_DMACB Cell[TX_RING_SIZE]; 539 RTMP_DMACB Cell[TX_RING_SIZE];
@@ -1155,9 +596,6 @@ typedef struct _COUNTER_802_11 {
1155 596
1156typedef struct _COUNTER_RALINK { 597typedef struct _COUNTER_RALINK {
1157 ULONG TransmittedByteCount; // both successful and failure, used to calculate TX throughput 598 ULONG TransmittedByteCount; // both successful and failure, used to calculate TX throughput
1158#ifdef RT2860
1159 ULONG LastReceivedByteCount;
1160#endif
1161 ULONG ReceivedByteCount; // both CRC okay and CRC error, used to calculate RX throughput 599 ULONG ReceivedByteCount; // both CRC okay and CRC error, used to calculate RX throughput
1162 ULONG BeenDisassociatedCount; 600 ULONG BeenDisassociatedCount;
1163 ULONG BadCQIAutoRecoveryCount; 601 ULONG BadCQIAutoRecoveryCount;
@@ -1177,13 +615,10 @@ typedef struct _COUNTER_RALINK {
1177 ULONG OneSecRxCount; 615 ULONG OneSecRxCount;
1178 UINT32 OneSecTxAggregationCount; 616 UINT32 OneSecTxAggregationCount;
1179 UINT32 OneSecRxAggregationCount; 617 UINT32 OneSecRxAggregationCount;
1180 618 UINT32 OneSecReceivedByteCount;
1181 UINT32 OneSecFrameDuplicateCount; 619 UINT32 OneSecFrameDuplicateCount;
1182 620
1183#ifdef RT2870 621 UINT32 OneSecTransmittedByteCount; // both successful and failure, used to calculate TX throughput
1184 ULONG OneSecTransmittedByteCount; // both successful and failure, used to calculate TX throughput
1185#endif // RT2870 //
1186
1187 UINT32 OneSecTxNoRetryOkCount; 622 UINT32 OneSecTxNoRetryOkCount;
1188 UINT32 OneSecTxRetryOkCount; 623 UINT32 OneSecTxRetryOkCount;
1189 UINT32 OneSecTxFailCount; 624 UINT32 OneSecTxFailCount;
@@ -1224,12 +659,6 @@ typedef struct _COUNTER_RALINK {
1224 LARGE_INTEGER MPDUInReceivedAMPDUCount; 659 LARGE_INTEGER MPDUInReceivedAMPDUCount;
1225} COUNTER_RALINK, *PCOUNTER_RALINK; 660} COUNTER_RALINK, *PCOUNTER_RALINK;
1226 661
1227typedef struct _PID_COUNTER {
1228 ULONG TxAckRequiredCount; // CRC error
1229 ULONG TxAggreCount;
1230 ULONG TxSuccessCount; // OneSecTxNoRetryOkCount + OneSecTxRetryOkCount + OneSecTxFailCount
1231 ULONG LastSuccessRate;
1232} PID_COUNTER, *PPID_COUNTER;
1233 662
1234typedef struct _COUNTER_DRS { 663typedef struct _COUNTER_DRS {
1235 // to record the each TX rate's quality. 0 is best, the bigger the worse. 664 // to record the each TX rate's quality. 0 is best, the bigger the worse.
@@ -1244,33 +673,12 @@ typedef struct _COUNTER_DRS {
1244 ULONG LastTxOkCount; 673 ULONG LastTxOkCount;
1245} COUNTER_DRS, *PCOUNTER_DRS; 674} COUNTER_DRS, *PCOUNTER_DRS;
1246 675
1247//
1248// Arcfour Structure Added by PaulWu
1249//
1250typedef struct _ARCFOUR
1251{
1252 UINT X;
1253 UINT Y;
1254 UCHAR STATE[256];
1255} ARCFOURCONTEXT, *PARCFOURCONTEXT;
1256 676
1257// MIMO Tx parameter, ShortGI, MCS, STBC, etc. these are fields in TXWI too. just copy to TXWI.
1258typedef struct _RECEIVE_SETTING {
1259 USHORT NumOfRX:2; // MIMO. WE HAVE 3R
1260 USHORT Mode:2; //channel bandwidth 20MHz or 40 MHz
1261 USHORT ShortGI:1;
1262 USHORT STBC:2; //SPACE
1263 USHORT rsv:3;
1264 USHORT OFDM:1;
1265 USHORT MIMO:1;
1266 } RECEIVE_SETTING, *PRECEIVE_SETTING;
1267
1268// Shared key data structure
1269typedef struct _WEP_KEY {
1270 UCHAR KeyLen; // Key length for each key, 0: entry is invalid
1271 UCHAR Key[MAX_LEN_OF_KEY]; // right now we implement 4 keys, 128 bits max
1272} WEP_KEY, *PWEP_KEY;
1273 677
678
679/***************************************************************************
680 * security key related data structure
681 **************************************************************************/
1274typedef struct _CIPHER_KEY { 682typedef struct _CIPHER_KEY {
1275 UCHAR Key[16]; // right now we implement 4 keys, 128 bits max 683 UCHAR Key[16]; // right now we implement 4 keys, 128 bits max
1276 UCHAR RxMic[8]; // make alignment 684 UCHAR RxMic[8]; // make alignment
@@ -1284,42 +692,47 @@ typedef struct _CIPHER_KEY {
1284 UCHAR Type; // Indicate Pairwise/Group when reporting MIC error 692 UCHAR Type; // Indicate Pairwise/Group when reporting MIC error
1285} CIPHER_KEY, *PCIPHER_KEY; 693} CIPHER_KEY, *PCIPHER_KEY;
1286 694
1287typedef struct _BBP_TUNING_STRUCT {
1288 BOOLEAN Enable;
1289 UCHAR FalseCcaCountUpperBound; // 100 per sec
1290 UCHAR FalseCcaCountLowerBound; // 10 per sec
1291 UCHAR R17LowerBound; // specified in E2PROM
1292 UCHAR R17UpperBound; // 0x68 according to David Tung
1293 UCHAR CurrentR17Value;
1294} BBP_TUNING, *PBBP_TUNING;
1295 695
1296typedef struct _SOFT_RX_ANT_DIVERSITY_STRUCT { 696// structure to define WPA Group Key Rekey Interval
1297 UCHAR EvaluatePeriod; // 0:not evalute status, 1: evaluate status, 2: switching status 697typedef struct PACKED _RT_802_11_WPA_REKEY {
1298#ifdef RT2870 698 ULONG ReKeyMethod; // mechanism for rekeying: 0:disable, 1: time-based, 2: packet-based
1299 UCHAR EvaluateStableCnt; 699 ULONG ReKeyInterval; // time-based: seconds, packet-based: kilo-packets
1300#endif 700} RT_WPA_REKEY,*PRT_WPA_REKEY, RT_802_11_WPA_REKEY, *PRT_802_11_WPA_REKEY;
1301 UCHAR Pair1PrimaryRxAnt; // 0:Ant-E1, 1:Ant-E2
1302 UCHAR Pair1SecondaryRxAnt; // 0:Ant-E1, 1:Ant-E2
1303 UCHAR Pair2PrimaryRxAnt; // 0:Ant-E3, 1:Ant-E4
1304 UCHAR Pair2SecondaryRxAnt; // 0:Ant-E3, 1:Ant-E4
1305 SHORT Pair1AvgRssi[2]; // AvgRssi[0]:E1, AvgRssi[1]:E2
1306 SHORT Pair2AvgRssi[2]; // AvgRssi[0]:E3, AvgRssi[1]:E4
1307 SHORT Pair1LastAvgRssi; //
1308 SHORT Pair2LastAvgRssi; //
1309 ULONG RcvPktNumWhenEvaluate;
1310 BOOLEAN FirstPktArrivedWhenEvaluate;
1311 RALINK_TIMER_STRUCT RxAntDiversityTimer;
1312} SOFT_RX_ANT_DIVERSITY, *PSOFT_RX_ANT_DIVERSITY;
1313 701
1314typedef struct _LEAP_AUTH_INFO { 702#ifdef RTMP_MAC_USB
1315 BOOLEAN Enabled; //Ture: Enable LEAP Authentication 703/***************************************************************************
1316 BOOLEAN CCKM; //Ture: Use Fast Reauthentication with CCKM 704 * RTUSB I/O related data structure
1317 UCHAR Reserve[2]; 705 **************************************************************************/
1318 UCHAR UserName[256]; //LEAP, User name 706typedef struct _RT_SET_ASIC_WCID {
1319 ULONG UserNameLen; 707 ULONG WCID; // mechanism for rekeying: 0:disable, 1: time-based, 2: packet-based
1320 UCHAR Password[256]; //LEAP, User Password 708 ULONG SetTid; // time-based: seconds, packet-based: kilo-packets
1321 ULONG PasswordLen; 709 ULONG DeleteTid; // time-based: seconds, packet-based: kilo-packets
1322} LEAP_AUTH_INFO, *PLEAP_AUTH_INFO; 710 UCHAR Addr[MAC_ADDR_LEN]; // avoid in interrupt when write key
711} RT_SET_ASIC_WCID,*PRT_SET_ASIC_WCID;
712
713typedef struct _RT_SET_ASIC_WCID_ATTRI {
714 ULONG WCID; // mechanism for rekeying: 0:disable, 1: time-based, 2: packet-based
715 ULONG Cipher; // ASIC Cipher definition
716 UCHAR Addr[ETH_LENGTH_OF_ADDRESS];
717} RT_SET_ASIC_WCID_ATTRI,*PRT_SET_ASIC_WCID_ATTRI;
718
719// for USB interface, avoid in interrupt when write key
720typedef struct RT_ADD_PAIRWISE_KEY_ENTRY {
721 UCHAR MacAddr[6];
722 USHORT MacTabMatchWCID; // ASIC
723 CIPHER_KEY CipherKey;
724} RT_ADD_PAIRWISE_KEY_ENTRY,*PRT_ADD_PAIRWISE_KEY_ENTRY;
725
726// Cipher suite type for mixed mode group cipher, P802.11i-2004
727typedef enum _RT_802_11_CIPHER_SUITE_TYPE {
728 Cipher_Type_NONE,
729 Cipher_Type_WEP40,
730 Cipher_Type_TKIP,
731 Cipher_Type_RSVD,
732 Cipher_Type_CCMP,
733 Cipher_Type_WEP104
734} RT_802_11_CIPHER_SUITE_TYPE, *PRT_802_11_CIPHER_SUITE_TYPE;
735#endif // RTMP_MAC_USB //
1323 736
1324typedef struct { 737typedef struct {
1325 UCHAR Addr[MAC_ADDR_LEN]; 738 UCHAR Addr[MAC_ADDR_LEN];
@@ -1335,25 +748,30 @@ typedef struct {
1335 ROGUEAP_ENTRY RogueApEntry[MAX_LEN_OF_BSS_TABLE]; 748 ROGUEAP_ENTRY RogueApEntry[MAX_LEN_OF_BSS_TABLE];
1336} ROGUEAP_TABLE, *PROGUEAP_TABLE; 749} ROGUEAP_TABLE, *PROGUEAP_TABLE;
1337 750
1338typedef struct {
1339 BOOLEAN Enable;
1340 UCHAR Delta;
1341 BOOLEAN PlusSign;
1342} CCK_TX_POWER_CALIBRATE, *PCCK_TX_POWER_CALIBRATE;
1343
1344// 751//
1345// Receive Tuple Cache Format 752// Cisco IAPP format
1346// 753//
1347typedef struct _TUPLE_CACHE { 754typedef struct _CISCO_IAPP_CONTENT_
1348 BOOLEAN Valid; 755{
1349 UCHAR MacAddress[MAC_ADDR_LEN]; 756 USHORT Length; //IAPP Length
1350 USHORT Sequence; 757 UCHAR MessageType; //IAPP type
1351 USHORT Frag; 758 UCHAR FunctionCode; //IAPP function type
1352} TUPLE_CACHE, *PTUPLE_CACHE; 759 UCHAR DestinaionMAC[MAC_ADDR_LEN];
760 UCHAR SourceMAC[MAC_ADDR_LEN];
761 USHORT Tag; //Tag(element IE) - Adjacent AP report
762 USHORT TagLength; //Length of element not including 4 byte header
763 UCHAR OUI[4]; //0x00, 0x40, 0x96, 0x00
764 UCHAR PreviousAP[MAC_ADDR_LEN]; //MAC Address of access point
765 USHORT Channel;
766 USHORT SsidLen;
767 UCHAR Ssid[MAX_LEN_OF_SSID];
768 USHORT Seconds; //Seconds that the client has been disassociated.
769} CISCO_IAPP_CONTENT, *PCISCO_IAPP_CONTENT;
1353 770
1354// 771
1355// Fragment Frame structure 772/*
1356// 773 * Fragment Frame structure
774 */
1357typedef struct _FRAGMENT_FRAME { 775typedef struct _FRAGMENT_FRAME {
1358 PNDIS_PACKET pFragPacket; 776 PNDIS_PACKET pFragPacket;
1359 ULONG RxSize; 777 ULONG RxSize;
@@ -1373,6 +791,18 @@ typedef struct _PACKET_INFO {
1373 PNDIS_BUFFER pFirstBuffer; // Pointer to first buffer descriptor 791 PNDIS_BUFFER pFirstBuffer; // Pointer to first buffer descriptor
1374} PACKET_INFO, *PPACKET_INFO; 792} PACKET_INFO, *PPACKET_INFO;
1375 793
794
795//
796// Arcfour Structure Added by PaulWu
797//
798typedef struct _ARCFOUR
799{
800 UINT X;
801 UINT Y;
802 UCHAR STATE[256];
803} ARCFOURCONTEXT, *PARCFOURCONTEXT;
804
805
1376// 806//
1377// Tkip Key structure which RC4 key & MIC calculation 807// Tkip Key structure which RC4 key & MIC calculation
1378// 808//
@@ -1404,6 +834,10 @@ typedef struct __PRIVATE_STRUC {
1404 TKIP_KEY_INFO Rx; 834 TKIP_KEY_INFO Rx;
1405} PRIVATE_STRUC, *PPRIVATE_STRUC; 835} PRIVATE_STRUC, *PPRIVATE_STRUC;
1406 836
837
838/***************************************************************************
839 * Channel and BBP related data structures
840 **************************************************************************/
1407// structure to tune BBP R66 (BBP TUNING) 841// structure to tune BBP R66 (BBP TUNING)
1408typedef struct _BBP_R66_TUNING { 842typedef struct _BBP_R66_TUNING {
1409 BOOLEAN bEnable; 843 BOOLEAN bEnable;
@@ -1433,12 +867,56 @@ typedef struct _CHANNEL_11J_TX_POWER {
1433 USHORT RemainingTimeForUse; //unit: sec 867 USHORT RemainingTimeForUse; //unit: sec
1434} CHANNEL_11J_TX_POWER, *PCHANNEL_11J_TX_POWER; 868} CHANNEL_11J_TX_POWER, *PCHANNEL_11J_TX_POWER;
1435 869
870typedef struct _SOFT_RX_ANT_DIVERSITY_STRUCT {
871 UCHAR EvaluatePeriod; // 0:not evalute status, 1: evaluate status, 2: switching status
872 UCHAR EvaluateStableCnt;
873 UCHAR Pair1PrimaryRxAnt; // 0:Ant-E1, 1:Ant-E2
874 UCHAR Pair1SecondaryRxAnt; // 0:Ant-E1, 1:Ant-E2
875 UCHAR Pair2PrimaryRxAnt; // 0:Ant-E3, 1:Ant-E4
876 UCHAR Pair2SecondaryRxAnt; // 0:Ant-E3, 1:Ant-E4
877 SHORT Pair1AvgRssi[2]; // AvgRssi[0]:E1, AvgRssi[1]:E2
878 SHORT Pair2AvgRssi[2]; // AvgRssi[0]:E3, AvgRssi[1]:E4
879 SHORT Pair1LastAvgRssi; //
880 SHORT Pair2LastAvgRssi; //
881 ULONG RcvPktNumWhenEvaluate;
882 BOOLEAN FirstPktArrivedWhenEvaluate;
883 RALINK_TIMER_STRUCT RxAntDiversityTimer;
884} SOFT_RX_ANT_DIVERSITY, *PSOFT_RX_ANT_DIVERSITY;
885
886
887/***************************************************************************
888 * structure for radar detection and channel switch
889 **************************************************************************/
890typedef struct _RADAR_DETECT_STRUCT {
891 //BOOLEAN IEEE80211H; // 0: disable, 1: enable IEEE802.11h
892 UCHAR CSCount; //Channel switch counter
893 UCHAR CSPeriod; //Channel switch period (beacon count)
894 UCHAR RDCount; //Radar detection counter
895 UCHAR RDMode; //Radar Detection mode
896 UCHAR RDDurRegion; //Radar detection duration region
897 UCHAR BBPR16;
898 UCHAR BBPR17;
899 UCHAR BBPR18;
900 UCHAR BBPR21;
901 UCHAR BBPR22;
902 UCHAR BBPR64;
903 ULONG InServiceMonitorCount; // unit: sec
904 UINT8 DfsSessionTime;
905 BOOLEAN bFastDfs;
906 UINT8 ChMovingTime;
907 UINT8 LongPulseRadarTh;
908} RADAR_DETECT_STRUCT, *PRADAR_DETECT_STRUCT;
909
1436typedef enum _ABGBAND_STATE_ { 910typedef enum _ABGBAND_STATE_ {
1437 UNKNOWN_BAND, 911 UNKNOWN_BAND,
1438 BG_BAND, 912 BG_BAND,
1439 A_BAND, 913 A_BAND,
1440} ABGBAND_STATE; 914} ABGBAND_STATE;
1441 915
916
917/***************************************************************************
918 * structure for MLME state machine
919 **************************************************************************/
1442typedef struct _MLME_STRUCT { 920typedef struct _MLME_STRUCT {
1443 // STA state machines 921 // STA state machines
1444 STATE_MACHINE CntlMachine; 922 STATE_MACHINE CntlMachine;
@@ -1448,17 +926,23 @@ typedef struct _MLME_STRUCT {
1448 STATE_MACHINE SyncMachine; 926 STATE_MACHINE SyncMachine;
1449 STATE_MACHINE WpaPskMachine; 927 STATE_MACHINE WpaPskMachine;
1450 STATE_MACHINE LeapMachine; 928 STATE_MACHINE LeapMachine;
1451 STATE_MACHINE AironetMachine;
1452 STATE_MACHINE_FUNC AssocFunc[ASSOC_FUNC_SIZE]; 929 STATE_MACHINE_FUNC AssocFunc[ASSOC_FUNC_SIZE];
1453 STATE_MACHINE_FUNC AuthFunc[AUTH_FUNC_SIZE]; 930 STATE_MACHINE_FUNC AuthFunc[AUTH_FUNC_SIZE];
1454 STATE_MACHINE_FUNC AuthRspFunc[AUTH_RSP_FUNC_SIZE]; 931 STATE_MACHINE_FUNC AuthRspFunc[AUTH_RSP_FUNC_SIZE];
1455 STATE_MACHINE_FUNC SyncFunc[SYNC_FUNC_SIZE]; 932 STATE_MACHINE_FUNC SyncFunc[SYNC_FUNC_SIZE];
1456 STATE_MACHINE_FUNC WpaPskFunc[WPA_PSK_FUNC_SIZE];
1457 STATE_MACHINE_FUNC AironetFunc[AIRONET_FUNC_SIZE];
1458 STATE_MACHINE_FUNC ActFunc[ACT_FUNC_SIZE]; 933 STATE_MACHINE_FUNC ActFunc[ACT_FUNC_SIZE];
1459 // Action 934 // Action
1460 STATE_MACHINE ActMachine; 935 STATE_MACHINE ActMachine;
1461 936
937
938
939
940 // common WPA state machine
941 STATE_MACHINE WpaMachine;
942 STATE_MACHINE_FUNC WpaFunc[WPA_FUNC_SIZE];
943
944
945
1462 ULONG ChannelQuality; // 0..100, Channel Quality Indication for Roaming 946 ULONG ChannelQuality; // 0..100, Channel Quality Indication for Roaming
1463 ULONG Now32; // latch the value of NdisGetSystemUpTime() 947 ULONG Now32; // latch the value of NdisGetSystemUpTime()
1464 ULONG LastSendNULLpsmTime; 948 ULONG LastSendNULLpsmTime;
@@ -1473,11 +957,11 @@ typedef struct _MLME_STRUCT {
1473 RALINK_TIMER_STRUCT APSDPeriodicTimer; 957 RALINK_TIMER_STRUCT APSDPeriodicTimer;
1474 RALINK_TIMER_STRUCT LinkDownTimer; 958 RALINK_TIMER_STRUCT LinkDownTimer;
1475 RALINK_TIMER_STRUCT LinkUpTimer; 959 RALINK_TIMER_STRUCT LinkUpTimer;
1476#ifdef RT2860 960#ifdef RTMP_MAC_PCI
1477 UCHAR bPsPollTimerRunning; 961 UCHAR bPsPollTimerRunning;
1478 RALINK_TIMER_STRUCT PsPollTimer; 962 RALINK_TIMER_STRUCT PsPollTimer;
1479 RALINK_TIMER_STRUCT RadioOnOffTimer; 963 RALINK_TIMER_STRUCT RadioOnOffTimer;
1480#endif 964#endif // RTMP_MAC_PCI //
1481 ULONG PeriodicRound; 965 ULONG PeriodicRound;
1482 ULONG OneSecPeriodicRound; 966 ULONG OneSecPeriodicRound;
1483 967
@@ -1486,31 +970,41 @@ typedef struct _MLME_STRUCT {
1486 BOOLEAN bEnableAutoAntennaCheck; 970 BOOLEAN bEnableAutoAntennaCheck;
1487 RALINK_TIMER_STRUCT RxAntEvalTimer; 971 RALINK_TIMER_STRUCT RxAntEvalTimer;
1488 972
1489#ifdef RT2870 973#ifdef RT30xx
1490 UCHAR CaliBW40RfR24; 974 UCHAR CaliBW40RfR24;
1491 UCHAR CaliBW20RfR24; 975 UCHAR CaliBW20RfR24;
1492#endif // RT2870 // 976#endif // RT30xx //
977
978#ifdef RTMP_MAC_USB
979 RALINK_TIMER_STRUCT AutoWakeupTimer;
980 BOOLEAN AutoWakeupTimerRunning;
981#endif // RTMP_MAC_USB //
1493} MLME_STRUCT, *PMLME_STRUCT; 982} MLME_STRUCT, *PMLME_STRUCT;
1494 983
1495// structure for radar detection and channel switch 984
1496typedef struct _RADAR_DETECT_STRUCT { 985/***************************************************************************
1497 UCHAR CSCount; //Channel switch counter 986 * 802.11 N related data structures
1498 UCHAR CSPeriod; //Channel switch period (beacon count) 987 **************************************************************************/
1499 UCHAR RDCount; //Radar detection counter 988struct reordering_mpdu
1500 UCHAR RDMode; //Radar Detection mode 989{
1501 UCHAR RDDurRegion; //Radar detection duration region 990 struct reordering_mpdu *next;
1502 UCHAR BBPR16; 991 PNDIS_PACKET pPacket; /* coverted to 802.3 frame */
1503 UCHAR BBPR17; 992 int Sequence; /* sequence number of MPDU */
1504 UCHAR BBPR18; 993 BOOLEAN bAMSDU;
1505 UCHAR BBPR21; 994};
1506 UCHAR BBPR22; 995
1507 UCHAR BBPR64; 996struct reordering_list
1508 ULONG InServiceMonitorCount; // unit: sec 997{
1509 UINT8 DfsSessionTime; 998 struct reordering_mpdu *next;
1510 BOOLEAN bFastDfs; 999 int qlen;
1511 UINT8 ChMovingTime; 1000};
1512 UINT8 LongPulseRadarTh; 1001
1513} RADAR_DETECT_STRUCT, *PRADAR_DETECT_STRUCT; 1002struct reordering_mpdu_pool
1003{
1004 PVOID mem;
1005 NDIS_SPIN_LOCK lock;
1006 struct reordering_list freelist;
1007};
1514 1008
1515typedef enum _REC_BLOCKACK_STATUS 1009typedef enum _REC_BLOCKACK_STATUS
1516{ 1010{
@@ -1545,14 +1039,21 @@ typedef struct _BA_REC_ENTRY {
1545 UCHAR Wcid; 1039 UCHAR Wcid;
1546 UCHAR TID; 1040 UCHAR TID;
1547 UCHAR BAWinSize; // 7.3.1.14. each buffer is capable of holding a max AMSDU or MSDU. 1041 UCHAR BAWinSize; // 7.3.1.14. each buffer is capable of holding a max AMSDU or MSDU.
1042 //UCHAR NumOfRxPkt;
1043 //UCHAR Curindidx; // the head in the RX reordering buffer
1548 USHORT LastIndSeq; 1044 USHORT LastIndSeq;
1045// USHORT LastIndSeqAtTimer;
1549 USHORT TimeOutValue; 1046 USHORT TimeOutValue;
1550 RALINK_TIMER_STRUCT RECBATimer; 1047 RALINK_TIMER_STRUCT RECBATimer;
1551 ULONG LastIndSeqAtTimer; 1048 ULONG LastIndSeqAtTimer;
1552 ULONG nDropPacket; 1049 ULONG nDropPacket;
1553 ULONG rcvSeq; 1050 ULONG rcvSeq;
1554 REC_BLOCKACK_STATUS REC_BA_Status; 1051 REC_BLOCKACK_STATUS REC_BA_Status;
1052// UCHAR RxBufIdxUsed;
1053 // corresponding virtual address for RX reordering packet storage.
1054 //RTMP_REORDERDMABUF MAP_RXBuf[MAX_RX_REORDERBUF];
1555 NDIS_SPIN_LOCK RxReRingLock; // Rx Ring spinlock 1055 NDIS_SPIN_LOCK RxReRingLock; // Rx Ring spinlock
1056// struct _BA_REC_ENTRY *pNext;
1556 PVOID pAdapter; 1057 PVOID pAdapter;
1557 struct reordering_list list; 1058 struct reordering_list list;
1558} BA_REC_ENTRY, *PBA_REC_ENTRY; 1059} BA_REC_ENTRY, *PBA_REC_ENTRY;
@@ -1561,6 +1062,7 @@ typedef struct _BA_REC_ENTRY {
1561typedef struct { 1062typedef struct {
1562 ULONG numAsRecipient; // I am recipient of numAsRecipient clients. These client are in the BARecEntry[] 1063 ULONG numAsRecipient; // I am recipient of numAsRecipient clients. These client are in the BARecEntry[]
1563 ULONG numAsOriginator; // I am originator of numAsOriginator clients. These clients are in the BAOriEntry[] 1064 ULONG numAsOriginator; // I am originator of numAsOriginator clients. These clients are in the BAOriEntry[]
1065 ULONG numDoneOriginator; // count Done Originator sessions
1564 BA_ORI_ENTRY BAOriEntry[MAX_LEN_OF_BA_ORI_TABLE]; 1066 BA_ORI_ENTRY BAOriEntry[MAX_LEN_OF_BA_ORI_TABLE];
1565 BA_REC_ENTRY BARecEntry[MAX_LEN_OF_BA_REC_TABLE]; 1067 BA_REC_ENTRY BARecEntry[MAX_LEN_OF_BA_REC_TABLE];
1566} BA_TABLE, *PBA_TABLE; 1068} BA_TABLE, *PBA_TABLE;
@@ -1607,6 +1109,29 @@ typedef union _BACAP_STRUC {
1607 UINT32 word; 1109 UINT32 word;
1608} BACAP_STRUC, *PBACAP_STRUC; 1110} BACAP_STRUC, *PBACAP_STRUC;
1609 1111
1112
1113typedef struct {
1114 BOOLEAN IsRecipient;
1115 UCHAR MACAddr[MAC_ADDR_LEN];
1116 UCHAR TID;
1117 UCHAR nMSDU;
1118 USHORT TimeOut;
1119 BOOLEAN bAllTid; // If True, delete all TID for BA sessions with this MACaddr.
1120} OID_ADD_BA_ENTRY, *POID_ADD_BA_ENTRY;
1121
1122
1123
1124#define IS_HT_STA(_pMacEntry) \
1125 (_pMacEntry->MaxHTPhyMode.field.MODE >= MODE_HTMIX)
1126
1127#define IS_HT_RATE(_pMacEntry) \
1128 (_pMacEntry->HTPhyMode.field.MODE >= MODE_HTMIX)
1129
1130#define PEER_IS_HT_RATE(_pMacEntry) \
1131 (_pMacEntry->HTPhyMode.field.MODE >= MODE_HTMIX)
1132
1133
1134
1610//This structure is for all 802.11n card InterOptibilityTest action. Reset all Num every n second. (Details see MLMEPeriodic) 1135//This structure is for all 802.11n card InterOptibilityTest action. Reset all Num every n second. (Details see MLMEPeriodic)
1611typedef struct _IOT_STRUC { 1136typedef struct _IOT_STRUC {
1612 UCHAR Threshold[2]; 1137 UCHAR Threshold[2];
@@ -1630,6 +1155,8 @@ typedef struct _IOT_STRUC {
1630// This is the registry setting for 802.11n transmit setting. Used in advanced page. 1155// This is the registry setting for 802.11n transmit setting. Used in advanced page.
1631typedef union _REG_TRANSMIT_SETTING { 1156typedef union _REG_TRANSMIT_SETTING {
1632 struct { 1157 struct {
1158 //UINT32 PhyMode:4;
1159 //UINT32 MCS:7; // MCS
1633 UINT32 rsv0:10; 1160 UINT32 rsv0:10;
1634 UINT32 TxBF:1; 1161 UINT32 TxBF:1;
1635 UINT32 BW:1; //channel bandwidth 20MHz or 40 MHz 1162 UINT32 BW:1; //channel bandwidth 20MHz or 40 MHz
@@ -1653,18 +1180,26 @@ typedef union _DESIRED_TRANSMIT_SETTING {
1653 USHORT word; 1180 USHORT word;
1654 } DESIRED_TRANSMIT_SETTING, *PDESIRED_TRANSMIT_SETTING; 1181 } DESIRED_TRANSMIT_SETTING, *PDESIRED_TRANSMIT_SETTING;
1655 1182
1656typedef struct { 1183#ifdef RTMP_MAC_USB
1657 BOOLEAN IsRecipient; 1184/***************************************************************************
1658 UCHAR MACAddr[MAC_ADDR_LEN]; 1185 * USB-based chip Beacon related data structures
1659 UCHAR TID; 1186 **************************************************************************/
1660 UCHAR nMSDU; 1187#define BEACON_BITMAP_MASK 0xff
1661 USHORT TimeOut; 1188typedef struct _BEACON_SYNC_STRUCT_
1662 BOOLEAN bAllTid; // If True, delete all TID for BA sessions with this MACaddr. 1189{
1663} OID_ADD_BA_ENTRY, *POID_ADD_BA_ENTRY; 1190 UCHAR BeaconBuf[HW_BEACON_MAX_COUNT][HW_BEACON_OFFSET];
1191 UCHAR BeaconTxWI[HW_BEACON_MAX_COUNT][TXWI_SIZE];
1192 ULONG TimIELocationInBeacon[HW_BEACON_MAX_COUNT];
1193 ULONG CapabilityInfoLocationInBeacon[HW_BEACON_MAX_COUNT];
1194 BOOLEAN EnableBeacon; // trigger to enable beacon transmission.
1195 UCHAR BeaconBitMap; // NOTE: If the MAX_MBSSID_NUM is larger than 8, this parameter need to change.
1196 UCHAR DtimBitOn; // NOTE: If the MAX_MBSSID_NUM is larger than 8, this parameter need to change.
1197}BEACON_SYNC_STRUCT;
1198#endif // RTMP_MAC_USB //
1664 1199
1665// 1200/***************************************************************************
1666// Multiple SSID structure 1201 * Multiple SSID related data structures
1667// 1202 **************************************************************************/
1668#define WLAN_MAX_NUM_OF_TIM ((MAX_LEN_OF_MAC_TABLE >> 3) + 1) /* /8 + 1 */ 1203#define WLAN_MAX_NUM_OF_TIM ((MAX_LEN_OF_MAC_TABLE >> 3) + 1) /* /8 + 1 */
1669#define WLAN_CT_TIM_BCMC_OFFSET 0 /* unit: 32B */ 1204#define WLAN_CT_TIM_BCMC_OFFSET 0 /* unit: 32B */
1670 1205
@@ -1688,124 +1223,6 @@ typedef struct {
1688 UCHAR bit_offset = wcid & 0x7; \ 1223 UCHAR bit_offset = wcid & 0x7; \
1689 ad_p->ApCfg.MBSSID[apidx].TimBitmaps[tim_offset] |= BIT8[bit_offset]; } 1224 ad_p->ApCfg.MBSSID[apidx].TimBitmaps[tim_offset] |= BIT8[bit_offset]; }
1690 1225
1691#ifdef RT2870
1692#define BEACON_BITMAP_MASK 0xff
1693typedef struct _BEACON_SYNC_STRUCT_
1694{
1695 UCHAR BeaconBuf[HW_BEACON_MAX_COUNT][HW_BEACON_OFFSET];
1696 UCHAR BeaconTxWI[HW_BEACON_MAX_COUNT][TXWI_SIZE];
1697 ULONG TimIELocationInBeacon[HW_BEACON_MAX_COUNT];
1698 ULONG CapabilityInfoLocationInBeacon[HW_BEACON_MAX_COUNT];
1699 BOOLEAN EnableBeacon; // trigger to enable beacon transmission.
1700 UCHAR BeaconBitMap; // NOTE: If the MAX_MBSSID_NUM is larger than 8, this parameter need to change.
1701 UCHAR DtimBitOn; // NOTE: If the MAX_MBSSID_NUM is larger than 8, this parameter need to change.
1702}BEACON_SYNC_STRUCT;
1703#endif // RT2870 //
1704
1705typedef struct _MULTISSID_STRUCT {
1706 UCHAR Bssid[MAC_ADDR_LEN];
1707 UCHAR SsidLen;
1708 CHAR Ssid[MAX_LEN_OF_SSID];
1709 USHORT CapabilityInfo;
1710
1711 PNET_DEV MSSIDDev;
1712
1713 NDIS_802_11_AUTHENTICATION_MODE AuthMode;
1714 NDIS_802_11_WEP_STATUS WepStatus;
1715 NDIS_802_11_WEP_STATUS GroupKeyWepStatus;
1716 WPA_MIX_PAIR_CIPHER WpaMixPairCipher;
1717
1718 ULONG TxCount;
1719 ULONG RxCount;
1720 ULONG ReceivedByteCount;
1721 ULONG TransmittedByteCount;
1722 ULONG RxErrorCount;
1723 ULONG RxDropCount;
1724
1725 HTTRANSMIT_SETTING HTPhyMode, MaxHTPhyMode, MinHTPhyMode;// For transmit phy setting in TXWI.
1726 RT_HT_PHY_INFO DesiredHtPhyInfo;
1727 DESIRED_TRANSMIT_SETTING DesiredTransmitSetting; // Desired transmit setting. this is for reading registry setting only. not useful.
1728 BOOLEAN bAutoTxRateSwitch;
1729
1730 UCHAR DefaultKeyId;
1731
1732 UCHAR TxRate; // RATE_1, RATE_2, RATE_5_5, RATE_11, ...
1733 UCHAR DesiredRates[MAX_LEN_OF_SUPPORTED_RATES];// OID_802_11_DESIRED_RATES
1734 UCHAR DesiredRatesIndex;
1735 UCHAR MaxTxRate; // RATE_1, RATE_2, RATE_5_5, RATE_11
1736
1737 UCHAR TimBitmaps[WLAN_MAX_NUM_OF_TIM];
1738
1739 // WPA
1740 UCHAR GMK[32];
1741 UCHAR PMK[32];
1742 UCHAR GTK[32];
1743 BOOLEAN IEEE8021X;
1744 BOOLEAN PreAuth;
1745 UCHAR GNonce[32];
1746 UCHAR PortSecured;
1747 NDIS_802_11_PRIVACY_FILTER PrivacyFilter;
1748 UCHAR BANClass3Data;
1749 ULONG IsolateInterStaTraffic;
1750
1751 UCHAR RSNIE_Len[2];
1752 UCHAR RSN_IE[2][MAX_LEN_OF_RSNIE];
1753
1754
1755 UCHAR TimIELocationInBeacon;
1756 UCHAR CapabilityInfoLocationInBeacon;
1757 // outgoing BEACON frame buffer and corresponding TXWI
1758 // PTXWI_STRUC BeaconTxWI; //
1759 CHAR BeaconBuf[MAX_BEACON_SIZE]; // NOTE: BeaconBuf should be 4-byte aligned
1760
1761 BOOLEAN bHideSsid;
1762 UINT16 StationKeepAliveTime; // unit: second
1763
1764 USHORT VLAN_VID;
1765 USHORT VLAN_Priority;
1766
1767 RT_802_11_ACL AccessControlList;
1768
1769 // EDCA Qos
1770 BOOLEAN bWmmCapable; // 0:disable WMM, 1:enable WMM
1771 BOOLEAN bDLSCapable; // 0:disable DLS, 1:enable DLS
1772
1773 UCHAR DlsPTK[64]; // Due to windows dirver count on meetinghouse to handle 4-way shake
1774
1775 // For 802.1x daemon setting per BSS
1776 UCHAR radius_srv_num;
1777 RADIUS_SRV_INFO radius_srv_info[MAX_RADIUS_SRV_NUM];
1778
1779#ifdef RTL865X_SOC
1780 unsigned int mylinkid;
1781#endif
1782
1783
1784 UINT32 RcvdConflictSsidCount;
1785 UINT32 RcvdSpoofedAssocRespCount;
1786 UINT32 RcvdSpoofedReassocRespCount;
1787 UINT32 RcvdSpoofedProbeRespCount;
1788 UINT32 RcvdSpoofedBeaconCount;
1789 UINT32 RcvdSpoofedDisassocCount;
1790 UINT32 RcvdSpoofedAuthCount;
1791 UINT32 RcvdSpoofedDeauthCount;
1792 UINT32 RcvdSpoofedUnknownMgmtCount;
1793 UINT32 RcvdReplayAttackCount;
1794
1795 CHAR RssiOfRcvdConflictSsid;
1796 CHAR RssiOfRcvdSpoofedAssocResp;
1797 CHAR RssiOfRcvdSpoofedReassocResp;
1798 CHAR RssiOfRcvdSpoofedProbeResp;
1799 CHAR RssiOfRcvdSpoofedBeacon;
1800 CHAR RssiOfRcvdSpoofedDisassoc;
1801 CHAR RssiOfRcvdSpoofedAuth;
1802 CHAR RssiOfRcvdSpoofedDeauth;
1803 CHAR RssiOfRcvdSpoofedUnknownMgmt;
1804 CHAR RssiOfRcvdReplayAttack;
1805
1806 BOOLEAN bBcnSntReq;
1807 UCHAR BcnBufIdx;
1808} MULTISSID_STRUCT, *PMULTISSID_STRUCT;
1809 1226
1810// configuration common to OPMODE_AP as well as OPMODE_STA 1227// configuration common to OPMODE_AP as well as OPMODE_STA
1811typedef struct _COMMON_CONFIG { 1228typedef struct _COMMON_CONFIG {
@@ -1818,6 +1235,7 @@ typedef struct _COMMON_CONFIG {
1818 UCHAR PhyMode; // PHY_11A, PHY_11B, PHY_11BG_MIXED, PHY_ABG_MIXED 1235 UCHAR PhyMode; // PHY_11A, PHY_11B, PHY_11BG_MIXED, PHY_ABG_MIXED
1819 USHORT Dsifs; // in units of usec 1236 USHORT Dsifs; // in units of usec
1820 ULONG PacketFilter; // Packet filter for receiving 1237 ULONG PacketFilter; // Packet filter for receiving
1238 UINT8 RegulatoryClass;
1821 1239
1822 CHAR Ssid[MAX_LEN_OF_SSID]; // NOT NULL-terminated 1240 CHAR Ssid[MAX_LEN_OF_SSID]; // NOT NULL-terminated
1823 UCHAR SsidLen; // the actual ssid length in used 1241 UCHAR SsidLen; // the actual ssid length in used
@@ -1846,16 +1264,27 @@ typedef struct _COMMON_CONFIG {
1846 BOOLEAN bAPSDAC_BK; 1264 BOOLEAN bAPSDAC_BK;
1847 BOOLEAN bAPSDAC_VI; 1265 BOOLEAN bAPSDAC_VI;
1848 BOOLEAN bAPSDAC_VO; 1266 BOOLEAN bAPSDAC_VO;
1267
1268 /* because TSPEC can modify the APSD flag, we need to keep the APSD flag
1269 requested in association stage from the station;
1270 we need to recover the APSD flag after the TSPEC is deleted. */
1271 BOOLEAN bACMAPSDBackup[4]; /* for delivery-enabled & trigger-enabled both */
1272 BOOLEAN bACMAPSDTr[4]; /* no use */
1273
1849 BOOLEAN bNeedSendTriggerFrame; 1274 BOOLEAN bNeedSendTriggerFrame;
1850 BOOLEAN bAPSDForcePowerSave; // Force power save mode, should only use in APSD-STAUT 1275 BOOLEAN bAPSDForcePowerSave; // Force power save mode, should only use in APSD-STAUT
1851 ULONG TriggerTimerCount; 1276 ULONG TriggerTimerCount;
1852 UCHAR MaxSPLength; 1277 UCHAR MaxSPLength;
1853 UCHAR BBPCurrentBW; // BW_10, BW_20, BW_40 1278 UCHAR BBPCurrentBW; // BW_10, BW_20, BW_40
1279 // move to MULTISSID_STRUCT for MBSS
1280 //HTTRANSMIT_SETTING HTPhyMode, MaxHTPhyMode, MinHTPhyMode;// For transmit phy setting in TXWI.
1854 REG_TRANSMIT_SETTING RegTransmitSetting; //registry transmit setting. this is for reading registry setting only. not useful. 1281 REG_TRANSMIT_SETTING RegTransmitSetting; //registry transmit setting. this is for reading registry setting only. not useful.
1282 //UCHAR FixedTxMode; // Fixed Tx Mode (CCK, OFDM), for HT fixed tx mode (GF, MIX) , refer to RegTransmitSetting.field.HTMode
1855 UCHAR TxRate; // Same value to fill in TXD. TxRate is 6-bit 1283 UCHAR TxRate; // Same value to fill in TXD. TxRate is 6-bit
1856 UCHAR MaxTxRate; // RATE_1, RATE_2, RATE_5_5, RATE_11 1284 UCHAR MaxTxRate; // RATE_1, RATE_2, RATE_5_5, RATE_11
1857 UCHAR TxRateIndex; // Tx rate index in RateSwitchTable 1285 UCHAR TxRateIndex; // Tx rate index in RateSwitchTable
1858 UCHAR TxRateTableSize; // Valid Tx rate table size in RateSwitchTable 1286 UCHAR TxRateTableSize; // Valid Tx rate table size in RateSwitchTable
1287 //BOOLEAN bAutoTxRateSwitch;
1859 UCHAR MinTxRate; // RATE_1, RATE_2, RATE_5_5, RATE_11 1288 UCHAR MinTxRate; // RATE_1, RATE_2, RATE_5_5, RATE_11
1860 UCHAR RtsRate; // RATE_xxx 1289 UCHAR RtsRate; // RATE_xxx
1861 HTTRANSMIT_SETTING MlmeTransmit; // MGMT frame PHY rate setting when operatin at Ht rate. 1290 HTTRANSMIT_SETTING MlmeTransmit; // MGMT frame PHY rate setting when operatin at Ht rate.
@@ -1868,6 +1297,7 @@ typedef struct _COMMON_CONFIG {
1868 UCHAR TxPower; // in unit of mW 1297 UCHAR TxPower; // in unit of mW
1869 ULONG TxPowerPercentage; // 0~100 % 1298 ULONG TxPowerPercentage; // 0~100 %
1870 ULONG TxPowerDefault; // keep for TxPowerPercentage 1299 ULONG TxPowerDefault; // keep for TxPowerPercentage
1300 UINT8 PwrConstraint;
1871 1301
1872 BACAP_STRUC BACapability; // NO USE = 0XFF ; IMMED_BA =1 ; DELAY_BA=0 1302 BACAP_STRUC BACapability; // NO USE = 0XFF ; IMMED_BA =1 ; DELAY_BA=0
1873 BACAP_STRUC REGBACapability; // NO USE = 0XFF ; IMMED_BA =1 ; DELAY_BA=0 1303 BACAP_STRUC REGBACapability; // NO USE = 0XFF ; IMMED_BA =1 ; DELAY_BA=0
@@ -1877,7 +1307,7 @@ typedef struct _COMMON_CONFIG {
1877 BOOLEAN bUseZeroToDisableFragment; // Microsoft use 0 as disable 1307 BOOLEAN bUseZeroToDisableFragment; // Microsoft use 0 as disable
1878 ULONG UseBGProtection; // 0: auto, 1: always use, 2: always not use 1308 ULONG UseBGProtection; // 0: auto, 1: always use, 2: always not use
1879 BOOLEAN bUseShortSlotTime; // 0: disable, 1 - use short slot (9us) 1309 BOOLEAN bUseShortSlotTime; // 0: disable, 1 - use short slot (9us)
1880 BOOLEAN bEnableTxBurst; // 1: enble TX PACKET BURST, 0: disable TX PACKET BURST 1310 BOOLEAN bEnableTxBurst; // 1: enble TX PACKET BURST (when BA is established or AP is not a legacy WMM AP), 0: disable TX PACKET BURST
1881 BOOLEAN bAggregationCapable; // 1: enable TX aggregation when the peer supports it 1311 BOOLEAN bAggregationCapable; // 1: enable TX aggregation when the peer supports it
1882 BOOLEAN bPiggyBackCapable; // 1: enable TX piggy-back according MAC's version 1312 BOOLEAN bPiggyBackCapable; // 1: enable TX piggy-back according MAC's version
1883 BOOLEAN bIEEE80211H; // 1: enable IEEE802.11h spec. 1313 BOOLEAN bIEEE80211H; // 1: enable IEEE802.11h spec.
@@ -1916,6 +1346,9 @@ typedef struct _COMMON_CONFIG {
1916 BOOLEAN bHTProtect; 1346 BOOLEAN bHTProtect;
1917 BOOLEAN bMIMOPSEnable; 1347 BOOLEAN bMIMOPSEnable;
1918 BOOLEAN bBADecline; 1348 BOOLEAN bBADecline;
1349//2008/11/05: KH add to support Antenna power-saving of AP<--
1350 BOOLEAN bGreenAPEnable;
1351//2008/11/05: KH add to support Antenna power-saving of AP-->
1919 BOOLEAN bDisableReordering; 1352 BOOLEAN bDisableReordering;
1920 BOOLEAN bForty_Mhz_Intolerant; 1353 BOOLEAN bForty_Mhz_Intolerant;
1921 BOOLEAN bExtChannelSwitchAnnouncement; 1354 BOOLEAN bExtChannelSwitchAnnouncement;
@@ -1932,15 +1365,9 @@ typedef struct _COMMON_CONFIG {
1932 UCHAR TxStream; 1365 UCHAR TxStream;
1933 UCHAR RxStream; 1366 UCHAR RxStream;
1934 1367
1935 // transmit phy mode, trasmit rate for Multicast.
1936#ifdef MCAST_RATE_SPECIFIC
1937 UCHAR McastTransmitMcs;
1938 UCHAR McastTransmitPhyMode;
1939#endif // MCAST_RATE_SPECIFIC //
1940
1941 BOOLEAN bHardwareRadio; // Hardware controlled Radio enabled 1368 BOOLEAN bHardwareRadio; // Hardware controlled Radio enabled
1942 1369
1943#ifdef RT2870 1370#ifdef RTMP_MAC_USB
1944 BOOLEAN bMultipleIRP; // Multiple Bulk IN flag 1371 BOOLEAN bMultipleIRP; // Multiple Bulk IN flag
1945 UCHAR NumOfBulkInIRP; // if bMultipleIRP == TRUE, NumOfBulkInIRP will be 4 otherwise be 1 1372 UCHAR NumOfBulkInIRP; // if bMultipleIRP == TRUE, NumOfBulkInIRP will be 4 otherwise be 1
1946 RT_HT_CAPABILITY SupportedHtPhy; 1373 RT_HT_CAPABILITY SupportedHtPhy;
@@ -1948,13 +1375,13 @@ typedef struct _COMMON_CONFIG {
1948 UCHAR TxBulkFactor; 1375 UCHAR TxBulkFactor;
1949 UCHAR RxBulkFactor; 1376 UCHAR RxBulkFactor;
1950 1377
1378 BOOLEAN IsUpdateBeacon;
1951 BEACON_SYNC_STRUCT *pBeaconSync; 1379 BEACON_SYNC_STRUCT *pBeaconSync;
1952 RALINK_TIMER_STRUCT BeaconUpdateTimer; 1380 RALINK_TIMER_STRUCT BeaconUpdateTimer;
1953 UINT32 BeaconAdjust; 1381 UINT32 BeaconAdjust;
1954 UINT32 BeaconFactor; 1382 UINT32 BeaconFactor;
1955 UINT32 BeaconRemain; 1383 UINT32 BeaconRemain;
1956#endif // RT2870 // 1384#endif // RTMP_MAC_USB //
1957
1958 1385
1959 NDIS_SPIN_LOCK MeasureReqTabLock; 1386 NDIS_SPIN_LOCK MeasureReqTabLock;
1960 PMEASURE_REQ_TAB pMeasureReqTab; 1387 PMEASURE_REQ_TAB pMeasureReqTab;
@@ -1962,12 +1389,17 @@ typedef struct _COMMON_CONFIG {
1962 NDIS_SPIN_LOCK TpcReqTabLock; 1389 NDIS_SPIN_LOCK TpcReqTabLock;
1963 PTPC_REQ_TAB pTpcReqTab; 1390 PTPC_REQ_TAB pTpcReqTab;
1964 1391
1965 // transmit phy mode, trasmit rate for Multicast. 1392 BOOLEAN PSPXlink; // 0: Disable. 1: Enable
1966#ifdef MCAST_RATE_SPECIFIC 1393
1967 HTTRANSMIT_SETTING MCastPhyMode; 1394#if defined(RT305x)||defined(RT30xx)
1968#endif // MCAST_RATE_SPECIFIC // 1395 // request by Gary, for High Power issue
1396 UCHAR HighPowerPatchDisabled;
1397#endif
1398
1399 BOOLEAN HT_DisallowTKIP; /* Restrict the encryption type in 11n HT mode */
1969} COMMON_CONFIG, *PCOMMON_CONFIG; 1400} COMMON_CONFIG, *PCOMMON_CONFIG;
1970 1401
1402
1971/* Modified by Wu Xi-Kun 4/21/2006 */ 1403/* Modified by Wu Xi-Kun 4/21/2006 */
1972// STA configuration and status 1404// STA configuration and status
1973typedef struct _STA_ADMIN_CONFIG { 1405typedef struct _STA_ADMIN_CONFIG {
@@ -2016,6 +1448,8 @@ typedef struct _STA_ADMIN_CONFIG {
2016 1448
2017 NDIS_802_11_WEP_STATUS GroupKeyWepStatus; 1449 NDIS_802_11_WEP_STATUS GroupKeyWepStatus;
2018 1450
1451 UCHAR WpaPassPhrase[64]; // WPA PSK pass phrase
1452 UINT WpaPassPhraseLen; // the length of WPA PSK pass phrase
2019 UCHAR PMK[32]; // WPA PSK mode PMK 1453 UCHAR PMK[32]; // WPA PSK mode PMK
2020 UCHAR PTK[64]; // WPA PSK mode PTK 1454 UCHAR PTK[64]; // WPA PSK mode PTK
2021 UCHAR GTK[32]; // GTK from authenticator 1455 UCHAR GTK[32]; // GTK from authenticator
@@ -2055,11 +1489,7 @@ typedef struct _STA_ADMIN_CONFIG {
2055 BOOLEAN bRadio; // Radio state, And of Sw & Hw radio state 1489 BOOLEAN bRadio; // Radio state, And of Sw & Hw radio state
2056 BOOLEAN bHardwareRadio; // Hardware controlled Radio enabled 1490 BOOLEAN bHardwareRadio; // Hardware controlled Radio enabled
2057 BOOLEAN bShowHiddenSSID; // Show all known SSID in SSID list get operation 1491 BOOLEAN bShowHiddenSSID; // Show all known SSID in SSID list get operation
2058#ifdef RT2860 1492
2059 BOOLEAN AdhocBOnlyJoined; // Indicate Adhoc B Join.
2060 BOOLEAN AdhocBGJoined; // Indicate Adhoc B/G Join.
2061 BOOLEAN Adhoc20NJoined; // Indicate Adhoc 20MHz N Join.
2062#endif
2063 // New for WPA, windows want us to keep association information and 1493 // New for WPA, windows want us to keep association information and
2064 // Fixed IEs from last association response 1494 // Fixed IEs from last association response
2065 NDIS_802_11_ASSOCIATION_INFORMATION AssocInfo; 1495 NDIS_802_11_ASSOCIATION_INFORMATION AssocInfo;
@@ -2071,43 +1501,9 @@ typedef struct _STA_ADMIN_CONFIG {
2071 UCHAR RSNIE_Len; 1501 UCHAR RSNIE_Len;
2072 UCHAR RSN_IE[MAX_LEN_OF_RSNIE]; // The content saved here should be little-endian format. 1502 UCHAR RSN_IE[MAX_LEN_OF_RSNIE]; // The content saved here should be little-endian format.
2073 1503
2074 // New variables used for CCX 1.0
2075 BOOLEAN bCkipOn;
2076 BOOLEAN bCkipCmicOn;
2077 UCHAR CkipFlag;
2078 UCHAR GIV[3]; //for CCX iv
2079 UCHAR RxSEQ[4];
2080 UCHAR TxSEQ[4];
2081 UCHAR CKIPMIC[4];
2082 UCHAR LeapAuthMode;
2083 LEAP_AUTH_INFO LeapAuthInfo;
2084 UCHAR HashPwd[16];
2085 UCHAR NetworkChallenge[8];
2086 UCHAR NetworkChallengeResponse[24];
2087 UCHAR PeerChallenge[8];
2088
2089 UCHAR PeerChallengeResponse[24];
2090 UCHAR SessionKey[16]; //Network session keys (NSK)
2091 RALINK_TIMER_STRUCT LeapAuthTimer;
2092 ROGUEAP_TABLE RogueApTab; //Cisco CCX1 Rogue AP Detection
2093
2094 // New control flags for CCX
2095 CCX_CONTROL CCXControl; // Master administration state
2096 BOOLEAN CCXEnable; // Actual CCX state
2097 UCHAR CCXScanChannel; // Selected channel for CCX beacon request
2098 USHORT CCXScanTime; // Time out to wait for beacon and probe response
2099 UCHAR CCXReqType; // Current processing CCX request type
2100 BSS_TABLE CCXBssTab; // BSS Table
2101 UCHAR FrameReportBuf[2048]; // Buffer for creating frame report
2102 USHORT FrameReportLen; // Current Frame report length
2103 ULONG CLBusyBytes; // Save the total bytes received durning channel load scan time 1504 ULONG CLBusyBytes; // Save the total bytes received durning channel load scan time
2104 USHORT RPIDensity[8]; // Array for RPI density collection 1505 USHORT RPIDensity[8]; // Array for RPI density collection
2105 // Start address of each BSS table within FrameReportBuf 1506
2106 // It's important to update the RxPower of the corresponding Bss
2107 USHORT BssReportOffset[MAX_LEN_OF_BSS_TABLE];
2108 USHORT BeaconToken; // Token for beacon report
2109 ULONG LastBssIndex; // Most current reported Bss index
2110 RM_REQUEST_ACTION MeasurementRequest[16]; // Saved measurement request
2111 UCHAR RMReqCnt; // Number of measurement request saved. 1507 UCHAR RMReqCnt; // Number of measurement request saved.
2112 UCHAR CurrentRMReqIdx; // Number of measurement request saved. 1508 UCHAR CurrentRMReqIdx; // Number of measurement request saved.
2113 BOOLEAN ParallelReq; // Parallel measurement, only one request performed, 1509 BOOLEAN ParallelReq; // Parallel measurement, only one request performed,
@@ -2115,26 +1511,10 @@ typedef struct _STA_ADMIN_CONFIG {
2115 USHORT ParallelDuration; // Maximum duration for parallel measurement 1511 USHORT ParallelDuration; // Maximum duration for parallel measurement
2116 UCHAR ParallelChannel; // Only one channel with parallel measurement 1512 UCHAR ParallelChannel; // Only one channel with parallel measurement
2117 USHORT IAPPToken; // IAPP dialog token 1513 USHORT IAPPToken; // IAPP dialog token
2118 UCHAR CCXQosECWMin; // Cisco QOS ECWMin for AC 0
2119 UCHAR CCXQosECWMax; // Cisco QOS ECWMax for AC 0
2120 // Hack for channel load and noise histogram parameters 1514 // Hack for channel load and noise histogram parameters
2121 UCHAR NHFactor; // Parameter for Noise histogram 1515 UCHAR NHFactor; // Parameter for Noise histogram
2122 UCHAR CLFactor; // Parameter for channel load 1516 UCHAR CLFactor; // Parameter for channel load
2123 1517
2124 UCHAR KRK[16]; //Key Refresh Key.
2125 UCHAR BTK[32]; //Base Transient Key
2126 BOOLEAN CCKMLinkUpFlag;
2127 ULONG CCKMRN; //(Re)Association request number.
2128 LARGE_INTEGER CCKMBeaconAtJoinTimeStamp; //TSF timer for Re-assocaite to the new AP
2129 UCHAR AironetCellPowerLimit; //in dBm
2130 UCHAR AironetIPAddress[4]; //eg. 192.168.1.1
2131 BOOLEAN CCXAdjacentAPReportFlag; //flag for determining report Assoc Lost time
2132 CHAR CCXAdjacentAPSsid[MAX_LEN_OF_SSID]; //Adjacent AP's SSID report
2133 UCHAR CCXAdjacentAPSsidLen; // the actual ssid length in used
2134 UCHAR CCXAdjacentAPBssid[MAC_ADDR_LEN]; //Adjacent AP's BSSID report
2135 USHORT CCXAdjacentAPChannel;
2136 ULONG CCXAdjacentAPLinkDownTime; //for Spec S32.
2137
2138 RALINK_TIMER_STRUCT StaQuickResponeForRateUpTimer; 1518 RALINK_TIMER_STRUCT StaQuickResponeForRateUpTimer;
2139 BOOLEAN StaQuickResponeForRateUpTimerRunning; 1519 BOOLEAN StaQuickResponeForRateUpTimerRunning;
2140 1520
@@ -2148,7 +1528,7 @@ typedef struct _STA_ADMIN_CONFIG {
2148 1528
2149 RALINK_TIMER_STRUCT WpaDisassocAndBlockAssocTimer; 1529 RALINK_TIMER_STRUCT WpaDisassocAndBlockAssocTimer;
2150 // Fast Roaming 1530 // Fast Roaming
2151 BOOLEAN bFastRoaming; // 0:disable fast roaming, 1:enable fast roaming 1531 BOOLEAN bAutoRoaming; // 0:disable auto roaming by RSSI, 1:enable auto roaming by RSSI
2152 CHAR dBmToRoam; // the condition to roam when receiving Rssi less than this value. It's negative value. 1532 CHAR dBmToRoam; // the condition to roam when receiving Rssi less than this value. It's negative value.
2153 1533
2154 BOOLEAN IEEE8021X; 1534 BOOLEAN IEEE8021X;
@@ -2161,6 +1541,8 @@ typedef struct _STA_ADMIN_CONFIG {
2161 // 2: driver takes care of scanning, AP selection, and IEEE 802.11 association parameters 1541 // 2: driver takes care of scanning, AP selection, and IEEE 802.11 association parameters
2162 UCHAR WpaSupplicantUP; 1542 UCHAR WpaSupplicantUP;
2163 UCHAR WpaSupplicantScanCount; 1543 UCHAR WpaSupplicantScanCount;
1544 BOOLEAN bRSN_IE_FromWpaSupplicant;
1545 BOOLEAN bLostAp;
2164 1546
2165 CHAR dev_name[16]; 1547 CHAR dev_name[16];
2166 USHORT OriDevType; 1548 USHORT OriDevType;
@@ -2173,9 +1555,16 @@ typedef struct _STA_ADMIN_CONFIG {
2173 RT_HT_PHY_INFO DesiredHtPhyInfo; 1555 RT_HT_PHY_INFO DesiredHtPhyInfo;
2174 BOOLEAN bAutoTxRateSwitch; 1556 BOOLEAN bAutoTxRateSwitch;
2175 1557
2176#ifdef RT2860 1558#ifdef RTMP_MAC_PCI
2177 UCHAR BBPR3; 1559 UCHAR BBPR3;
2178#endif 1560#endif // RTMP_MAC_PCI //
1561
1562
1563
1564
1565 BOOLEAN bAutoConnectByBssid;
1566 ULONG BeaconLostTime; // seconds
1567 BOOLEAN bForceTxBurst; // 1: force enble TX PACKET BURST, 0: disable
2179} STA_ADMIN_CONFIG, *PSTA_ADMIN_CONFIG; 1568} STA_ADMIN_CONFIG, *PSTA_ADMIN_CONFIG;
2180 1569
2181// This data structure keep the current active BSS/IBSS's configuration that this STA 1570// This data structure keep the current active BSS/IBSS's configuration that this STA
@@ -2202,28 +1591,10 @@ typedef struct _STA_ACTIVE_CONFIG {
2202 RT_HT_CAPABILITY SupportedHtPhy; 1591 RT_HT_CAPABILITY SupportedHtPhy;
2203} STA_ACTIVE_CONFIG, *PSTA_ACTIVE_CONFIG; 1592} STA_ACTIVE_CONFIG, *PSTA_ACTIVE_CONFIG;
2204 1593
2205#ifdef RT2870
2206// for USB interface, avoid in interrupt when write key
2207typedef struct RT_ADD_PAIRWISE_KEY_ENTRY {
2208 NDIS_802_11_MAC_ADDRESS MacAddr;
2209 USHORT MacTabMatchWCID; // ASIC
2210 CIPHER_KEY CipherKey;
2211} RT_ADD_PAIRWISE_KEY_ENTRY,*PRT_ADD_PAIRWISE_KEY_ENTRY;
2212#endif // RT2870 //
2213 1594
2214// ----------- start of AP --------------------------
2215// AUTH-RSP State Machine Aux data structure
2216typedef struct _AP_MLME_AUX {
2217 UCHAR Addr[MAC_ADDR_LEN];
2218 USHORT Alg;
2219 CHAR Challenge[CIPHER_TEXT_LEN];
2220} AP_MLME_AUX, *PAP_MLME_AUX;
2221 1595
2222// structure to define WPA Group Key Rekey Interval 1596
2223typedef struct PACKED _RT_802_11_WPA_REKEY { 1597
2224 ULONG ReKeyMethod; // mechanism for rekeying: 0:disable, 1: time-based, 2: packet-based
2225 ULONG ReKeyInterval; // time-based: seconds, packet-based: kilo-packets
2226} RT_WPA_REKEY,*PRT_WPA_REKEY, RT_802_11_WPA_REKEY, *PRT_802_11_WPA_REKEY;
2227 1598
2228typedef struct _MAC_TABLE_ENTRY { 1599typedef struct _MAC_TABLE_ENTRY {
2229 //Choose 1 from ValidAsWDS and ValidAsCLI to validize. 1600 //Choose 1 from ValidAsWDS and ValidAsCLI to validize.
@@ -2243,6 +1614,7 @@ typedef struct _MAC_TABLE_ENTRY {
2243 UCHAR RSNIE_Len; 1614 UCHAR RSNIE_Len;
2244 UCHAR RSN_IE[MAX_LEN_OF_RSNIE]; 1615 UCHAR RSN_IE[MAX_LEN_OF_RSNIE];
2245 UCHAR ANonce[LEN_KEY_DESC_NONCE]; 1616 UCHAR ANonce[LEN_KEY_DESC_NONCE];
1617 UCHAR SNonce[LEN_KEY_DESC_NONCE];
2246 UCHAR R_Counter[LEN_KEY_DESC_REPLAY]; 1618 UCHAR R_Counter[LEN_KEY_DESC_REPLAY];
2247 UCHAR PTK[64]; 1619 UCHAR PTK[64];
2248 UCHAR ReTryCounter; 1620 UCHAR ReTryCounter;
@@ -2250,6 +1622,7 @@ typedef struct _MAC_TABLE_ENTRY {
2250 RALINK_TIMER_STRUCT EnqueueStartForPSKTimer; // A timer which enqueue EAPoL-Start for triggering PSK SM 1622 RALINK_TIMER_STRUCT EnqueueStartForPSKTimer; // A timer which enqueue EAPoL-Start for triggering PSK SM
2251 NDIS_802_11_AUTHENTICATION_MODE AuthMode; // This should match to whatever microsoft defined 1623 NDIS_802_11_AUTHENTICATION_MODE AuthMode; // This should match to whatever microsoft defined
2252 NDIS_802_11_WEP_STATUS WepStatus; 1624 NDIS_802_11_WEP_STATUS WepStatus;
1625 NDIS_802_11_WEP_STATUS GroupKeyWepStatus;
2253 AP_WPA_STATE WpaState; 1626 AP_WPA_STATE WpaState;
2254 GTK_STATE GTKState; 1627 GTK_STATE GTKState;
2255 USHORT PortSecured; 1628 USHORT PortSecured;
@@ -2288,13 +1661,14 @@ typedef struct _MAC_TABLE_ENTRY {
2288 1661
2289//==================================================== 1662//====================================================
2290//WDS entry needs these 1663//WDS entry needs these
2291// rt2860 add this. if ValidAsWDS==TRUE, MatchWDSTabIdx is the index in WdsTab.MacTab 1664// if ValidAsWDS==TRUE, MatchWDSTabIdx is the index in WdsTab.MacTab
2292 UINT MatchWDSTabIdx; 1665 UINT MatchWDSTabIdx;
2293 UCHAR MaxSupportedRate; 1666 UCHAR MaxSupportedRate;
2294 UCHAR CurrTxRate; 1667 UCHAR CurrTxRate;
2295 UCHAR CurrTxRateIndex; 1668 UCHAR CurrTxRateIndex;
2296 // to record the each TX rate's quality. 0 is best, the bigger the worse. 1669 // to record the each TX rate's quality. 0 is best, the bigger the worse.
2297 USHORT TxQuality[MAX_STEP_OF_TX_RATE_SWITCH]; 1670 USHORT TxQuality[MAX_STEP_OF_TX_RATE_SWITCH];
1671// USHORT OneSecTxOkCount;
2298 UINT32 OneSecTxNoRetryOkCount; 1672 UINT32 OneSecTxNoRetryOkCount;
2299 UINT32 OneSecTxRetryOkCount; 1673 UINT32 OneSecTxRetryOkCount;
2300 UINT32 OneSecTxFailCount; 1674 UINT32 OneSecTxFailCount;
@@ -2348,9 +1722,10 @@ typedef struct _MAC_TABLE_ENTRY {
2348 UINT32 TXMCSSuccessful[16]; 1722 UINT32 TXMCSSuccessful[16];
2349 UINT32 TXMCSFailed[16]; 1723 UINT32 TXMCSFailed[16];
2350 UINT32 TXMCSAutoFallBack[16][16]; 1724 UINT32 TXMCSAutoFallBack[16][16];
2351#ifdef RT2870 1725
2352 ULONG LastBeaconRxTime; 1726 ULONG LastBeaconRxTime;
2353#endif 1727
1728 ULONG AssocDeadLine;
2354} MAC_TABLE_ENTRY, *PMAC_TABLE_ENTRY; 1729} MAC_TABLE_ENTRY, *PMAC_TABLE_ENTRY;
2355 1730
2356typedef struct _MAC_TABLE { 1731typedef struct _MAC_TABLE {
@@ -2362,134 +1737,20 @@ typedef struct _MAC_TABLE {
2362 BOOLEAN fAnyStationInPsm; 1737 BOOLEAN fAnyStationInPsm;
2363 BOOLEAN fAnyStationBadAtheros; // Check if any Station is atheros 802.11n Chip. We need to use RTS/CTS with Atheros 802,.11n chip. 1738 BOOLEAN fAnyStationBadAtheros; // Check if any Station is atheros 802.11n Chip. We need to use RTS/CTS with Atheros 802,.11n chip.
2364 BOOLEAN fAnyTxOPForceDisable; // Check if it is necessary to disable BE TxOP 1739 BOOLEAN fAnyTxOPForceDisable; // Check if it is necessary to disable BE TxOP
2365#ifdef RT2870
2366 BOOLEAN fAllStationAsRalink; // Check if all stations are ralink-chipset 1740 BOOLEAN fAllStationAsRalink; // Check if all stations are ralink-chipset
2367#endif
2368 BOOLEAN fAnyStationIsLegacy; // Check if I use legacy rate to transmit to my BSS Station/ 1741 BOOLEAN fAnyStationIsLegacy; // Check if I use legacy rate to transmit to my BSS Station/
2369 BOOLEAN fAnyStationNonGF; // Check if any Station can't support GF. 1742 BOOLEAN fAnyStationNonGF; // Check if any Station can't support GF.
2370 BOOLEAN fAnyStation20Only; // Check if any Station can't support GF. 1743 BOOLEAN fAnyStation20Only; // Check if any Station can't support GF.
2371 BOOLEAN fAnyStationMIMOPSDynamic; // Check if any Station is MIMO Dynamic 1744 BOOLEAN fAnyStationMIMOPSDynamic; // Check if any Station is MIMO Dynamic
2372 BOOLEAN fAnyBASession; // Check if there is BA session. Force turn on RTS/CTS 1745 BOOLEAN fAnyBASession; // Check if there is BA session. Force turn on RTS/CTS
1746//2008/10/28: KH add to support Antenna power-saving of AP<--
1747//2008/10/28: KH add to support Antenna power-saving of AP-->
2373} MAC_TABLE, *PMAC_TABLE; 1748} MAC_TABLE, *PMAC_TABLE;
2374 1749
2375#define IS_HT_STA(_pMacEntry) \
2376 (_pMacEntry->MaxHTPhyMode.field.MODE >= MODE_HTMIX)
2377
2378#define IS_HT_RATE(_pMacEntry) \
2379 (_pMacEntry->HTPhyMode.field.MODE >= MODE_HTMIX)
2380
2381#define PEER_IS_HT_RATE(_pMacEntry) \
2382 (_pMacEntry->HTPhyMode.field.MODE >= MODE_HTMIX)
2383
2384typedef struct _WDS_ENTRY {
2385 BOOLEAN Valid;
2386 UCHAR Addr[MAC_ADDR_LEN];
2387 ULONG NoDataIdleCount;
2388 struct _WDS_ENTRY *pNext;
2389} WDS_ENTRY, *PWDS_ENTRY;
2390
2391typedef struct _WDS_TABLE_ENTRY {
2392 USHORT Size;
2393 UCHAR WdsAddr[MAC_ADDR_LEN];
2394 WDS_ENTRY *Hash[HASH_TABLE_SIZE];
2395 WDS_ENTRY Content[MAX_LEN_OF_MAC_TABLE];
2396 UCHAR MaxSupportedRate;
2397 UCHAR CurrTxRate;
2398 USHORT TxQuality[MAX_LEN_OF_SUPPORTED_RATES];
2399 USHORT OneSecTxOkCount;
2400 USHORT OneSecTxRetryOkCount;
2401 USHORT OneSecTxFailCount;
2402 ULONG CurrTxRateStableTime; // # of second in current TX rate
2403 UCHAR TxRateUpPenalty; // extra # of second penalty due to last unstable condition
2404} WDS_TABLE_ENTRY, *PWDS_TABLE_ENTRY;
2405
2406typedef struct _RT_802_11_WDS_ENTRY {
2407 PNET_DEV dev;
2408 UCHAR Valid;
2409 UCHAR PhyMode;
2410 UCHAR PeerWdsAddr[MAC_ADDR_LEN];
2411 UCHAR MacTabMatchWCID; // ASIC
2412 NDIS_802_11_WEP_STATUS WepStatus;
2413 UCHAR KeyIdx;
2414 CIPHER_KEY WdsKey;
2415 HTTRANSMIT_SETTING HTPhyMode, MaxHTPhyMode, MinHTPhyMode;
2416 RT_HT_PHY_INFO DesiredHtPhyInfo;
2417 BOOLEAN bAutoTxRateSwitch;
2418 DESIRED_TRANSMIT_SETTING DesiredTransmitSetting; // Desired transmit setting.
2419} RT_802_11_WDS_ENTRY, *PRT_802_11_WDS_ENTRY;
2420
2421typedef struct _WDS_TABLE {
2422 UCHAR Mode;
2423 ULONG Size;
2424 RT_802_11_WDS_ENTRY WdsEntry[MAX_WDS_ENTRY];
2425} WDS_TABLE, *PWDS_TABLE;
2426
2427typedef struct _APCLI_STRUCT {
2428 PNET_DEV dev;
2429#ifdef RTL865X_SOC
2430 unsigned int mylinkid;
2431#endif
2432 BOOLEAN Enable; // Set it as 1 if the apcli interface was configured to "1" or by iwpriv cmd "ApCliEnable"
2433 BOOLEAN Valid; // Set it as 1 if the apcli interface associated success to remote AP.
2434 UCHAR MacTabWCID; //WCID value, which point to the entry of ASIC Mac table.
2435 UCHAR SsidLen;
2436 CHAR Ssid[MAX_LEN_OF_SSID];
2437
2438 UCHAR CfgSsidLen;
2439 CHAR CfgSsid[MAX_LEN_OF_SSID];
2440 UCHAR CfgApCliBssid[ETH_LENGTH_OF_ADDRESS];
2441 UCHAR CurrentAddress[ETH_LENGTH_OF_ADDRESS];
2442 1750
2443 ULONG ApCliRcvBeaconTime;
2444 1751
2445 ULONG CtrlCurrState;
2446 ULONG SyncCurrState;
2447 ULONG AuthCurrState;
2448 ULONG AssocCurrState;
2449 ULONG WpaPskCurrState;
2450 1752
2451 USHORT AuthReqCnt;
2452 USHORT AssocReqCnt;
2453
2454 ULONG ClientStatusFlags;
2455 UCHAR MpduDensity;
2456
2457 NDIS_802_11_AUTHENTICATION_MODE AuthMode; // This should match to whatever microsoft defined
2458 NDIS_802_11_WEP_STATUS WepStatus;
2459
2460 // Add to support different cipher suite for WPA2/WPA mode
2461 NDIS_802_11_ENCRYPTION_STATUS GroupCipher; // Multicast cipher suite
2462 NDIS_802_11_ENCRYPTION_STATUS PairCipher; // Unicast cipher suite
2463 BOOLEAN bMixCipher; // Indicate current Pair & Group use different cipher suites
2464 USHORT RsnCapability;
2465
2466 UCHAR PSK[100]; // reserve PSK key material
2467 UCHAR PSKLen;
2468 UCHAR PMK[32]; // WPA PSK mode PMK
2469 UCHAR GTK[32]; // GTK from authenticator
2470 1753
2471 CIPHER_KEY SharedKey[SHARE_KEY_NUM];
2472 UCHAR DefaultKeyId;
2473
2474 // store RSN_IE built by driver
2475 UCHAR RSN_IE[MAX_LEN_OF_RSNIE]; // The content saved here should be convert to little-endian format.
2476 UCHAR RSNIE_Len;
2477
2478 // For WPA countermeasures
2479 ULONG LastMicErrorTime; // record last MIC error time
2480 BOOLEAN bBlockAssoc; // Block associate attempt for 60 seconds after counter measure occurred.
2481
2482 // For WPA-PSK supplicant state
2483 UCHAR SNonce[32]; // SNonce for WPA-PSK
2484 UCHAR GNonce[32]; // GNonce for WPA-PSK from authenticator
2485
2486 HTTRANSMIT_SETTING HTPhyMode, MaxHTPhyMode, MinHTPhyMode;
2487 RT_HT_PHY_INFO DesiredHtPhyInfo;
2488 BOOLEAN bAutoTxRateSwitch;
2489 DESIRED_TRANSMIT_SETTING DesiredTransmitSetting; // Desired transmit setting.
2490} APCLI_STRUCT, *PAPCLI_STRUCT;
2491
2492// ----------- end of AP ----------------------------
2493 1754
2494struct wificonf 1755struct wificonf
2495{ 1756{
@@ -2498,32 +1759,56 @@ struct wificonf
2498}; 1759};
2499 1760
2500 1761
2501 1762typedef struct _RTMP_DEV_INFO_
2502
2503typedef struct _INF_PCI_CONFIG
2504{ 1763{
2505 PUCHAR CSRBaseAddress; // PCI MMIO Base Address, all access will use 1764 UCHAR chipName[16];
2506}INF_PCI_CONFIG; 1765 RTMP_INF_TYPE infType;
1766}RTMP_DEV_INFO;
2507 1767
2508typedef struct _INF_USB_CONFIG
2509{
2510 UINT BulkInEpAddr; // bulk-in endpoint address
2511 UINT BulkOutEpAddr[6]; // bulk-out endpoint address
2512 1768
2513}INF_USB_CONFIG;
2514 1769
2515 1770
1771struct _RTMP_CHIP_OP_
1772{
1773 /* Calibration access related callback functions */
1774 int (*eeinit)(RTMP_ADAPTER *pAd); /* int (*eeinit)(RTMP_ADAPTER *pAd); */
1775 int (*eeread)(RTMP_ADAPTER *pAd, USHORT offset, PUSHORT pValue); /* int (*eeread)(RTMP_ADAPTER *pAd, int offset, PUSHORT pValue); */
1776 int (*eewrite)(RTMP_ADAPTER *pAd, USHORT offset, USHORT value);; /* int (*eewrite)(RTMP_ADAPTER *pAd, int offset, USHORT value); */
1777
1778 /* MCU related callback functions */
1779 int (*loadFirmware)(RTMP_ADAPTER *pAd); /* int (*loadFirmware)(RTMP_ADAPTER *pAd); */
1780 int (*eraseFirmware)(RTMP_ADAPTER *pAd); /* int (*eraseFirmware)(RTMP_ADAPTER *pAd); */
1781 int (*sendCommandToMcu)(RTMP_ADAPTER *pAd, UCHAR cmd, UCHAR token, UCHAR arg0, UCHAR arg1);; /* int (*sendCommandToMcu)(RTMP_ADAPTER *pAd, UCHAR cmd, UCHAR token, UCHAR arg0, UCHAR arg1); */
1782
1783 /* RF access related callback functions */
1784 REG_PAIR *pRFRegTable;
1785 void (*AsicRfInit)(RTMP_ADAPTER *pAd);
1786 void (*AsicRfTurnOn)(RTMP_ADAPTER *pAd);
1787 void (*AsicRfTurnOff)(RTMP_ADAPTER *pAd);
1788 void (*AsicReverseRfFromSleepMode)(RTMP_ADAPTER *pAd);
1789 void (*AsicHaltAction)(RTMP_ADAPTER *pAd);
1790};
1791
2516 1792
2517// 1793//
2518// The miniport adapter structure 1794// The miniport adapter structure
2519// 1795//
2520typedef struct _RTMP_ADAPTER 1796struct _RTMP_ADAPTER
2521{ 1797{
2522 PVOID OS_Cookie; // save specific structure relative to OS 1798 PVOID OS_Cookie; // save specific structure relative to OS
2523 PNET_DEV net_dev; 1799 PNET_DEV net_dev;
2524 ULONG VirtualIfCnt; 1800 ULONG VirtualIfCnt;
2525 1801
2526#ifdef RT2860 1802 RTMP_CHIP_OP chipOps;
1803 USHORT ThisTbttNumToNextWakeUp;
1804
1805#ifdef RTMP_MAC_PCI
1806/*****************************************************************************************/
1807/* PCI related parameters */
1808/*****************************************************************************************/
1809 PUCHAR CSRBaseAddress; // PCI MMIO Base Address, all access will use
1810 unsigned int irq_num;
1811
2527 USHORT LnkCtrlBitMask; 1812 USHORT LnkCtrlBitMask;
2528 USHORT RLnkCtrlConfiguration; 1813 USHORT RLnkCtrlConfiguration;
2529 USHORT RLnkCtrlOffset; 1814 USHORT RLnkCtrlOffset;
@@ -2531,15 +1816,7 @@ typedef struct _RTMP_ADAPTER
2531 USHORT HostLnkCtrlOffset; 1816 USHORT HostLnkCtrlOffset;
2532 USHORT PCIePowerSaveLevel; 1817 USHORT PCIePowerSaveLevel;
2533 BOOLEAN bPCIclkOff; // flag that indicate if the PICE power status in Configuration SPace.. 1818 BOOLEAN bPCIclkOff; // flag that indicate if the PICE power status in Configuration SPace..
2534 ULONG CheckDmaBusyCount; // Check Interrupt Status Register Count. 1819 BOOLEAN bPCIclkOffDisableTx; //
2535 USHORT ThisTbttNumToNextWakeUp;
2536 ULONG SameRxByteCount;
2537
2538
2539/*****************************************************************************************/
2540/* PCI related parameters */
2541/*****************************************************************************************/
2542 PUCHAR CSRBaseAddress; // PCI MMIO Base Address, all access will use
2543 1820
2544 UINT int_enable_reg; 1821 UINT int_enable_reg;
2545 UINT int_disable_mask; 1822 UINT int_disable_mask;
@@ -2550,12 +1827,13 @@ typedef struct _RTMP_ADAPTER
2550 RTMP_DMABUF RxDescRing; // Shared memory for RX descriptors 1827 RTMP_DMABUF RxDescRing; // Shared memory for RX descriptors
2551 RTMP_DMABUF TxDescRing[NUM_OF_TX_RING]; // Shared memory for Tx descriptors 1828 RTMP_DMABUF TxDescRing[NUM_OF_TX_RING]; // Shared memory for Tx descriptors
2552 RTMP_TX_RING TxRing[NUM_OF_TX_RING]; // AC0~4 + HCCA 1829 RTMP_TX_RING TxRing[NUM_OF_TX_RING]; // AC0~4 + HCCA
2553#endif 1830#endif // RTMP_MAC_PCI //
1831
2554 1832
2555 NDIS_SPIN_LOCK irq_lock; 1833 NDIS_SPIN_LOCK irq_lock;
2556 UCHAR irq_disabled; 1834 UCHAR irq_disabled;
2557 1835
2558#ifdef RT2870 1836#ifdef RTMP_MAC_USB
2559/*****************************************************************************************/ 1837/*****************************************************************************************/
2560/* USB related parameters */ 1838/* USB related parameters */
2561/*****************************************************************************************/ 1839/*****************************************************************************************/
@@ -2572,34 +1850,38 @@ typedef struct _RTMP_ADAPTER
2572 ULONG BulkFlags; 1850 ULONG BulkFlags;
2573 BOOLEAN bUsbTxBulkAggre; // Flags for bulk out data priority 1851 BOOLEAN bUsbTxBulkAggre; // Flags for bulk out data priority
2574 1852
2575
2576 //======Timer Thread
2577 RT2870_TIMER_QUEUE TimerQ;
2578 NDIS_SPIN_LOCK TimerQLock;
2579
2580
2581 //======Cmd Thread 1853 //======Cmd Thread
2582 CmdQ CmdQ; 1854 CmdQ CmdQ;
2583 NDIS_SPIN_LOCK CmdQLock; // CmdQLock spinlock 1855 NDIS_SPIN_LOCK CmdQLock; // CmdQLock spinlock
2584 1856 RTMP_OS_TASK cmdQTask;
2585 BOOLEAN TimerFunc_kill;
2586 BOOLEAN mlme_kill;
2587
2588 1857
2589 //======Semaphores (event) 1858 //======Semaphores (event)
2590 struct semaphore mlme_semaphore; /* to sleep thread on */ 1859 RTMP_OS_SEM UsbVendorReq_semaphore;
2591 struct semaphore RTUSBCmd_semaphore; /* to sleep thread on */ 1860 PVOID UsbVendorReqBuf;
2592 struct semaphore RTUSBTimer_semaphore;
2593 struct completion TimerQComplete;
2594 struct completion mlmeComplete;
2595 struct completion CmdQComplete;
2596 wait_queue_head_t *wait; 1861 wait_queue_head_t *wait;
2597#endif // RT2870 // 1862#endif // RTMP_MAC_USB //
1863
1864/*****************************************************************************************/
1865/* RBUS related parameters */
1866/*****************************************************************************************/
2598 1867
2599 1868
2600/*****************************************************************************************/ 1869/*****************************************************************************************/
2601 /* Both PCI/USB related parameters */ 1870/* Both PCI/USB related parameters */
1871/*****************************************************************************************/
1872 //RTMP_DEV_INFO chipInfo;
1873 RTMP_INF_TYPE infType;
1874
1875/*****************************************************************************************/
1876/* Driver Mgmt related parameters */
2602/*****************************************************************************************/ 1877/*****************************************************************************************/
1878 RTMP_OS_TASK mlmeTask;
1879#ifdef RTMP_TIMER_TASK_SUPPORT
1880 // If you want use timer task to handle the timer related jobs, enable this.
1881 RTMP_TIMER_TASK_QUEUE TimerQ;
1882 NDIS_SPIN_LOCK TimerQLock;
1883 RTMP_OS_TASK timerTask;
1884#endif // RTMP_TIMER_TASK_SUPPORT //
2603 1885
2604 1886
2605/*****************************************************************************************/ 1887/*****************************************************************************************/
@@ -2608,7 +1890,7 @@ typedef struct _RTMP_ADAPTER
2608 BOOLEAN DeQueueRunning[NUM_OF_TX_RING]; // for ensuring RTUSBDeQueuePacket get call once 1890 BOOLEAN DeQueueRunning[NUM_OF_TX_RING]; // for ensuring RTUSBDeQueuePacket get call once
2609 NDIS_SPIN_LOCK DeQueueLock[NUM_OF_TX_RING]; 1891 NDIS_SPIN_LOCK DeQueueLock[NUM_OF_TX_RING];
2610 1892
2611#ifdef RT2870 1893#ifdef RTMP_MAC_USB
2612 // Data related context and AC specified, 4 AC supported 1894 // Data related context and AC specified, 4 AC supported
2613 NDIS_SPIN_LOCK BulkOutLock[6]; // BulkOut spinlock for 4 ACs 1895 NDIS_SPIN_LOCK BulkOutLock[6]; // BulkOut spinlock for 4 ACs
2614 NDIS_SPIN_LOCK MLMEBulkOutLock; // MLME BulkOut lock 1896 NDIS_SPIN_LOCK MLMEBulkOutLock; // MLME BulkOut lock
@@ -2623,7 +1905,7 @@ typedef struct _RTMP_ADAPTER
2623 UCHAR bulkResetPipeid; 1905 UCHAR bulkResetPipeid;
2624 BOOLEAN MgmtBulkPending; 1906 BOOLEAN MgmtBulkPending;
2625 ULONG bulkResetReq[6]; 1907 ULONG bulkResetReq[6];
2626#endif // RT2870 // 1908#endif // RTMP_MAC_USB //
2627 1909
2628 // resource for software backlog queues 1910 // resource for software backlog queues
2629 QUEUE_HEADER TxSwQueue[NUM_OF_TX_RING]; // 4 AC + 1 HCCA 1911 QUEUE_HEADER TxSwQueue[NUM_OF_TX_RING]; // 4 AC + 1 HCCA
@@ -2637,21 +1919,21 @@ typedef struct _RTMP_ADAPTER
2637/*****************************************************************************************/ 1919/*****************************************************************************************/
2638/* Rx related parameters */ 1920/* Rx related parameters */
2639/*****************************************************************************************/ 1921/*****************************************************************************************/
2640#ifdef RT2860 1922
1923#ifdef RTMP_MAC_PCI
2641 RTMP_RX_RING RxRing; 1924 RTMP_RX_RING RxRing;
2642 NDIS_SPIN_LOCK RxRingLock; // Rx Ring spinlock 1925 NDIS_SPIN_LOCK RxRingLock; // Rx Ring spinlock
2643#endif 1926#endif // RTMP_MAC_PCI //
2644#ifdef RT2870 1927#ifdef RTMP_MAC_USB
2645 RX_CONTEXT RxContext[RX_RING_SIZE]; // 1 for redundant multiple IRP bulk in. 1928 RX_CONTEXT RxContext[RX_RING_SIZE]; // 1 for redundant multiple IRP bulk in.
2646 NDIS_SPIN_LOCK BulkInLock; // BulkIn spinlock for 4 ACs 1929 NDIS_SPIN_LOCK BulkInLock; // BulkIn spinlock for 4 ACs
2647 UCHAR PendingRx; // The Maxima pending Rx value should be RX_RING_SIZE. 1930 UCHAR PendingRx; // The Maximum pending Rx value should be RX_RING_SIZE.
2648 UCHAR NextRxBulkInIndex; // Indicate the current RxContext Index which hold by Host controller. 1931 UCHAR NextRxBulkInIndex; // Indicate the current RxContext Index which hold by Host controller.
2649 UCHAR NextRxBulkInReadIndex; // Indicate the current RxContext Index which driver can read & process it. 1932 UCHAR NextRxBulkInReadIndex; // Indicate the current RxContext Index which driver can read & process it.
2650 ULONG NextRxBulkInPosition; // Want to contatenate 2 URB buffer while 1st is bulkin failed URB. This Position is 1st URB TransferLength. 1933 ULONG NextRxBulkInPosition; // Want to contatenate 2 URB buffer while 1st is bulkin failed URB. This Position is 1st URB TransferLength.
2651 ULONG TransferBufferLength; // current length of the packet buffer 1934 ULONG TransferBufferLength; // current length of the packet buffer
2652 ULONG ReadPosition; // current read position in a packet buffer 1935 ULONG ReadPosition; // current read position in a packet buffer
2653#endif // RT2870 // 1936#endif // RTMP_MAC_USB //
2654
2655 1937
2656/*****************************************************************************************/ 1938/*****************************************************************************************/
2657/* ASIC related parameters */ 1939/* ASIC related parameters */
@@ -2662,18 +1944,18 @@ typedef struct _RTMP_ADAPTER
2662 // E2PROM 1944 // E2PROM
2663 // --------------------------- 1945 // ---------------------------
2664 ULONG EepromVersion; // byte 0: version, byte 1: revision, byte 2~3: unused 1946 ULONG EepromVersion; // byte 0: version, byte 1: revision, byte 2~3: unused
2665 UCHAR EEPROMAddressNum; // 93c46=6 93c66=8 1947 ULONG FirmwareVersion; // byte 0: Minor version, byte 1: Major version, otherwise unused.
2666 USHORT EEPROMDefaultValue[NUM_EEPROM_BBP_PARMS]; 1948 USHORT EEPROMDefaultValue[NUM_EEPROM_BBP_PARMS];
2667#ifdef RT2870 1949 UCHAR EEPROMAddressNum; // 93c46=6 93c66=8
2668 BOOLEAN EepromAccess; 1950 BOOLEAN EepromAccess;
2669#endif 1951 UCHAR EFuseTag;
2670 ULONG FirmwareVersion; // byte 0: Minor version, byte 1: Major version, otherwise unused. 1952
2671 1953
2672 // --------------------------- 1954 // ---------------------------
2673 // BBP Control 1955 // BBP Control
2674 // --------------------------- 1956 // ---------------------------
2675 UCHAR BbpWriteLatch[140]; // record last BBP register value written via BBP_IO_WRITE/BBP_IO_WRITE_VY_REG_ID 1957 UCHAR BbpWriteLatch[140]; // record last BBP register value written via BBP_IO_WRITE/BBP_IO_WRITE_VY_REG_ID
2676 UCHAR BbpRssiToDbmDelta; 1958 CHAR BbpRssiToDbmDelta; // change from UCHAR to CHAR for high power
2677 BBP_R66_TUNING BbpTuning; 1959 BBP_R66_TUNING BbpTuning;
2678 1960
2679 // ---------------------------- 1961 // ----------------------------
@@ -2718,23 +2000,26 @@ typedef struct _RTMP_ADAPTER
2718 UCHAR TxAgcStepG; // Store Tx TSSI delta increment / decrement value 2000 UCHAR TxAgcStepG; // Store Tx TSSI delta increment / decrement value
2719 CHAR TxAgcCompensateG; // Store the compensation (TxAgcStep * (idx-1)) 2001 CHAR TxAgcCompensateG; // Store the compensation (TxAgcStep * (idx-1))
2720 2002
2721 //+++For RT2870, the parameteres is start from BGRssiOffset1 ~ BGRssiOffset3
2722 CHAR BGRssiOffset0; // Store B/G RSSI#0 Offset value on EEPROM 0x46h 2003 CHAR BGRssiOffset0; // Store B/G RSSI#0 Offset value on EEPROM 0x46h
2723 CHAR BGRssiOffset1; // Store B/G RSSI#1 Offset value 2004 CHAR BGRssiOffset1; // Store B/G RSSI#1 Offset value
2724 CHAR BGRssiOffset2; // Store B/G RSSI#2 Offset value 2005 CHAR BGRssiOffset2; // Store B/G RSSI#2 Offset value
2725 //---
2726 2006
2727 //+++For RT2870, the parameteres is start from ARssiOffset1 ~ ARssiOffset3
2728 CHAR ARssiOffset0; // Store A RSSI#0 Offset value on EEPROM 0x4Ah 2007 CHAR ARssiOffset0; // Store A RSSI#0 Offset value on EEPROM 0x4Ah
2729 CHAR ARssiOffset1; // Store A RSSI#1 Offset value 2008 CHAR ARssiOffset1; // Store A RSSI#1 Offset value
2730 CHAR ARssiOffset2; // Store A RSSI#2 Offset value 2009 CHAR ARssiOffset2; // Store A RSSI#2 Offset value
2731 //---
2732 2010
2733 CHAR BLNAGain; // Store B/G external LNA#0 value on EEPROM 0x44h 2011 CHAR BLNAGain; // Store B/G external LNA#0 value on EEPROM 0x44h
2734 CHAR ALNAGain0; // Store A external LNA#0 value for ch36~64 2012 CHAR ALNAGain0; // Store A external LNA#0 value for ch36~64
2735 CHAR ALNAGain1; // Store A external LNA#1 value for ch100~128 2013 CHAR ALNAGain1; // Store A external LNA#1 value for ch100~128
2736 CHAR ALNAGain2; // Store A external LNA#2 value for ch132~165 2014 CHAR ALNAGain2; // Store A external LNA#2 value for ch132~165
2737 2015#ifdef RT30xx
2016 // for 3572
2017 UCHAR Bbp25;
2018 UCHAR Bbp26;
2019
2020 UCHAR TxMixerGain24G; // Tx mixer gain value from EEPROM to improve Tx EVM / Tx DAC, 2.4G
2021 UCHAR TxMixerGain5G;
2022#endif // RT30xx //
2738 // ---------------------------- 2023 // ----------------------------
2739 // LED control 2024 // LED control
2740 // ---------------------------- 2025 // ----------------------------
@@ -2742,7 +2027,7 @@ typedef struct _RTMP_ADAPTER
2742 USHORT Led1; // read from EEPROM 0x3c 2027 USHORT Led1; // read from EEPROM 0x3c
2743 USHORT Led2; // EEPROM 0x3e 2028 USHORT Led2; // EEPROM 0x3e
2744 USHORT Led3; // EEPROM 0x40 2029 USHORT Led3; // EEPROM 0x40
2745 UCHAR LedIndicatorStregth; 2030 UCHAR LedIndicatorStrength;
2746 UCHAR RssiSingalstrengthOffet; 2031 UCHAR RssiSingalstrengthOffet;
2747 BOOLEAN bLedOnScanning; 2032 BOOLEAN bLedOnScanning;
2748 UCHAR LedStatus; 2033 UCHAR LedStatus;
@@ -2759,20 +2044,17 @@ typedef struct _RTMP_ADAPTER
2759 PSPOLL_FRAME PsPollFrame; 2044 PSPOLL_FRAME PsPollFrame;
2760 HEADER_802_11 NullFrame; 2045 HEADER_802_11 NullFrame;
2761 2046
2762#ifdef RT2870 2047#ifdef RTMP_MAC_USB
2763 TX_CONTEXT BeaconContext[BEACON_RING_SIZE]; 2048 TX_CONTEXT BeaconContext[BEACON_RING_SIZE];
2764 TX_CONTEXT NullContext; 2049 TX_CONTEXT NullContext;
2765 TX_CONTEXT PsPollContext; 2050 TX_CONTEXT PsPollContext;
2766 TX_CONTEXT RTSContext; 2051 TX_CONTEXT RTSContext;
2767#endif // RT2870 // 2052#endif // RTMP_MAC_USB //
2768
2769
2770 2053
2771//=========AP=========== 2054//=========AP===========
2772 2055
2773 2056
2774//=======STA=========== 2057//=======STA===========
2775/* Modified by Wu Xi-Kun 4/21/2006 */
2776 // ----------------------------------------------- 2058 // -----------------------------------------------
2777 // STA specific configuration & operation status 2059 // STA specific configuration & operation status
2778 // used only when pAd->OpMode == OPMODE_STA 2060 // used only when pAd->OpMode == OPMODE_STA
@@ -2789,6 +2071,8 @@ typedef struct _RTMP_ADAPTER
2789 NDIS_MEDIA_STATE IndicateMediaState; // Base on Indication state, default is NdisMediaStateDisConnected 2071 NDIS_MEDIA_STATE IndicateMediaState; // Base on Indication state, default is NdisMediaStateDisConnected
2790 2072
2791 2073
2074 /* MAT related parameters */
2075
2792 // configuration: read from Registry & E2PROM 2076 // configuration: read from Registry & E2PROM
2793 BOOLEAN bLocalAdminMAC; // Use user changed MAC 2077 BOOLEAN bLocalAdminMAC; // Use user changed MAC
2794 UCHAR PermanentAddress[MAC_ADDR_LEN]; // Factory default MAC address 2078 UCHAR PermanentAddress[MAC_ADDR_LEN]; // Factory default MAC address
@@ -2828,9 +2112,7 @@ typedef struct _RTMP_ADAPTER
2828 2112
2829 // flags, see fRTMP_ADAPTER_xxx flags 2113 // flags, see fRTMP_ADAPTER_xxx flags
2830 ULONG Flags; // Represent current device status 2114 ULONG Flags; // Represent current device status
2831#ifdef RT2860
2832 ULONG PSFlags; // Power Save operation flag. 2115 ULONG PSFlags; // Power Save operation flag.
2833#endif
2834 2116
2835 // current TX sequence # 2117 // current TX sequence #
2836 USHORT Sequence; 2118 USHORT Sequence;
@@ -2863,36 +2145,38 @@ typedef struct _RTMP_ADAPTER
2863 /*****************************************************************************************/ 2145 /*****************************************************************************************/
2864 /* Statistic related parameters */ 2146 /* Statistic related parameters */
2865 /*****************************************************************************************/ 2147 /*****************************************************************************************/
2866#ifdef RT2870 2148#ifdef RTMP_MAC_USB
2867 ULONG BulkOutDataOneSecCount; 2149 ULONG BulkOutDataOneSecCount;
2868 ULONG BulkInDataOneSecCount; 2150 ULONG BulkInDataOneSecCount;
2869 ULONG BulkLastOneSecCount; // BulkOutDataOneSecCount + BulkInDataOneSecCount 2151 ULONG BulkLastOneSecCount; // BulkOutDataOneSecCount + BulkInDataOneSecCount
2870 ULONG watchDogRxCnt; 2152 ULONG watchDogRxCnt;
2871 ULONG watchDogRxOverFlowCnt; 2153 ULONG watchDogRxOverFlowCnt;
2872 ULONG watchDogTxPendingCnt[NUM_OF_TX_RING]; 2154 ULONG watchDogTxPendingCnt[NUM_OF_TX_RING];
2873#endif // RT2870 // 2155 INT TransferedLength[NUM_OF_TX_RING];
2156#endif // RTMP_MAC_USB //
2874 2157
2875 BOOLEAN bUpdateBcnCntDone; 2158 BOOLEAN bUpdateBcnCntDone;
2876 ULONG watchDogMacDeadlock; // prevent MAC/BBP into deadlock condition 2159 ULONG watchDogMacDeadlock; // prevent MAC/BBP into deadlock condition
2877 // ---------------------------- 2160 // ----------------------------
2878 // DEBUG paramerts 2161 // DEBUG paramerts
2879 // ---------------------------- 2162 // ----------------------------
2163 //ULONG DebugSetting[4];
2880 BOOLEAN bBanAllBaSetup; 2164 BOOLEAN bBanAllBaSetup;
2881 BOOLEAN bPromiscuous; 2165 BOOLEAN bPromiscuous;
2882 2166
2883 // ---------------------------- 2167 // ----------------------------
2884 // rt2860c emulation-use Parameters 2168 // rt2860c emulation-use Parameters
2885 // ---------------------------- 2169 // ----------------------------
2886 ULONG rtsaccu[30]; 2170 //ULONG rtsaccu[30];
2887 ULONG ctsaccu[30]; 2171 //ULONG ctsaccu[30];
2888 ULONG cfendaccu[30]; 2172 //ULONG cfendaccu[30];
2889 ULONG bacontent[16]; 2173 //ULONG bacontent[16];
2890 ULONG rxint[RX_RING_SIZE+1]; 2174 //ULONG rxint[RX_RING_SIZE+1];
2891 UCHAR rcvba[60]; 2175 //UCHAR rcvba[60];
2892 BOOLEAN bLinkAdapt; 2176 BOOLEAN bLinkAdapt;
2893 BOOLEAN bForcePrintTX; 2177 BOOLEAN bForcePrintTX;
2894 BOOLEAN bForcePrintRX; 2178 BOOLEAN bForcePrintRX;
2895 BOOLEAN bDisablescanning; //defined in RT2870 USB 2179 //BOOLEAN bDisablescanning; //defined in RT2870 USB
2896 BOOLEAN bStaFifoTest; 2180 BOOLEAN bStaFifoTest;
2897 BOOLEAN bProtectionTest; 2181 BOOLEAN bProtectionTest;
2898 BOOLEAN bHCCATest; 2182 BOOLEAN bHCCATest;
@@ -2914,9 +2198,15 @@ typedef struct _RTMP_ADAPTER
2914 2198
2915 ULONG OneSecondnonBEpackets; // record non BE packets per second 2199 ULONG OneSecondnonBEpackets; // record non BE packets per second
2916 2200
2201#ifdef LINUX
2917 struct iw_statistics iw_stats; 2202 struct iw_statistics iw_stats;
2918 2203
2919 struct net_device_stats stats; 2204 struct net_device_stats stats;
2205#endif // LINUX //
2206
2207
2208
2209
2920 2210
2921 ULONG TbttTickCount; 2211 ULONG TbttTickCount;
2922#ifdef PCI_MSI_SUPPORT 2212#ifdef PCI_MSI_SUPPORT
@@ -2933,32 +2223,24 @@ typedef struct _RTMP_ADAPTER
2933 2223
2934 2224
2935 2225
2226
2227
2228
2229
2230 UINT8 FlgCtsEnabled;
2936 UINT8 PM_FlgSuspend; 2231 UINT8 PM_FlgSuspend;
2937 2232
2938#ifdef RT2870 2233#ifdef RT30xx
2234#ifdef RTMP_EFUSE_SUPPORT
2939 BOOLEAN bUseEfuse; 2235 BOOLEAN bUseEfuse;
2940#endif 2236 BOOLEAN bEEPROMFile;
2941} RTMP_ADAPTER, *PRTMP_ADAPTER; 2237 BOOLEAN bFroceEEPROMBuffer;
2238 UCHAR EEPROMImage[1024];
2239#endif // RTMP_EFUSE_SUPPORT //
2240#endif // RT30xx //
2241};
2242
2942 2243
2943//
2944// Cisco IAPP format
2945//
2946typedef struct _CISCO_IAPP_CONTENT_
2947{
2948 USHORT Length; //IAPP Length
2949 UCHAR MessageType; //IAPP type
2950 UCHAR FunctionCode; //IAPP function type
2951 UCHAR DestinaionMAC[MAC_ADDR_LEN];
2952 UCHAR SourceMAC[MAC_ADDR_LEN];
2953 USHORT Tag; //Tag(element IE) - Adjacent AP report
2954 USHORT TagLength; //Length of element not including 4 byte header
2955 UCHAR OUI[4]; //0x00, 0x40, 0x96, 0x00
2956 UCHAR PreviousAP[MAC_ADDR_LEN]; //MAC Address of access point
2957 USHORT Channel;
2958 USHORT SsidLen;
2959 UCHAR Ssid[MAX_LEN_OF_SSID];
2960 USHORT Seconds; //Seconds that the client has been disassociated.
2961} CISCO_IAPP_CONTENT, *PCISCO_IAPP_CONTENT;
2962 2244
2963#define DELAYINTMASK 0x0003fffb 2245#define DELAYINTMASK 0x0003fffb
2964#define INTMASK 0x0003fffb 2246#define INTMASK 0x0003fffb
@@ -2976,8 +2258,12 @@ typedef struct _CISCO_IAPP_CONTENT_
2976#define FifoStaFullInt 0x00002000 // fifo statistics full interrupt 2258#define FifoStaFullInt 0x00002000 // fifo statistics full interrupt
2977 2259
2978 2260
2261/***************************************************************************
2262 * Rx Path software control block related data structures
2263 **************************************************************************/
2979typedef struct _RX_BLK_ 2264typedef struct _RX_BLK_
2980{ 2265{
2266// RXD_STRUC RxD; // sample
2981 RT28XX_RXD_STRUC RxD; 2267 RT28XX_RXD_STRUC RxD;
2982 PRXWI_STRUC pRxWI; 2268 PRXWI_STRUC pRxWI;
2983 PHEADER_802_11 pHeader; 2269 PHEADER_802_11 pHeader;
@@ -3012,6 +2298,10 @@ typedef struct _RX_BLK_
3012#define LENGTH_ARALINK_SUBFRAMEHEAD 14 2298#define LENGTH_ARALINK_SUBFRAMEHEAD 14
3013#define LENGTH_ARALINK_HEADER_FIELD 2 2299#define LENGTH_ARALINK_HEADER_FIELD 2
3014 2300
2301
2302/***************************************************************************
2303 * Tx Path software control block related data structures
2304 **************************************************************************/
3015#define TX_UNKOWN_FRAME 0x00 2305#define TX_UNKOWN_FRAME 0x00
3016#define TX_MCAST_FRAME 0x01 2306#define TX_MCAST_FRAME 0x01
3017#define TX_LEGACY_FRAME 0x02 2307#define TX_LEGACY_FRAME 0x02
@@ -3040,7 +2330,9 @@ typedef struct _TX_BLK_
3040 PUCHAR pSrcBufData; // Reference to the sk_buff->data, will changed depends on hanlding progresss 2330 PUCHAR pSrcBufData; // Reference to the sk_buff->data, will changed depends on hanlding progresss
3041 UINT SrcBufLen; // Length of packet payload which not including Layer 2 header 2331 UINT SrcBufLen; // Length of packet payload which not including Layer 2 header
3042 PUCHAR pExtraLlcSnapEncap; // NULL means no extra LLC/SNAP is required 2332 PUCHAR pExtraLlcSnapEncap; // NULL means no extra LLC/SNAP is required
3043 UCHAR HeaderBuf[80]; // TempBuffer for TX_INFO + TX_WI + 802.11 Header + padding + AMSDU SubHeader + LLC/SNAP 2333 UCHAR HeaderBuf[128]; // TempBuffer for TX_INFO + TX_WI + 802.11 Header + padding + AMSDU SubHeader + LLC/SNAP
2334 //RT2870 2.1.0.0 uses only 80 bytes
2335 //RT3070 2.1.1.0 uses only 96 bytes
3044 UCHAR MpduHeaderLen; // 802.11 header length NOT including the padding 2336 UCHAR MpduHeaderLen; // 802.11 header length NOT including the padding
3045 UCHAR HdrPadLen; // recording Header Padding Length; 2337 UCHAR HdrPadLen; // recording Header Padding Length;
3046 UCHAR apidx; // The interface associated to this packet 2338 UCHAR apidx; // The interface associated to this packet
@@ -3069,17 +2361,8 @@ typedef struct _TX_BLK_
3069#define fTX_bAllowFrag 0x0020 // allow to fragment the packet, A-MPDU, A-MSDU, A-Ralink is not allowed to fragment 2361#define fTX_bAllowFrag 0x0020 // allow to fragment the packet, A-MPDU, A-MSDU, A-Ralink is not allowed to fragment
3070#define fTX_bMoreData 0x0040 // there are more data packets in PowerSave Queue 2362#define fTX_bMoreData 0x0040 // there are more data packets in PowerSave Queue
3071#define fTX_bWMM 0x0080 // QOS Data 2363#define fTX_bWMM 0x0080 // QOS Data
3072
3073#define fTX_bClearEAPFrame 0x0100 2364#define fTX_bClearEAPFrame 0x0100
3074 2365
3075#define TX_BLK_ASSIGN_FLAG(_pTxBlk, _flag, value) \
3076 do { \
3077 if (value) \
3078 (_pTxBlk->Flags |= _flag) \
3079 else \
3080 (_pTxBlk->Flags &= ~(_flag)) \
3081 }while(0)
3082
3083#define TX_BLK_SET_FLAG(_pTxBlk, _flag) (_pTxBlk->Flags |= _flag) 2366#define TX_BLK_SET_FLAG(_pTxBlk, _flag) (_pTxBlk->Flags |= _flag)
3084#define TX_BLK_TEST_FLAG(_pTxBlk, _flag) (((_pTxBlk->Flags & _flag) == _flag) ? 1 : 0) 2367#define TX_BLK_TEST_FLAG(_pTxBlk, _flag) (((_pTxBlk->Flags & _flag) == _flag) ? 1 : 0)
3085#define TX_BLK_CLEAR_FLAG(_pTxBlk, _flag) (_pTxBlk->Flags &= ~(_flag)) 2368#define TX_BLK_CLEAR_FLAG(_pTxBlk, _flag) (_pTxBlk->Flags &= ~(_flag))
@@ -3088,42 +2371,10 @@ typedef struct _TX_BLK_
3088 2371
3089 2372
3090 2373
3091//------------------------------------------------------------------------------------------
3092
3093#ifdef RT2860
3094//
3095// Enable & Disable NIC interrupt via writing interrupt mask register
3096// Since it use ADAPTER structure, it have to be put after structure definition.
3097//
3098__inline VOID NICDisableInterrupt(
3099 IN PRTMP_ADAPTER pAd)
3100{
3101 RTMP_IO_WRITE32(pAd, INT_MASK_CSR, 0x0); // 0: disable
3102 //RTMP_IO_WRITE32(pAd, PBF_INT_ENA, 0x0); // 0x418 is for firmware . SW doesn't handle here.
3103 RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_ACTIVE);
3104}
3105
3106__inline VOID NICEnableInterrupt(
3107 IN PRTMP_ADAPTER pAd)
3108{
3109 //
3110 // Flag "fOP_STATUS_DOZE" On, means ASIC put to sleep, else means ASIC WakeUp
3111 // To prevent System hang, we should enalbe the interrupt when
3112 // ASIC is already Wake Up.
3113 //
3114 // RT2661 => when ASIC is sleeping, MAC register cannot be read and written.
3115 // RT2860 => when ASIC is sleeping, MAC register can be read and written.
3116 //if (!OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_DOZE))
3117 {
3118 RTMP_IO_WRITE32(pAd, INT_MASK_CSR, pAd->int_enable_reg /*DELAYINTMASK*/); // 1:enable
3119 }
3120 //else
3121 // DBGPRINT(RT_DEBUG_TRACE, ("fOP_STATUS_DOZE !\n"));
3122
3123 //RTMP_IO_WRITE32(pAd, PBF_INT_ENA, 0x00000030); // 1 : enable
3124 RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_ACTIVE);
3125}
3126 2374
2375/***************************************************************************
2376 * Other static inline function definitions
2377 **************************************************************************/
3127static inline VOID ConvertMulticastIP2MAC( 2378static inline VOID ConvertMulticastIP2MAC(
3128 IN PUCHAR pIpAddr, 2379 IN PUCHAR pIpAddr,
3129 IN PUCHAR *ppMacAddr, 2380 IN PUCHAR *ppMacAddr,
@@ -3161,37 +2412,59 @@ static inline VOID ConvertMulticastIP2MAC(
3161 2412
3162 return; 2413 return;
3163} 2414}
3164#endif /* RT2860 */ 2415
2416
2417char *GetPhyMode(int Mode);
2418char* GetBW(int BW);
3165 2419
3166// 2420//
3167// Private routines in rtmp_init.c 2421// Private routines in rtmp_init.c
3168// 2422//
3169NDIS_STATUS RTMPAllocAdapterBlock( 2423NDIS_STATUS RTMPAllocAdapterBlock(
3170 IN PVOID handle, 2424 IN PVOID handle,
3171 OUT PRTMP_ADAPTER *ppAdapter 2425 OUT PRTMP_ADAPTER *ppAdapter);
3172 );
3173 2426
3174NDIS_STATUS RTMPAllocTxRxRingMemory( 2427NDIS_STATUS RTMPAllocTxRxRingMemory(
3175 IN PRTMP_ADAPTER pAd 2428 IN PRTMP_ADAPTER pAd);
3176 );
3177 2429
3178NDIS_STATUS RTMPReadParametersHook( 2430NDIS_STATUS RTMPReadParametersHook(
3179 IN PRTMP_ADAPTER pAd 2431 IN PRTMP_ADAPTER pAd);
3180 ); 2432
2433NDIS_STATUS RTMPSetProfileParameters(
2434 IN RTMP_ADAPTER *pAd,
2435 IN PSTRING pBuffer);
2436
2437INT RTMPGetKeyParameter(
2438 IN PSTRING key,
2439 OUT PSTRING dest,
2440 IN INT destsize,
2441 IN PSTRING buffer,
2442 IN BOOLEAN bTrimSpace);
3181 2443
3182VOID RTMPFreeAdapter( 2444VOID RTMPFreeAdapter(
3183 IN PRTMP_ADAPTER pAd 2445 IN PRTMP_ADAPTER pAd);
3184 );
3185 2446
3186NDIS_STATUS NICReadRegParameters( 2447NDIS_STATUS NICReadRegParameters(
3187 IN PRTMP_ADAPTER pAd, 2448 IN PRTMP_ADAPTER pAd,
3188 IN NDIS_HANDLE WrapperConfigurationContext 2449 IN NDIS_HANDLE WrapperConfigurationContext);
3189 );
3190 2450
3191#ifdef RT2870 2451#ifdef RTMP_RF_RW_SUPPORT
3192VOID NICInitRT30xxRFRegisters( 2452VOID NICInitRFRegisters(
3193 IN PRTMP_ADAPTER pAd); 2453 IN PRTMP_ADAPTER pAd);
3194#endif // RT2870 // 2454
2455VOID RtmpChipOpsRFHook(
2456 IN RTMP_ADAPTER *pAd);
2457
2458NDIS_STATUS RT30xxWriteRFRegister(
2459 IN PRTMP_ADAPTER pAd,
2460 IN UCHAR regID,
2461 IN UCHAR value);
2462
2463NDIS_STATUS RT30xxReadRFRegister(
2464 IN PRTMP_ADAPTER pAd,
2465 IN UCHAR regID,
2466 IN PUCHAR pValue);
2467#endif // RTMP_RF_RW_SUPPORT //
3195 2468
3196VOID NICReadEEPROMParameters( 2469VOID NICReadEEPROMParameters(
3197 IN PRTMP_ADAPTER pAd, 2470 IN PRTMP_ADAPTER pAd,
@@ -3200,8 +2473,6 @@ VOID NICReadEEPROMParameters(
3200VOID NICInitAsicFromEEPROM( 2473VOID NICInitAsicFromEEPROM(
3201 IN PRTMP_ADAPTER pAd); 2474 IN PRTMP_ADAPTER pAd);
3202 2475
3203VOID NICInitTxRxRingAndBacklogQueue(
3204 IN PRTMP_ADAPTER pAd);
3205 2476
3206NDIS_STATUS NICInitializeAdapter( 2477NDIS_STATUS NICInitializeAdapter(
3207 IN PRTMP_ADAPTER pAd, 2478 IN PRTMP_ADAPTER pAd,
@@ -3210,10 +2481,7 @@ NDIS_STATUS NICInitializeAdapter(
3210NDIS_STATUS NICInitializeAsic( 2481NDIS_STATUS NICInitializeAsic(
3211 IN PRTMP_ADAPTER pAd, 2482 IN PRTMP_ADAPTER pAd,
3212 IN BOOLEAN bHardReset); 2483 IN BOOLEAN bHardReset);
3213#ifdef RT2860 2484
3214VOID NICRestoreBBPValue(
3215 IN PRTMP_ADAPTER pAd);
3216#endif
3217VOID NICIssueReset( 2485VOID NICIssueReset(
3218 IN PRTMP_ADAPTER pAd); 2486 IN PRTMP_ADAPTER pAd);
3219 2487
@@ -3227,10 +2495,10 @@ VOID UserCfgInit(
3227VOID NICResetFromError( 2495VOID NICResetFromError(
3228 IN PRTMP_ADAPTER pAd); 2496 IN PRTMP_ADAPTER pAd);
3229 2497
3230VOID NICEraseFirmware( 2498NDIS_STATUS NICLoadFirmware(
3231 IN PRTMP_ADAPTER pAd); 2499 IN PRTMP_ADAPTER pAd);
3232 2500
3233NDIS_STATUS NICLoadFirmware( 2501VOID NICEraseFirmware(
3234 IN PRTMP_ADAPTER pAd); 2502 IN PRTMP_ADAPTER pAd);
3235 2503
3236NDIS_STATUS NICLoadRateSwitchingParams( 2504NDIS_STATUS NICLoadRateSwitchingParams(
@@ -3245,10 +2513,6 @@ VOID NICUpdateFifoStaCounters(
3245VOID NICUpdateRawCounters( 2513VOID NICUpdateRawCounters(
3246 IN PRTMP_ADAPTER pAd); 2514 IN PRTMP_ADAPTER pAd);
3247 2515
3248ULONG RTMPNotAllZero(
3249 IN PVOID pSrc1,
3250 IN ULONG Length);
3251
3252VOID RTMPZeroMemory( 2516VOID RTMPZeroMemory(
3253 IN PVOID pSrc, 2517 IN PVOID pSrc,
3254 IN ULONG Length); 2518 IN ULONG Length);
@@ -3264,8 +2528,8 @@ VOID RTMPMoveMemory(
3264 IN ULONG Length); 2528 IN ULONG Length);
3265 2529
3266VOID AtoH( 2530VOID AtoH(
3267 char *src, 2531 PSTRING src,
3268 UCHAR *dest, 2532 PUCHAR dest,
3269 int destlen); 2533 int destlen);
3270 2534
3271UCHAR BtoH( 2535UCHAR BtoH(
@@ -3383,6 +2647,7 @@ VOID SendRefreshBAR(
3383 IN PRTMP_ADAPTER pAd, 2647 IN PRTMP_ADAPTER pAd,
3384 IN MAC_TABLE_ENTRY *pEntry); 2648 IN MAC_TABLE_ENTRY *pEntry);
3385 2649
2650
3386VOID ActHeaderInit( 2651VOID ActHeaderInit(
3387 IN PRTMP_ADAPTER pAd, 2652 IN PRTMP_ADAPTER pAd,
3388 IN OUT PHEADER_802_11 pHdr80211, 2653 IN OUT PHEADER_802_11 pHdr80211,
@@ -3444,6 +2709,7 @@ BOOLEAN PeerIsAggreOn(
3444 IN ULONG TxRate, 2709 IN ULONG TxRate,
3445 IN PMAC_TABLE_ENTRY pMacEntry); 2710 IN PMAC_TABLE_ENTRY pMacEntry);
3446 2711
2712
3447NDIS_STATUS Sniff2BytesFromNdisBuffer( 2713NDIS_STATUS Sniff2BytesFromNdisBuffer(
3448 IN PNDIS_BUFFER pFirstBuffer, 2714 IN PNDIS_BUFFER pFirstBuffer,
3449 IN UCHAR DesiredOffset, 2715 IN UCHAR DesiredOffset,
@@ -3498,11 +2764,24 @@ NDIS_STATUS MlmeHardTransmitMgmtRing(
3498 IN UCHAR QueIdx, 2764 IN UCHAR QueIdx,
3499 IN PNDIS_PACKET pPacket); 2765 IN PNDIS_PACKET pPacket);
3500 2766
2767#ifdef RTMP_MAC_PCI
3501NDIS_STATUS MlmeHardTransmitTxRing( 2768NDIS_STATUS MlmeHardTransmitTxRing(
3502 IN PRTMP_ADAPTER pAd, 2769 IN PRTMP_ADAPTER pAd,
3503 IN UCHAR QueIdx, 2770 IN UCHAR QueIdx,
3504 IN PNDIS_PACKET pPacket); 2771 IN PNDIS_PACKET pPacket);
3505 2772
2773NDIS_STATUS MlmeDataHardTransmit(
2774 IN PRTMP_ADAPTER pAd,
2775 IN UCHAR QueIdx,
2776 IN PNDIS_PACKET pPacket);
2777
2778VOID RTMPWriteTxDescriptor(
2779 IN PRTMP_ADAPTER pAd,
2780 IN PTXD_STRUC pTxD,
2781 IN BOOLEAN bWIV,
2782 IN UCHAR QSEL);
2783#endif // RTMP_MAC_PCI //
2784
3506USHORT RTMPCalcDuration( 2785USHORT RTMPCalcDuration(
3507 IN PRTMP_ADAPTER pAd, 2786 IN PRTMP_ADAPTER pAd,
3508 IN UCHAR Rate, 2787 IN UCHAR Rate,
@@ -3539,12 +2818,6 @@ VOID RTMPWriteTxWI_Cache(
3539 IN OUT PTXWI_STRUC pTxWI, 2818 IN OUT PTXWI_STRUC pTxWI,
3540 IN TX_BLK *pTxBlk); 2819 IN TX_BLK *pTxBlk);
3541 2820
3542VOID RTMPWriteTxDescriptor(
3543 IN PRTMP_ADAPTER pAd,
3544 IN PTXD_STRUC pTxD,
3545 IN BOOLEAN bWIV,
3546 IN UCHAR QSEL);
3547
3548VOID RTMPSuspendMsduTransmission( 2821VOID RTMPSuspendMsduTransmission(
3549 IN PRTMP_ADAPTER pAd); 2822 IN PRTMP_ADAPTER pAd);
3550 2823
@@ -3557,6 +2830,9 @@ NDIS_STATUS MiniportMMRequest(
3557 IN PUCHAR pData, 2830 IN PUCHAR pData,
3558 IN UINT Length); 2831 IN UINT Length);
3559 2832
2833//+++mark by shiang, now this function merge to MiniportMMRequest()
2834//---mark by shiang, now this function merge to MiniportMMRequest()
2835
3560VOID RTMPSendNullFrame( 2836VOID RTMPSendNullFrame(
3561 IN PRTMP_ADAPTER pAd, 2837 IN PRTMP_ADAPTER pAd,
3562 IN UCHAR TxRate, 2838 IN UCHAR TxRate,
@@ -3593,6 +2869,16 @@ VOID WpaDisassocApAndBlockAssoc(
3593 IN PVOID SystemSpecific2, 2869 IN PVOID SystemSpecific2,
3594 IN PVOID SystemSpecific3); 2870 IN PVOID SystemSpecific3);
3595 2871
2872VOID WpaStaPairwiseKeySetting(
2873 IN PRTMP_ADAPTER pAd);
2874
2875VOID WpaStaGroupKeySetting(
2876 IN PRTMP_ADAPTER pAd);
2877
2878VOID WpaSendEapolStart(
2879 IN PRTMP_ADAPTER pAdapter,
2880 IN PUCHAR pBssid);
2881
3596NDIS_STATUS RTMPCloneNdisPacket( 2882NDIS_STATUS RTMPCloneNdisPacket(
3597 IN PRTMP_ADAPTER pAd, 2883 IN PRTMP_ADAPTER pAd,
3598 IN BOOLEAN pInsAMSDUHdr, 2884 IN BOOLEAN pInsAMSDUHdr,
@@ -3713,6 +2999,9 @@ VOID AsicRfTuningExec(
3713 IN PVOID SystemSpecific2, 2999 IN PVOID SystemSpecific2,
3714 IN PVOID SystemSpecific3); 3000 IN PVOID SystemSpecific3);
3715 3001
3002VOID AsicResetBBPAgent(
3003 IN PRTMP_ADAPTER pAd);
3004
3716VOID AsicSleepThenAutoWakeup( 3005VOID AsicSleepThenAutoWakeup(
3717 IN PRTMP_ADAPTER pAd, 3006 IN PRTMP_ADAPTER pAd,
3718 IN USHORT TbttNumToNextWakeUp); 3007 IN USHORT TbttNumToNextWakeUp);
@@ -3722,12 +3011,7 @@ VOID AsicForceSleep(
3722 3011
3723VOID AsicForceWakeup( 3012VOID AsicForceWakeup(
3724 IN PRTMP_ADAPTER pAd, 3013 IN PRTMP_ADAPTER pAd,
3725#ifdef RT2860
3726 IN UCHAR Level);
3727#endif
3728#ifdef RT2870
3729 IN BOOLEAN bFromTx); 3014 IN BOOLEAN bFromTx);
3730#endif
3731 3015
3732VOID AsicSetBssid( 3016VOID AsicSetBssid(
3733 IN PRTMP_ADAPTER pAd, 3017 IN PRTMP_ADAPTER pAd,
@@ -3821,11 +3105,14 @@ BOOLEAN AsicSendCommandToMcu(
3821 IN UCHAR Token, 3105 IN UCHAR Token,
3822 IN UCHAR Arg0, 3106 IN UCHAR Arg0,
3823 IN UCHAR Arg1); 3107 IN UCHAR Arg1);
3824#ifdef RT2860 3108
3109
3110#ifdef RTMP_MAC_PCI
3825BOOLEAN AsicCheckCommanOk( 3111BOOLEAN AsicCheckCommanOk(
3826 IN PRTMP_ADAPTER pAd, 3112 IN PRTMP_ADAPTER pAd,
3827 IN UCHAR Command); 3113 IN UCHAR Command);
3828#endif 3114#endif // RTMP_MAC_PCI //
3115
3829VOID MacAddrRandomBssid( 3116VOID MacAddrRandomBssid(
3830 IN PRTMP_ADAPTER pAd, 3117 IN PRTMP_ADAPTER pAd,
3831 OUT PUCHAR pAddr); 3118 OUT PUCHAR pAddr);
@@ -3871,6 +3158,11 @@ ULONG BssTableSearchWithSSID(
3871 IN UCHAR SsidLen, 3158 IN UCHAR SsidLen,
3872 IN UCHAR Channel); 3159 IN UCHAR Channel);
3873 3160
3161ULONG BssSsidTableSearchBySSID(
3162 IN BSS_TABLE *Tab,
3163 IN PUCHAR pSsid,
3164 IN UCHAR SsidLen);
3165
3874VOID BssTableDeleteEntry( 3166VOID BssTableDeleteEntry(
3875 IN OUT PBSS_TABLE pTab, 3167 IN OUT PBSS_TABLE pTab,
3876 IN PUCHAR pBssid, 3168 IN PUCHAR pBssid,
@@ -4095,9 +3387,6 @@ VOID Cls3errAction(
4095 IN PRTMP_ADAPTER pAd, 3387 IN PRTMP_ADAPTER pAd,
4096 IN PUCHAR pAddr); 3388 IN PUCHAR pAddr);
4097 3389
4098VOID SwitchBetweenWepAndCkip(
4099 IN PRTMP_ADAPTER pAd);
4100
4101VOID InvalidStateWhenAssoc( 3390VOID InvalidStateWhenAssoc(
4102 IN PRTMP_ADAPTER pAd, 3391 IN PRTMP_ADAPTER pAd,
4103 IN MLME_QUEUE_ELEM *Elem); 3392 IN MLME_QUEUE_ELEM *Elem);
@@ -4110,12 +3399,12 @@ VOID InvalidStateWhenDisassociate(
4110 IN PRTMP_ADAPTER pAd, 3399 IN PRTMP_ADAPTER pAd,
4111 IN MLME_QUEUE_ELEM *Elem); 3400 IN MLME_QUEUE_ELEM *Elem);
4112 3401
4113#ifdef RT2870 3402#ifdef RTMP_MAC_USB
4114VOID MlmeCntlConfirm( 3403VOID MlmeCntlConfirm(
4115 IN PRTMP_ADAPTER pAd, 3404 IN PRTMP_ADAPTER pAd,
4116 IN ULONG MsgType, 3405 IN ULONG MsgType,
4117 IN USHORT Msg); 3406 IN USHORT Msg);
4118#endif // RT2870 // 3407#endif // RTMP_MAC_USB //
4119 3408
4120VOID ComposePsPoll( 3409VOID ComposePsPoll(
4121 IN PRTMP_ADAPTER pAd); 3410 IN PRTMP_ADAPTER pAd);
@@ -4325,7 +3614,7 @@ VOID AssocParmFill(
4325VOID ScanParmFill( 3614VOID ScanParmFill(
4326 IN PRTMP_ADAPTER pAd, 3615 IN PRTMP_ADAPTER pAd,
4327 IN OUT MLME_SCAN_REQ_STRUCT *ScanReq, 3616 IN OUT MLME_SCAN_REQ_STRUCT *ScanReq,
4328 IN CHAR Ssid[], 3617 IN STRING Ssid[],
4329 IN UCHAR SsidLen, 3618 IN UCHAR SsidLen,
4330 IN UCHAR BssType, 3619 IN UCHAR BssType,
4331 IN UCHAR ScanType); 3620 IN UCHAR ScanType);
@@ -4396,7 +3685,7 @@ VOID ScanNextChannel(
4396ULONG MakeIbssBeacon( 3685ULONG MakeIbssBeacon(
4397 IN PRTMP_ADAPTER pAd); 3686 IN PRTMP_ADAPTER pAd);
4398 3687
4399VOID CCXAdjacentAPReport( 3688VOID InitChannelRelatedValue(
4400 IN PRTMP_ADAPTER pAd); 3689 IN PRTMP_ADAPTER pAd);
4401 3690
4402BOOLEAN MlmeScanReqSanity( 3691BOOLEAN MlmeScanReqSanity(
@@ -4527,6 +3816,13 @@ BOOLEAN PeerDisassocSanity(
4527 OUT PUCHAR pAddr2, 3816 OUT PUCHAR pAddr2,
4528 OUT USHORT *Reason); 3817 OUT USHORT *Reason);
4529 3818
3819BOOLEAN PeerWpaMessageSanity(
3820 IN PRTMP_ADAPTER pAd,
3821 IN PEAPOL_PACKET pMsg,
3822 IN ULONG MsgLen,
3823 IN UCHAR MsgType,
3824 IN MAC_TABLE_ENTRY *pEntry);
3825
4530BOOLEAN PeerDeauthSanity( 3826BOOLEAN PeerDeauthSanity(
4531 IN PRTMP_ADAPTER pAd, 3827 IN PRTMP_ADAPTER pAd,
4532 IN VOID *Msg, 3828 IN VOID *Msg,
@@ -4570,7 +3866,7 @@ BOOLEAN MlmeAddBAReqSanity(
4570 OUT PUCHAR pAddr2); 3866 OUT PUCHAR pAddr2);
4571 3867
4572ULONG MakeOutgoingFrame( 3868ULONG MakeOutgoingFrame(
4573 OUT CHAR *Buffer, 3869 OUT UCHAR *Buffer,
4574 OUT ULONG *Length, ...); 3870 OUT ULONG *Length, ...);
4575 3871
4576VOID LfsrInit( 3872VOID LfsrInit(
@@ -4613,9 +3909,8 @@ VOID MlmeCheckForRoaming(
4613 IN PRTMP_ADAPTER pAd, 3909 IN PRTMP_ADAPTER pAd,
4614 IN ULONG Now32); 3910 IN ULONG Now32);
4615 3911
4616VOID MlmeCheckForFastRoaming( 3912BOOLEAN MlmeCheckForFastRoaming(
4617 IN PRTMP_ADAPTER pAd, 3913 IN PRTMP_ADAPTER pAd);
4618 IN ULONG Now);
4619 3914
4620VOID MlmeDynamicTxRateSwitching( 3915VOID MlmeDynamicTxRateSwitching(
4621 IN PRTMP_ADAPTER pAd); 3916 IN PRTMP_ADAPTER pAd);
@@ -4634,6 +3929,7 @@ VOID MlmeSelectTxRateTable(
4634 3929
4635VOID MlmeCalculateChannelQuality( 3930VOID MlmeCalculateChannelQuality(
4636 IN PRTMP_ADAPTER pAd, 3931 IN PRTMP_ADAPTER pAd,
3932 IN PMAC_TABLE_ENTRY pMacEntry,
4637 IN ULONG Now); 3933 IN ULONG Now);
4638 3934
4639VOID MlmeCheckPsmChange( 3935VOID MlmeCheckPsmChange(
@@ -4691,10 +3987,91 @@ CHAR RTMPMaxRssi(
4691 IN CHAR Rssi1, 3987 IN CHAR Rssi1,
4692 IN CHAR Rssi2); 3988 IN CHAR Rssi2);
4693 3989
3990#ifdef RT30xx
4694VOID AsicSetRxAnt( 3991VOID AsicSetRxAnt(
4695 IN PRTMP_ADAPTER pAd, 3992 IN PRTMP_ADAPTER pAd,
4696 IN UCHAR Ant); 3993 IN UCHAR Ant);
4697 3994
3995VOID RTMPFilterCalibration(
3996 IN PRTMP_ADAPTER pAd);
3997
3998#ifdef RTMP_EFUSE_SUPPORT
3999//2008/09/11:KH add to support efuse<--
4000INT set_eFuseGetFreeBlockCount_Proc(
4001 IN PRTMP_ADAPTER pAd,
4002 IN PSTRING arg);
4003
4004INT set_eFusedump_Proc(
4005 IN PRTMP_ADAPTER pAd,
4006 IN PSTRING arg);
4007
4008INT set_eFuseLoadFromBin_Proc(
4009 IN PRTMP_ADAPTER pAd,
4010 IN PSTRING arg);
4011
4012VOID eFusePhysicalReadRegisters(
4013 IN PRTMP_ADAPTER pAd,
4014 IN USHORT Offset,
4015 IN USHORT Length,
4016 OUT USHORT* pData);
4017
4018int RtmpEfuseSupportCheck(
4019 IN RTMP_ADAPTER *pAd);
4020
4021INT set_eFuseBufferModeWriteBack_Proc(
4022 IN PRTMP_ADAPTER pAd,
4023 IN PSTRING arg);
4024
4025INT eFuseLoadEEPROM(
4026 IN PRTMP_ADAPTER pAd);
4027
4028INT eFuseWriteEeeppromBuf(
4029 IN PRTMP_ADAPTER pAd);
4030
4031VOID eFuseGetFreeBlockCount(IN PRTMP_ADAPTER pAd,
4032 PUINT EfuseFreeBlock);
4033
4034INT eFuse_init(
4035 IN PRTMP_ADAPTER pAd);
4036
4037NTSTATUS eFuseRead(
4038 IN PRTMP_ADAPTER pAd,
4039 IN USHORT Offset,
4040 OUT PUCHAR pData,
4041 IN USHORT Length);
4042
4043NTSTATUS eFuseWrite(
4044 IN PRTMP_ADAPTER pAd,
4045 IN USHORT Offset,
4046 IN PUCHAR pData,
4047 IN USHORT length);
4048//2008/09/11:KH add to support efuse-->
4049#endif // RTMP_EFUSE_SUPPORT //
4050
4051// add by johnli, RF power sequence setup
4052VOID RT30xxLoadRFNormalModeSetup(
4053 IN PRTMP_ADAPTER pAd);
4054
4055VOID RT30xxLoadRFSleepModeSetup(
4056 IN PRTMP_ADAPTER pAd);
4057
4058VOID RT30xxReverseRFSleepModeSetup(
4059 IN PRTMP_ADAPTER pAd);
4060// end johnli
4061
4062#ifdef RT3070
4063VOID NICInitRT3070RFRegisters(
4064 IN RTMP_ADAPTER *pAd);
4065#endif // RT3070 //
4066
4067VOID RT30xxHaltAction(
4068 IN PRTMP_ADAPTER pAd);
4069
4070VOID RT30xxSetRxAnt(
4071 IN PRTMP_ADAPTER pAd,
4072 IN UCHAR Ant);
4073#endif // RT30xx //
4074
4698VOID AsicEvaluateRxAnt( 4075VOID AsicEvaluateRxAnt(
4699 IN PRTMP_ADAPTER pAd); 4076 IN PRTMP_ADAPTER pAd);
4700 4077
@@ -4751,15 +4128,6 @@ VOID ChangeToCellPowerLimit(
4751 IN PRTMP_ADAPTER pAd, 4128 IN PRTMP_ADAPTER pAd,
4752 IN UCHAR AironetCellPowerLimit); 4129 IN UCHAR AironetCellPowerLimit);
4753 4130
4754USHORT RTMP_EEPROM_READ16(
4755 IN PRTMP_ADAPTER pAd,
4756 IN USHORT Offset);
4757
4758VOID RTMP_EEPROM_WRITE16(
4759 IN PRTMP_ADAPTER pAd,
4760 IN USHORT Offset,
4761 IN USHORT Data);
4762
4763// 4131//
4764// Prototypes of function definition in rtmp_tkip.c 4132// Prototypes of function definition in rtmp_tkip.c
4765// 4133//
@@ -4797,15 +4165,6 @@ VOID RTMPCalculateMICValue(
4797 IN PCIPHER_KEY pKey, 4165 IN PCIPHER_KEY pKey,
4798 IN UCHAR apidx); 4166 IN UCHAR apidx);
4799 4167
4800BOOLEAN RTMPTkipCompareMICValueWithLLC(
4801 IN PRTMP_ADAPTER pAd,
4802 IN PUCHAR pLLC,
4803 IN PUCHAR pSrc,
4804 IN PUCHAR pDA,
4805 IN PUCHAR pSA,
4806 IN PUCHAR pMICKey,
4807 IN UINT Len);
4808
4809VOID RTMPTkipAppendByte( 4168VOID RTMPTkipAppendByte(
4810 IN PTKIP_KEY_INFO pTkip, 4169 IN PTKIP_KEY_INFO pTkip,
4811 IN UCHAR uChar); 4170 IN UCHAR uChar);
@@ -4831,6 +4190,39 @@ BOOLEAN RTMPSoftDecryptAES(
4831 IN ULONG DataByteCnt, 4190 IN ULONG DataByteCnt,
4832 IN PCIPHER_KEY pWpaKey); 4191 IN PCIPHER_KEY pWpaKey);
4833 4192
4193
4194
4195//
4196// Prototypes of function definition in cmm_info.c
4197//
4198INT RT_CfgSetCountryRegion(
4199 IN PRTMP_ADAPTER pAd,
4200 IN PSTRING arg,
4201 IN INT band);
4202
4203INT RT_CfgSetWirelessMode(
4204 IN PRTMP_ADAPTER pAd,
4205 IN PSTRING arg);
4206
4207INT RT_CfgSetShortSlot(
4208 IN PRTMP_ADAPTER pAd,
4209 IN PSTRING arg);
4210
4211INT RT_CfgSetWepKey(
4212 IN PRTMP_ADAPTER pAd,
4213 IN PSTRING keyString,
4214 IN CIPHER_KEY *pSharedKey,
4215 IN INT keyIdx);
4216
4217INT RT_CfgSetWPAPSKKey(
4218 IN RTMP_ADAPTER *pAd,
4219 IN PSTRING keyString,
4220 IN UCHAR *pHashStr,
4221 IN INT hashStrLen,
4222 OUT PUCHAR pPMKBuf);
4223
4224
4225
4834// 4226//
4835// Prototypes of function definition in cmm_info.c 4227// Prototypes of function definition in cmm_info.c
4836// 4228//
@@ -4862,26 +4254,12 @@ VOID RTMPAddWcidAttributeEntry(
4862 IN UCHAR CipherAlg, 4254 IN UCHAR CipherAlg,
4863 IN MAC_TABLE_ENTRY *pEntry); 4255 IN MAC_TABLE_ENTRY *pEntry);
4864 4256
4865CHAR *GetEncryptType( 4257PSTRING GetEncryptType(
4866 CHAR enc); 4258 CHAR enc);
4867 4259
4868CHAR *GetAuthMode( 4260PSTRING GetAuthMode(
4869 CHAR auth); 4261 CHAR auth);
4870 4262
4871VOID RTMPIoctlGetSiteSurvey(
4872 IN PRTMP_ADAPTER pAdapter,
4873 IN struct iwreq *wrq);
4874
4875VOID RTMPIoctlGetMacTable(
4876 IN PRTMP_ADAPTER pAd,
4877 IN struct iwreq *wrq);
4878
4879VOID RTMPAddBSSIDCipher(
4880 IN PRTMP_ADAPTER pAd,
4881 IN UCHAR Aid,
4882 IN PNDIS_802_11_KEY pKey,
4883 IN UCHAR CipherAlg);
4884
4885VOID RTMPSetHT( 4263VOID RTMPSetHT(
4886 IN PRTMP_ADAPTER pAd, 4264 IN PRTMP_ADAPTER pAd,
4887 IN OID_SET_HT_PHYMODE *pHTPhyMode); 4265 IN OID_SET_HT_PHYMODE *pHTPhyMode);
@@ -4897,88 +4275,24 @@ VOID RTMPSendWirelessEvent(
4897 IN UCHAR BssIdx, 4275 IN UCHAR BssIdx,
4898 IN CHAR Rssi); 4276 IN CHAR Rssi);
4899 4277
4900// 4278CHAR ConvertToRssi(
4901// prototype in wpa.c
4902//
4903BOOLEAN WpaMsgTypeSubst(
4904 IN UCHAR EAPType,
4905 OUT INT *MsgType);
4906
4907VOID WpaPskStateMachineInit(
4908 IN PRTMP_ADAPTER pAd,
4909 IN STATE_MACHINE *S,
4910 OUT STATE_MACHINE_FUNC Trans[]);
4911
4912VOID WpaEAPOLKeyAction(
4913 IN PRTMP_ADAPTER pAd,
4914 IN MLME_QUEUE_ELEM *Elem);
4915
4916VOID WpaPairMsg1Action(
4917 IN PRTMP_ADAPTER pAd,
4918 IN MLME_QUEUE_ELEM *Elem);
4919
4920VOID WpaPairMsg3Action(
4921 IN PRTMP_ADAPTER pAd,
4922 IN MLME_QUEUE_ELEM *Elem);
4923
4924VOID WpaGroupMsg1Action(
4925 IN PRTMP_ADAPTER pAd,
4926 IN MLME_QUEUE_ELEM *Elem);
4927
4928VOID WpaMacHeaderInit(
4929 IN PRTMP_ADAPTER pAd,
4930 IN OUT PHEADER_802_11 pHdr80211,
4931 IN UCHAR wep,
4932 IN PUCHAR pAddr1);
4933
4934VOID Wpa2PairMsg1Action(
4935 IN PRTMP_ADAPTER pAd,
4936 IN MLME_QUEUE_ELEM *Elem);
4937
4938VOID Wpa2PairMsg3Action(
4939 IN PRTMP_ADAPTER pAd,
4940 IN MLME_QUEUE_ELEM *Elem);
4941
4942BOOLEAN ParseKeyData(
4943 IN PRTMP_ADAPTER pAd, 4279 IN PRTMP_ADAPTER pAd,
4944 IN PUCHAR pKeyData, 4280 IN CHAR Rssi,
4945 IN UCHAR KeyDataLen, 4281 IN UCHAR RssiNumber);
4946 IN UCHAR bPairewise);
4947 4282
4283/*===================================
4284 Function prototype in cmm_wpa.c
4285 =================================== */
4948VOID RTMPToWirelessSta( 4286VOID RTMPToWirelessSta(
4949 IN PRTMP_ADAPTER pAd, 4287 IN PRTMP_ADAPTER pAd,
4288 IN PMAC_TABLE_ENTRY pEntry,
4950 IN PUCHAR pHeader802_3, 4289 IN PUCHAR pHeader802_3,
4951 IN UINT HdrLen, 4290 IN UINT HdrLen,
4952 IN PUCHAR pData, 4291 IN PUCHAR pData,
4953 IN UINT DataLen, 4292 IN UINT DataLen,
4954 IN BOOLEAN is4wayFrame); 4293 IN BOOLEAN bClearFrame);
4955
4956VOID HMAC_SHA1(
4957 IN UCHAR *text,
4958 IN UINT text_len,
4959 IN UCHAR *key,
4960 IN UINT key_len,
4961 IN UCHAR *digest);
4962 4294
4963VOID PRF( 4295VOID WpaDerivePTK(
4964 IN UCHAR *key,
4965 IN INT key_len,
4966 IN UCHAR *prefix,
4967 IN INT prefix_len,
4968 IN UCHAR *data,
4969 IN INT data_len,
4970 OUT UCHAR *output,
4971 IN INT len);
4972
4973VOID CCKMPRF(
4974 IN UCHAR *key,
4975 IN INT key_len,
4976 IN UCHAR *data,
4977 IN INT data_len,
4978 OUT UCHAR *output,
4979 IN INT len);
4980
4981VOID WpaCountPTK(
4982 IN PRTMP_ADAPTER pAd, 4296 IN PRTMP_ADAPTER pAd,
4983 IN UCHAR *PMK, 4297 IN UCHAR *PMK,
4984 IN UCHAR *ANonce, 4298 IN UCHAR *ANonce,
@@ -4993,95 +4307,129 @@ VOID GenRandom(
4993 IN UCHAR *macAddr, 4307 IN UCHAR *macAddr,
4994 OUT UCHAR *random); 4308 OUT UCHAR *random);
4995 4309
4996// 4310BOOLEAN RTMPCheckWPAframe(
4997// prototype in aironet.c
4998//
4999VOID AironetStateMachineInit(
5000 IN PRTMP_ADAPTER pAd, 4311 IN PRTMP_ADAPTER pAd,
5001 IN STATE_MACHINE *S, 4312 IN PMAC_TABLE_ENTRY pEntry,
5002 OUT STATE_MACHINE_FUNC Trans[]); 4313 IN PUCHAR pData,
4314 IN ULONG DataByteCount,
4315 IN UCHAR FromWhichBSSID);
5003 4316
5004VOID AironetMsgAction( 4317VOID AES_GTK_KEY_UNWRAP(
5005 IN PRTMP_ADAPTER pAd, 4318 IN UCHAR *key,
5006 IN MLME_QUEUE_ELEM *Elem); 4319 OUT UCHAR *plaintext,
4320 IN UINT32 c_len,
4321 IN UCHAR *ciphertext);
5007 4322
5008VOID AironetRequestAction( 4323BOOLEAN RTMPParseEapolKeyData(
5009 IN PRTMP_ADAPTER pAd, 4324 IN PRTMP_ADAPTER pAd,
5010 IN MLME_QUEUE_ELEM *Elem); 4325 IN PUCHAR pKeyData,
4326 IN UCHAR KeyDataLen,
4327 IN UCHAR GroupKeyIndex,
4328 IN UCHAR MsgType,
4329 IN BOOLEAN bWPA2,
4330 IN MAC_TABLE_ENTRY *pEntry);
4331
4332VOID ConstructEapolMsg(
4333 IN PMAC_TABLE_ENTRY pEntry,
4334 IN UCHAR GroupKeyWepStatus,
4335 IN UCHAR MsgType,
4336 IN UCHAR DefaultKeyIdx,
4337 IN UCHAR *KeyNonce,
4338 IN UCHAR *TxRSC,
4339 IN UCHAR *GTK,
4340 IN UCHAR *RSNIE,
4341 IN UCHAR RSNIE_Len,
4342 OUT PEAPOL_PACKET pMsg);
4343
4344NDIS_STATUS RTMPSoftDecryptBroadCastData(
4345 IN PRTMP_ADAPTER pAd,
4346 IN RX_BLK *pRxBlk,
4347 IN NDIS_802_11_ENCRYPTION_STATUS GroupCipher,
4348 IN PCIPHER_KEY pShard_key);
5011 4349
5012VOID ChannelLoadRequestAction( 4350VOID RTMPMakeRSNIE(
5013 IN PRTMP_ADAPTER pAd, 4351 IN PRTMP_ADAPTER pAd,
5014 IN UCHAR Index); 4352 IN UINT AuthMode,
4353 IN UINT WepStatus,
4354 IN UCHAR apidx);
5015 4355
5016VOID NoiseHistRequestAction( 4356//
4357// function prototype in ap_wpa.c
4358//
4359VOID RTMPGetTxTscFromAsic(
5017 IN PRTMP_ADAPTER pAd, 4360 IN PRTMP_ADAPTER pAd,
5018 IN UCHAR Index); 4361 IN UCHAR apidx,
4362 OUT PUCHAR pTxTsc);
5019 4363
5020VOID BeaconRequestAction( 4364VOID APInstallPairwiseKey(
4365 PRTMP_ADAPTER pAd,
4366 PMAC_TABLE_ENTRY pEntry);
4367
4368UINT APValidateRSNIE(
5021 IN PRTMP_ADAPTER pAd, 4369 IN PRTMP_ADAPTER pAd,
5022 IN UCHAR Index); 4370 IN PMAC_TABLE_ENTRY pEntry,
4371 IN PUCHAR pRsnIe,
4372 IN UCHAR rsnie_len);
5023 4373
5024VOID AironetReportAction( 4374VOID HandleCounterMeasure(
5025 IN PRTMP_ADAPTER pAd, 4375 IN PRTMP_ADAPTER pAd,
5026 IN MLME_QUEUE_ELEM *Elem); 4376 IN MAC_TABLE_ENTRY *pEntry);
5027 4377
5028VOID ChannelLoadReportAction( 4378VOID WPAStart4WayHS(
5029 IN PRTMP_ADAPTER pAd, 4379 IN PRTMP_ADAPTER pAd,
5030 IN UCHAR Index); 4380 IN MAC_TABLE_ENTRY *pEntry,
4381 IN ULONG TimeInterval);
5031 4382
5032VOID NoiseHistReportAction( 4383VOID WPAStart2WayGroupHS(
5033 IN PRTMP_ADAPTER pAd, 4384 IN PRTMP_ADAPTER pAd,
5034 IN UCHAR Index); 4385 IN MAC_TABLE_ENTRY *pEntry);
5035 4386
5036VOID AironetFinalReportAction( 4387VOID PeerPairMsg1Action(
5037 IN PRTMP_ADAPTER pAd); 4388 IN PRTMP_ADAPTER pAd,
4389 IN MAC_TABLE_ENTRY *pEntry,
4390 IN MLME_QUEUE_ELEM *Elem);
5038 4391
5039VOID BeaconReportAction( 4392VOID PeerPairMsg2Action(
5040 IN PRTMP_ADAPTER pAd, 4393 IN PRTMP_ADAPTER pAd,
5041 IN UCHAR Index); 4394 IN MAC_TABLE_ENTRY *pEntry,
4395 IN MLME_QUEUE_ELEM *Elem);
5042 4396
5043VOID AironetAddBeaconReport( 4397VOID PeerPairMsg3Action(
5044 IN PRTMP_ADAPTER pAd, 4398 IN PRTMP_ADAPTER pAd,
5045 IN ULONG Index, 4399 IN MAC_TABLE_ENTRY *pEntry,
5046 IN PMLME_QUEUE_ELEM pElem); 4400 IN MLME_QUEUE_ELEM *Elem);
5047 4401
5048VOID AironetCreateBeaconReportFromBssTable( 4402VOID PeerPairMsg4Action(
5049 IN PRTMP_ADAPTER pAd); 4403 IN PRTMP_ADAPTER pAd,
4404 IN MAC_TABLE_ENTRY *pEntry,
4405 IN MLME_QUEUE_ELEM *Elem);
5050 4406
5051CHAR ConvertToRssi( 4407VOID PeerGroupMsg1Action(
5052 IN PRTMP_ADAPTER pAd, 4408 IN PRTMP_ADAPTER pAd,
5053 IN CHAR Rssi, 4409 IN PMAC_TABLE_ENTRY pEntry,
5054 IN UCHAR RssiNumber); 4410 IN MLME_QUEUE_ELEM *Elem);
5055 4411
5056// 4412VOID PeerGroupMsg2Action(
5057// function prototype in cmm_wpa.c
5058//
5059BOOLEAN RTMPCheckWPAframe(
5060 IN PRTMP_ADAPTER pAd, 4413 IN PRTMP_ADAPTER pAd,
5061 IN PMAC_TABLE_ENTRY pEntry, 4414 IN PMAC_TABLE_ENTRY pEntry,
5062 IN PUCHAR pData, 4415 IN VOID *Msg,
5063 IN ULONG DataByteCount, 4416 IN UINT MsgLen);
5064 IN UCHAR FromWhichBSSID);
5065 4417
5066VOID AES_GTK_KEY_UNWRAP( 4418VOID WpaDeriveGTK(
5067 IN UCHAR *key, 4419 IN UCHAR *PMK,
5068 OUT UCHAR *plaintext, 4420 IN UCHAR *GNonce,
5069 IN UCHAR c_len, 4421 IN UCHAR *AA,
5070 IN UCHAR *ciphertext); 4422 OUT UCHAR *output,
4423 IN UINT len);
5071 4424
5072VOID RTMPMakeRSNIE( 4425VOID AES_GTK_KEY_WRAP(
5073 IN PRTMP_ADAPTER pAd, 4426 IN UCHAR *key,
5074 IN UINT AuthMode, 4427 IN UCHAR *plaintext,
5075 IN UINT WepStatus, 4428 IN UINT32 p_len,
5076 IN UCHAR apidx); 4429 OUT UCHAR *ciphertext);
5077 4430
5078// 4431//typedef void (*TIMER_FUNCTION)(unsigned long);
5079// function prototype in ap_wpa.c
5080//
5081 4432
5082VOID HandleCounterMeasure(
5083 IN PRTMP_ADAPTER pAd,
5084 IN MAC_TABLE_ENTRY *pEntry);
5085 4433
5086/* timeout -- ms */ 4434/* timeout -- ms */
5087VOID RTMP_SetPeriodicTimer( 4435VOID RTMP_SetPeriodicTimer(
@@ -5116,13 +4464,13 @@ VOID RTMPusecDelay(
5116 IN ULONG usec); 4464 IN ULONG usec);
5117 4465
5118NDIS_STATUS os_alloc_mem( 4466NDIS_STATUS os_alloc_mem(
5119 IN PRTMP_ADAPTER pAd, 4467 IN RTMP_ADAPTER *pAd,
5120 OUT PUCHAR *mem, 4468 OUT UCHAR **mem,
5121 IN ULONG size); 4469 IN ULONG size);
5122 4470
5123NDIS_STATUS os_free_mem( 4471NDIS_STATUS os_free_mem(
5124 IN PRTMP_ADAPTER pAd, 4472 IN PRTMP_ADAPTER pAd,
5125 IN PUCHAR mem); 4473 IN PVOID mem);
5126 4474
5127 4475
5128void RTMP_AllocateSharedMemory( 4476void RTMP_AllocateSharedMemory(
@@ -5155,6 +4503,13 @@ void RTMP_AllocateFirstTxBuffer(
5155 OUT PVOID *VirtualAddress, 4503 OUT PVOID *VirtualAddress,
5156 OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress); 4504 OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress);
5157 4505
4506void RTMP_FreeFirstTxBuffer(
4507 IN PRTMP_ADAPTER pAd,
4508 IN ULONG Length,
4509 IN BOOLEAN Cached,
4510 IN PVOID VirtualAddress,
4511 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress);
4512
5158void RTMP_AllocateMgmtDescMemory( 4513void RTMP_AllocateMgmtDescMemory(
5159 IN PRTMP_ADAPTER pAd, 4514 IN PRTMP_ADAPTER pAd,
5160 IN ULONG Length, 4515 IN ULONG Length,
@@ -5169,6 +4524,16 @@ void RTMP_AllocateRxDescMemory(
5169 OUT PVOID *VirtualAddress, 4524 OUT PVOID *VirtualAddress,
5170 OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress); 4525 OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress);
5171 4526
4527void RTMP_FreeDescMemory(
4528 IN PRTMP_ADAPTER pAd,
4529 IN ULONG Length,
4530 IN PVOID VirtualAddress,
4531 IN NDIS_PHYSICAL_ADDRESS PhysicalAddress);
4532
4533PNDIS_PACKET RtmpOSNetPktAlloc(
4534 IN RTMP_ADAPTER *pAd,
4535 IN int size);
4536
5172PNDIS_PACKET RTMP_AllocateRxPacketBuffer( 4537PNDIS_PACKET RTMP_AllocateRxPacketBuffer(
5173 IN PRTMP_ADAPTER pAd, 4538 IN PRTMP_ADAPTER pAd,
5174 IN ULONG Length, 4539 IN ULONG Length,
@@ -5279,203 +4644,210 @@ VOID BARecSessionTearDown(
5279BOOLEAN ba_reordering_resource_init(PRTMP_ADAPTER pAd, int num); 4644BOOLEAN ba_reordering_resource_init(PRTMP_ADAPTER pAd, int num);
5280void ba_reordering_resource_release(PRTMP_ADAPTER pAd); 4645void ba_reordering_resource_release(PRTMP_ADAPTER pAd);
5281 4646
4647
4648
4649
5282BOOLEAN rtstrmactohex( 4650BOOLEAN rtstrmactohex(
5283 IN char *s1, 4651 IN PSTRING s1,
5284 IN char *s2); 4652 IN PSTRING s2);
5285 4653
5286BOOLEAN rtstrcasecmp( 4654BOOLEAN rtstrcasecmp(
5287 IN char *s1, 4655 IN PSTRING s1,
5288 IN char *s2); 4656 IN PSTRING s2);
5289 4657
5290char *rtstrstruncasecmp( 4658PSTRING rtstrstruncasecmp(
5291 IN char *s1, 4659 IN PSTRING s1,
5292 IN char *s2); 4660 IN PSTRING s2);
5293 4661
5294char *rtstrstr( 4662PSTRING rtstrstr(
5295 IN const char * s1, 4663 IN const PSTRING s1,
5296 IN const char * s2); 4664 IN const PSTRING s2);
5297 4665
5298char *rstrtok( 4666PSTRING rstrtok(
5299 IN char * s, 4667 IN PSTRING s,
5300 IN const char * ct); 4668 IN const PSTRING ct);
5301 4669
5302int rtinet_aton( 4670int rtinet_aton(
5303 const char *cp, 4671 const PSTRING cp,
5304 unsigned int *addr); 4672 unsigned int *addr);
5305 4673
5306////////// common ioctl functions ////////// 4674////////// common ioctl functions //////////
5307INT Set_DriverVersion_Proc( 4675INT Set_DriverVersion_Proc(
5308 IN PRTMP_ADAPTER pAd, 4676 IN PRTMP_ADAPTER pAd,
5309 IN PUCHAR arg); 4677 IN PSTRING arg);
5310 4678
5311INT Set_CountryRegion_Proc( 4679INT Set_CountryRegion_Proc(
5312 IN PRTMP_ADAPTER pAd, 4680 IN PRTMP_ADAPTER pAd,
5313 IN PUCHAR arg); 4681 IN PSTRING arg);
5314 4682
5315INT Set_CountryRegionABand_Proc( 4683INT Set_CountryRegionABand_Proc(
5316 IN PRTMP_ADAPTER pAd, 4684 IN PRTMP_ADAPTER pAd,
5317 IN PUCHAR arg); 4685 IN PSTRING arg);
5318 4686
5319INT Set_WirelessMode_Proc( 4687INT Set_WirelessMode_Proc(
5320 IN PRTMP_ADAPTER pAd, 4688 IN PRTMP_ADAPTER pAd,
5321 IN PUCHAR arg); 4689 IN PSTRING arg);
5322 4690
5323INT Set_Channel_Proc( 4691INT Set_Channel_Proc(
5324 IN PRTMP_ADAPTER pAd, 4692 IN PRTMP_ADAPTER pAd,
5325 IN PUCHAR arg); 4693 IN PSTRING arg);
5326 4694
5327INT Set_ShortSlot_Proc( 4695INT Set_ShortSlot_Proc(
5328 IN PRTMP_ADAPTER pAd, 4696 IN PRTMP_ADAPTER pAd,
5329 IN PUCHAR arg); 4697 IN PSTRING arg);
5330 4698
5331INT Set_TxPower_Proc( 4699INT Set_TxPower_Proc(
5332 IN PRTMP_ADAPTER pAd, 4700 IN PRTMP_ADAPTER pAd,
5333 IN PUCHAR arg); 4701 IN PSTRING arg);
5334 4702
5335INT Set_BGProtection_Proc( 4703INT Set_BGProtection_Proc(
5336 IN PRTMP_ADAPTER pAd, 4704 IN PRTMP_ADAPTER pAd,
5337 IN PUCHAR arg); 4705 IN PSTRING arg);
5338 4706
5339INT Set_TxPreamble_Proc( 4707INT Set_TxPreamble_Proc(
5340 IN PRTMP_ADAPTER pAd, 4708 IN PRTMP_ADAPTER pAd,
5341 IN PUCHAR arg); 4709 IN PSTRING arg);
5342 4710
5343INT Set_RTSThreshold_Proc( 4711INT Set_RTSThreshold_Proc(
5344 IN PRTMP_ADAPTER pAd, 4712 IN PRTMP_ADAPTER pAd,
5345 IN PUCHAR arg); 4713 IN PSTRING arg);
5346 4714
5347INT Set_FragThreshold_Proc( 4715INT Set_FragThreshold_Proc(
5348 IN PRTMP_ADAPTER pAd, 4716 IN PRTMP_ADAPTER pAd,
5349 IN PUCHAR arg); 4717 IN PSTRING arg);
5350 4718
5351INT Set_TxBurst_Proc( 4719INT Set_TxBurst_Proc(
5352 IN PRTMP_ADAPTER pAd, 4720 IN PRTMP_ADAPTER pAd,
5353 IN PUCHAR arg); 4721 IN PSTRING arg);
5354 4722
5355#ifdef AGGREGATION_SUPPORT 4723#ifdef AGGREGATION_SUPPORT
5356INT Set_PktAggregate_Proc( 4724INT Set_PktAggregate_Proc(
5357 IN PRTMP_ADAPTER pAd, 4725 IN PRTMP_ADAPTER pAd,
5358 IN PUCHAR arg); 4726 IN PSTRING arg);
5359#endif 4727#endif // AGGREGATION_SUPPORT //
5360 4728
5361INT Set_IEEE80211H_Proc( 4729INT Set_IEEE80211H_Proc(
5362 IN PRTMP_ADAPTER pAd, 4730 IN PRTMP_ADAPTER pAd,
5363 IN PUCHAR arg); 4731 IN PSTRING arg);
5364 4732
5365#ifdef DBG 4733#ifdef DBG
5366INT Set_Debug_Proc( 4734INT Set_Debug_Proc(
5367 IN PRTMP_ADAPTER pAd, 4735 IN PRTMP_ADAPTER pAd,
5368 IN PUCHAR arg); 4736 IN PSTRING arg);
5369#endif 4737#endif
5370 4738
5371INT Show_DescInfo_Proc( 4739INT Show_DescInfo_Proc(
5372 IN PRTMP_ADAPTER pAd, 4740 IN PRTMP_ADAPTER pAd,
5373 IN PUCHAR arg); 4741 IN PSTRING arg);
5374 4742
5375INT Set_ResetStatCounter_Proc( 4743INT Set_ResetStatCounter_Proc(
5376 IN PRTMP_ADAPTER pAd, 4744 IN PRTMP_ADAPTER pAd,
5377 IN PUCHAR arg); 4745 IN PSTRING arg);
5378 4746
5379INT Set_BASetup_Proc( 4747INT Set_BASetup_Proc(
5380 IN PRTMP_ADAPTER pAd, 4748 IN PRTMP_ADAPTER pAd,
5381 IN PUCHAR arg); 4749 IN PSTRING arg);
5382 4750
5383INT Set_BADecline_Proc( 4751INT Set_BADecline_Proc(
5384 IN PRTMP_ADAPTER pAd, 4752 IN PRTMP_ADAPTER pAd,
5385 IN PUCHAR arg); 4753 IN PSTRING arg);
5386 4754
5387INT Set_BAOriTearDown_Proc( 4755INT Set_BAOriTearDown_Proc(
5388 IN PRTMP_ADAPTER pAd, 4756 IN PRTMP_ADAPTER pAd,
5389 IN PUCHAR arg); 4757 IN PSTRING arg);
5390 4758
5391INT Set_BARecTearDown_Proc( 4759INT Set_BARecTearDown_Proc(
5392 IN PRTMP_ADAPTER pAd, 4760 IN PRTMP_ADAPTER pAd,
5393 IN PUCHAR arg); 4761 IN PSTRING arg);
5394 4762
5395INT Set_HtBw_Proc( 4763INT Set_HtBw_Proc(
5396 IN PRTMP_ADAPTER pAd, 4764 IN PRTMP_ADAPTER pAd,
5397 IN PUCHAR arg); 4765 IN PSTRING arg);
5398 4766
5399INT Set_HtMcs_Proc( 4767INT Set_HtMcs_Proc(
5400 IN PRTMP_ADAPTER pAd, 4768 IN PRTMP_ADAPTER pAd,
5401 IN PUCHAR arg); 4769 IN PSTRING arg);
5402 4770
5403INT Set_HtGi_Proc( 4771INT Set_HtGi_Proc(
5404 IN PRTMP_ADAPTER pAd, 4772 IN PRTMP_ADAPTER pAd,
5405 IN PUCHAR arg); 4773 IN PSTRING arg);
5406 4774
5407INT Set_HtOpMode_Proc( 4775INT Set_HtOpMode_Proc(
5408 IN PRTMP_ADAPTER pAd, 4776 IN PRTMP_ADAPTER pAd,
5409 IN PUCHAR arg); 4777 IN PSTRING arg);
5410 4778
5411INT Set_HtStbc_Proc( 4779INT Set_HtStbc_Proc(
5412 IN PRTMP_ADAPTER pAd, 4780 IN PRTMP_ADAPTER pAd,
5413 IN PUCHAR arg); 4781 IN PSTRING arg);
5414 4782
5415INT Set_HtHtc_Proc( 4783INT Set_HtHtc_Proc(
5416 IN PRTMP_ADAPTER pAd, 4784 IN PRTMP_ADAPTER pAd,
5417 IN PUCHAR arg); 4785 IN PSTRING arg);
5418 4786
5419INT Set_HtExtcha_Proc( 4787INT Set_HtExtcha_Proc(
5420 IN PRTMP_ADAPTER pAd, 4788 IN PRTMP_ADAPTER pAd,
5421 IN PUCHAR arg); 4789 IN PSTRING arg);
5422 4790
5423INT Set_HtMpduDensity_Proc( 4791INT Set_HtMpduDensity_Proc(
5424 IN PRTMP_ADAPTER pAd, 4792 IN PRTMP_ADAPTER pAd,
5425 IN PUCHAR arg); 4793 IN PSTRING arg);
5426 4794
5427INT Set_HtBaWinSize_Proc( 4795INT Set_HtBaWinSize_Proc(
5428 IN PRTMP_ADAPTER pAd, 4796 IN PRTMP_ADAPTER pAd,
5429 IN PUCHAR arg); 4797 IN PSTRING arg);
5430 4798
5431INT Set_HtRdg_Proc( 4799INT Set_HtRdg_Proc(
5432 IN PRTMP_ADAPTER pAd, 4800 IN PRTMP_ADAPTER pAd,
5433 IN PUCHAR arg); 4801 IN PSTRING arg);
5434 4802
5435INT Set_HtLinkAdapt_Proc( 4803INT Set_HtLinkAdapt_Proc(
5436 IN PRTMP_ADAPTER pAd, 4804 IN PRTMP_ADAPTER pAd,
5437 IN PUCHAR arg); 4805 IN PSTRING arg);
5438 4806
5439INT Set_HtAmsdu_Proc( 4807INT Set_HtAmsdu_Proc(
5440 IN PRTMP_ADAPTER pAd, 4808 IN PRTMP_ADAPTER pAd,
5441 IN PUCHAR arg); 4809 IN PSTRING arg);
5442 4810
5443INT Set_HtAutoBa_Proc( 4811INT Set_HtAutoBa_Proc(
5444 IN PRTMP_ADAPTER pAd, 4812 IN PRTMP_ADAPTER pAd,
5445 IN PUCHAR arg); 4813 IN PSTRING arg);
5446 4814
5447INT Set_HtProtect_Proc( 4815INT Set_HtProtect_Proc(
5448 IN PRTMP_ADAPTER pAd, 4816 IN PRTMP_ADAPTER pAd,
5449 IN PUCHAR arg); 4817 IN PSTRING arg);
5450 4818
5451INT Set_HtMimoPs_Proc( 4819INT Set_HtMimoPs_Proc(
5452 IN PRTMP_ADAPTER pAd, 4820 IN PRTMP_ADAPTER pAd,
5453 IN PUCHAR arg); 4821 IN PSTRING arg);
5454 4822
5455 4823
5456INT Set_ForceShortGI_Proc( 4824INT Set_ForceShortGI_Proc(
5457 IN PRTMP_ADAPTER pAd, 4825 IN PRTMP_ADAPTER pAd,
5458 IN PUCHAR arg); 4826 IN PSTRING arg);
5459 4827
5460INT Set_ForceGF_Proc( 4828INT Set_ForceGF_Proc(
5461 IN PRTMP_ADAPTER pAd, 4829 IN PRTMP_ADAPTER pAd,
5462 IN PUCHAR arg); 4830 IN PSTRING arg);
5463 4831
5464INT SetCommonHT( 4832INT SetCommonHT(
5465 IN PRTMP_ADAPTER pAd); 4833 IN PRTMP_ADAPTER pAd);
5466 4834
5467INT Set_SendPSMPAction_Proc( 4835INT Set_SendPSMPAction_Proc(
5468 IN PRTMP_ADAPTER pAd, 4836 IN PRTMP_ADAPTER pAd,
5469 IN PUCHAR arg); 4837 IN PSTRING arg);
5470 4838
5471INT Set_HtMIMOPSmode_Proc( 4839INT Set_HtMIMOPSmode_Proc(
5472 IN PRTMP_ADAPTER pAd, 4840 IN PRTMP_ADAPTER pAd,
5473 IN PUCHAR arg); 4841 IN PSTRING arg);
5474 4842
5475 4843
5476INT Set_HtTxBASize_Proc( 4844INT Set_HtTxBASize_Proc(
5477 IN PRTMP_ADAPTER pAd, 4845 IN PRTMP_ADAPTER pAd,
5478 IN PUCHAR arg); 4846 IN PSTRING arg);
4847
4848INT Set_HtDisallowTKIP_Proc(
4849 IN PRTMP_ADAPTER pAd,
4850 IN PSTRING arg);
5479 4851
5480INT WpaCheckEapCode( 4852INT WpaCheckEapCode(
5481 IN PRTMP_ADAPTER pAd, 4853 IN PRTMP_ADAPTER pAd,
@@ -5528,12 +4900,6 @@ void wlan_802_11_to_802_3_packet(
5528 IN PUCHAR pHeader802_3, 4900 IN PUCHAR pHeader802_3,
5529 IN UCHAR FromWhichBSSID); 4901 IN UCHAR FromWhichBSSID);
5530 4902
5531UINT deaggregate_AMSDU_announce(
5532 IN PRTMP_ADAPTER pAd,
5533 PNDIS_PACKET pPacket,
5534 IN PUCHAR pData,
5535 IN ULONG DataSize);
5536
5537// remove LLC and get 802_3 Header 4903// remove LLC and get 802_3 Header
5538#define RTMP_802_11_REMOVE_LLC_AND_CONVERT_TO_802_3(_pRxBlk, _pHeader802_3) \ 4904#define RTMP_802_11_REMOVE_LLC_AND_CONVERT_TO_802_3(_pRxBlk, _pHeader802_3) \
5539{ \ 4905{ \
@@ -5604,11 +4970,28 @@ VOID Update_Rssi_Sample(
5604 IN RSSI_SAMPLE *pRssi, 4970 IN RSSI_SAMPLE *pRssi,
5605 IN PRXWI_STRUC pRxWI); 4971 IN PRXWI_STRUC pRxWI);
5606 4972
4973PNDIS_PACKET GetPacketFromRxRing(
4974 IN PRTMP_ADAPTER pAd,
4975 OUT PRT28XX_RXD_STRUC pSaveRxD,
4976 OUT BOOLEAN *pbReschedule,
4977 IN OUT UINT32 *pRxPending);
4978
5607PNDIS_PACKET RTMPDeFragmentDataFrame( 4979PNDIS_PACKET RTMPDeFragmentDataFrame(
5608 IN PRTMP_ADAPTER pAd, 4980 IN PRTMP_ADAPTER pAd,
5609 IN RX_BLK *pRxBlk); 4981 IN RX_BLK *pRxBlk);
5610 4982
5611//////////////////////////////////////// 4983////////////////////////////////////////
4984
4985VOID RTMPIoctlGetSiteSurvey(
4986 IN PRTMP_ADAPTER pAdapter,
4987 IN struct iwreq *wrq);
4988
4989
4990
4991
4992
4993
4994
5612enum { 4995enum {
5613 DIDmsg_lnxind_wlansniffrm = 0x00000044, 4996 DIDmsg_lnxind_wlansniffrm = 0x00000044,
5614 DIDmsg_lnxind_wlansniffrm_hosttime = 0x00010044, 4997 DIDmsg_lnxind_wlansniffrm_hosttime = 0x00010044,
@@ -5712,9 +5095,6 @@ void send_monitor_packets(
5712 IN PRTMP_ADAPTER pAd, 5095 IN PRTMP_ADAPTER pAd,
5713 IN RX_BLK *pRxBlk); 5096 IN RX_BLK *pRxBlk);
5714 5097
5715// This function will be called when query /proc
5716struct iw_statistics *rt28xx_get_wireless_stats(
5717 IN struct net_device *net_dev);
5718 5098
5719VOID RTMPSetDesiredRates( 5099VOID RTMPSetDesiredRates(
5720 IN PRTMP_ADAPTER pAdapter, 5100 IN PRTMP_ADAPTER pAdapter,
@@ -5722,62 +5102,20 @@ VOID RTMPSetDesiredRates(
5722 5102
5723INT Set_FixedTxMode_Proc( 5103INT Set_FixedTxMode_Proc(
5724 IN PRTMP_ADAPTER pAd, 5104 IN PRTMP_ADAPTER pAd,
5725 IN PUCHAR arg); 5105 IN PSTRING arg);
5726
5727static inline char* GetPhyMode(
5728 int Mode)
5729{
5730 switch(Mode)
5731 {
5732 case MODE_CCK:
5733 return "CCK";
5734 5106
5735 case MODE_OFDM:
5736 return "OFDM";
5737 case MODE_HTMIX:
5738 return "HTMIX";
5739
5740 case MODE_HTGREENFIELD:
5741 return "GREEN";
5742 default:
5743 return "N/A";
5744 }
5745}
5746
5747
5748static inline char* GetBW(
5749 int BW)
5750{
5751 switch(BW)
5752 {
5753 case BW_10:
5754 return "10M";
5755
5756 case BW_20:
5757 return "20M";
5758 case BW_40:
5759 return "40M";
5760 default:
5761 return "N/A";
5762 }
5763}
5764 5107
5108INT Set_LongRetryLimit_Proc(
5109 IN PRTMP_ADAPTER pAdapter,
5110 IN PSTRING arg);
5765 5111
5766VOID RT28xxThreadTerminate( 5112INT Set_ShortRetryLimit_Proc(
5767 IN RTMP_ADAPTER *pAd); 5113 IN PRTMP_ADAPTER pAdapter,
5114 IN PSTRING arg);
5768 5115
5769BOOLEAN RT28XXChipsetCheck( 5116BOOLEAN RT28XXChipsetCheck(
5770 IN void *_dev_p); 5117 IN void *_dev_p);
5771 5118
5772BOOLEAN RT28XXNetDevInit(
5773 IN void *_dev_p,
5774 IN struct net_device *net_dev,
5775 IN RTMP_ADAPTER *pAd);
5776
5777BOOLEAN RT28XXProbePostConfig(
5778 IN void *_dev_p,
5779 IN RTMP_ADAPTER *pAd,
5780 IN INT32 argc);
5781 5119
5782VOID RT28XXDMADisable( 5120VOID RT28XXDMADisable(
5783 IN RTMP_ADAPTER *pAd); 5121 IN RTMP_ADAPTER *pAd);
@@ -5791,26 +5129,45 @@ VOID RT28xx_UpdateBeaconToAsic(
5791 IN ULONG BeaconLen, 5129 IN ULONG BeaconLen,
5792 IN ULONG UpdatePos); 5130 IN ULONG UpdatePos);
5793 5131
5794INT rt28xx_sta_ioctl( 5132int rt28xx_init(
5795 IN struct net_device *net_dev,
5796 IN OUT struct ifreq *rq,
5797 IN INT cmd);
5798
5799////////////////////////////////////////
5800PNDIS_PACKET GetPacketFromRxRing(
5801 IN PRTMP_ADAPTER pAd, 5133 IN PRTMP_ADAPTER pAd,
5802 OUT PRT28XX_RXD_STRUC pSaveRxD, 5134 IN PSTRING pDefaultMac,
5803 OUT BOOLEAN *pbReschedule, 5135 IN PSTRING pHostName);
5804 IN OUT UINT32 *pRxPending); 5136
5137NDIS_STATUS RtmpNetTaskInit(
5138 IN RTMP_ADAPTER *pAd);
5805 5139
5140VOID RtmpNetTaskExit(
5141 IN PRTMP_ADAPTER pAd);
5142
5143NDIS_STATUS RtmpMgmtTaskInit(
5144 IN RTMP_ADAPTER *pAd);
5806 5145
5807void kill_thread_task(PRTMP_ADAPTER pAd); 5146VOID RtmpMgmtTaskExit(
5147 IN RTMP_ADAPTER *pAd);
5808 5148
5809void tbtt_tasklet(unsigned long data); 5149void tbtt_tasklet(unsigned long data);
5810 5150
5811#ifdef RT2860 5151
5152PNET_DEV RtmpPhyNetDevInit(
5153 IN RTMP_ADAPTER *pAd,
5154 IN RTMP_OS_NETDEV_OP_HOOK *pNetHook);
5155
5156BOOLEAN RtmpPhyNetDevExit(
5157 IN RTMP_ADAPTER *pAd,
5158 IN PNET_DEV net_dev);
5159
5160INT RtmpRaDevCtrlInit(
5161 IN RTMP_ADAPTER *pAd,
5162 IN RTMP_INF_TYPE infType);
5163
5164BOOLEAN RtmpRaDevCtrlExit(
5165 IN RTMP_ADAPTER *pAd);
5166
5167
5168#ifdef RTMP_MAC_PCI
5812// 5169//
5813// Function Prototype in cmm_data_2860.c 5170// Function Prototype in cmm_data_pci.c
5814// 5171//
5815USHORT RtmpPCI_WriteTxResource( 5172USHORT RtmpPCI_WriteTxResource(
5816 IN PRTMP_ADAPTER pAd, 5173 IN PRTMP_ADAPTER pAd,
@@ -5873,6 +5230,16 @@ NDIS_STATUS RTMPCheckRxError(
5873 IN PRXWI_STRUC pRxWI, 5230 IN PRXWI_STRUC pRxWI,
5874 IN PRT28XX_RXD_STRUC pRxD); 5231 IN PRT28XX_RXD_STRUC pRxD);
5875 5232
5233BOOLEAN RT28xxPciAsicRadioOff(
5234 IN PRTMP_ADAPTER pAd,
5235 IN UCHAR Level,
5236 IN USHORT TbttNumToNextWakeUp);
5237
5238BOOLEAN RT28xxPciAsicRadioOn(
5239 IN PRTMP_ADAPTER pAd,
5240 IN UCHAR Level);
5241
5242#ifdef RTMP_PCI_SUPPORT
5876VOID RTMPInitPCIeLinkCtrlValue( 5243VOID RTMPInitPCIeLinkCtrlValue(
5877 IN PRTMP_ADAPTER pAd); 5244 IN PRTMP_ADAPTER pAd);
5878 5245
@@ -5887,23 +5254,6 @@ VOID RTMPPCIeLinkCtrlSetting(
5887 IN PRTMP_ADAPTER pAd, 5254 IN PRTMP_ADAPTER pAd,
5888 IN USHORT Max); 5255 IN USHORT Max);
5889 5256
5890VOID RT28xxPciAsicRadioOff(
5891 IN PRTMP_ADAPTER pAd,
5892 IN UCHAR Level,
5893 IN USHORT TbttNumToNextWakeUp);
5894
5895BOOLEAN RT28xxPciAsicRadioOn(
5896 IN PRTMP_ADAPTER pAd,
5897 IN UCHAR Level);
5898
5899VOID RT28xxPciStaAsicForceWakeup(
5900 IN PRTMP_ADAPTER pAd,
5901 IN UCHAR Level);
5902
5903VOID RT28xxPciStaAsicSleepThenAutoWakeup(
5904 IN PRTMP_ADAPTER pAd,
5905 IN USHORT TbttNumToNextWakeUp);
5906
5907VOID PsPollWakeExec( 5257VOID PsPollWakeExec(
5908 IN PVOID SystemSpecific1, 5258 IN PVOID SystemSpecific1,
5909 IN PVOID FunctionContext, 5259 IN PVOID FunctionContext,
@@ -5915,112 +5265,25 @@ VOID RadioOnExec(
5915 IN PVOID FunctionContext, 5265 IN PVOID FunctionContext,
5916 IN PVOID SystemSpecific2, 5266 IN PVOID SystemSpecific2,
5917 IN PVOID SystemSpecific3); 5267 IN PVOID SystemSpecific3);
5268#endif // RTMP_PCI_SUPPORT //
5918 5269
5919VOID RT28xxPciMlmeRadioOn( 5270VOID RT28xxPciStaAsicForceWakeup(
5920 IN PRTMP_ADAPTER pAd);
5921
5922VOID RT28xxPciMlmeRadioOFF(
5923 IN PRTMP_ADAPTER pAd);
5924#endif /* RT2860 */
5925
5926VOID AsicTurnOffRFClk(
5927 IN PRTMP_ADAPTER pAd,
5928 IN UCHAR Channel);
5929
5930VOID AsicTurnOnRFClk(
5931 IN PRTMP_ADAPTER pAd,
5932 IN UCHAR Channel);
5933
5934NTSTATUS RT30xxWriteRFRegister(
5935 IN PRTMP_ADAPTER pAd,
5936 IN UCHAR RegID,
5937 IN UCHAR Value);
5938
5939NTSTATUS RT30xxReadRFRegister(
5940 IN PRTMP_ADAPTER pAd,
5941 IN UCHAR RegID,
5942 IN PUCHAR pValue);
5943
5944UCHAR eFuseReadRegisters(
5945 IN PRTMP_ADAPTER pAd,
5946 IN USHORT Offset,
5947 IN USHORT Length,
5948 OUT USHORT* pData);
5949
5950VOID eFuseReadPhysical(
5951 IN PRTMP_ADAPTER pAd,
5952 IN PUSHORT lpInBuffer,
5953 IN ULONG nInBufferSize,
5954 OUT PUSHORT lpOutBuffer,
5955 IN ULONG nOutBufferSize
5956);
5957
5958NTSTATUS eFuseRead(
5959 IN PRTMP_ADAPTER pAd,
5960 IN USHORT Offset,
5961 OUT PUCHAR pData,
5962 IN USHORT Length);
5963
5964VOID eFusePhysicalWriteRegisters(
5965 IN PRTMP_ADAPTER pAd,
5966 IN USHORT Offset,
5967 IN USHORT Length,
5968 OUT USHORT* pData);
5969
5970NTSTATUS eFuseWriteRegisters(
5971 IN PRTMP_ADAPTER pAd,
5972 IN USHORT Offset,
5973 IN USHORT Length,
5974 IN USHORT* pData);
5975
5976VOID eFuseWritePhysical(
5977 IN PRTMP_ADAPTER pAd,
5978 PUSHORT lpInBuffer,
5979 ULONG nInBufferSize,
5980 PUCHAR lpOutBuffer,
5981 ULONG nOutBufferSize
5982);
5983
5984NTSTATUS eFuseWrite(
5985 IN PRTMP_ADAPTER pAd,
5986 IN USHORT Offset,
5987 IN PUCHAR pData,
5988 IN USHORT length);
5989
5990INT set_eFuseGetFreeBlockCount_Proc(
5991 IN PRTMP_ADAPTER pAd,
5992 IN PUCHAR arg);
5993
5994INT set_eFusedump_Proc(
5995 IN PRTMP_ADAPTER pAd,
5996 IN PUCHAR arg);
5997
5998INT set_eFuseLoadFromBin_Proc(
5999 IN PRTMP_ADAPTER pAd,
6000 IN PUCHAR arg);
6001
6002NTSTATUS eFuseWriteRegistersFromBin(
6003 IN PRTMP_ADAPTER pAd, 5271 IN PRTMP_ADAPTER pAd,
6004 IN USHORT Offset, 5272 IN BOOLEAN bFromTx);
6005 IN USHORT Length,
6006 IN USHORT* pData);
6007 5273
6008VOID eFusePhysicalReadRegisters( 5274VOID RT28xxPciStaAsicSleepThenAutoWakeup(
6009 IN PRTMP_ADAPTER pAd, 5275 IN PRTMP_ADAPTER pAd,
6010 IN USHORT Offset, 5276 IN USHORT TbttNumToNextWakeUp);
6011 IN USHORT Length,
6012 OUT USHORT* pData);
6013 5277
6014VOID RT30xxLoadRFNormalModeSetup(
6015 IN PRTMP_ADAPTER pAd);
6016 5278
6017VOID RT30xxLoadRFSleepModeSetup( 5279VOID RT28xxPciMlmeRadioOn(
6018 IN PRTMP_ADAPTER pAd); 5280 IN PRTMP_ADAPTER pAd);
6019 5281
6020VOID RT30xxReverseRFSleepModeSetup( 5282VOID RT28xxPciMlmeRadioOFF(
6021 IN PRTMP_ADAPTER pAd); 5283 IN PRTMP_ADAPTER pAd);
5284#endif // RTMP_MAC_PCI //
6022 5285
6023#ifdef RT2870 5286#ifdef RTMP_MAC_USB
6024// 5287//
6025// Function Prototype in rtusb_bulk.c 5288// Function Prototype in rtusb_bulk.c
6026// 5289//
@@ -6037,6 +5300,10 @@ VOID RTUSBInitHTTxDesc(
6037 IN ULONG BulkOutSize, 5300 IN ULONG BulkOutSize,
6038 IN usb_complete_t Func); 5301 IN usb_complete_t Func);
6039 5302
5303VOID RTUSBInitRxDesc(
5304 IN PRTMP_ADAPTER pAd,
5305 IN PRX_CONTEXT pRxContext);
5306
6040VOID RTUSBCleanUpDataBulkOutQueue( 5307VOID RTUSBCleanUpDataBulkOutQueue(
6041 IN PRTMP_ADAPTER pAd); 5308 IN PRTMP_ADAPTER pAd);
6042 5309
@@ -6083,6 +5350,9 @@ VOID RTUSBInitRxDesc(
6083 IN PRTMP_ADAPTER pAd, 5350 IN PRTMP_ADAPTER pAd,
6084 IN PRX_CONTEXT pRxContext); 5351 IN PRX_CONTEXT pRxContext);
6085 5352
5353VOID RTUSBBulkRxHandle(
5354 IN unsigned long data);
5355
6086// 5356//
6087// Function Prototype in rtusb_io.c 5357// Function Prototype in rtusb_io.c
6088// 5358//
@@ -6168,36 +5438,19 @@ VOID RTUSBDequeueCmd(
6168INT RTUSBCmdThread( 5438INT RTUSBCmdThread(
6169 IN OUT PVOID Context); 5439 IN OUT PVOID Context);
6170 5440
6171INT TimerQThread( 5441VOID RTUSBBssBeaconExit(
6172 IN OUT PVOID Context);
6173
6174RT2870_TIMER_ENTRY *RT2870_TimerQ_Insert(
6175 IN RTMP_ADAPTER *pAd,
6176 IN RALINK_TIMER_STRUCT *pTimer);
6177
6178BOOLEAN RT2870_TimerQ_Remove(
6179 IN RTMP_ADAPTER *pAd,
6180 IN RALINK_TIMER_STRUCT *pTimer);
6181
6182void RT2870_TimerQ_Exit(
6183 IN RTMP_ADAPTER *pAd); 5442 IN RTMP_ADAPTER *pAd);
6184 5443
6185void RT2870_TimerQ_Init( 5444VOID RTUSBBssBeaconStop(
6186 IN RTMP_ADAPTER *pAd); 5445 IN RTMP_ADAPTER *pAd);
6187 5446
6188VOID RT2870_BssBeaconExit( 5447VOID RTUSBBssBeaconStart(
6189 IN RTMP_ADAPTER *pAd);
6190
6191VOID RT2870_BssBeaconStop(
6192 IN RTMP_ADAPTER *pAd);
6193
6194VOID RT2870_BssBeaconStart(
6195 IN RTMP_ADAPTER * pAd); 5448 IN RTMP_ADAPTER * pAd);
6196 5449
6197VOID RT2870_BssBeaconInit( 5450VOID RTUSBBssBeaconInit(
6198 IN RTMP_ADAPTER *pAd); 5451 IN RTMP_ADAPTER *pAd);
6199 5452
6200VOID RT2870_WatchDog( 5453VOID RTUSBWatchDog(
6201 IN RTMP_ADAPTER *pAd); 5454 IN RTMP_ADAPTER *pAd);
6202 5455
6203NTSTATUS RTUSBWriteMACRegister( 5456NTSTATUS RTUSBWriteMACRegister(
@@ -6215,28 +5468,27 @@ NTSTATUS RTUSBSingleWrite(
6215 IN USHORT Offset, 5468 IN USHORT Offset,
6216 IN USHORT Value); 5469 IN USHORT Value);
6217 5470
6218NTSTATUS RTUSBFirmwareRun(
6219 IN PRTMP_ADAPTER pAd);
6220
6221NTSTATUS RTUSBFirmwareWrite( 5471NTSTATUS RTUSBFirmwareWrite(
6222 IN PRTMP_ADAPTER pAd, 5472 IN PRTMP_ADAPTER pAd,
6223 IN PUCHAR pFwImage, 5473 IN PUCHAR pFwImage,
6224 IN ULONG FwLen); 5474 IN ULONG FwLen);
6225 5475
6226NTSTATUS RTUSBFirmwareOpmode(
6227 IN PRTMP_ADAPTER pAd,
6228 OUT PUINT32 pValue);
6229
6230NTSTATUS RTUSBVenderReset( 5476NTSTATUS RTUSBVenderReset(
6231 IN PRTMP_ADAPTER pAd); 5477 IN PRTMP_ADAPTER pAd);
6232 5478
6233VOID CMDHandler( 5479NDIS_STATUS RTUSBSetHardWareRegister(
6234 IN PRTMP_ADAPTER pAd); 5480 IN PRTMP_ADAPTER pAdapter,
5481 IN PVOID pBuf);
6235 5482
5483NDIS_STATUS RTUSBQueryHardWareRegister(
5484 IN PRTMP_ADAPTER pAdapter,
5485 IN PVOID pBuf);
6236 5486
6237NDIS_STATUS CreateThreads( 5487VOID CMDHandler(
6238 IN struct net_device *net_dev ); 5488 IN PRTMP_ADAPTER pAd);
6239 5489
5490NDIS_STATUS RTUSBWriteHWMACAddress(
5491 IN PRTMP_ADAPTER pAdapter);
6240 5492
6241VOID MacTableInitialize( 5493VOID MacTableInitialize(
6242 IN PRTMP_ADAPTER pAd); 5494 IN PRTMP_ADAPTER pAd);
@@ -6252,12 +5504,30 @@ NDIS_STATUS RTMPWPAAddKeyProc(
6252VOID AsicRxAntEvalAction( 5504VOID AsicRxAntEvalAction(
6253 IN PRTMP_ADAPTER pAd); 5505 IN PRTMP_ADAPTER pAd);
6254 5506
5507void append_pkt(
5508 IN PRTMP_ADAPTER pAd,
5509 IN PUCHAR pHeader802_3,
5510 IN UINT HdrLen,
5511 IN PUCHAR pData,
5512 IN ULONG DataSize,
5513 OUT PNDIS_PACKET *ppPacket);
5514
5515UINT deaggregate_AMSDU_announce(
5516 IN PRTMP_ADAPTER pAd,
5517 PNDIS_PACKET pPacket,
5518 IN PUCHAR pData,
5519 IN ULONG DataSize);
5520
6255NDIS_STATUS RTMPCheckRxError( 5521NDIS_STATUS RTMPCheckRxError(
6256 IN PRTMP_ADAPTER pAd, 5522 IN PRTMP_ADAPTER pAd,
6257 IN PHEADER_802_11 pHeader, 5523 IN PHEADER_802_11 pHeader,
6258 IN PRXWI_STRUC pRxWI, 5524 IN PRXWI_STRUC pRxWI,
6259 IN PRT28XX_RXD_STRUC pRxINFO); 5525 IN PRT28XX_RXD_STRUC pRxINFO);
6260 5526
5527VOID RTUSBMlmeHardTransmit(
5528 IN PRTMP_ADAPTER pAd,
5529 IN PMGMT_STRUC pMgmt);
5530
6261INT MlmeThread( 5531INT MlmeThread(
6262 IN PVOID Context); 5532 IN PVOID Context);
6263 5533
@@ -6285,7 +5555,7 @@ VOID RTMPWriteTxInfo(
6285 IN UCHAR TxBurst); 5555 IN UCHAR TxBurst);
6286 5556
6287// 5557//
6288// Function Prototype in cmm_data_2870.c 5558// Function Prototype in cmm_data_usb.c
6289// 5559//
6290USHORT RtmpUSB_WriteSubTxResource( 5560USHORT RtmpUSB_WriteSubTxResource(
6291 IN PRTMP_ADAPTER pAd, 5561 IN PRTMP_ADAPTER pAd,
@@ -6315,9 +5585,6 @@ VOID RtmpUSB_FinalWriteTxResource(
6315 IN PRTMP_ADAPTER pAd, 5585 IN PRTMP_ADAPTER pAd,
6316 IN TX_BLK *pTxBlk, 5586 IN TX_BLK *pTxBlk,
6317 IN USHORT totalMPDUSize, 5587 IN USHORT totalMPDUSize,
6318#ifdef RT2860
6319 IN USHORT FirstTxIdx);
6320#endif
6321 IN USHORT TxIdx); 5588 IN USHORT TxIdx);
6322 5589
6323VOID RtmpUSBDataLastTxIdx( 5590VOID RtmpUSBDataLastTxIdx(
@@ -6344,6 +5611,12 @@ VOID RtmpUSBNullFrameKickOut(
6344 IN UCHAR *pNullFrame, 5611 IN UCHAR *pNullFrame,
6345 IN UINT32 frameLen); 5612 IN UINT32 frameLen);
6346 5613
5614VOID RtmpUsbStaAsicForceWakeupTimeout(
5615 IN PVOID SystemSpecific1,
5616 IN PVOID FunctionContext,
5617 IN PVOID SystemSpecific2,
5618 IN PVOID SystemSpecific3);
5619
6347VOID RT28xxUsbStaAsicForceWakeup( 5620VOID RT28xxUsbStaAsicForceWakeup(
6348 IN PRTMP_ADAPTER pAd, 5621 IN PRTMP_ADAPTER pAd,
6349 IN BOOLEAN bFromTx); 5622 IN BOOLEAN bFromTx);
@@ -6357,44 +5630,72 @@ VOID RT28xxUsbMlmeRadioOn(
6357 5630
6358VOID RT28xxUsbMlmeRadioOFF( 5631VOID RT28xxUsbMlmeRadioOFF(
6359 IN PRTMP_ADAPTER pAd); 5632 IN PRTMP_ADAPTER pAd);
6360#endif // RT2870 // 5633#endif // RTMP_MAC_USB //
5634
5635VOID AsicTurnOffRFClk(
5636 IN PRTMP_ADAPTER pAd,
5637 IN UCHAR Channel);
6361 5638
5639VOID AsicTurnOnRFClk(
5640 IN PRTMP_ADAPTER pAd,
5641 IN UCHAR Channel);
5642
5643
5644
5645#ifdef RTMP_TIMER_TASK_SUPPORT
5646INT RtmpTimerQThread(
5647 IN OUT PVOID Context);
5648
5649RTMP_TIMER_TASK_ENTRY *RtmpTimerQInsert(
5650 IN RTMP_ADAPTER *pAd,
5651 IN RALINK_TIMER_STRUCT *pTimer);
5652
5653BOOLEAN RtmpTimerQRemove(
5654 IN RTMP_ADAPTER *pAd,
5655 IN RALINK_TIMER_STRUCT *pTimer);
5656
5657void RtmpTimerQExit(
5658 IN RTMP_ADAPTER *pAd);
5659
5660void RtmpTimerQInit(
5661 IN RTMP_ADAPTER *pAd);
5662#endif // RTMP_TIMER_TASK_SUPPORT //
5663
5664///////////////////////////////////////
6362INT RTMPShowCfgValue( 5665INT RTMPShowCfgValue(
6363 IN PRTMP_ADAPTER pAd, 5666 IN PRTMP_ADAPTER pAd,
6364 IN PUCHAR pName, 5667 IN PSTRING pName,
6365 IN PUCHAR pBuf); 5668 IN PSTRING pBuf);
6366 5669
6367PCHAR RTMPGetRalinkAuthModeStr( 5670PSTRING RTMPGetRalinkAuthModeStr(
6368 IN NDIS_802_11_AUTHENTICATION_MODE authMode); 5671 IN NDIS_802_11_AUTHENTICATION_MODE authMode);
6369 5672
6370PCHAR RTMPGetRalinkEncryModeStr( 5673PSTRING RTMPGetRalinkEncryModeStr(
6371 IN USHORT encryMode); 5674 IN USHORT encryMode);
5675//////////////////////////////////////
6372 5676
6373VOID AsicStaBbpTuning( 5677VOID AsicStaBbpTuning(
6374 IN PRTMP_ADAPTER pAd); 5678 IN PRTMP_ADAPTER pAd);
6375 5679
6376#ifdef RT2860
6377VOID AsicResetFromDMABusy(
6378 IN PRTMP_ADAPTER pAd);
6379
6380VOID AsicResetBBP(
6381 IN PRTMP_ADAPTER pAd);
6382
6383VOID AsicResetMAC(
6384 IN PRTMP_ADAPTER pAd);
6385
6386VOID AsicResetPBF(
6387 IN PRTMP_ADAPTER pAd);
6388#endif
6389#ifdef RT2870
6390BOOLEAN StaAddMacTableEntry( 5680BOOLEAN StaAddMacTableEntry(
6391 IN PRTMP_ADAPTER pAd, 5681 IN PRTMP_ADAPTER pAd,
6392 IN PMAC_TABLE_ENTRY pEntry, 5682 IN PMAC_TABLE_ENTRY pEntry,
6393 IN UCHAR MaxSupportedRateIn500Kbps, 5683 IN UCHAR MaxSupportedRateIn500Kbps,
6394 IN HT_CAPABILITY_IE *pHtCapability, 5684 IN HT_CAPABILITY_IE *pHtCapability,
6395 IN UCHAR HtCapabilityLen, 5685 IN UCHAR HtCapabilityLen,
5686 IN ADD_HT_INFO_IE *pAddHtInfo,
5687 IN UCHAR AddHtInfoLen,
6396 IN USHORT CapabilityInfo); 5688 IN USHORT CapabilityInfo);
6397#endif 5689
5690
5691BOOLEAN AUTH_ReqSend(
5692 IN PRTMP_ADAPTER pAd,
5693 IN PMLME_QUEUE_ELEM pElem,
5694 IN PRALINK_TIMER_STRUCT pAuthTimer,
5695 IN PSTRING pSMName,
5696 IN USHORT SeqNo,
5697 IN PUCHAR pNewElement,
5698 IN ULONG ElementLen);
6398 5699
6399void RTMP_IndicateMediaState( 5700void RTMP_IndicateMediaState(
6400 IN PRTMP_ADAPTER pAd); 5701 IN PRTMP_ADAPTER pAd);
@@ -6409,13 +5710,23 @@ VOID RTMPSetAGCInitValue(
6409int rt28xx_close(IN PNET_DEV dev); 5710int rt28xx_close(IN PNET_DEV dev);
6410int rt28xx_open(IN PNET_DEV dev); 5711int rt28xx_open(IN PNET_DEV dev);
6411 5712
5713
5714#define VIRTUAL_IF_INC(__pAd) ((__pAd)->VirtualIfCnt++)
5715#define VIRTUAL_IF_DEC(__pAd) ((__pAd)->VirtualIfCnt--)
5716#define VIRTUAL_IF_NUM(__pAd) ((__pAd)->VirtualIfCnt)
5717
5718
5719#ifdef LINUX
6412__inline INT VIRTUAL_IF_UP(PRTMP_ADAPTER pAd) 5720__inline INT VIRTUAL_IF_UP(PRTMP_ADAPTER pAd)
6413{ 5721{
6414 if (VIRTUAL_IF_NUM(pAd) == 0) 5722 if (VIRTUAL_IF_NUM(pAd) == 0)
6415 { 5723 {
6416 if (rt28xx_open(pAd->net_dev) != 0) 5724 if (rt28xx_open(pAd->net_dev) != 0)
5725 {
5726 DBGPRINT(RT_DEBUG_TRACE, ("rt28xx_open return fail!\n"));
6417 return -1; 5727 return -1;
6418 } 5728 }
5729 }
6419 else 5730 else
6420 { 5731 {
6421 } 5732 }
@@ -6430,6 +5741,107 @@ __inline VOID VIRTUAL_IF_DOWN(PRTMP_ADAPTER pAd)
6430 rt28xx_close(pAd->net_dev); 5741 rt28xx_close(pAd->net_dev);
6431 return; 5742 return;
6432} 5743}
5744#endif // LINUX //
5745
5746
5747/*
5748 OS Related funciton prototype definitions.
5749 TODO: Maybe we need to move these function prototypes to other proper place.
5750*/
5751int RtmpOSWrielessEventSend(
5752 IN RTMP_ADAPTER *pAd,
5753 IN UINT32 eventType,
5754 IN INT flags,
5755 IN PUCHAR pSrcMac,
5756 IN PUCHAR pData,
5757 IN UINT32 dataLen);
5758
5759int RtmpOSNetDevAddrSet(
5760 IN PNET_DEV pNetDev,
5761 IN PUCHAR pMacAddr);
5762
5763int RtmpOSNetDevAttach(
5764 IN PNET_DEV pNetDev,
5765 IN RTMP_OS_NETDEV_OP_HOOK *pDevOpHook);
5766
5767void RtmpOSNetDevClose(
5768 IN PNET_DEV pNetDev);
5769
5770void RtmpOSNetDevDetach(
5771 IN PNET_DEV pNetDev);
5772
5773INT RtmpOSNetDevAlloc(
5774 IN PNET_DEV *pNewNetDev,
5775 IN UINT32 privDataSize);
5776
5777void RtmpOSNetDevFree(
5778 IN PNET_DEV pNetDev);
5779
5780PNET_DEV RtmpOSNetDevGetByName(
5781 IN PNET_DEV pNetDev,
5782 IN PSTRING pDevName);
5783
5784void RtmpOSNetDeviceRefPut(
5785 IN PNET_DEV pNetDev);
5786
5787PNET_DEV RtmpOSNetDevCreate(
5788 IN RTMP_ADAPTER *pAd,
5789 IN INT devType,
5790 IN INT devNum,
5791 IN INT privMemSize,
5792 IN PSTRING pNamePrefix);
5793
5794/*
5795 Task operation related function prototypes
5796*/
5797void RtmpOSTaskCustomize(
5798 IN RTMP_OS_TASK *pTask);
5799
5800INT RtmpOSTaskNotifyToExit(
5801 IN RTMP_OS_TASK *pTask);
5802
5803NDIS_STATUS RtmpOSTaskKill(
5804 IN RTMP_OS_TASK *pTask);
5805
5806NDIS_STATUS RtmpOSTaskInit(
5807 IN RTMP_OS_TASK *pTask,
5808 PSTRING pTaskName,
5809 VOID *pPriv);
5810
5811NDIS_STATUS RtmpOSTaskAttach(
5812 IN RTMP_OS_TASK *pTask,
5813 IN int (*fn)(void *),
5814 IN void *arg);
5815
5816
5817/*
5818 File operation related function prototypes
5819*/
5820RTMP_OS_FD RtmpOSFileOpen(
5821 IN char *pPath,
5822 IN int flag,
5823 IN int mode);
5824
5825int RtmpOSFileClose(
5826 IN RTMP_OS_FD osfd);
5827
5828void RtmpOSFileSeek(
5829 IN RTMP_OS_FD osfd,
5830 IN int offset);
5831
5832int RtmpOSFileRead(
5833 IN RTMP_OS_FD osfd,
5834 IN char *pDataPtr,
5835 IN int readLen);
5836
5837int RtmpOSFileWrite(
5838 IN RTMP_OS_FD osfd,
5839 IN char *pDataPtr,
5840 IN int writeLen);
5841
5842void RtmpOSFSInfoChange(
5843 IN RTMP_OS_FS_INFO *pOSFSInfo,
5844 IN BOOLEAN bSet);
6433 5845
6434 5846
6435#endif // __RTMP_H__ 5847#endif // __RTMP_H__