diff options
Diffstat (limited to 'drivers/staging/rt2860/rtmp.h')
-rw-r--r-- | drivers/staging/rt2860/rtmp.h | 2876 |
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 | //////////////////////////////////////////////////////////////////////////// | ||
55 | typedef 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 | |||
65 | typedef 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 | ||
77 | typedef 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 | ||
103 | typedef 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 | // | ||
132 | typedef 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 | ||
164 | extern char NIC_VENDOR_DESC[]; | 61 | typedef struct _RTMP_ADAPTER RTMP_ADAPTER; |
165 | extern int NIC_VENDOR_DESC_LEN; | 62 | typedef struct _RTMP_ADAPTER *PRTMP_ADAPTER; |
63 | |||
64 | typedef 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 | ||
167 | extern unsigned char SNAP_AIRONET[]; | 79 | extern unsigned char SNAP_AIRONET[]; |
168 | extern unsigned char CipherSuiteCiscoCCKM[]; | ||
169 | extern unsigned char CipherSuiteCiscoCCKMLen; | ||
170 | extern unsigned char CipherSuiteCiscoCCKM24[]; | ||
171 | extern unsigned char CipherSuiteCiscoCCKM24Len; | ||
172 | extern unsigned char CipherSuiteCCXTkip[]; | ||
173 | extern unsigned char CipherSuiteCCXTkipLen; | ||
174 | extern unsigned char CISCO_OUI[]; | 80 | extern unsigned char CISCO_OUI[]; |
175 | extern UCHAR BaSizeArray[4]; | 81 | extern UCHAR BaSizeArray[4]; |
176 | 82 | ||
177 | extern UCHAR BROADCAST_ADDR[MAC_ADDR_LEN]; | 83 | extern UCHAR BROADCAST_ADDR[MAC_ADDR_LEN]; |
178 | extern UCHAR MULTICAST_ADDR[MAC_ADDR_LEN]; | ||
179 | extern UCHAR ZERO_MAC_ADDR[MAC_ADDR_LEN]; | 84 | extern UCHAR ZERO_MAC_ADDR[MAC_ADDR_LEN]; |
180 | extern ULONG BIT32[32]; | 85 | extern ULONG BIT32[32]; |
181 | extern UCHAR BIT8[8]; | 86 | extern UCHAR BIT8[8]; |
@@ -231,9 +136,11 @@ extern UCHAR WpaIe; | |||
231 | extern UCHAR Wpa2Ie; | 136 | extern UCHAR Wpa2Ie; |
232 | extern UCHAR IbssIe; | 137 | extern UCHAR IbssIe; |
233 | extern UCHAR Ccx2Ie; | 138 | extern UCHAR Ccx2Ie; |
139 | extern UCHAR WapiIe; | ||
234 | 140 | ||
235 | extern UCHAR WPA_OUI[]; | 141 | extern UCHAR WPA_OUI[]; |
236 | extern UCHAR RSN_OUI[]; | 142 | extern UCHAR RSN_OUI[]; |
143 | extern UCHAR WAPI_OUI[]; | ||
237 | extern UCHAR WME_INFO_ELEM[]; | 144 | extern UCHAR WME_INFO_ELEM[]; |
238 | extern UCHAR WME_PARM_ELEM[]; | 145 | extern UCHAR WME_PARM_ELEM[]; |
239 | extern UCHAR Ccx2QosInfo[]; | 146 | extern UCHAR Ccx2QosInfo[]; |
@@ -256,28 +163,8 @@ extern UCHAR RateSwitchTable11N2SForABand[]; | |||
256 | 163 | ||
257 | extern UCHAR PRE_N_HT_OUI[]; | 164 | extern UCHAR PRE_N_HT_OUI[]; |
258 | 165 | ||
259 | #define MAXSEQ (0xFFF) | ||
260 | |||
261 | struct 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 | ||
269 | struct reordering_list | ||
270 | { | ||
271 | struct reordering_mpdu *next; | ||
272 | int qlen; | ||
273 | }; | ||
274 | 167 | ||
275 | struct reordering_mpdu_pool | ||
276 | { | ||
277 | PVOID mem; | ||
278 | NDIS_SPIN_LOCK lock; | ||
279 | struct reordering_list freelist; | ||
280 | }; | ||
281 | 168 | ||
282 | typedef struct _RSSI_SAMPLE { | 169 | typedef 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 | ||
775 | typedef struct _RTMP_SCATTER_GATHER_ELEMENT { | 339 | typedef 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 | // | ||
990 | typedef struct _RTMP_REG_PAIR | ||
991 | { | ||
992 | ULONG Register; | ||
993 | ULONG Value; | ||
994 | } RTMP_REG_PAIR, *PRTMP_REG_PAIR; | ||
995 | 502 | ||
996 | typedef 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 | // | ||
1005 | typedef 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 | |||
1014 | typedef 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 | ||
1033 | typedef 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 | // | ||
1045 | typedef 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 | ||
1081 | typedef 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 | ||
1090 | typedef struct _RTMP_RX_BUF | ||
1091 | { | ||
1092 | BOOLEAN InUse; | ||
1093 | ULONG ByBaRecIndex; | ||
1094 | RTMP_REORDERBUF MAP_RXBuf[MAX_RX_REORDERBUF]; | ||
1095 | } RTMP_RXBUF, *PRTMP_RXBUF; | ||
1096 | typedef struct _RTMP_TX_RING | 537 | typedef 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 | ||
1156 | typedef struct _COUNTER_RALINK { | 597 | typedef 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 | ||
1227 | typedef 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 | ||
1234 | typedef struct _COUNTER_DRS { | 663 | typedef 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 | // | ||
1250 | typedef 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. | ||
1258 | typedef 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 | ||
1269 | typedef 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 | **************************************************************************/ | ||
1274 | typedef struct _CIPHER_KEY { | 682 | typedef 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 | ||
1287 | typedef 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 | ||
1296 | typedef 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 | 697 | typedef 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 | ||
1314 | typedef 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 | 706 | typedef 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 | |||
713 | typedef 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 | ||
720 | typedef 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 | ||
727 | typedef 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 | ||
1324 | typedef struct { | 737 | typedef 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 | ||
1338 | typedef 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 | // |
1347 | typedef struct _TUPLE_CACHE { | 754 | typedef 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 | */ | ||
1357 | typedef struct _FRAGMENT_FRAME { | 775 | typedef 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 | // | ||
798 | typedef 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) |
1408 | typedef struct _BBP_R66_TUNING { | 842 | typedef 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 | ||
870 | typedef 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 | **************************************************************************/ | ||
890 | typedef 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 | |||
1436 | typedef enum _ABGBAND_STATE_ { | 910 | typedef 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 | **************************************************************************/ | ||
1442 | typedef struct _MLME_STRUCT { | 920 | typedef 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 | |
1496 | typedef 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 | 988 | struct 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; | 996 | struct 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; | 1002 | struct reordering_mpdu_pool |
1003 | { | ||
1004 | PVOID mem; | ||
1005 | NDIS_SPIN_LOCK lock; | ||
1006 | struct reordering_list freelist; | ||
1007 | }; | ||
1514 | 1008 | ||
1515 | typedef enum _REC_BLOCKACK_STATUS | 1009 | typedef 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 { | |||
1561 | typedef struct { | 1062 | typedef 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 | |||
1113 | typedef 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) |
1611 | typedef struct _IOT_STRUC { | 1136 | typedef 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. |
1631 | typedef union _REG_TRANSMIT_SETTING { | 1156 | typedef 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 | ||
1656 | typedef 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; | 1188 | typedef 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 | ||
1693 | typedef 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 | |||
1705 | typedef 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 |
1811 | typedef struct _COMMON_CONFIG { | 1228 | typedef 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 |
1973 | typedef struct _STA_ADMIN_CONFIG { | 1405 | typedef 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 | ||
2207 | typedef 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 | ||
2216 | typedef 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 | |
2223 | typedef 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 | ||
2228 | typedef struct _MAC_TABLE_ENTRY { | 1599 | typedef 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 | ||
2356 | typedef struct _MAC_TABLE { | 1731 | typedef 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 | |||
2384 | typedef 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 | |||
2391 | typedef 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 | |||
2406 | typedef 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 | |||
2421 | typedef 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 | |||
2427 | typedef 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 | ||
2494 | struct wificonf | 1755 | struct wificonf |
2495 | { | 1756 | { |
@@ -2498,32 +1759,56 @@ struct wificonf | |||
2498 | }; | 1759 | }; |
2499 | 1760 | ||
2500 | 1761 | ||
2501 | 1762 | typedef struct _RTMP_DEV_INFO_ | |
2502 | |||
2503 | typedef 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 | ||
2508 | typedef 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 | ||
1771 | struct _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 | // |
2520 | typedef struct _RTMP_ADAPTER | 1796 | struct _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 | // | ||
2946 | typedef 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 | **************************************************************************/ | ||
2979 | typedef struct _RX_BLK_ | 2264 | typedef 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 | **************************************************************************/ | ||
3127 | static inline VOID ConvertMulticastIP2MAC( | 2378 | static 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 | |||
2417 | char *GetPhyMode(int Mode); | ||
2418 | char* GetBW(int BW); | ||
3165 | 2419 | ||
3166 | // | 2420 | // |
3167 | // Private routines in rtmp_init.c | 2421 | // Private routines in rtmp_init.c |
3168 | // | 2422 | // |
3169 | NDIS_STATUS RTMPAllocAdapterBlock( | 2423 | NDIS_STATUS RTMPAllocAdapterBlock( |
3170 | IN PVOID handle, | 2424 | IN PVOID handle, |
3171 | OUT PRTMP_ADAPTER *ppAdapter | 2425 | OUT PRTMP_ADAPTER *ppAdapter); |
3172 | ); | ||
3173 | 2426 | ||
3174 | NDIS_STATUS RTMPAllocTxRxRingMemory( | 2427 | NDIS_STATUS RTMPAllocTxRxRingMemory( |
3175 | IN PRTMP_ADAPTER pAd | 2428 | IN PRTMP_ADAPTER pAd); |
3176 | ); | ||
3177 | 2429 | ||
3178 | NDIS_STATUS RTMPReadParametersHook( | 2430 | NDIS_STATUS RTMPReadParametersHook( |
3179 | IN PRTMP_ADAPTER pAd | 2431 | IN PRTMP_ADAPTER pAd); |
3180 | ); | 2432 | |
2433 | NDIS_STATUS RTMPSetProfileParameters( | ||
2434 | IN RTMP_ADAPTER *pAd, | ||
2435 | IN PSTRING pBuffer); | ||
2436 | |||
2437 | INT RTMPGetKeyParameter( | ||
2438 | IN PSTRING key, | ||
2439 | OUT PSTRING dest, | ||
2440 | IN INT destsize, | ||
2441 | IN PSTRING buffer, | ||
2442 | IN BOOLEAN bTrimSpace); | ||
3181 | 2443 | ||
3182 | VOID RTMPFreeAdapter( | 2444 | VOID RTMPFreeAdapter( |
3183 | IN PRTMP_ADAPTER pAd | 2445 | IN PRTMP_ADAPTER pAd); |
3184 | ); | ||
3185 | 2446 | ||
3186 | NDIS_STATUS NICReadRegParameters( | 2447 | NDIS_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 |
3192 | VOID NICInitRT30xxRFRegisters( | 2452 | VOID NICInitRFRegisters( |
3193 | IN PRTMP_ADAPTER pAd); | 2453 | IN PRTMP_ADAPTER pAd); |
3194 | #endif // RT2870 // | 2454 | |
2455 | VOID RtmpChipOpsRFHook( | ||
2456 | IN RTMP_ADAPTER *pAd); | ||
2457 | |||
2458 | NDIS_STATUS RT30xxWriteRFRegister( | ||
2459 | IN PRTMP_ADAPTER pAd, | ||
2460 | IN UCHAR regID, | ||
2461 | IN UCHAR value); | ||
2462 | |||
2463 | NDIS_STATUS RT30xxReadRFRegister( | ||
2464 | IN PRTMP_ADAPTER pAd, | ||
2465 | IN UCHAR regID, | ||
2466 | IN PUCHAR pValue); | ||
2467 | #endif // RTMP_RF_RW_SUPPORT // | ||
3195 | 2468 | ||
3196 | VOID NICReadEEPROMParameters( | 2469 | VOID NICReadEEPROMParameters( |
3197 | IN PRTMP_ADAPTER pAd, | 2470 | IN PRTMP_ADAPTER pAd, |
@@ -3200,8 +2473,6 @@ VOID NICReadEEPROMParameters( | |||
3200 | VOID NICInitAsicFromEEPROM( | 2473 | VOID NICInitAsicFromEEPROM( |
3201 | IN PRTMP_ADAPTER pAd); | 2474 | IN PRTMP_ADAPTER pAd); |
3202 | 2475 | ||
3203 | VOID NICInitTxRxRingAndBacklogQueue( | ||
3204 | IN PRTMP_ADAPTER pAd); | ||
3205 | 2476 | ||
3206 | NDIS_STATUS NICInitializeAdapter( | 2477 | NDIS_STATUS NICInitializeAdapter( |
3207 | IN PRTMP_ADAPTER pAd, | 2478 | IN PRTMP_ADAPTER pAd, |
@@ -3210,10 +2481,7 @@ NDIS_STATUS NICInitializeAdapter( | |||
3210 | NDIS_STATUS NICInitializeAsic( | 2481 | NDIS_STATUS NICInitializeAsic( |
3211 | IN PRTMP_ADAPTER pAd, | 2482 | IN PRTMP_ADAPTER pAd, |
3212 | IN BOOLEAN bHardReset); | 2483 | IN BOOLEAN bHardReset); |
3213 | #ifdef RT2860 | 2484 | |
3214 | VOID NICRestoreBBPValue( | ||
3215 | IN PRTMP_ADAPTER pAd); | ||
3216 | #endif | ||
3217 | VOID NICIssueReset( | 2485 | VOID NICIssueReset( |
3218 | IN PRTMP_ADAPTER pAd); | 2486 | IN PRTMP_ADAPTER pAd); |
3219 | 2487 | ||
@@ -3227,10 +2495,10 @@ VOID UserCfgInit( | |||
3227 | VOID NICResetFromError( | 2495 | VOID NICResetFromError( |
3228 | IN PRTMP_ADAPTER pAd); | 2496 | IN PRTMP_ADAPTER pAd); |
3229 | 2497 | ||
3230 | VOID NICEraseFirmware( | 2498 | NDIS_STATUS NICLoadFirmware( |
3231 | IN PRTMP_ADAPTER pAd); | 2499 | IN PRTMP_ADAPTER pAd); |
3232 | 2500 | ||
3233 | NDIS_STATUS NICLoadFirmware( | 2501 | VOID NICEraseFirmware( |
3234 | IN PRTMP_ADAPTER pAd); | 2502 | IN PRTMP_ADAPTER pAd); |
3235 | 2503 | ||
3236 | NDIS_STATUS NICLoadRateSwitchingParams( | 2504 | NDIS_STATUS NICLoadRateSwitchingParams( |
@@ -3245,10 +2513,6 @@ VOID NICUpdateFifoStaCounters( | |||
3245 | VOID NICUpdateRawCounters( | 2513 | VOID NICUpdateRawCounters( |
3246 | IN PRTMP_ADAPTER pAd); | 2514 | IN PRTMP_ADAPTER pAd); |
3247 | 2515 | ||
3248 | ULONG RTMPNotAllZero( | ||
3249 | IN PVOID pSrc1, | ||
3250 | IN ULONG Length); | ||
3251 | |||
3252 | VOID RTMPZeroMemory( | 2516 | VOID 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 | ||
3266 | VOID AtoH( | 2530 | VOID AtoH( |
3267 | char *src, | 2531 | PSTRING src, |
3268 | UCHAR *dest, | 2532 | PUCHAR dest, |
3269 | int destlen); | 2533 | int destlen); |
3270 | 2534 | ||
3271 | UCHAR BtoH( | 2535 | UCHAR 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 | |||
3386 | VOID ActHeaderInit( | 2651 | VOID 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 | |||
3447 | NDIS_STATUS Sniff2BytesFromNdisBuffer( | 2713 | NDIS_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 | ||
3501 | NDIS_STATUS MlmeHardTransmitTxRing( | 2768 | NDIS_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 | ||
2773 | NDIS_STATUS MlmeDataHardTransmit( | ||
2774 | IN PRTMP_ADAPTER pAd, | ||
2775 | IN UCHAR QueIdx, | ||
2776 | IN PNDIS_PACKET pPacket); | ||
2777 | |||
2778 | VOID 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 | |||
3506 | USHORT RTMPCalcDuration( | 2785 | USHORT 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 | ||
3542 | VOID RTMPWriteTxDescriptor( | ||
3543 | IN PRTMP_ADAPTER pAd, | ||
3544 | IN PTXD_STRUC pTxD, | ||
3545 | IN BOOLEAN bWIV, | ||
3546 | IN UCHAR QSEL); | ||
3547 | |||
3548 | VOID RTMPSuspendMsduTransmission( | 2821 | VOID 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 | |||
3560 | VOID RTMPSendNullFrame( | 2836 | VOID 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 | ||
2872 | VOID WpaStaPairwiseKeySetting( | ||
2873 | IN PRTMP_ADAPTER pAd); | ||
2874 | |||
2875 | VOID WpaStaGroupKeySetting( | ||
2876 | IN PRTMP_ADAPTER pAd); | ||
2877 | |||
2878 | VOID WpaSendEapolStart( | ||
2879 | IN PRTMP_ADAPTER pAdapter, | ||
2880 | IN PUCHAR pBssid); | ||
2881 | |||
3596 | NDIS_STATUS RTMPCloneNdisPacket( | 2882 | NDIS_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 | ||
3002 | VOID AsicResetBBPAgent( | ||
3003 | IN PRTMP_ADAPTER pAd); | ||
3004 | |||
3716 | VOID AsicSleepThenAutoWakeup( | 3005 | VOID 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 | ||
3723 | VOID AsicForceWakeup( | 3012 | VOID 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 | ||
3732 | VOID AsicSetBssid( | 3016 | VOID 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 | ||
3825 | BOOLEAN AsicCheckCommanOk( | 3111 | BOOLEAN 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 | |||
3829 | VOID MacAddrRandomBssid( | 3116 | VOID 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 | ||
3161 | ULONG BssSsidTableSearchBySSID( | ||
3162 | IN BSS_TABLE *Tab, | ||
3163 | IN PUCHAR pSsid, | ||
3164 | IN UCHAR SsidLen); | ||
3165 | |||
3874 | VOID BssTableDeleteEntry( | 3166 | VOID 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 | ||
4098 | VOID SwitchBetweenWepAndCkip( | ||
4099 | IN PRTMP_ADAPTER pAd); | ||
4100 | |||
4101 | VOID InvalidStateWhenAssoc( | 3390 | VOID 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 |
4114 | VOID MlmeCntlConfirm( | 3403 | VOID 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 | ||
4120 | VOID ComposePsPoll( | 3409 | VOID ComposePsPoll( |
4121 | IN PRTMP_ADAPTER pAd); | 3410 | IN PRTMP_ADAPTER pAd); |
@@ -4325,7 +3614,7 @@ VOID AssocParmFill( | |||
4325 | VOID ScanParmFill( | 3614 | VOID 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( | |||
4396 | ULONG MakeIbssBeacon( | 3685 | ULONG MakeIbssBeacon( |
4397 | IN PRTMP_ADAPTER pAd); | 3686 | IN PRTMP_ADAPTER pAd); |
4398 | 3687 | ||
4399 | VOID CCXAdjacentAPReport( | 3688 | VOID InitChannelRelatedValue( |
4400 | IN PRTMP_ADAPTER pAd); | 3689 | IN PRTMP_ADAPTER pAd); |
4401 | 3690 | ||
4402 | BOOLEAN MlmeScanReqSanity( | 3691 | BOOLEAN 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 | ||
3819 | BOOLEAN 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 | |||
4530 | BOOLEAN PeerDeauthSanity( | 3826 | BOOLEAN 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 | ||
4572 | ULONG MakeOutgoingFrame( | 3868 | ULONG MakeOutgoingFrame( |
4573 | OUT CHAR *Buffer, | 3869 | OUT UCHAR *Buffer, |
4574 | OUT ULONG *Length, ...); | 3870 | OUT ULONG *Length, ...); |
4575 | 3871 | ||
4576 | VOID LfsrInit( | 3872 | VOID 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 | ||
4616 | VOID MlmeCheckForFastRoaming( | 3912 | BOOLEAN MlmeCheckForFastRoaming( |
4617 | IN PRTMP_ADAPTER pAd, | 3913 | IN PRTMP_ADAPTER pAd); |
4618 | IN ULONG Now); | ||
4619 | 3914 | ||
4620 | VOID MlmeDynamicTxRateSwitching( | 3915 | VOID MlmeDynamicTxRateSwitching( |
4621 | IN PRTMP_ADAPTER pAd); | 3916 | IN PRTMP_ADAPTER pAd); |
@@ -4634,6 +3929,7 @@ VOID MlmeSelectTxRateTable( | |||
4634 | 3929 | ||
4635 | VOID MlmeCalculateChannelQuality( | 3930 | VOID 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 | ||
4639 | VOID MlmeCheckPsmChange( | 3935 | VOID 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 | ||
4694 | VOID AsicSetRxAnt( | 3991 | VOID AsicSetRxAnt( |
4695 | IN PRTMP_ADAPTER pAd, | 3992 | IN PRTMP_ADAPTER pAd, |
4696 | IN UCHAR Ant); | 3993 | IN UCHAR Ant); |
4697 | 3994 | ||
3995 | VOID RTMPFilterCalibration( | ||
3996 | IN PRTMP_ADAPTER pAd); | ||
3997 | |||
3998 | #ifdef RTMP_EFUSE_SUPPORT | ||
3999 | //2008/09/11:KH add to support efuse<-- | ||
4000 | INT set_eFuseGetFreeBlockCount_Proc( | ||
4001 | IN PRTMP_ADAPTER pAd, | ||
4002 | IN PSTRING arg); | ||
4003 | |||
4004 | INT set_eFusedump_Proc( | ||
4005 | IN PRTMP_ADAPTER pAd, | ||
4006 | IN PSTRING arg); | ||
4007 | |||
4008 | INT set_eFuseLoadFromBin_Proc( | ||
4009 | IN PRTMP_ADAPTER pAd, | ||
4010 | IN PSTRING arg); | ||
4011 | |||
4012 | VOID eFusePhysicalReadRegisters( | ||
4013 | IN PRTMP_ADAPTER pAd, | ||
4014 | IN USHORT Offset, | ||
4015 | IN USHORT Length, | ||
4016 | OUT USHORT* pData); | ||
4017 | |||
4018 | int RtmpEfuseSupportCheck( | ||
4019 | IN RTMP_ADAPTER *pAd); | ||
4020 | |||
4021 | INT set_eFuseBufferModeWriteBack_Proc( | ||
4022 | IN PRTMP_ADAPTER pAd, | ||
4023 | IN PSTRING arg); | ||
4024 | |||
4025 | INT eFuseLoadEEPROM( | ||
4026 | IN PRTMP_ADAPTER pAd); | ||
4027 | |||
4028 | INT eFuseWriteEeeppromBuf( | ||
4029 | IN PRTMP_ADAPTER pAd); | ||
4030 | |||
4031 | VOID eFuseGetFreeBlockCount(IN PRTMP_ADAPTER pAd, | ||
4032 | PUINT EfuseFreeBlock); | ||
4033 | |||
4034 | INT eFuse_init( | ||
4035 | IN PRTMP_ADAPTER pAd); | ||
4036 | |||
4037 | NTSTATUS eFuseRead( | ||
4038 | IN PRTMP_ADAPTER pAd, | ||
4039 | IN USHORT Offset, | ||
4040 | OUT PUCHAR pData, | ||
4041 | IN USHORT Length); | ||
4042 | |||
4043 | NTSTATUS 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 | ||
4052 | VOID RT30xxLoadRFNormalModeSetup( | ||
4053 | IN PRTMP_ADAPTER pAd); | ||
4054 | |||
4055 | VOID RT30xxLoadRFSleepModeSetup( | ||
4056 | IN PRTMP_ADAPTER pAd); | ||
4057 | |||
4058 | VOID RT30xxReverseRFSleepModeSetup( | ||
4059 | IN PRTMP_ADAPTER pAd); | ||
4060 | // end johnli | ||
4061 | |||
4062 | #ifdef RT3070 | ||
4063 | VOID NICInitRT3070RFRegisters( | ||
4064 | IN RTMP_ADAPTER *pAd); | ||
4065 | #endif // RT3070 // | ||
4066 | |||
4067 | VOID RT30xxHaltAction( | ||
4068 | IN PRTMP_ADAPTER pAd); | ||
4069 | |||
4070 | VOID RT30xxSetRxAnt( | ||
4071 | IN PRTMP_ADAPTER pAd, | ||
4072 | IN UCHAR Ant); | ||
4073 | #endif // RT30xx // | ||
4074 | |||
4698 | VOID AsicEvaluateRxAnt( | 4075 | VOID 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 | ||
4754 | USHORT RTMP_EEPROM_READ16( | ||
4755 | IN PRTMP_ADAPTER pAd, | ||
4756 | IN USHORT Offset); | ||
4757 | |||
4758 | VOID 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 | ||
4800 | BOOLEAN 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 | |||
4809 | VOID RTMPTkipAppendByte( | 4168 | VOID 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 | // | ||
4198 | INT RT_CfgSetCountryRegion( | ||
4199 | IN PRTMP_ADAPTER pAd, | ||
4200 | IN PSTRING arg, | ||
4201 | IN INT band); | ||
4202 | |||
4203 | INT RT_CfgSetWirelessMode( | ||
4204 | IN PRTMP_ADAPTER pAd, | ||
4205 | IN PSTRING arg); | ||
4206 | |||
4207 | INT RT_CfgSetShortSlot( | ||
4208 | IN PRTMP_ADAPTER pAd, | ||
4209 | IN PSTRING arg); | ||
4210 | |||
4211 | INT RT_CfgSetWepKey( | ||
4212 | IN PRTMP_ADAPTER pAd, | ||
4213 | IN PSTRING keyString, | ||
4214 | IN CIPHER_KEY *pSharedKey, | ||
4215 | IN INT keyIdx); | ||
4216 | |||
4217 | INT 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 | ||
4865 | CHAR *GetEncryptType( | 4257 | PSTRING GetEncryptType( |
4866 | CHAR enc); | 4258 | CHAR enc); |
4867 | 4259 | ||
4868 | CHAR *GetAuthMode( | 4260 | PSTRING GetAuthMode( |
4869 | CHAR auth); | 4261 | CHAR auth); |
4870 | 4262 | ||
4871 | VOID RTMPIoctlGetSiteSurvey( | ||
4872 | IN PRTMP_ADAPTER pAdapter, | ||
4873 | IN struct iwreq *wrq); | ||
4874 | |||
4875 | VOID RTMPIoctlGetMacTable( | ||
4876 | IN PRTMP_ADAPTER pAd, | ||
4877 | IN struct iwreq *wrq); | ||
4878 | |||
4879 | VOID RTMPAddBSSIDCipher( | ||
4880 | IN PRTMP_ADAPTER pAd, | ||
4881 | IN UCHAR Aid, | ||
4882 | IN PNDIS_802_11_KEY pKey, | ||
4883 | IN UCHAR CipherAlg); | ||
4884 | |||
4885 | VOID RTMPSetHT( | 4263 | VOID 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 | // | 4278 | CHAR ConvertToRssi( |
4901 | // prototype in wpa.c | ||
4902 | // | ||
4903 | BOOLEAN WpaMsgTypeSubst( | ||
4904 | IN UCHAR EAPType, | ||
4905 | OUT INT *MsgType); | ||
4906 | |||
4907 | VOID WpaPskStateMachineInit( | ||
4908 | IN PRTMP_ADAPTER pAd, | ||
4909 | IN STATE_MACHINE *S, | ||
4910 | OUT STATE_MACHINE_FUNC Trans[]); | ||
4911 | |||
4912 | VOID WpaEAPOLKeyAction( | ||
4913 | IN PRTMP_ADAPTER pAd, | ||
4914 | IN MLME_QUEUE_ELEM *Elem); | ||
4915 | |||
4916 | VOID WpaPairMsg1Action( | ||
4917 | IN PRTMP_ADAPTER pAd, | ||
4918 | IN MLME_QUEUE_ELEM *Elem); | ||
4919 | |||
4920 | VOID WpaPairMsg3Action( | ||
4921 | IN PRTMP_ADAPTER pAd, | ||
4922 | IN MLME_QUEUE_ELEM *Elem); | ||
4923 | |||
4924 | VOID WpaGroupMsg1Action( | ||
4925 | IN PRTMP_ADAPTER pAd, | ||
4926 | IN MLME_QUEUE_ELEM *Elem); | ||
4927 | |||
4928 | VOID WpaMacHeaderInit( | ||
4929 | IN PRTMP_ADAPTER pAd, | ||
4930 | IN OUT PHEADER_802_11 pHdr80211, | ||
4931 | IN UCHAR wep, | ||
4932 | IN PUCHAR pAddr1); | ||
4933 | |||
4934 | VOID Wpa2PairMsg1Action( | ||
4935 | IN PRTMP_ADAPTER pAd, | ||
4936 | IN MLME_QUEUE_ELEM *Elem); | ||
4937 | |||
4938 | VOID Wpa2PairMsg3Action( | ||
4939 | IN PRTMP_ADAPTER pAd, | ||
4940 | IN MLME_QUEUE_ELEM *Elem); | ||
4941 | |||
4942 | BOOLEAN 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 | =================================== */ | ||
4948 | VOID RTMPToWirelessSta( | 4286 | VOID 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 | |||
4956 | VOID 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 | ||
4963 | VOID PRF( | 4295 | VOID 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 | |||
4973 | VOID 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 | |||
4981 | VOID 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 | // | 4310 | BOOLEAN RTMPCheckWPAframe( |
4997 | // prototype in aironet.c | ||
4998 | // | ||
4999 | VOID 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 | ||
5004 | VOID AironetMsgAction( | 4317 | VOID 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 | ||
5008 | VOID AironetRequestAction( | 4323 | BOOLEAN 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 | |||
4332 | VOID 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 | |||
4344 | NDIS_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 | ||
5012 | VOID ChannelLoadRequestAction( | 4350 | VOID 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 | ||
5016 | VOID NoiseHistRequestAction( | 4356 | // |
4357 | // function prototype in ap_wpa.c | ||
4358 | // | ||
4359 | VOID 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 | ||
5020 | VOID BeaconRequestAction( | 4364 | VOID APInstallPairwiseKey( |
4365 | PRTMP_ADAPTER pAd, | ||
4366 | PMAC_TABLE_ENTRY pEntry); | ||
4367 | |||
4368 | UINT 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 | ||
5024 | VOID AironetReportAction( | 4374 | VOID 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 | ||
5028 | VOID ChannelLoadReportAction( | 4378 | VOID 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 | ||
5032 | VOID NoiseHistReportAction( | 4383 | VOID WPAStart2WayGroupHS( |
5033 | IN PRTMP_ADAPTER pAd, | 4384 | IN PRTMP_ADAPTER pAd, |
5034 | IN UCHAR Index); | 4385 | IN MAC_TABLE_ENTRY *pEntry); |
5035 | 4386 | ||
5036 | VOID AironetFinalReportAction( | 4387 | VOID 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 | ||
5039 | VOID BeaconReportAction( | 4392 | VOID 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 | ||
5043 | VOID AironetAddBeaconReport( | 4397 | VOID 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 | ||
5048 | VOID AironetCreateBeaconReportFromBssTable( | 4402 | VOID 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 | ||
5051 | CHAR ConvertToRssi( | 4407 | VOID 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 | // | 4412 | VOID PeerGroupMsg2Action( |
5057 | // function prototype in cmm_wpa.c | ||
5058 | // | ||
5059 | BOOLEAN 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 | ||
5066 | VOID AES_GTK_KEY_UNWRAP( | 4418 | VOID 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 | ||
5072 | VOID RTMPMakeRSNIE( | 4425 | VOID 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 | ||
5082 | VOID HandleCounterMeasure( | ||
5083 | IN PRTMP_ADAPTER pAd, | ||
5084 | IN MAC_TABLE_ENTRY *pEntry); | ||
5085 | 4433 | ||
5086 | /* timeout -- ms */ | 4434 | /* timeout -- ms */ |
5087 | VOID RTMP_SetPeriodicTimer( | 4435 | VOID RTMP_SetPeriodicTimer( |
@@ -5116,13 +4464,13 @@ VOID RTMPusecDelay( | |||
5116 | IN ULONG usec); | 4464 | IN ULONG usec); |
5117 | 4465 | ||
5118 | NDIS_STATUS os_alloc_mem( | 4466 | NDIS_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 | ||
5123 | NDIS_STATUS os_free_mem( | 4471 | NDIS_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 | ||
5128 | void RTMP_AllocateSharedMemory( | 4476 | void 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 | ||
4506 | void 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 | |||
5158 | void RTMP_AllocateMgmtDescMemory( | 4513 | void 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 | ||
4527 | void RTMP_FreeDescMemory( | ||
4528 | IN PRTMP_ADAPTER pAd, | ||
4529 | IN ULONG Length, | ||
4530 | IN PVOID VirtualAddress, | ||
4531 | IN NDIS_PHYSICAL_ADDRESS PhysicalAddress); | ||
4532 | |||
4533 | PNDIS_PACKET RtmpOSNetPktAlloc( | ||
4534 | IN RTMP_ADAPTER *pAd, | ||
4535 | IN int size); | ||
4536 | |||
5172 | PNDIS_PACKET RTMP_AllocateRxPacketBuffer( | 4537 | PNDIS_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( | |||
5279 | BOOLEAN ba_reordering_resource_init(PRTMP_ADAPTER pAd, int num); | 4644 | BOOLEAN ba_reordering_resource_init(PRTMP_ADAPTER pAd, int num); |
5280 | void ba_reordering_resource_release(PRTMP_ADAPTER pAd); | 4645 | void ba_reordering_resource_release(PRTMP_ADAPTER pAd); |
5281 | 4646 | ||
4647 | |||
4648 | |||
4649 | |||
5282 | BOOLEAN rtstrmactohex( | 4650 | BOOLEAN rtstrmactohex( |
5283 | IN char *s1, | 4651 | IN PSTRING s1, |
5284 | IN char *s2); | 4652 | IN PSTRING s2); |
5285 | 4653 | ||
5286 | BOOLEAN rtstrcasecmp( | 4654 | BOOLEAN rtstrcasecmp( |
5287 | IN char *s1, | 4655 | IN PSTRING s1, |
5288 | IN char *s2); | 4656 | IN PSTRING s2); |
5289 | 4657 | ||
5290 | char *rtstrstruncasecmp( | 4658 | PSTRING rtstrstruncasecmp( |
5291 | IN char *s1, | 4659 | IN PSTRING s1, |
5292 | IN char *s2); | 4660 | IN PSTRING s2); |
5293 | 4661 | ||
5294 | char *rtstrstr( | 4662 | PSTRING rtstrstr( |
5295 | IN const char * s1, | 4663 | IN const PSTRING s1, |
5296 | IN const char * s2); | 4664 | IN const PSTRING s2); |
5297 | 4665 | ||
5298 | char *rstrtok( | 4666 | PSTRING rstrtok( |
5299 | IN char * s, | 4667 | IN PSTRING s, |
5300 | IN const char * ct); | 4668 | IN const PSTRING ct); |
5301 | 4669 | ||
5302 | int rtinet_aton( | 4670 | int 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 ////////// |
5307 | INT Set_DriverVersion_Proc( | 4675 | INT Set_DriverVersion_Proc( |
5308 | IN PRTMP_ADAPTER pAd, | 4676 | IN PRTMP_ADAPTER pAd, |
5309 | IN PUCHAR arg); | 4677 | IN PSTRING arg); |
5310 | 4678 | ||
5311 | INT Set_CountryRegion_Proc( | 4679 | INT Set_CountryRegion_Proc( |
5312 | IN PRTMP_ADAPTER pAd, | 4680 | IN PRTMP_ADAPTER pAd, |
5313 | IN PUCHAR arg); | 4681 | IN PSTRING arg); |
5314 | 4682 | ||
5315 | INT Set_CountryRegionABand_Proc( | 4683 | INT Set_CountryRegionABand_Proc( |
5316 | IN PRTMP_ADAPTER pAd, | 4684 | IN PRTMP_ADAPTER pAd, |
5317 | IN PUCHAR arg); | 4685 | IN PSTRING arg); |
5318 | 4686 | ||
5319 | INT Set_WirelessMode_Proc( | 4687 | INT Set_WirelessMode_Proc( |
5320 | IN PRTMP_ADAPTER pAd, | 4688 | IN PRTMP_ADAPTER pAd, |
5321 | IN PUCHAR arg); | 4689 | IN PSTRING arg); |
5322 | 4690 | ||
5323 | INT Set_Channel_Proc( | 4691 | INT Set_Channel_Proc( |
5324 | IN PRTMP_ADAPTER pAd, | 4692 | IN PRTMP_ADAPTER pAd, |
5325 | IN PUCHAR arg); | 4693 | IN PSTRING arg); |
5326 | 4694 | ||
5327 | INT Set_ShortSlot_Proc( | 4695 | INT Set_ShortSlot_Proc( |
5328 | IN PRTMP_ADAPTER pAd, | 4696 | IN PRTMP_ADAPTER pAd, |
5329 | IN PUCHAR arg); | 4697 | IN PSTRING arg); |
5330 | 4698 | ||
5331 | INT Set_TxPower_Proc( | 4699 | INT Set_TxPower_Proc( |
5332 | IN PRTMP_ADAPTER pAd, | 4700 | IN PRTMP_ADAPTER pAd, |
5333 | IN PUCHAR arg); | 4701 | IN PSTRING arg); |
5334 | 4702 | ||
5335 | INT Set_BGProtection_Proc( | 4703 | INT Set_BGProtection_Proc( |
5336 | IN PRTMP_ADAPTER pAd, | 4704 | IN PRTMP_ADAPTER pAd, |
5337 | IN PUCHAR arg); | 4705 | IN PSTRING arg); |
5338 | 4706 | ||
5339 | INT Set_TxPreamble_Proc( | 4707 | INT Set_TxPreamble_Proc( |
5340 | IN PRTMP_ADAPTER pAd, | 4708 | IN PRTMP_ADAPTER pAd, |
5341 | IN PUCHAR arg); | 4709 | IN PSTRING arg); |
5342 | 4710 | ||
5343 | INT Set_RTSThreshold_Proc( | 4711 | INT Set_RTSThreshold_Proc( |
5344 | IN PRTMP_ADAPTER pAd, | 4712 | IN PRTMP_ADAPTER pAd, |
5345 | IN PUCHAR arg); | 4713 | IN PSTRING arg); |
5346 | 4714 | ||
5347 | INT Set_FragThreshold_Proc( | 4715 | INT Set_FragThreshold_Proc( |
5348 | IN PRTMP_ADAPTER pAd, | 4716 | IN PRTMP_ADAPTER pAd, |
5349 | IN PUCHAR arg); | 4717 | IN PSTRING arg); |
5350 | 4718 | ||
5351 | INT Set_TxBurst_Proc( | 4719 | INT 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 |
5356 | INT Set_PktAggregate_Proc( | 4724 | INT 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 | ||
5361 | INT Set_IEEE80211H_Proc( | 4729 | INT 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 |
5366 | INT Set_Debug_Proc( | 4734 | INT 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 | ||
5371 | INT Show_DescInfo_Proc( | 4739 | INT Show_DescInfo_Proc( |
5372 | IN PRTMP_ADAPTER pAd, | 4740 | IN PRTMP_ADAPTER pAd, |
5373 | IN PUCHAR arg); | 4741 | IN PSTRING arg); |
5374 | 4742 | ||
5375 | INT Set_ResetStatCounter_Proc( | 4743 | INT Set_ResetStatCounter_Proc( |
5376 | IN PRTMP_ADAPTER pAd, | 4744 | IN PRTMP_ADAPTER pAd, |
5377 | IN PUCHAR arg); | 4745 | IN PSTRING arg); |
5378 | 4746 | ||
5379 | INT Set_BASetup_Proc( | 4747 | INT Set_BASetup_Proc( |
5380 | IN PRTMP_ADAPTER pAd, | 4748 | IN PRTMP_ADAPTER pAd, |
5381 | IN PUCHAR arg); | 4749 | IN PSTRING arg); |
5382 | 4750 | ||
5383 | INT Set_BADecline_Proc( | 4751 | INT Set_BADecline_Proc( |
5384 | IN PRTMP_ADAPTER pAd, | 4752 | IN PRTMP_ADAPTER pAd, |
5385 | IN PUCHAR arg); | 4753 | IN PSTRING arg); |
5386 | 4754 | ||
5387 | INT Set_BAOriTearDown_Proc( | 4755 | INT Set_BAOriTearDown_Proc( |
5388 | IN PRTMP_ADAPTER pAd, | 4756 | IN PRTMP_ADAPTER pAd, |
5389 | IN PUCHAR arg); | 4757 | IN PSTRING arg); |
5390 | 4758 | ||
5391 | INT Set_BARecTearDown_Proc( | 4759 | INT Set_BARecTearDown_Proc( |
5392 | IN PRTMP_ADAPTER pAd, | 4760 | IN PRTMP_ADAPTER pAd, |
5393 | IN PUCHAR arg); | 4761 | IN PSTRING arg); |
5394 | 4762 | ||
5395 | INT Set_HtBw_Proc( | 4763 | INT Set_HtBw_Proc( |
5396 | IN PRTMP_ADAPTER pAd, | 4764 | IN PRTMP_ADAPTER pAd, |
5397 | IN PUCHAR arg); | 4765 | IN PSTRING arg); |
5398 | 4766 | ||
5399 | INT Set_HtMcs_Proc( | 4767 | INT Set_HtMcs_Proc( |
5400 | IN PRTMP_ADAPTER pAd, | 4768 | IN PRTMP_ADAPTER pAd, |
5401 | IN PUCHAR arg); | 4769 | IN PSTRING arg); |
5402 | 4770 | ||
5403 | INT Set_HtGi_Proc( | 4771 | INT Set_HtGi_Proc( |
5404 | IN PRTMP_ADAPTER pAd, | 4772 | IN PRTMP_ADAPTER pAd, |
5405 | IN PUCHAR arg); | 4773 | IN PSTRING arg); |
5406 | 4774 | ||
5407 | INT Set_HtOpMode_Proc( | 4775 | INT Set_HtOpMode_Proc( |
5408 | IN PRTMP_ADAPTER pAd, | 4776 | IN PRTMP_ADAPTER pAd, |
5409 | IN PUCHAR arg); | 4777 | IN PSTRING arg); |
5410 | 4778 | ||
5411 | INT Set_HtStbc_Proc( | 4779 | INT Set_HtStbc_Proc( |
5412 | IN PRTMP_ADAPTER pAd, | 4780 | IN PRTMP_ADAPTER pAd, |
5413 | IN PUCHAR arg); | 4781 | IN PSTRING arg); |
5414 | 4782 | ||
5415 | INT Set_HtHtc_Proc( | 4783 | INT Set_HtHtc_Proc( |
5416 | IN PRTMP_ADAPTER pAd, | 4784 | IN PRTMP_ADAPTER pAd, |
5417 | IN PUCHAR arg); | 4785 | IN PSTRING arg); |
5418 | 4786 | ||
5419 | INT Set_HtExtcha_Proc( | 4787 | INT Set_HtExtcha_Proc( |
5420 | IN PRTMP_ADAPTER pAd, | 4788 | IN PRTMP_ADAPTER pAd, |
5421 | IN PUCHAR arg); | 4789 | IN PSTRING arg); |
5422 | 4790 | ||
5423 | INT Set_HtMpduDensity_Proc( | 4791 | INT Set_HtMpduDensity_Proc( |
5424 | IN PRTMP_ADAPTER pAd, | 4792 | IN PRTMP_ADAPTER pAd, |
5425 | IN PUCHAR arg); | 4793 | IN PSTRING arg); |
5426 | 4794 | ||
5427 | INT Set_HtBaWinSize_Proc( | 4795 | INT Set_HtBaWinSize_Proc( |
5428 | IN PRTMP_ADAPTER pAd, | 4796 | IN PRTMP_ADAPTER pAd, |
5429 | IN PUCHAR arg); | 4797 | IN PSTRING arg); |
5430 | 4798 | ||
5431 | INT Set_HtRdg_Proc( | 4799 | INT Set_HtRdg_Proc( |
5432 | IN PRTMP_ADAPTER pAd, | 4800 | IN PRTMP_ADAPTER pAd, |
5433 | IN PUCHAR arg); | 4801 | IN PSTRING arg); |
5434 | 4802 | ||
5435 | INT Set_HtLinkAdapt_Proc( | 4803 | INT Set_HtLinkAdapt_Proc( |
5436 | IN PRTMP_ADAPTER pAd, | 4804 | IN PRTMP_ADAPTER pAd, |
5437 | IN PUCHAR arg); | 4805 | IN PSTRING arg); |
5438 | 4806 | ||
5439 | INT Set_HtAmsdu_Proc( | 4807 | INT Set_HtAmsdu_Proc( |
5440 | IN PRTMP_ADAPTER pAd, | 4808 | IN PRTMP_ADAPTER pAd, |
5441 | IN PUCHAR arg); | 4809 | IN PSTRING arg); |
5442 | 4810 | ||
5443 | INT Set_HtAutoBa_Proc( | 4811 | INT Set_HtAutoBa_Proc( |
5444 | IN PRTMP_ADAPTER pAd, | 4812 | IN PRTMP_ADAPTER pAd, |
5445 | IN PUCHAR arg); | 4813 | IN PSTRING arg); |
5446 | 4814 | ||
5447 | INT Set_HtProtect_Proc( | 4815 | INT Set_HtProtect_Proc( |
5448 | IN PRTMP_ADAPTER pAd, | 4816 | IN PRTMP_ADAPTER pAd, |
5449 | IN PUCHAR arg); | 4817 | IN PSTRING arg); |
5450 | 4818 | ||
5451 | INT Set_HtMimoPs_Proc( | 4819 | INT 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 | ||
5456 | INT Set_ForceShortGI_Proc( | 4824 | INT Set_ForceShortGI_Proc( |
5457 | IN PRTMP_ADAPTER pAd, | 4825 | IN PRTMP_ADAPTER pAd, |
5458 | IN PUCHAR arg); | 4826 | IN PSTRING arg); |
5459 | 4827 | ||
5460 | INT Set_ForceGF_Proc( | 4828 | INT Set_ForceGF_Proc( |
5461 | IN PRTMP_ADAPTER pAd, | 4829 | IN PRTMP_ADAPTER pAd, |
5462 | IN PUCHAR arg); | 4830 | IN PSTRING arg); |
5463 | 4831 | ||
5464 | INT SetCommonHT( | 4832 | INT SetCommonHT( |
5465 | IN PRTMP_ADAPTER pAd); | 4833 | IN PRTMP_ADAPTER pAd); |
5466 | 4834 | ||
5467 | INT Set_SendPSMPAction_Proc( | 4835 | INT Set_SendPSMPAction_Proc( |
5468 | IN PRTMP_ADAPTER pAd, | 4836 | IN PRTMP_ADAPTER pAd, |
5469 | IN PUCHAR arg); | 4837 | IN PSTRING arg); |
5470 | 4838 | ||
5471 | INT Set_HtMIMOPSmode_Proc( | 4839 | INT 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 | ||
5476 | INT Set_HtTxBASize_Proc( | 4844 | INT Set_HtTxBASize_Proc( |
5477 | IN PRTMP_ADAPTER pAd, | 4845 | IN PRTMP_ADAPTER pAd, |
5478 | IN PUCHAR arg); | 4846 | IN PSTRING arg); |
4847 | |||
4848 | INT Set_HtDisallowTKIP_Proc( | ||
4849 | IN PRTMP_ADAPTER pAd, | ||
4850 | IN PSTRING arg); | ||
5479 | 4851 | ||
5480 | INT WpaCheckEapCode( | 4852 | INT 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 | ||
5531 | UINT 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 | ||
4973 | PNDIS_PACKET GetPacketFromRxRing( | ||
4974 | IN PRTMP_ADAPTER pAd, | ||
4975 | OUT PRT28XX_RXD_STRUC pSaveRxD, | ||
4976 | OUT BOOLEAN *pbReschedule, | ||
4977 | IN OUT UINT32 *pRxPending); | ||
4978 | |||
5607 | PNDIS_PACKET RTMPDeFragmentDataFrame( | 4979 | PNDIS_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 | |||
4985 | VOID RTMPIoctlGetSiteSurvey( | ||
4986 | IN PRTMP_ADAPTER pAdapter, | ||
4987 | IN struct iwreq *wrq); | ||
4988 | |||
4989 | |||
4990 | |||
4991 | |||
4992 | |||
4993 | |||
4994 | |||
5612 | enum { | 4995 | enum { |
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 | ||
5716 | struct iw_statistics *rt28xx_get_wireless_stats( | ||
5717 | IN struct net_device *net_dev); | ||
5718 | 5098 | ||
5719 | VOID RTMPSetDesiredRates( | 5099 | VOID RTMPSetDesiredRates( |
5720 | IN PRTMP_ADAPTER pAdapter, | 5100 | IN PRTMP_ADAPTER pAdapter, |
@@ -5722,62 +5102,20 @@ VOID RTMPSetDesiredRates( | |||
5722 | 5102 | ||
5723 | INT Set_FixedTxMode_Proc( | 5103 | INT Set_FixedTxMode_Proc( |
5724 | IN PRTMP_ADAPTER pAd, | 5104 | IN PRTMP_ADAPTER pAd, |
5725 | IN PUCHAR arg); | 5105 | IN PSTRING arg); |
5726 | |||
5727 | static 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 | |||
5748 | static 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 | ||
5108 | INT Set_LongRetryLimit_Proc( | ||
5109 | IN PRTMP_ADAPTER pAdapter, | ||
5110 | IN PSTRING arg); | ||
5765 | 5111 | ||
5766 | VOID RT28xxThreadTerminate( | 5112 | INT Set_ShortRetryLimit_Proc( |
5767 | IN RTMP_ADAPTER *pAd); | 5113 | IN PRTMP_ADAPTER pAdapter, |
5114 | IN PSTRING arg); | ||
5768 | 5115 | ||
5769 | BOOLEAN RT28XXChipsetCheck( | 5116 | BOOLEAN RT28XXChipsetCheck( |
5770 | IN void *_dev_p); | 5117 | IN void *_dev_p); |
5771 | 5118 | ||
5772 | BOOLEAN RT28XXNetDevInit( | ||
5773 | IN void *_dev_p, | ||
5774 | IN struct net_device *net_dev, | ||
5775 | IN RTMP_ADAPTER *pAd); | ||
5776 | |||
5777 | BOOLEAN RT28XXProbePostConfig( | ||
5778 | IN void *_dev_p, | ||
5779 | IN RTMP_ADAPTER *pAd, | ||
5780 | IN INT32 argc); | ||
5781 | 5119 | ||
5782 | VOID RT28XXDMADisable( | 5120 | VOID 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 | ||
5794 | INT rt28xx_sta_ioctl( | 5132 | int rt28xx_init( |
5795 | IN struct net_device *net_dev, | ||
5796 | IN OUT struct ifreq *rq, | ||
5797 | IN INT cmd); | ||
5798 | |||
5799 | //////////////////////////////////////// | ||
5800 | PNDIS_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 | |
5137 | NDIS_STATUS RtmpNetTaskInit( | ||
5138 | IN RTMP_ADAPTER *pAd); | ||
5805 | 5139 | ||
5140 | VOID RtmpNetTaskExit( | ||
5141 | IN PRTMP_ADAPTER pAd); | ||
5142 | |||
5143 | NDIS_STATUS RtmpMgmtTaskInit( | ||
5144 | IN RTMP_ADAPTER *pAd); | ||
5806 | 5145 | ||
5807 | void kill_thread_task(PRTMP_ADAPTER pAd); | 5146 | VOID RtmpMgmtTaskExit( |
5147 | IN RTMP_ADAPTER *pAd); | ||
5808 | 5148 | ||
5809 | void tbtt_tasklet(unsigned long data); | 5149 | void tbtt_tasklet(unsigned long data); |
5810 | 5150 | ||
5811 | #ifdef RT2860 | 5151 | |
5152 | PNET_DEV RtmpPhyNetDevInit( | ||
5153 | IN RTMP_ADAPTER *pAd, | ||
5154 | IN RTMP_OS_NETDEV_OP_HOOK *pNetHook); | ||
5155 | |||
5156 | BOOLEAN RtmpPhyNetDevExit( | ||
5157 | IN RTMP_ADAPTER *pAd, | ||
5158 | IN PNET_DEV net_dev); | ||
5159 | |||
5160 | INT RtmpRaDevCtrlInit( | ||
5161 | IN RTMP_ADAPTER *pAd, | ||
5162 | IN RTMP_INF_TYPE infType); | ||
5163 | |||
5164 | BOOLEAN 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 | // |
5815 | USHORT RtmpPCI_WriteTxResource( | 5172 | USHORT 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 | ||
5233 | BOOLEAN RT28xxPciAsicRadioOff( | ||
5234 | IN PRTMP_ADAPTER pAd, | ||
5235 | IN UCHAR Level, | ||
5236 | IN USHORT TbttNumToNextWakeUp); | ||
5237 | |||
5238 | BOOLEAN RT28xxPciAsicRadioOn( | ||
5239 | IN PRTMP_ADAPTER pAd, | ||
5240 | IN UCHAR Level); | ||
5241 | |||
5242 | #ifdef RTMP_PCI_SUPPORT | ||
5876 | VOID RTMPInitPCIeLinkCtrlValue( | 5243 | VOID 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 | ||
5890 | VOID RT28xxPciAsicRadioOff( | ||
5891 | IN PRTMP_ADAPTER pAd, | ||
5892 | IN UCHAR Level, | ||
5893 | IN USHORT TbttNumToNextWakeUp); | ||
5894 | |||
5895 | BOOLEAN RT28xxPciAsicRadioOn( | ||
5896 | IN PRTMP_ADAPTER pAd, | ||
5897 | IN UCHAR Level); | ||
5898 | |||
5899 | VOID RT28xxPciStaAsicForceWakeup( | ||
5900 | IN PRTMP_ADAPTER pAd, | ||
5901 | IN UCHAR Level); | ||
5902 | |||
5903 | VOID RT28xxPciStaAsicSleepThenAutoWakeup( | ||
5904 | IN PRTMP_ADAPTER pAd, | ||
5905 | IN USHORT TbttNumToNextWakeUp); | ||
5906 | |||
5907 | VOID PsPollWakeExec( | 5257 | VOID 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 | ||
5919 | VOID RT28xxPciMlmeRadioOn( | 5270 | VOID RT28xxPciStaAsicForceWakeup( |
5920 | IN PRTMP_ADAPTER pAd); | ||
5921 | |||
5922 | VOID RT28xxPciMlmeRadioOFF( | ||
5923 | IN PRTMP_ADAPTER pAd); | ||
5924 | #endif /* RT2860 */ | ||
5925 | |||
5926 | VOID AsicTurnOffRFClk( | ||
5927 | IN PRTMP_ADAPTER pAd, | ||
5928 | IN UCHAR Channel); | ||
5929 | |||
5930 | VOID AsicTurnOnRFClk( | ||
5931 | IN PRTMP_ADAPTER pAd, | ||
5932 | IN UCHAR Channel); | ||
5933 | |||
5934 | NTSTATUS RT30xxWriteRFRegister( | ||
5935 | IN PRTMP_ADAPTER pAd, | ||
5936 | IN UCHAR RegID, | ||
5937 | IN UCHAR Value); | ||
5938 | |||
5939 | NTSTATUS RT30xxReadRFRegister( | ||
5940 | IN PRTMP_ADAPTER pAd, | ||
5941 | IN UCHAR RegID, | ||
5942 | IN PUCHAR pValue); | ||
5943 | |||
5944 | UCHAR eFuseReadRegisters( | ||
5945 | IN PRTMP_ADAPTER pAd, | ||
5946 | IN USHORT Offset, | ||
5947 | IN USHORT Length, | ||
5948 | OUT USHORT* pData); | ||
5949 | |||
5950 | VOID eFuseReadPhysical( | ||
5951 | IN PRTMP_ADAPTER pAd, | ||
5952 | IN PUSHORT lpInBuffer, | ||
5953 | IN ULONG nInBufferSize, | ||
5954 | OUT PUSHORT lpOutBuffer, | ||
5955 | IN ULONG nOutBufferSize | ||
5956 | ); | ||
5957 | |||
5958 | NTSTATUS eFuseRead( | ||
5959 | IN PRTMP_ADAPTER pAd, | ||
5960 | IN USHORT Offset, | ||
5961 | OUT PUCHAR pData, | ||
5962 | IN USHORT Length); | ||
5963 | |||
5964 | VOID eFusePhysicalWriteRegisters( | ||
5965 | IN PRTMP_ADAPTER pAd, | ||
5966 | IN USHORT Offset, | ||
5967 | IN USHORT Length, | ||
5968 | OUT USHORT* pData); | ||
5969 | |||
5970 | NTSTATUS eFuseWriteRegisters( | ||
5971 | IN PRTMP_ADAPTER pAd, | ||
5972 | IN USHORT Offset, | ||
5973 | IN USHORT Length, | ||
5974 | IN USHORT* pData); | ||
5975 | |||
5976 | VOID eFuseWritePhysical( | ||
5977 | IN PRTMP_ADAPTER pAd, | ||
5978 | PUSHORT lpInBuffer, | ||
5979 | ULONG nInBufferSize, | ||
5980 | PUCHAR lpOutBuffer, | ||
5981 | ULONG nOutBufferSize | ||
5982 | ); | ||
5983 | |||
5984 | NTSTATUS eFuseWrite( | ||
5985 | IN PRTMP_ADAPTER pAd, | ||
5986 | IN USHORT Offset, | ||
5987 | IN PUCHAR pData, | ||
5988 | IN USHORT length); | ||
5989 | |||
5990 | INT set_eFuseGetFreeBlockCount_Proc( | ||
5991 | IN PRTMP_ADAPTER pAd, | ||
5992 | IN PUCHAR arg); | ||
5993 | |||
5994 | INT set_eFusedump_Proc( | ||
5995 | IN PRTMP_ADAPTER pAd, | ||
5996 | IN PUCHAR arg); | ||
5997 | |||
5998 | INT set_eFuseLoadFromBin_Proc( | ||
5999 | IN PRTMP_ADAPTER pAd, | ||
6000 | IN PUCHAR arg); | ||
6001 | |||
6002 | NTSTATUS 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 | ||
6008 | VOID eFusePhysicalReadRegisters( | 5274 | VOID 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 | ||
6014 | VOID RT30xxLoadRFNormalModeSetup( | ||
6015 | IN PRTMP_ADAPTER pAd); | ||
6016 | 5278 | ||
6017 | VOID RT30xxLoadRFSleepModeSetup( | 5279 | VOID RT28xxPciMlmeRadioOn( |
6018 | IN PRTMP_ADAPTER pAd); | 5280 | IN PRTMP_ADAPTER pAd); |
6019 | 5281 | ||
6020 | VOID RT30xxReverseRFSleepModeSetup( | 5282 | VOID 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 | ||
5303 | VOID RTUSBInitRxDesc( | ||
5304 | IN PRTMP_ADAPTER pAd, | ||
5305 | IN PRX_CONTEXT pRxContext); | ||
5306 | |||
6040 | VOID RTUSBCleanUpDataBulkOutQueue( | 5307 | VOID 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 | ||
5353 | VOID 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( | |||
6168 | INT RTUSBCmdThread( | 5438 | INT RTUSBCmdThread( |
6169 | IN OUT PVOID Context); | 5439 | IN OUT PVOID Context); |
6170 | 5440 | ||
6171 | INT TimerQThread( | 5441 | VOID RTUSBBssBeaconExit( |
6172 | IN OUT PVOID Context); | ||
6173 | |||
6174 | RT2870_TIMER_ENTRY *RT2870_TimerQ_Insert( | ||
6175 | IN RTMP_ADAPTER *pAd, | ||
6176 | IN RALINK_TIMER_STRUCT *pTimer); | ||
6177 | |||
6178 | BOOLEAN RT2870_TimerQ_Remove( | ||
6179 | IN RTMP_ADAPTER *pAd, | ||
6180 | IN RALINK_TIMER_STRUCT *pTimer); | ||
6181 | |||
6182 | void RT2870_TimerQ_Exit( | ||
6183 | IN RTMP_ADAPTER *pAd); | 5442 | IN RTMP_ADAPTER *pAd); |
6184 | 5443 | ||
6185 | void RT2870_TimerQ_Init( | 5444 | VOID RTUSBBssBeaconStop( |
6186 | IN RTMP_ADAPTER *pAd); | 5445 | IN RTMP_ADAPTER *pAd); |
6187 | 5446 | ||
6188 | VOID RT2870_BssBeaconExit( | 5447 | VOID RTUSBBssBeaconStart( |
6189 | IN RTMP_ADAPTER *pAd); | ||
6190 | |||
6191 | VOID RT2870_BssBeaconStop( | ||
6192 | IN RTMP_ADAPTER *pAd); | ||
6193 | |||
6194 | VOID RT2870_BssBeaconStart( | ||
6195 | IN RTMP_ADAPTER * pAd); | 5448 | IN RTMP_ADAPTER * pAd); |
6196 | 5449 | ||
6197 | VOID RT2870_BssBeaconInit( | 5450 | VOID RTUSBBssBeaconInit( |
6198 | IN RTMP_ADAPTER *pAd); | 5451 | IN RTMP_ADAPTER *pAd); |
6199 | 5452 | ||
6200 | VOID RT2870_WatchDog( | 5453 | VOID RTUSBWatchDog( |
6201 | IN RTMP_ADAPTER *pAd); | 5454 | IN RTMP_ADAPTER *pAd); |
6202 | 5455 | ||
6203 | NTSTATUS RTUSBWriteMACRegister( | 5456 | NTSTATUS 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 | ||
6218 | NTSTATUS RTUSBFirmwareRun( | ||
6219 | IN PRTMP_ADAPTER pAd); | ||
6220 | |||
6221 | NTSTATUS RTUSBFirmwareWrite( | 5471 | NTSTATUS 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 | ||
6226 | NTSTATUS RTUSBFirmwareOpmode( | ||
6227 | IN PRTMP_ADAPTER pAd, | ||
6228 | OUT PUINT32 pValue); | ||
6229 | |||
6230 | NTSTATUS RTUSBVenderReset( | 5476 | NTSTATUS RTUSBVenderReset( |
6231 | IN PRTMP_ADAPTER pAd); | 5477 | IN PRTMP_ADAPTER pAd); |
6232 | 5478 | ||
6233 | VOID CMDHandler( | 5479 | NDIS_STATUS RTUSBSetHardWareRegister( |
6234 | IN PRTMP_ADAPTER pAd); | 5480 | IN PRTMP_ADAPTER pAdapter, |
5481 | IN PVOID pBuf); | ||
6235 | 5482 | ||
5483 | NDIS_STATUS RTUSBQueryHardWareRegister( | ||
5484 | IN PRTMP_ADAPTER pAdapter, | ||
5485 | IN PVOID pBuf); | ||
6236 | 5486 | ||
6237 | NDIS_STATUS CreateThreads( | 5487 | VOID CMDHandler( |
6238 | IN struct net_device *net_dev ); | 5488 | IN PRTMP_ADAPTER pAd); |
6239 | 5489 | ||
5490 | NDIS_STATUS RTUSBWriteHWMACAddress( | ||
5491 | IN PRTMP_ADAPTER pAdapter); | ||
6240 | 5492 | ||
6241 | VOID MacTableInitialize( | 5493 | VOID MacTableInitialize( |
6242 | IN PRTMP_ADAPTER pAd); | 5494 | IN PRTMP_ADAPTER pAd); |
@@ -6252,12 +5504,30 @@ NDIS_STATUS RTMPWPAAddKeyProc( | |||
6252 | VOID AsicRxAntEvalAction( | 5504 | VOID AsicRxAntEvalAction( |
6253 | IN PRTMP_ADAPTER pAd); | 5505 | IN PRTMP_ADAPTER pAd); |
6254 | 5506 | ||
5507 | void 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 | |||
5515 | UINT deaggregate_AMSDU_announce( | ||
5516 | IN PRTMP_ADAPTER pAd, | ||
5517 | PNDIS_PACKET pPacket, | ||
5518 | IN PUCHAR pData, | ||
5519 | IN ULONG DataSize); | ||
5520 | |||
6255 | NDIS_STATUS RTMPCheckRxError( | 5521 | NDIS_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 | ||
5527 | VOID RTUSBMlmeHardTransmit( | ||
5528 | IN PRTMP_ADAPTER pAd, | ||
5529 | IN PMGMT_STRUC pMgmt); | ||
5530 | |||
6261 | INT MlmeThread( | 5531 | INT 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 | // |
6290 | USHORT RtmpUSB_WriteSubTxResource( | 5560 | USHORT 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 | ||
6323 | VOID RtmpUSBDataLastTxIdx( | 5590 | VOID 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 | ||
5614 | VOID RtmpUsbStaAsicForceWakeupTimeout( | ||
5615 | IN PVOID SystemSpecific1, | ||
5616 | IN PVOID FunctionContext, | ||
5617 | IN PVOID SystemSpecific2, | ||
5618 | IN PVOID SystemSpecific3); | ||
5619 | |||
6347 | VOID RT28xxUsbStaAsicForceWakeup( | 5620 | VOID 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 | ||
6358 | VOID RT28xxUsbMlmeRadioOFF( | 5631 | VOID RT28xxUsbMlmeRadioOFF( |
6359 | IN PRTMP_ADAPTER pAd); | 5632 | IN PRTMP_ADAPTER pAd); |
6360 | #endif // RT2870 // | 5633 | #endif // RTMP_MAC_USB // |
5634 | |||
5635 | VOID AsicTurnOffRFClk( | ||
5636 | IN PRTMP_ADAPTER pAd, | ||
5637 | IN UCHAR Channel); | ||
6361 | 5638 | ||
5639 | VOID AsicTurnOnRFClk( | ||
5640 | IN PRTMP_ADAPTER pAd, | ||
5641 | IN UCHAR Channel); | ||
5642 | |||
5643 | |||
5644 | |||
5645 | #ifdef RTMP_TIMER_TASK_SUPPORT | ||
5646 | INT RtmpTimerQThread( | ||
5647 | IN OUT PVOID Context); | ||
5648 | |||
5649 | RTMP_TIMER_TASK_ENTRY *RtmpTimerQInsert( | ||
5650 | IN RTMP_ADAPTER *pAd, | ||
5651 | IN RALINK_TIMER_STRUCT *pTimer); | ||
5652 | |||
5653 | BOOLEAN RtmpTimerQRemove( | ||
5654 | IN RTMP_ADAPTER *pAd, | ||
5655 | IN RALINK_TIMER_STRUCT *pTimer); | ||
5656 | |||
5657 | void RtmpTimerQExit( | ||
5658 | IN RTMP_ADAPTER *pAd); | ||
5659 | |||
5660 | void RtmpTimerQInit( | ||
5661 | IN RTMP_ADAPTER *pAd); | ||
5662 | #endif // RTMP_TIMER_TASK_SUPPORT // | ||
5663 | |||
5664 | /////////////////////////////////////// | ||
6362 | INT RTMPShowCfgValue( | 5665 | INT 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 | ||
6367 | PCHAR RTMPGetRalinkAuthModeStr( | 5670 | PSTRING RTMPGetRalinkAuthModeStr( |
6368 | IN NDIS_802_11_AUTHENTICATION_MODE authMode); | 5671 | IN NDIS_802_11_AUTHENTICATION_MODE authMode); |
6369 | 5672 | ||
6370 | PCHAR RTMPGetRalinkEncryModeStr( | 5673 | PSTRING RTMPGetRalinkEncryModeStr( |
6371 | IN USHORT encryMode); | 5674 | IN USHORT encryMode); |
5675 | ////////////////////////////////////// | ||
6372 | 5676 | ||
6373 | VOID AsicStaBbpTuning( | 5677 | VOID AsicStaBbpTuning( |
6374 | IN PRTMP_ADAPTER pAd); | 5678 | IN PRTMP_ADAPTER pAd); |
6375 | 5679 | ||
6376 | #ifdef RT2860 | ||
6377 | VOID AsicResetFromDMABusy( | ||
6378 | IN PRTMP_ADAPTER pAd); | ||
6379 | |||
6380 | VOID AsicResetBBP( | ||
6381 | IN PRTMP_ADAPTER pAd); | ||
6382 | |||
6383 | VOID AsicResetMAC( | ||
6384 | IN PRTMP_ADAPTER pAd); | ||
6385 | |||
6386 | VOID AsicResetPBF( | ||
6387 | IN PRTMP_ADAPTER pAd); | ||
6388 | #endif | ||
6389 | #ifdef RT2870 | ||
6390 | BOOLEAN StaAddMacTableEntry( | 5680 | BOOLEAN 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 | |||
5691 | BOOLEAN 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 | ||
6399 | void RTMP_IndicateMediaState( | 5700 | void RTMP_IndicateMediaState( |
6400 | IN PRTMP_ADAPTER pAd); | 5701 | IN PRTMP_ADAPTER pAd); |
@@ -6409,13 +5710,23 @@ VOID RTMPSetAGCInitValue( | |||
6409 | int rt28xx_close(IN PNET_DEV dev); | 5710 | int rt28xx_close(IN PNET_DEV dev); |
6410 | int rt28xx_open(IN PNET_DEV dev); | 5711 | int 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 | */ | ||
5751 | int 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 | |||
5759 | int RtmpOSNetDevAddrSet( | ||
5760 | IN PNET_DEV pNetDev, | ||
5761 | IN PUCHAR pMacAddr); | ||
5762 | |||
5763 | int RtmpOSNetDevAttach( | ||
5764 | IN PNET_DEV pNetDev, | ||
5765 | IN RTMP_OS_NETDEV_OP_HOOK *pDevOpHook); | ||
5766 | |||
5767 | void RtmpOSNetDevClose( | ||
5768 | IN PNET_DEV pNetDev); | ||
5769 | |||
5770 | void RtmpOSNetDevDetach( | ||
5771 | IN PNET_DEV pNetDev); | ||
5772 | |||
5773 | INT RtmpOSNetDevAlloc( | ||
5774 | IN PNET_DEV *pNewNetDev, | ||
5775 | IN UINT32 privDataSize); | ||
5776 | |||
5777 | void RtmpOSNetDevFree( | ||
5778 | IN PNET_DEV pNetDev); | ||
5779 | |||
5780 | PNET_DEV RtmpOSNetDevGetByName( | ||
5781 | IN PNET_DEV pNetDev, | ||
5782 | IN PSTRING pDevName); | ||
5783 | |||
5784 | void RtmpOSNetDeviceRefPut( | ||
5785 | IN PNET_DEV pNetDev); | ||
5786 | |||
5787 | PNET_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 | */ | ||
5797 | void RtmpOSTaskCustomize( | ||
5798 | IN RTMP_OS_TASK *pTask); | ||
5799 | |||
5800 | INT RtmpOSTaskNotifyToExit( | ||
5801 | IN RTMP_OS_TASK *pTask); | ||
5802 | |||
5803 | NDIS_STATUS RtmpOSTaskKill( | ||
5804 | IN RTMP_OS_TASK *pTask); | ||
5805 | |||
5806 | NDIS_STATUS RtmpOSTaskInit( | ||
5807 | IN RTMP_OS_TASK *pTask, | ||
5808 | PSTRING pTaskName, | ||
5809 | VOID *pPriv); | ||
5810 | |||
5811 | NDIS_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 | */ | ||
5820 | RTMP_OS_FD RtmpOSFileOpen( | ||
5821 | IN char *pPath, | ||
5822 | IN int flag, | ||
5823 | IN int mode); | ||
5824 | |||
5825 | int RtmpOSFileClose( | ||
5826 | IN RTMP_OS_FD osfd); | ||
5827 | |||
5828 | void RtmpOSFileSeek( | ||
5829 | IN RTMP_OS_FD osfd, | ||
5830 | IN int offset); | ||
5831 | |||
5832 | int RtmpOSFileRead( | ||
5833 | IN RTMP_OS_FD osfd, | ||
5834 | IN char *pDataPtr, | ||
5835 | IN int readLen); | ||
5836 | |||
5837 | int RtmpOSFileWrite( | ||
5838 | IN RTMP_OS_FD osfd, | ||
5839 | IN char *pDataPtr, | ||
5840 | IN int writeLen); | ||
5841 | |||
5842 | void RtmpOSFSInfoChange( | ||
5843 | IN RTMP_OS_FS_INFO *pOSFSInfo, | ||
5844 | IN BOOLEAN bSet); | ||
6433 | 5845 | ||
6434 | 5846 | ||
6435 | #endif // __RTMP_H__ | 5847 | #endif // __RTMP_H__ |