aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/vt6656/bssdb.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging/vt6656/bssdb.c')
-rw-r--r--drivers/staging/vt6656/bssdb.c402
1 files changed, 173 insertions, 229 deletions
diff --git a/drivers/staging/vt6656/bssdb.c b/drivers/staging/vt6656/bssdb.c
index 6b1678bfd61..36ed61b595c 100644
--- a/drivers/staging/vt6656/bssdb.c
+++ b/drivers/staging/vt6656/bssdb.c
@@ -91,19 +91,13 @@ const WORD awHWRetry1[5][5] = {
91 91
92/*--------------------- Static Functions --------------------------*/ 92/*--------------------- Static Functions --------------------------*/
93 93
94VOID s_vCheckSensitivity( 94void s_vCheckSensitivity(void *hDeviceContext);
95 IN HANDLE hDeviceContext 95void s_vCheckPreEDThreshold(void *hDeviceContext);
96 );
97
98VOID s_vCheckPreEDThreshold(
99 IN HANDLE hDeviceContext
100 );
101 96
102#ifdef Calcu_LinkQual 97#ifdef Calcu_LinkQual
103VOID s_uCalculateLinkQual( 98void s_uCalculateLinkQual(void *hDeviceContext);
104 IN HANDLE hDeviceContext
105 );
106#endif 99#endif
100
107/*--------------------- Export Variables --------------------------*/ 101/*--------------------- Export Variables --------------------------*/
108 102
109 103
@@ -123,13 +117,10 @@ VOID s_uCalculateLinkQual(
123 * 117 *
124-*/ 118-*/
125 119
126PKnownBSS 120PKnownBSS BSSpSearchBSSList(void *hDeviceContext,
127BSSpSearchBSSList( 121 PBYTE pbyDesireBSSID,
128 IN HANDLE hDeviceContext, 122 PBYTE pbyDesireSSID,
129 IN PBYTE pbyDesireBSSID, 123 CARD_PHY_TYPE ePhyType)
130 IN PBYTE pbyDesireSSID,
131 IN CARD_PHY_TYPE ePhyType
132 )
133{ 124{
134 PSDevice pDevice = (PSDevice)hDeviceContext; 125 PSDevice pDevice = (PSDevice)hDeviceContext;
135 PSMgmtObject pMgmt = &(pDevice->sMgmtObj); 126 PSMgmtObject pMgmt = &(pDevice->sMgmtObj);
@@ -138,8 +129,8 @@ BSSpSearchBSSList(
138 PKnownBSS pCurrBSS = NULL; 129 PKnownBSS pCurrBSS = NULL;
139 PKnownBSS pSelect = NULL; 130 PKnownBSS pSelect = NULL;
140 BYTE ZeroBSSID[WLAN_BSSID_LEN]={0x00,0x00,0x00,0x00,0x00,0x00}; 131 BYTE ZeroBSSID[WLAN_BSSID_LEN]={0x00,0x00,0x00,0x00,0x00,0x00};
141 UINT ii = 0; 132 unsigned int ii = 0;
142 UINT jj = 0; //DavidWang 133 unsigned int jj = 0;
143 if (pbyDesireBSSID != NULL) { 134 if (pbyDesireBSSID != NULL) {
144 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"BSSpSearchBSSList BSSID[%02X %02X %02X-%02X %02X %02X]\n", 135 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"BSSpSearchBSSList BSSID[%02X %02X %02X-%02X %02X %02X]\n",
145 *pbyDesireBSSID,*(pbyDesireBSSID+1),*(pbyDesireBSSID+2), 136 *pbyDesireBSSID,*(pbyDesireBSSID+1),*(pbyDesireBSSID+2),
@@ -296,15 +287,11 @@ pDevice->bSameBSSMaxNum = jj;
296-*/ 287-*/
297 288
298 289
299VOID 290void BSSvClearBSSList(void *hDeviceContext, BOOL bKeepCurrBSSID)
300BSSvClearBSSList(
301 IN HANDLE hDeviceContext,
302 IN BOOL bKeepCurrBSSID
303 )
304{ 291{
305 PSDevice pDevice = (PSDevice)hDeviceContext; 292 PSDevice pDevice = (PSDevice)hDeviceContext;
306 PSMgmtObject pMgmt = &(pDevice->sMgmtObj); 293 PSMgmtObject pMgmt = &(pDevice->sMgmtObj);
307 UINT ii; 294 unsigned int ii;
308 295
309 for (ii = 0; ii < MAX_BSS_NUM; ii++) { 296 for (ii = 0; ii < MAX_BSS_NUM; ii++) {
310 if (bKeepCurrBSSID) { 297 if (bKeepCurrBSSID) {
@@ -342,17 +329,14 @@ BSSvClearBSSList(
342 * TRUE if found. 329 * TRUE if found.
343 * 330 *
344-*/ 331-*/
345PKnownBSS 332PKnownBSS BSSpAddrIsInBSSList(void *hDeviceContext,
346BSSpAddrIsInBSSList( 333 PBYTE abyBSSID,
347 IN HANDLE hDeviceContext, 334 PWLAN_IE_SSID pSSID)
348 IN PBYTE abyBSSID,
349 IN PWLAN_IE_SSID pSSID
350 )
351{ 335{
352 PSDevice pDevice = (PSDevice)hDeviceContext; 336 PSDevice pDevice = (PSDevice)hDeviceContext;
353 PSMgmtObject pMgmt = &(pDevice->sMgmtObj); 337 PSMgmtObject pMgmt = &(pDevice->sMgmtObj);
354 PKnownBSS pBSSList = NULL; 338 PKnownBSS pBSSList = NULL;
355 UINT ii; 339 unsigned int ii;
356 340
357 for (ii = 0; ii < MAX_BSS_NUM; ii++) { 341 for (ii = 0; ii < MAX_BSS_NUM; ii++) {
358 pBSSList = &(pMgmt->sBSSList[ii]); 342 pBSSList = &(pMgmt->sBSSList[ii]);
@@ -383,33 +367,30 @@ BSSpAddrIsInBSSList(
383 * 367 *
384-*/ 368-*/
385 369
386BOOL 370BOOL BSSbInsertToBSSList(void *hDeviceContext,
387BSSbInsertToBSSList ( 371 PBYTE abyBSSIDAddr,
388 IN HANDLE hDeviceContext, 372 QWORD qwTimestamp,
389 IN PBYTE abyBSSIDAddr, 373 WORD wBeaconInterval,
390 IN QWORD qwTimestamp, 374 WORD wCapInfo,
391 IN WORD wBeaconInterval, 375 BYTE byCurrChannel,
392 IN WORD wCapInfo, 376 PWLAN_IE_SSID pSSID,
393 IN BYTE byCurrChannel, 377 PWLAN_IE_SUPP_RATES pSuppRates,
394 IN PWLAN_IE_SSID pSSID, 378 PWLAN_IE_SUPP_RATES pExtSuppRates,
395 IN PWLAN_IE_SUPP_RATES pSuppRates, 379 PERPObject psERP,
396 IN PWLAN_IE_SUPP_RATES pExtSuppRates, 380 PWLAN_IE_RSN pRSN,
397 IN PERPObject psERP, 381 PWLAN_IE_RSN_EXT pRSNWPA,
398 IN PWLAN_IE_RSN pRSN, 382 PWLAN_IE_COUNTRY pIE_Country,
399 IN PWLAN_IE_RSN_EXT pRSNWPA, 383 PWLAN_IE_QUIET pIE_Quiet,
400 IN PWLAN_IE_COUNTRY pIE_Country, 384 unsigned int uIELength,
401 IN PWLAN_IE_QUIET pIE_Quiet, 385 PBYTE pbyIEs,
402 IN UINT uIELength, 386 void *pRxPacketContext)
403 IN PBYTE pbyIEs,
404 IN HANDLE pRxPacketContext
405 )
406{ 387{
407 388
408 PSDevice pDevice = (PSDevice)hDeviceContext; 389 PSDevice pDevice = (PSDevice)hDeviceContext;
409 PSMgmtObject pMgmt = &(pDevice->sMgmtObj); 390 PSMgmtObject pMgmt = &(pDevice->sMgmtObj);
410 PSRxMgmtPacket pRxPacket = (PSRxMgmtPacket)pRxPacketContext; 391 PSRxMgmtPacket pRxPacket = (PSRxMgmtPacket)pRxPacketContext;
411 PKnownBSS pBSSList = NULL; 392 PKnownBSS pBSSList = NULL;
412 UINT ii; 393 unsigned int ii;
413 BOOL bParsingQuiet = FALSE; 394 BOOL bParsingQuiet = FALSE;
414 395
415 396
@@ -484,24 +465,27 @@ BSSbInsertToBSSList (
484 WPA_ClearRSN(pBSSList); 465 WPA_ClearRSN(pBSSList);
485 466
486 if (pRSNWPA != NULL) { 467 if (pRSNWPA != NULL) {
487 UINT uLen = pRSNWPA->len + 2; 468 unsigned int uLen = pRSNWPA->len + 2;
488 469
489 if (uLen <= (uIELength - (UINT)(ULONG_PTR)((PBYTE)pRSNWPA - pbyIEs))) { 470 if (uLen <= (uIELength -
490 pBSSList->wWPALen = uLen; 471 (unsigned int) (ULONG_PTR) ((PBYTE) pRSNWPA - pbyIEs))) {
491 memcpy(pBSSList->byWPAIE, pRSNWPA, uLen); 472 pBSSList->wWPALen = uLen;
492 WPA_ParseRSN(pBSSList, pRSNWPA); 473 memcpy(pBSSList->byWPAIE, pRSNWPA, uLen);
493 } 474 WPA_ParseRSN(pBSSList, pRSNWPA);
475 }
494 } 476 }
495 477
496 WPA2_ClearRSN(pBSSList); 478 WPA2_ClearRSN(pBSSList);
497 479
498 if (pRSN != NULL) { 480 if (pRSN != NULL) {
499 UINT uLen = pRSN->len + 2; 481 unsigned int uLen = pRSN->len + 2;
500 if (uLen <= (uIELength - (UINT)(ULONG_PTR)((PBYTE)pRSN - pbyIEs))) { 482
501 pBSSList->wRSNLen = uLen; 483 if (uLen <= (uIELength -
502 memcpy(pBSSList->byRSNIE, pRSN, uLen); 484 (unsigned int) (ULONG_PTR) ((PBYTE) pRSN - pbyIEs))) {
503 WPA2vParseRSN(pBSSList, pRSN); 485 pBSSList->wRSNLen = uLen;
504 } 486 memcpy(pBSSList->byRSNIE, pRSN, uLen);
487 WPA2vParseRSN(pBSSList, pRSN);
488 }
505 } 489 }
506 490
507 if ((pMgmt->eAuthenMode == WMAC_AUTH_WPA2) || (pBSSList->bWPA2Valid == TRUE)) { 491 if ((pMgmt->eAuthenMode == WMAC_AUTH_WPA2) || (pBSSList->bWPA2Valid == TRUE)) {
@@ -518,7 +502,9 @@ BSSbInsertToBSSList (
518 if ((bIs802_1x == TRUE) && (pSSID->len == ((PWLAN_IE_SSID)pMgmt->abyDesireSSID)->len) && 502 if ((bIs802_1x == TRUE) && (pSSID->len == ((PWLAN_IE_SSID)pMgmt->abyDesireSSID)->len) &&
519 ( !memcmp(pSSID->abySSID, ((PWLAN_IE_SSID)pMgmt->abyDesireSSID)->abySSID, pSSID->len))) { 503 ( !memcmp(pSSID->abySSID, ((PWLAN_IE_SSID)pMgmt->abyDesireSSID)->abySSID, pSSID->len))) {
520 504
521 bAdd_PMKID_Candidate((HANDLE)pDevice, pBSSList->abyBSSID, &pBSSList->sRSNCapObj); 505 bAdd_PMKID_Candidate((void *) pDevice,
506 pBSSList->abyBSSID,
507 &pBSSList->sRSNCapObj);
522 508
523 if ((pDevice->bLinkPass == TRUE) && (pMgmt->eCurrState == WMAC_STATE_ASSOC)) { 509 if ((pDevice->bLinkPass == TRUE) && (pMgmt->eCurrState == WMAC_STATE_ASSOC)) {
524 if ((KeybGetTransmitKey(&(pDevice->sKey), pDevice->abyBSSID, PAIRWISE_KEY, &pTransmitKey) == TRUE) || 510 if ((KeybGetTransmitKey(&(pDevice->sKey), pDevice->abyBSSID, PAIRWISE_KEY, &pTransmitKey) == TRUE) ||
@@ -602,33 +588,30 @@ BSSbInsertToBSSList (
602-*/ 588-*/
603// TODO: input structure modify 589// TODO: input structure modify
604 590
605BOOL 591BOOL BSSbUpdateToBSSList(void *hDeviceContext,
606BSSbUpdateToBSSList ( 592 QWORD qwTimestamp,
607 IN HANDLE hDeviceContext, 593 WORD wBeaconInterval,
608 IN QWORD qwTimestamp, 594 WORD wCapInfo,
609 IN WORD wBeaconInterval, 595 BYTE byCurrChannel,
610 IN WORD wCapInfo, 596 BOOL bChannelHit,
611 IN BYTE byCurrChannel, 597 PWLAN_IE_SSID pSSID,
612 IN BOOL bChannelHit, 598 PWLAN_IE_SUPP_RATES pSuppRates,
613 IN PWLAN_IE_SSID pSSID, 599 PWLAN_IE_SUPP_RATES pExtSuppRates,
614 IN PWLAN_IE_SUPP_RATES pSuppRates, 600 PERPObject psERP,
615 IN PWLAN_IE_SUPP_RATES pExtSuppRates, 601 PWLAN_IE_RSN pRSN,
616 IN PERPObject psERP, 602 PWLAN_IE_RSN_EXT pRSNWPA,
617 IN PWLAN_IE_RSN pRSN, 603 PWLAN_IE_COUNTRY pIE_Country,
618 IN PWLAN_IE_RSN_EXT pRSNWPA, 604 PWLAN_IE_QUIET pIE_Quiet,
619 IN PWLAN_IE_COUNTRY pIE_Country, 605 PKnownBSS pBSSList,
620 IN PWLAN_IE_QUIET pIE_Quiet, 606 unsigned int uIELength,
621 IN PKnownBSS pBSSList, 607 PBYTE pbyIEs,
622 IN UINT uIELength, 608 void *pRxPacketContext)
623 IN PBYTE pbyIEs,
624 IN HANDLE pRxPacketContext
625 )
626{ 609{
627 int ii, jj; 610 int ii, jj;
628 PSDevice pDevice = (PSDevice)hDeviceContext; 611 PSDevice pDevice = (PSDevice)hDeviceContext;
629 PSMgmtObject pMgmt = &(pDevice->sMgmtObj); 612 PSMgmtObject pMgmt = &(pDevice->sMgmtObj);
630 PSRxMgmtPacket pRxPacket = (PSRxMgmtPacket)pRxPacketContext; 613 PSRxMgmtPacket pRxPacket = (PSRxMgmtPacket)pRxPacketContext;
631 LONG ldBm, ldBmSum; 614 signed long ldBm, ldBmSum;
632 BOOL bParsingQuiet = FALSE; 615 BOOL bParsingQuiet = FALSE;
633 // BYTE abyTmpSSID[WLAN_IEHDR_LEN + WLAN_SSID_MAXLEN + 1]; 616 // BYTE abyTmpSSID[WLAN_IEHDR_LEN + WLAN_SSID_MAXLEN + 1];
634 617
@@ -687,24 +670,26 @@ BSSbUpdateToBSSList (
687 670
688 WPA_ClearRSN(pBSSList); //mike update 671 WPA_ClearRSN(pBSSList); //mike update
689 672
690 if (pRSNWPA != NULL) { 673 if (pRSNWPA != NULL) {
691 UINT uLen = pRSNWPA->len + 2; 674 unsigned int uLen = pRSNWPA->len + 2;
692 if (uLen <= (uIELength - (UINT)(ULONG_PTR)((PBYTE)pRSNWPA - pbyIEs))) { 675 if (uLen <= (uIELength -
693 pBSSList->wWPALen = uLen; 676 (unsigned int) (ULONG_PTR) ((PBYTE) pRSNWPA - pbyIEs))) {
694 memcpy(pBSSList->byWPAIE, pRSNWPA, uLen); 677 pBSSList->wWPALen = uLen;
695 WPA_ParseRSN(pBSSList, pRSNWPA); 678 memcpy(pBSSList->byWPAIE, pRSNWPA, uLen);
696 } 679 WPA_ParseRSN(pBSSList, pRSNWPA);
697 } 680 }
681 }
698 682
699 WPA2_ClearRSN(pBSSList); //mike update 683 WPA2_ClearRSN(pBSSList); //mike update
700 684
701 if (pRSN != NULL) { 685 if (pRSN != NULL) {
702 UINT uLen = pRSN->len + 2; 686 unsigned int uLen = pRSN->len + 2;
703 if (uLen <= (uIELength - (UINT)(ULONG_PTR)((PBYTE)pRSN - pbyIEs))) { 687 if (uLen <= (uIELength -
704 pBSSList->wRSNLen = uLen; 688 (unsigned int) (ULONG_PTR) ((PBYTE) pRSN - pbyIEs))) {
705 memcpy(pBSSList->byRSNIE, pRSN, uLen); 689 pBSSList->wRSNLen = uLen;
706 WPA2vParseRSN(pBSSList, pRSN); 690 memcpy(pBSSList->byRSNIE, pRSN, uLen);
707 } 691 WPA2vParseRSN(pBSSList, pRSN);
692 }
708 } 693 }
709 694
710 if (pRxPacket->uRSSI != 0) { 695 if (pRxPacket->uRSSI != 0) {
@@ -768,16 +753,13 @@ BSSbUpdateToBSSList (
768 * 753 *
769-*/ 754-*/
770 755
771BOOL 756BOOL BSSbIsSTAInNodeDB(void *hDeviceContext,
772BSSbIsSTAInNodeDB( 757 PBYTE abyDstAddr,
773 IN HANDLE hDeviceContext, 758 PUINT puNodeIndex)
774 IN PBYTE abyDstAddr,
775 OUT PUINT puNodeIndex
776 )
777{ 759{
778 PSDevice pDevice = (PSDevice)hDeviceContext; 760 PSDevice pDevice = (PSDevice)hDeviceContext;
779 PSMgmtObject pMgmt = &(pDevice->sMgmtObj); 761 PSMgmtObject pMgmt = &(pDevice->sMgmtObj);
780 UINT ii; 762 unsigned int ii;
781 763
782 // Index = 0 reserved for AP Node 764 // Index = 0 reserved for AP Node
783 for (ii = 1; ii < (MAX_NODE_NUM + 1); ii++) { 765 for (ii = 1; ii < (MAX_NODE_NUM + 1); ii++) {
@@ -804,18 +786,14 @@ BSSbIsSTAInNodeDB(
804 * None 786 * None
805 * 787 *
806-*/ 788-*/
807VOID 789void BSSvCreateOneNode(void *hDeviceContext, PUINT puNodeIndex)
808BSSvCreateOneNode(
809 IN HANDLE hDeviceContext,
810 OUT PUINT puNodeIndex
811 )
812{ 790{
813 791
814 PSDevice pDevice = (PSDevice)hDeviceContext; 792 PSDevice pDevice = (PSDevice)hDeviceContext;
815 PSMgmtObject pMgmt = &(pDevice->sMgmtObj); 793 PSMgmtObject pMgmt = &(pDevice->sMgmtObj);
816 UINT ii; 794 unsigned int ii;
817 UINT BigestCount = 0; 795 unsigned int BigestCount = 0;
818 UINT SelectIndex; 796 unsigned int SelectIndex;
819 struct sk_buff *skb; 797 struct sk_buff *skb;
820 // Index = 0 reserved for AP Node (In STA mode) 798 // Index = 0 reserved for AP Node (In STA mode)
821 // Index = 0 reserved for Broadcast/MultiCast (In AP mode) 799 // Index = 0 reserved for Broadcast/MultiCast (In AP mode)
@@ -869,11 +847,8 @@ BSSvCreateOneNode(
869 * None 847 * None
870 * 848 *
871-*/ 849-*/
872VOID 850
873BSSvRemoveOneNode( 851void BSSvRemoveOneNode(void *hDeviceContext, unsigned int uNodeIndex)
874 IN HANDLE hDeviceContext,
875 IN UINT uNodeIndex
876 )
877{ 852{
878 853
879 PSDevice pDevice = (PSDevice)hDeviceContext; 854 PSDevice pDevice = (PSDevice)hDeviceContext;
@@ -902,17 +877,14 @@ BSSvRemoveOneNode(
902 * 877 *
903-*/ 878-*/
904 879
905VOID 880void BSSvUpdateAPNode(void *hDeviceContext,
906BSSvUpdateAPNode( 881 PWORD pwCapInfo,
907 IN HANDLE hDeviceContext, 882 PWLAN_IE_SUPP_RATES pSuppRates,
908 IN PWORD pwCapInfo, 883 PWLAN_IE_SUPP_RATES pExtSuppRates)
909 IN PWLAN_IE_SUPP_RATES pSuppRates,
910 IN PWLAN_IE_SUPP_RATES pExtSuppRates
911 )
912{ 884{
913 PSDevice pDevice = (PSDevice)hDeviceContext; 885 PSDevice pDevice = (PSDevice)hDeviceContext;
914 PSMgmtObject pMgmt = &(pDevice->sMgmtObj); 886 PSMgmtObject pMgmt = &(pDevice->sMgmtObj);
915 UINT uRateLen = WLAN_RATES_MAXLEN; 887 unsigned int uRateLen = WLAN_RATES_MAXLEN;
916 888
917 memset(&pMgmt->sNodeDBTable[0], 0, sizeof(KnownNodeDB)); 889 memset(&pMgmt->sNodeDBTable[0], 0, sizeof(KnownNodeDB));
918 890
@@ -926,7 +898,7 @@ BSSvUpdateAPNode(
926 pMgmt->abyCurrExtSuppRates[1] = RATEuSetIE((PWLAN_IE_SUPP_RATES)pExtSuppRates, 898 pMgmt->abyCurrExtSuppRates[1] = RATEuSetIE((PWLAN_IE_SUPP_RATES)pExtSuppRates,
927 (PWLAN_IE_SUPP_RATES)pMgmt->abyCurrExtSuppRates, 899 (PWLAN_IE_SUPP_RATES)pMgmt->abyCurrExtSuppRates,
928 uRateLen); 900 uRateLen);
929 RATEvParseMaxRate((PVOID) pDevice, 901 RATEvParseMaxRate((void *) pDevice,
930 (PWLAN_IE_SUPP_RATES)pMgmt->abyCurrSuppRates, 902 (PWLAN_IE_SUPP_RATES)pMgmt->abyCurrSuppRates,
931 (PWLAN_IE_SUPP_RATES)pMgmt->abyCurrExtSuppRates, 903 (PWLAN_IE_SUPP_RATES)pMgmt->abyCurrExtSuppRates,
932 TRUE, 904 TRUE,
@@ -946,10 +918,6 @@ BSSvUpdateAPNode(
946 918
947}; 919};
948 920
949
950
951
952
953/*+ 921/*+
954 * 922 *
955 * Routine Description: 923 * Routine Description:
@@ -961,11 +929,7 @@ BSSvUpdateAPNode(
961 * 929 *
962-*/ 930-*/
963 931
964 932void BSSvAddMulticastNode(void *hDeviceContext)
965VOID
966BSSvAddMulticastNode(
967 IN HANDLE hDeviceContext
968 )
969{ 933{
970 PSDevice pDevice = (PSDevice)hDeviceContext; 934 PSDevice pDevice = (PSDevice)hDeviceContext;
971 PSMgmtObject pMgmt = &(pDevice->sMgmtObj); 935 PSMgmtObject pMgmt = &(pDevice->sMgmtObj);
@@ -976,7 +940,7 @@ BSSvAddMulticastNode(
976 pMgmt->sNodeDBTable[0].bActive = TRUE; 940 pMgmt->sNodeDBTable[0].bActive = TRUE;
977 pMgmt->sNodeDBTable[0].bPSEnable = FALSE; 941 pMgmt->sNodeDBTable[0].bPSEnable = FALSE;
978 skb_queue_head_init(&pMgmt->sNodeDBTable[0].sTxPSQueue); 942 skb_queue_head_init(&pMgmt->sNodeDBTable[0].sTxPSQueue);
979 RATEvParseMaxRate((PVOID) pDevice, 943 RATEvParseMaxRate((void *) pDevice,
980 (PWLAN_IE_SUPP_RATES)pMgmt->abyCurrSuppRates, 944 (PWLAN_IE_SUPP_RATES)pMgmt->abyCurrSuppRates,
981 (PWLAN_IE_SUPP_RATES)pMgmt->abyCurrExtSuppRates, 945 (PWLAN_IE_SUPP_RATES)pMgmt->abyCurrExtSuppRates,
982 TRUE, 946 TRUE,
@@ -991,10 +955,6 @@ BSSvAddMulticastNode(
991 955
992}; 956};
993 957
994
995
996
997
998/*+ 958/*+
999 * 959 *
1000 * Routine Description: 960 * Routine Description:
@@ -1008,19 +968,15 @@ BSSvAddMulticastNode(
1008 * 968 *
1009-*/ 969-*/
1010 970
1011 971void BSSvSecondCallBack(void *hDeviceContext)
1012VOID
1013BSSvSecondCallBack(
1014 IN HANDLE hDeviceContext
1015 )
1016{ 972{
1017 PSDevice pDevice = (PSDevice)hDeviceContext; 973 PSDevice pDevice = (PSDevice)hDeviceContext;
1018 PSMgmtObject pMgmt = &(pDevice->sMgmtObj); 974 PSMgmtObject pMgmt = &(pDevice->sMgmtObj);
1019 UINT ii; 975 unsigned int ii;
1020 PWLAN_IE_SSID pItemSSID, pCurrSSID; 976 PWLAN_IE_SSID pItemSSID, pCurrSSID;
1021 UINT uSleepySTACnt = 0; 977 unsigned int uSleepySTACnt = 0;
1022 UINT uNonShortSlotSTACnt = 0; 978 unsigned int uNonShortSlotSTACnt = 0;
1023 UINT uLongPreambleSTACnt = 0; 979 unsigned int uLongPreambleSTACnt = 0;
1024 viawget_wpa_header *wpahdr; //DavidWang 980 viawget_wpa_header *wpahdr; //DavidWang
1025 981
1026 spin_lock_irq(&pDevice->lock); 982 spin_lock_irq(&pDevice->lock);
@@ -1080,7 +1036,7 @@ if((pMgmt->eCurrState!=WMAC_STATE_ASSOC) &&
1080#endif 1036#endif
1081 1037
1082#ifdef Calcu_LinkQual 1038#ifdef Calcu_LinkQual
1083 s_uCalculateLinkQual((HANDLE)pDevice); 1039 s_uCalculateLinkQual((void *)pDevice);
1084#endif 1040#endif
1085 1041
1086 for (ii = 0; ii < (MAX_NODE_NUM + 1); ii++) { 1042 for (ii = 0; ii < (MAX_NODE_NUM + 1); ii++) {
@@ -1131,12 +1087,14 @@ if((pMgmt->eCurrState!=WMAC_STATE_ASSOC) &&
1131*/ 1087*/
1132 if (ii > 0) { 1088 if (ii > 0) {
1133 // ii = 0 for multicast node (AP & Adhoc) 1089 // ii = 0 for multicast node (AP & Adhoc)
1134 RATEvTxRateFallBack((PVOID)pDevice, &(pMgmt->sNodeDBTable[ii])); 1090 RATEvTxRateFallBack((void *)pDevice,
1091 &(pMgmt->sNodeDBTable[ii]));
1135 } 1092 }
1136 else { 1093 else {
1137 // ii = 0 reserved for unicast AP node (Infra STA) 1094 // ii = 0 reserved for unicast AP node (Infra STA)
1138 if (pMgmt->eCurrMode == WMAC_MODE_ESS_STA) 1095 if (pMgmt->eCurrMode == WMAC_MODE_ESS_STA)
1139 RATEvTxRateFallBack((PVOID)pDevice, &(pMgmt->sNodeDBTable[ii])); 1096 RATEvTxRateFallBack((void *)pDevice,
1097 &(pMgmt->sNodeDBTable[ii]));
1140 } 1098 }
1141 1099
1142 } 1100 }
@@ -1177,14 +1135,14 @@ if((pMgmt->eCurrState!=WMAC_STATE_ASSOC) &&
1177 if (pDevice->bShortSlotTime) { 1135 if (pDevice->bShortSlotTime) {
1178 pDevice->bShortSlotTime = FALSE; 1136 pDevice->bShortSlotTime = FALSE;
1179 BBvSetShortSlotTime(pDevice); 1137 BBvSetShortSlotTime(pDevice);
1180 vUpdateIFS((PVOID)pDevice); 1138 vUpdateIFS((void *)pDevice);
1181 } 1139 }
1182 } 1140 }
1183 else { 1141 else {
1184 if (!pDevice->bShortSlotTime) { 1142 if (!pDevice->bShortSlotTime) {
1185 pDevice->bShortSlotTime = TRUE; 1143 pDevice->bShortSlotTime = TRUE;
1186 BBvSetShortSlotTime(pDevice); 1144 BBvSetShortSlotTime(pDevice);
1187 vUpdateIFS((PVOID)pDevice); 1145 vUpdateIFS((void *)pDevice);
1188 } 1146 }
1189 } 1147 }
1190 1148
@@ -1224,14 +1182,16 @@ if((pMgmt->eCurrState!=WMAC_STATE_ASSOC) &&
1224 // DBG_PRT(MSG_LEVEL_INFO, KERN_INFO "Callback inactive Count = [%d]\n", pMgmt->sNodeDBTable[0].uInActiveCount); 1182 // DBG_PRT(MSG_LEVEL_INFO, KERN_INFO "Callback inactive Count = [%d]\n", pMgmt->sNodeDBTable[0].uInActiveCount);
1225 1183
1226 if (pDevice->bUpdateBBVGA) { 1184 if (pDevice->bUpdateBBVGA) {
1227 // s_vCheckSensitivity((HANDLE) pDevice); 1185 /* s_vCheckSensitivity((void *) pDevice); */
1228 s_vCheckPreEDThreshold((HANDLE)pDevice); 1186 s_vCheckPreEDThreshold((void *) pDevice);
1229 } 1187 }
1230 1188
1231 if ((pMgmt->sNodeDBTable[0].uInActiveCount >= (LOST_BEACON_COUNT/2)) && 1189 if ((pMgmt->sNodeDBTable[0].uInActiveCount >= (LOST_BEACON_COUNT/2)) &&
1232 (pDevice->byBBVGACurrent != pDevice->abyBBVGA[0]) ) { 1190 (pDevice->byBBVGACurrent != pDevice->abyBBVGA[0]) ) {
1233 pDevice->byBBVGANew = pDevice->abyBBVGA[0]; 1191 pDevice->byBBVGANew = pDevice->abyBBVGA[0];
1234 bScheduleCommand((HANDLE) pDevice, WLAN_CMD_CHANGE_BBSENSITIVITY, NULL); 1192 bScheduleCommand((void *) pDevice,
1193 WLAN_CMD_CHANGE_BBSENSITIVITY,
1194 NULL);
1235 } 1195 }
1236 1196
1237 if (pMgmt->sNodeDBTable[0].uInActiveCount >= LOST_BEACON_COUNT) { 1197 if (pMgmt->sNodeDBTable[0].uInActiveCount >= LOST_BEACON_COUNT) {
@@ -1279,9 +1239,13 @@ DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "bRoaming %d, !\n", pDevice->bRoaming );
1279DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "bIsRoaming %d, !\n", pDevice->bIsRoaming ); 1239DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "bIsRoaming %d, !\n", pDevice->bIsRoaming );
1280 if ((pDevice->bRoaming == TRUE)&&(pDevice->bIsRoaming == TRUE)){ 1240 if ((pDevice->bRoaming == TRUE)&&(pDevice->bIsRoaming == TRUE)){
1281 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "Fast Roaming ...\n"); 1241 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "Fast Roaming ...\n");
1282 BSSvClearBSSList((HANDLE)pDevice, pDevice->bLinkPass); 1242 BSSvClearBSSList((void *) pDevice, pDevice->bLinkPass);
1283 bScheduleCommand((HANDLE) pDevice, WLAN_CMD_BSSID_SCAN, pMgmt->abyDesireSSID); 1243 bScheduleCommand((void *) pDevice,
1284 bScheduleCommand((HANDLE) pDevice, WLAN_CMD_SSID, pMgmt->abyDesireSSID); 1244 WLAN_CMD_BSSID_SCAN,
1245 pMgmt->abyDesireSSID);
1246 bScheduleCommand((void *) pDevice,
1247 WLAN_CMD_SSID,
1248 pMgmt->abyDesireSSID);
1285 pDevice->uAutoReConnectTime = 0; 1249 pDevice->uAutoReConnectTime = 0;
1286 pDevice->uIsroamingTime = 0; 1250 pDevice->uIsroamingTime = 0;
1287 pDevice->bRoaming = FALSE; 1251 pDevice->bRoaming = FALSE;
@@ -1324,10 +1288,14 @@ else {
1324 pDevice->eEncryptionStatus = pDevice->eOldEncryptionStatus; 1288 pDevice->eEncryptionStatus = pDevice->eOldEncryptionStatus;
1325 1289
1326 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "Roaming ...\n"); 1290 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "Roaming ...\n");
1327 BSSvClearBSSList((HANDLE)pDevice, pDevice->bLinkPass); 1291 BSSvClearBSSList((void *) pDevice, pDevice->bLinkPass);
1328 pMgmt->eScanType = WMAC_SCAN_ACTIVE; 1292 pMgmt->eScanType = WMAC_SCAN_ACTIVE;
1329 bScheduleCommand((HANDLE) pDevice, WLAN_CMD_BSSID_SCAN, pMgmt->abyDesireSSID); 1293 bScheduleCommand((void *) pDevice,
1330 bScheduleCommand((HANDLE) pDevice, WLAN_CMD_SSID, pMgmt->abyDesireSSID); 1294 WLAN_CMD_BSSID_SCAN,
1295 pMgmt->abyDesireSSID);
1296 bScheduleCommand((void *) pDevice,
1297 WLAN_CMD_SSID,
1298 pMgmt->abyDesireSSID);
1331 pDevice->uAutoReConnectTime = 0; 1299 pDevice->uAutoReConnectTime = 0;
1332 } 1300 }
1333 } 1301 }
@@ -1343,17 +1311,17 @@ else {
1343 else { 1311 else {
1344 DBG_PRT(MSG_LEVEL_NOTICE, KERN_INFO "Adhoc re-scaning ...\n"); 1312 DBG_PRT(MSG_LEVEL_NOTICE, KERN_INFO "Adhoc re-scaning ...\n");
1345 pMgmt->eScanType = WMAC_SCAN_ACTIVE; 1313 pMgmt->eScanType = WMAC_SCAN_ACTIVE;
1346 bScheduleCommand((HANDLE) pDevice, WLAN_CMD_BSSID_SCAN, NULL); 1314 bScheduleCommand((void *) pDevice, WLAN_CMD_BSSID_SCAN, NULL);
1347 bScheduleCommand((HANDLE) pDevice, WLAN_CMD_SSID, NULL); 1315 bScheduleCommand((void *) pDevice, WLAN_CMD_SSID, NULL);
1348 pDevice->uAutoReConnectTime = 0; 1316 pDevice->uAutoReConnectTime = 0;
1349 }; 1317 };
1350 } 1318 }
1351 if (pMgmt->eCurrState == WMAC_STATE_JOINTED) { 1319 if (pMgmt->eCurrState == WMAC_STATE_JOINTED) {
1352 1320
1353 if (pDevice->bUpdateBBVGA) { 1321 if (pDevice->bUpdateBBVGA) {
1354 //s_vCheckSensitivity((HANDLE) pDevice); 1322 /* s_vCheckSensitivity((void *) pDevice); */
1355 s_vCheckPreEDThreshold((HANDLE)pDevice); 1323 s_vCheckPreEDThreshold((void *) pDevice);
1356 } 1324 }
1357 if (pMgmt->sNodeDBTable[0].uInActiveCount >=ADHOC_LOST_BEACON_COUNT) { 1325 if (pMgmt->sNodeDBTable[0].uInActiveCount >=ADHOC_LOST_BEACON_COUNT) {
1358 DBG_PRT(MSG_LEVEL_NOTICE, KERN_INFO "Lost other STA beacon [%d] sec, started !\n", pMgmt->sNodeDBTable[0].uInActiveCount); 1326 DBG_PRT(MSG_LEVEL_NOTICE, KERN_INFO "Lost other STA beacon [%d] sec, started !\n", pMgmt->sNodeDBTable[0].uInActiveCount);
1359 pMgmt->sNodeDBTable[0].uInActiveCount = 0; 1327 pMgmt->sNodeDBTable[0].uInActiveCount = 0;
@@ -1377,9 +1345,6 @@ else {
1377 return; 1345 return;
1378} 1346}
1379 1347
1380
1381
1382
1383/*+ 1348/*+
1384 * 1349 *
1385 * Routine Description: 1350 * Routine Description:
@@ -1393,30 +1358,23 @@ else {
1393 * 1358 *
1394-*/ 1359-*/
1395 1360
1396 1361void BSSvUpdateNodeTxCounter(void *hDeviceContext,
1397 1362 PSStatCounter pStatistic,
1398VOID 1363 BYTE byTSR,
1399BSSvUpdateNodeTxCounter( 1364 BYTE byPktNO)
1400 IN HANDLE hDeviceContext,
1401 IN PSStatCounter pStatistic,
1402 IN BYTE byTSR,
1403 IN BYTE byPktNO
1404 )
1405{ 1365{
1406 PSDevice pDevice = (PSDevice)hDeviceContext; 1366 PSDevice pDevice = (PSDevice)hDeviceContext;
1407 PSMgmtObject pMgmt = &(pDevice->sMgmtObj); 1367 PSMgmtObject pMgmt = &(pDevice->sMgmtObj);
1408 UINT uNodeIndex = 0; 1368 unsigned int uNodeIndex = 0;
1409 BYTE byTxRetry; 1369 BYTE byTxRetry;
1410 WORD wRate; 1370 WORD wRate;
1411 WORD wFallBackRate = RATE_1M; 1371 WORD wFallBackRate = RATE_1M;
1412 BYTE byFallBack; 1372 BYTE byFallBack;
1413 UINT ii; 1373 unsigned int ii;
1414 PBYTE pbyDestAddr; 1374 PBYTE pbyDestAddr;
1415 BYTE byPktNum; 1375 BYTE byPktNum;
1416 WORD wFIFOCtl; 1376 WORD wFIFOCtl;
1417 1377
1418
1419
1420 byPktNum = (byPktNO & 0x0F) >> 4; 1378 byPktNum = (byPktNO & 0x0F) >> 4;
1421 byTxRetry = (byTSR & 0xF0) >> 4; 1379 byTxRetry = (byTSR & 0xF0) >> 4;
1422 wRate = (WORD) (byPktNO & 0xF0) >> 4; 1380 wRate = (WORD) (byPktNO & 0xF0) >> 4;
@@ -1483,11 +1441,13 @@ BSSvUpdateNodeTxCounter(
1483 } 1441 }
1484 }; 1442 };
1485 1443
1486 if ((pMgmt->eCurrMode == WMAC_MODE_IBSS_STA) || 1444 if ((pMgmt->eCurrMode == WMAC_MODE_IBSS_STA) ||
1487 (pMgmt->eCurrMode == WMAC_MODE_ESS_AP)) { 1445 (pMgmt->eCurrMode == WMAC_MODE_ESS_AP)) {
1488 1446
1489 if (BSSbIsSTAInNodeDB((HANDLE)pDevice, pbyDestAddr, &uNodeIndex)){ 1447 if (BSSbIsSTAInNodeDB((void *) pDevice,
1490 pMgmt->sNodeDBTable[uNodeIndex].uTxAttempts += 1; 1448 pbyDestAddr,
1449 &uNodeIndex)) {
1450 pMgmt->sNodeDBTable[uNodeIndex].uTxAttempts += 1;
1491 if ( !(byTSR & (TSR_TMO | TSR_RETRYTMO))) { 1451 if ( !(byTSR & (TSR_TMO | TSR_RETRYTMO))) {
1492 // transmit success, TxAttempts at least plus one 1452 // transmit success, TxAttempts at least plus one
1493 pMgmt->sNodeDBTable[uNodeIndex].uTxOk[MAX_RATE]++; 1453 pMgmt->sNodeDBTable[uNodeIndex].uTxOk[MAX_RATE]++;
@@ -1542,9 +1502,6 @@ BSSvUpdateNodeTxCounter(
1542 1502
1543} 1503}
1544 1504
1545
1546
1547
1548/*+ 1505/*+
1549 * 1506 *
1550 * Routine Description: 1507 * Routine Description:
@@ -1563,18 +1520,13 @@ BSSvUpdateNodeTxCounter(
1563 * 1520 *
1564-*/ 1521-*/
1565 1522
1566 1523void BSSvClearNodeDBTable(void *hDeviceContext,
1567VOID 1524 unsigned int uStartIndex)
1568BSSvClearNodeDBTable(
1569 IN HANDLE hDeviceContext,
1570 IN UINT uStartIndex
1571 )
1572
1573{ 1525{
1574 PSDevice pDevice = (PSDevice)hDeviceContext; 1526 PSDevice pDevice = (PSDevice)hDeviceContext;
1575 PSMgmtObject pMgmt = &(pDevice->sMgmtObj); 1527 PSMgmtObject pMgmt = &(pDevice->sMgmtObj);
1576 struct sk_buff *skb; 1528 struct sk_buff *skb;
1577 UINT ii; 1529 unsigned int ii;
1578 1530
1579 for (ii = uStartIndex; ii < (MAX_NODE_NUM + 1); ii++) { 1531 for (ii = uStartIndex; ii < (MAX_NODE_NUM + 1); ii++) {
1580 if (pMgmt->sNodeDBTable[ii].bActive) { 1532 if (pMgmt->sNodeDBTable[ii].bActive) {
@@ -1592,10 +1544,7 @@ BSSvClearNodeDBTable(
1592 return; 1544 return;
1593}; 1545};
1594 1546
1595 1547void s_vCheckSensitivity(void *hDeviceContext)
1596VOID s_vCheckSensitivity(
1597 IN HANDLE hDeviceContext
1598 )
1599{ 1548{
1600 PSDevice pDevice = (PSDevice)hDeviceContext; 1549 PSDevice pDevice = (PSDevice)hDeviceContext;
1601 PKnownBSS pBSSList = NULL; 1550 PKnownBSS pBSSList = NULL;
@@ -1606,9 +1555,9 @@ VOID s_vCheckSensitivity(
1606 ((pMgmt->eCurrMode == WMAC_MODE_IBSS_STA) && (pMgmt->eCurrState == WMAC_STATE_JOINTED))) { 1555 ((pMgmt->eCurrMode == WMAC_MODE_IBSS_STA) && (pMgmt->eCurrState == WMAC_STATE_JOINTED))) {
1607 pBSSList = BSSpAddrIsInBSSList(pDevice, pMgmt->abyCurrBSSID, (PWLAN_IE_SSID)pMgmt->abyCurrSSID); 1556 pBSSList = BSSpAddrIsInBSSList(pDevice, pMgmt->abyCurrBSSID, (PWLAN_IE_SSID)pMgmt->abyCurrSSID);
1608 if (pBSSList != NULL) { 1557 if (pBSSList != NULL) {
1609 // Updata BB Reg if RSSI is too strong. 1558 /* Update BB register if RSSI is too strong */
1610 LONG LocalldBmAverage = 0; 1559 signed long LocalldBmAverage = 0;
1611 LONG uNumofdBm = 0; 1560 signed long uNumofdBm = 0;
1612 for (ii = 0; ii < RSSI_STAT_COUNT; ii++) { 1561 for (ii = 0; ii < RSSI_STAT_COUNT; ii++) {
1613 if (pBSSList->ldBmAverage[ii] != 0) { 1562 if (pBSSList->ldBmAverage[ii] != 0) {
1614 uNumofdBm ++; 1563 uNumofdBm ++;
@@ -1627,7 +1576,9 @@ VOID s_vCheckSensitivity(
1627 if (pDevice->byBBVGANew != pDevice->byBBVGACurrent) { 1576 if (pDevice->byBBVGANew != pDevice->byBBVGACurrent) {
1628 pDevice->uBBVGADiffCount++; 1577 pDevice->uBBVGADiffCount++;
1629 if (pDevice->uBBVGADiffCount >= BB_VGA_CHANGE_THRESHOLD) 1578 if (pDevice->uBBVGADiffCount >= BB_VGA_CHANGE_THRESHOLD)
1630 bScheduleCommand((HANDLE) pDevice, WLAN_CMD_CHANGE_BBSENSITIVITY, NULL); 1579 bScheduleCommand((void *) pDevice,
1580 WLAN_CMD_CHANGE_BBSENSITIVITY,
1581 NULL);
1631 } else { 1582 } else {
1632 pDevice->uBBVGADiffCount = 0; 1583 pDevice->uBBVGADiffCount = 0;
1633 } 1584 }
@@ -1637,14 +1588,12 @@ VOID s_vCheckSensitivity(
1637} 1588}
1638 1589
1639#ifdef Calcu_LinkQual 1590#ifdef Calcu_LinkQual
1640VOID s_uCalculateLinkQual( 1591void s_uCalculateLinkQual(void *hDeviceContext)
1641 IN HANDLE hDeviceContext
1642 )
1643{ 1592{
1644 PSDevice pDevice = (PSDevice)hDeviceContext; 1593 PSDevice pDevice = (PSDevice)hDeviceContext;
1645 ULONG TxOkRatio, TxCnt; 1594 unsigned long TxOkRatio, TxCnt;
1646 ULONG RxOkRatio,RxCnt; 1595 unsigned long RxOkRatio, RxCnt;
1647 ULONG RssiRatio; 1596 unsigned long RssiRatio;
1648 long ldBm; 1597 long ldBm;
1649 1598
1650TxCnt = pDevice->scStatistic.TxNoRetryOkCount + 1599TxCnt = pDevice->scStatistic.TxNoRetryOkCount +
@@ -1685,14 +1634,11 @@ else
1685} 1634}
1686#endif 1635#endif
1687 1636
1688VOID 1637void BSSvClearAnyBSSJoinRecord(void *hDeviceContext)
1689BSSvClearAnyBSSJoinRecord (
1690 IN HANDLE hDeviceContext
1691 )
1692{ 1638{
1693 PSDevice pDevice = (PSDevice)hDeviceContext; 1639 PSDevice pDevice = (PSDevice)hDeviceContext;
1694 PSMgmtObject pMgmt = &(pDevice->sMgmtObj); 1640 PSMgmtObject pMgmt = &(pDevice->sMgmtObj);
1695 UINT ii; 1641 unsigned int ii;
1696 1642
1697 for (ii = 0; ii < MAX_BSS_NUM; ii++) { 1643 for (ii = 0; ii < MAX_BSS_NUM; ii++) {
1698 pMgmt->sBSSList[ii].bSelected = FALSE; 1644 pMgmt->sBSSList[ii].bSelected = FALSE;
@@ -1700,9 +1646,7 @@ BSSvClearAnyBSSJoinRecord (
1700 return; 1646 return;
1701} 1647}
1702 1648
1703VOID s_vCheckPreEDThreshold( 1649void s_vCheckPreEDThreshold(void *hDeviceContext)
1704 IN HANDLE hDeviceContext
1705 )
1706{ 1650{
1707 PSDevice pDevice = (PSDevice)hDeviceContext; 1651 PSDevice pDevice = (PSDevice)hDeviceContext;
1708 PKnownBSS pBSSList = NULL; 1652 PKnownBSS pBSSList = NULL;