diff options
Diffstat (limited to 'drivers/staging/vt6656/bssdb.c')
-rw-r--r-- | drivers/staging/vt6656/bssdb.c | 131 |
1 files changed, 54 insertions, 77 deletions
diff --git a/drivers/staging/vt6656/bssdb.c b/drivers/staging/vt6656/bssdb.c index 36ed61b595ca..2bdd0a2028d2 100644 --- a/drivers/staging/vt6656/bssdb.c +++ b/drivers/staging/vt6656/bssdb.c @@ -93,10 +93,7 @@ const WORD awHWRetry1[5][5] = { void s_vCheckSensitivity(void *hDeviceContext); void s_vCheckPreEDThreshold(void *hDeviceContext); - -#ifdef Calcu_LinkQual void s_uCalculateLinkQual(void *hDeviceContext); -#endif /*--------------------- Export Variables --------------------------*/ @@ -135,7 +132,7 @@ PKnownBSS BSSpSearchBSSList(void *hDeviceContext, DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"BSSpSearchBSSList BSSID[%02X %02X %02X-%02X %02X %02X]\n", *pbyDesireBSSID,*(pbyDesireBSSID+1),*(pbyDesireBSSID+2), *(pbyDesireBSSID+3),*(pbyDesireBSSID+4),*(pbyDesireBSSID+5)); - if ((!IS_BROADCAST_ADDRESS(pbyDesireBSSID)) && + if ((!is_broadcast_ether_addr(pbyDesireBSSID)) && (memcmp(pbyDesireBSSID, ZeroBSSID, 6)!= 0)){ pbyBSSID = pbyDesireBSSID; } @@ -151,12 +148,11 @@ PKnownBSS BSSpSearchBSSList(void *hDeviceContext, for (ii = 0; ii <MAX_BSS_NUM; ii++) { pCurrBSS = &(pMgmt->sBSSList[ii]); - //2008-0718-01<Add>by MikeLiu pCurrBSS->bSelected = FALSE; if ((pCurrBSS->bActive) && (pCurrBSS->bSelected == FALSE)) { - if (IS_ETH_ADDRESS_EQUAL(pCurrBSS->abyBSSID, pbyBSSID)) { + if (!compare_ether_addr(pCurrBSS->abyBSSID, pbyBSSID)) { if (pSSID != NULL) { // compare ssid if ( !memcmp(pSSID->abySSID, @@ -191,7 +187,6 @@ PKnownBSS BSSpSearchBSSList(void *hDeviceContext, // if ((pCurrBSS->bActive) && // (pCurrBSS->bSelected == FALSE)) { - //2007-0721-01<Add>by MikeLiu pCurrBSS->bSelected = FALSE; if (pCurrBSS->bActive) { @@ -241,12 +236,12 @@ PKnownBSS BSSpSearchBSSList(void *hDeviceContext, } } */ -//DavidWang + pMgmt->pSameBSS[jj].uChannel = pCurrBSS->uChannel; DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"BSSpSearchBSSList pSelect1[%02X %02X %02X-%02X %02X %02X]\n",*pCurrBSS->abyBSSID,*(pCurrBSS->abyBSSID+1),*(pCurrBSS->abyBSSID+2),*(pCurrBSS->abyBSSID+3),*(pCurrBSS->abyBSSID+4),*(pCurrBSS->abyBSSID+5)); jj++; -//DavidWang + if (pSelect == NULL) { pSelect = pCurrBSS; } else { @@ -257,9 +252,9 @@ PKnownBSS BSSpSearchBSSList(void *hDeviceContext, } } } -//DavidWang + pDevice->bSameBSSMaxNum = jj; -//DavidWang + if (pSelect != NULL) { pSelect->bSelected = TRUE; if (pDevice->bRoaming == FALSE) { @@ -296,7 +291,8 @@ void BSSvClearBSSList(void *hDeviceContext, BOOL bKeepCurrBSSID) for (ii = 0; ii < MAX_BSS_NUM; ii++) { if (bKeepCurrBSSID) { if (pMgmt->sBSSList[ii].bActive && - IS_ETH_ADDRESS_EQUAL(pMgmt->sBSSList[ii].abyBSSID, pMgmt->abyCurrBSSID)) { + !compare_ether_addr(pMgmt->sBSSList[ii].abyBSSID, + pMgmt->abyCurrBSSID)) { //mike mark: there are two same BSSID in list if that AP is in hidden ssid mode,one 's SSID is null, // but other's is obvious, so if it acssociate with your STA exactly,you must keep two // of them!!!!!!!!! @@ -341,7 +337,7 @@ PKnownBSS BSSpAddrIsInBSSList(void *hDeviceContext, for (ii = 0; ii < MAX_BSS_NUM; ii++) { pBSSList = &(pMgmt->sBSSList[ii]); if (pBSSList->bActive) { - if (IS_ETH_ADDRESS_EQUAL(pBSSList->abyBSSID, abyBSSID)) { + if (!compare_ether_addr(pBSSList->abyBSSID, abyBSSID)) { if (pSSID->len == ((PWLAN_IE_SSID)pBSSList->abySSID)->len){ if (memcmp(pSSID->abySSID, ((PWLAN_IE_SSID)pBSSList->abySSID)->abySSID, @@ -699,12 +695,14 @@ BOOL BSSbUpdateToBSSList(void *hDeviceContext, pBSSList->byRSSIStatCnt %= RSSI_STAT_COUNT; pBSSList->ldBmAverage[pBSSList->byRSSIStatCnt] = ldBm; ldBmSum = 0; - for(ii=0, jj=0;ii<RSSI_STAT_COUNT;ii++) { - if (pBSSList->ldBmAverage[ii] != 0) { - pBSSList->ldBmMAX = max(pBSSList->ldBmAverage[ii], ldBm); - ldBmSum += pBSSList->ldBmAverage[ii]; - jj++; - } + for (ii = 0, jj = 0; ii < RSSI_STAT_COUNT; ii++) { + if (pBSSList->ldBmAverage[ii] != 0) { + pBSSList->ldBmMAX = + max(pBSSList->ldBmAverage[ii], ldBm); + ldBmSum += + pBSSList->ldBmAverage[ii]; + jj++; + } } pBSSList->ldBmAverRange = ldBmSum /jj; } @@ -714,28 +712,6 @@ BOOL BSSbUpdateToBSSList(void *hDeviceContext, pBSSList->uIELength = WLAN_BEACON_FR_MAXLEN; memcpy(pBSSList->abyIEs, pbyIEs, pBSSList->uIELength); -//mike add: if the AP in this pBSSList is hidden ssid and we can find two of them, -// you need upgrade the other related pBSSList of which ssid is obvious, -// for these two AP is the same one!!!! -/********judge by:BSSID is the same,but ssid is different!*****************/ -#if 0 - for (ii = 0; ii < MAX_BSS_NUM; ii++) { - if (IS_ETH_ADDRESS_EQUAL(pMgmt->sBSSList[ii].abyBSSID, pBSSList->abyBSSID)) { //BSSID is the same! - if (memcmp(((PWLAN_IE_SSID)pMgmt->sBSSList[ii].abySSID)->abySSID, //ssid is different?? - ((PWLAN_IE_SSID)pBSSList->abySSID)->abySSID, - ((PWLAN_IE_SSID)pBSSList->abySSID)->len) != 0) { - //reserve temp - memset(abyTmpSSID,0,sizeof(abyTmpSSID)); - memcpy(abyTmpSSID,pMgmt->sBSSList[ii].abySSID,sizeof(abyTmpSSID)); - //upgrade the other one pBSSList - memcpy(&(pMgmt->sBSSList[ii]),pBSSList,sizeof(KnownBSS)); - //recover ssid info - memcpy(pMgmt->sBSSList[ii].abySSID,abyTmpSSID,sizeof(abyTmpSSID)); - } - } - } -#endif - return TRUE; } @@ -755,7 +731,7 @@ BOOL BSSbUpdateToBSSList(void *hDeviceContext, BOOL BSSbIsSTAInNodeDB(void *hDeviceContext, PBYTE abyDstAddr, - PUINT puNodeIndex) + unsigned int *puNodeIndex) { PSDevice pDevice = (PSDevice)hDeviceContext; PSMgmtObject pMgmt = &(pDevice->sMgmtObj); @@ -764,7 +740,8 @@ BOOL BSSbIsSTAInNodeDB(void *hDeviceContext, // Index = 0 reserved for AP Node for (ii = 1; ii < (MAX_NODE_NUM + 1); ii++) { if (pMgmt->sNodeDBTable[ii].bActive) { - if (IS_ETH_ADDRESS_EQUAL(abyDstAddr, pMgmt->sNodeDBTable[ii].abyMACAddr)) { + if (!compare_ether_addr(abyDstAddr, + pMgmt->sNodeDBTable[ii].abyMACAddr)) { *puNodeIndex = ii; return TRUE; } @@ -786,7 +763,7 @@ BOOL BSSbIsSTAInNodeDB(void *hDeviceContext, * None * -*/ -void BSSvCreateOneNode(void *hDeviceContext, PUINT puNodeIndex) +void BSSvCreateOneNode(void *hDeviceContext, unsigned int *puNodeIndex) { PSDevice pDevice = (PSDevice)hDeviceContext; @@ -977,7 +954,7 @@ void BSSvSecondCallBack(void *hDeviceContext) unsigned int uSleepySTACnt = 0; unsigned int uNonShortSlotSTACnt = 0; unsigned int uLongPreambleSTACnt = 0; - viawget_wpa_header *wpahdr; //DavidWang + viawget_wpa_header *wpahdr; spin_lock_irq(&pDevice->lock); @@ -1023,7 +1000,6 @@ if(pDevice->byReAssocCount > 0) { pDevice->byReAssocCount = 0; } -#ifdef SndEvt_ToAPI if((pMgmt->eCurrState!=WMAC_STATE_ASSOC) && (pMgmt->eLastState==WMAC_STATE_ASSOC)) { @@ -1033,11 +1009,8 @@ if((pMgmt->eCurrState!=WMAC_STATE_ASSOC) && wireless_send_event(pDevice->dev, IWEVCUSTOM, &wrqu, NULL); } pMgmt->eLastState = pMgmt->eCurrState ; -#endif -#ifdef Calcu_LinkQual s_uCalculateLinkQual((void *)pDevice); -#endif for (ii = 0; ii < (MAX_NODE_NUM + 1); ii++) { @@ -1205,7 +1178,7 @@ if((pMgmt->eCurrState!=WMAC_STATE_ASSOC) && pDevice->bIsRoaming = FALSE; DBG_PRT(MSG_LEVEL_NOTICE, KERN_INFO "Lost AP beacon [%d] sec, disconnected !\n", pMgmt->sNodeDBTable[0].uInActiveCount); - //let wpa supplicant know AP may disconnect.//20080717-01,<Add> by James Li + /* let wpa supplicant know AP may disconnect */ if ((pDevice->bWPADEVUp) && (pDevice->skb != NULL)) { wpahdr = (viawget_wpa_header *)pDevice->skb->data; wpahdr->type = VIAWGET_DISASSOC_MSG; @@ -1422,21 +1395,25 @@ void BSSvUpdateNodeTxCounter(void *hDeviceContext, (wRate < RATE_18M) ) { pMgmt->sNodeDBTable[0].uTxFail[wRate]+=byTxRetry; } else if (byFallBack == AUTO_FB_0) { - for(ii=0;ii<byTxRetry;ii++) { - if (ii < 5) - wFallBackRate = awHWRetry0[wRate-RATE_18M][ii]; - else - wFallBackRate = awHWRetry0[wRate-RATE_18M][4]; - pMgmt->sNodeDBTable[0].uTxFail[wFallBackRate]++; - } + for (ii = 0; ii < byTxRetry; ii++) { + if (ii < 5) + wFallBackRate = + awHWRetry0[wRate-RATE_18M][ii]; + else + wFallBackRate = + awHWRetry0[wRate-RATE_18M][4]; + pMgmt->sNodeDBTable[0].uTxFail[wFallBackRate]++; + } } else if (byFallBack == AUTO_FB_1) { - for(ii=0;ii<byTxRetry;ii++) { - if (ii < 5) - wFallBackRate = awHWRetry1[wRate-RATE_18M][ii]; - else - wFallBackRate = awHWRetry1[wRate-RATE_18M][4]; - pMgmt->sNodeDBTable[0].uTxFail[wFallBackRate]++; - } + for (ii = 0; ii < byTxRetry; ii++) { + if (ii < 5) + wFallBackRate = + awHWRetry1[wRate-RATE_18M][ii]; + else + wFallBackRate = + awHWRetry1[wRate-RATE_18M][4]; + pMgmt->sNodeDBTable[0].uTxFail[wFallBackRate]++; + } } } }; @@ -1476,21 +1453,23 @@ void BSSvUpdateNodeTxCounter(void *hDeviceContext, (wRate < RATE_18M) ) { pMgmt->sNodeDBTable[uNodeIndex].uTxFail[wRate]+=byTxRetry; } else if (byFallBack == AUTO_FB_0) { - for(ii=0;ii<byTxRetry;ii++) { - if (ii < 5) - wFallBackRate = awHWRetry0[wRate-RATE_18M][ii]; - else - wFallBackRate = awHWRetry0[wRate-RATE_18M][4]; - pMgmt->sNodeDBTable[uNodeIndex].uTxFail[wFallBackRate]++; + for (ii = 0; ii < byTxRetry; ii++) { + if (ii < 5) + wFallBackRate = + awHWRetry0[wRate-RATE_18M][ii]; + else + wFallBackRate = + awHWRetry0[wRate-RATE_18M][4]; + pMgmt->sNodeDBTable[uNodeIndex].uTxFail[wFallBackRate]++; } } else if (byFallBack == AUTO_FB_1) { - for(ii=0;ii<byTxRetry;ii++) { - if (ii < 5) + for (ii = 0; ii < byTxRetry; ii++) { + if (ii < 5) wFallBackRate = awHWRetry1[wRate-RATE_18M][ii]; - else + else wFallBackRate = awHWRetry1[wRate-RATE_18M][4]; - pMgmt->sNodeDBTable[uNodeIndex].uTxFail[wFallBackRate]++; - } + pMgmt->sNodeDBTable[uNodeIndex].uTxFail[wFallBackRate]++; + } } } }; @@ -1587,7 +1566,6 @@ void s_vCheckSensitivity(void *hDeviceContext) } } -#ifdef Calcu_LinkQual void s_uCalculateLinkQual(void *hDeviceContext) { PSDevice pDevice = (PSDevice)hDeviceContext; @@ -1632,7 +1610,6 @@ else pDevice->scStatistic.TxRetryOkCount = 0; return; } -#endif void BSSvClearAnyBSSJoinRecord(void *hDeviceContext) { |