diff options
Diffstat (limited to 'drivers/staging/vt6655/card.c')
-rw-r--r-- | drivers/staging/vt6655/card.c | 143 |
1 files changed, 69 insertions, 74 deletions
diff --git a/drivers/staging/vt6655/card.c b/drivers/staging/vt6655/card.c index 702d4eb13583..05bf48a24f45 100644 --- a/drivers/staging/vt6655/card.c +++ b/drivers/staging/vt6655/card.c @@ -351,9 +351,9 @@ s_vSetRSPINF(PSDevice pDevice, CARD_PHY_TYPE ePHYType, void *pvSupportRateIEs, v bool CARDbIsShortPreamble(void *pDeviceHandler) { PSDevice pDevice = (PSDevice) pDeviceHandler; - if (pDevice->byPreambleType == 0) { + if (pDevice->byPreambleType == 0) return false; - } + return true; } @@ -400,9 +400,9 @@ bool CARDbSetPhyParameter(void *pDeviceHandler, CARD_PHY_TYPE ePHYType, unsigned //Set SIFS, DIFS, EIFS, SlotTime, CwMin if (ePHYType == PHY_TYPE_11A) { - if (pSupportRates == NULL) { + if (pSupportRates == NULL) pSupportRates = (PWLAN_IE_SUPP_RATES) abyDefaultSuppRatesA; - } + if (pDevice->byRFType == RF_AIROHA7230) { // AL7230 use single PAPE and connect to PAPE_2.4G MACvSetBBType(pDevice->PortOffset, BB_TYPE_11G); @@ -410,9 +410,9 @@ bool CARDbSetPhyParameter(void *pDeviceHandler, CARD_PHY_TYPE ePHYType, unsigned pDevice->abyBBVGA[2] = 0x10; pDevice->abyBBVGA[3] = 0x10; BBbReadEmbedded(pDevice->PortOffset, 0xE7, &byData); - if (byData == 0x1C) { + if (byData == 0x1C) BBbWriteEmbedded(pDevice->PortOffset, 0xE7, pDevice->abyBBVGA[0]); - } + } else if (pDevice->byRFType == RF_UW2452) { MACvSetBBType(pDevice->PortOffset, BB_TYPE_11A); pDevice->abyBBVGA[0] = 0x18; @@ -430,18 +430,18 @@ bool CARDbSetPhyParameter(void *pDeviceHandler, CARD_PHY_TYPE ePHYType, unsigned byDIFS = C_SIFS_A + 2*C_SLOT_SHORT; byCWMaxMin = 0xA4; } else if (ePHYType == PHY_TYPE_11B) { - if (pSupportRates == NULL) { + if (pSupportRates == NULL) pSupportRates = (PWLAN_IE_SUPP_RATES) abyDefaultSuppRatesB; - } + MACvSetBBType(pDevice->PortOffset, BB_TYPE_11B); if (pDevice->byRFType == RF_AIROHA7230) { pDevice->abyBBVGA[0] = 0x1C; pDevice->abyBBVGA[2] = 0x00; pDevice->abyBBVGA[3] = 0x00; BBbReadEmbedded(pDevice->PortOffset, 0xE7, &byData); - if (byData == 0x20) { + if (byData == 0x20) BBbWriteEmbedded(pDevice->PortOffset, 0xE7, pDevice->abyBBVGA[0]); - } + } else if (pDevice->byRFType == RF_UW2452) { pDevice->abyBBVGA[0] = 0x14; BBbReadEmbedded(pDevice->PortOffset, 0xE7, &byData); @@ -466,9 +466,9 @@ bool CARDbSetPhyParameter(void *pDeviceHandler, CARD_PHY_TYPE ePHYType, unsigned pDevice->abyBBVGA[2] = 0x00; pDevice->abyBBVGA[3] = 0x00; BBbReadEmbedded(pDevice->PortOffset, 0xE7, &byData); - if (byData == 0x20) { + if (byData == 0x20) BBbWriteEmbedded(pDevice->PortOffset, 0xE7, pDevice->abyBBVGA[0]); - } + } else if (pDevice->byRFType == RF_UW2452) { pDevice->abyBBVGA[0] = 0x14; BBbReadEmbedded(pDevice->PortOffset, 0xE7, &byData); @@ -486,26 +486,25 @@ bool CARDbSetPhyParameter(void *pDeviceHandler, CARD_PHY_TYPE ePHYType, unsigned bySlot = C_SLOT_LONG; byDIFS = C_SIFS_BG + 2*C_SLOT_LONG; } - if (VNTWIFIbyGetMaxSupportRate(pSupportRates, pExtSupportRates) > RATE_11M) { + if (VNTWIFIbyGetMaxSupportRate(pSupportRates, pExtSupportRates) > RATE_11M) byCWMaxMin = 0xA4; - } else { + else byCWMaxMin = 0xA5; - } + if (pDevice->bProtectMode != VNTWIFIbIsProtectMode(byERPField)) { pDevice->bProtectMode = VNTWIFIbIsProtectMode(byERPField); - if (pDevice->bProtectMode) { + if (pDevice->bProtectMode) MACvEnableProtectMD(pDevice->PortOffset); - } else { + else MACvDisableProtectMD(pDevice->PortOffset); - } + } if (pDevice->bBarkerPreambleMd != VNTWIFIbIsBarkerMode(byERPField)) { pDevice->bBarkerPreambleMd = VNTWIFIbIsBarkerMode(byERPField); - if (pDevice->bBarkerPreambleMd) { + if (pDevice->bBarkerPreambleMd) MACvEnableBarkerPreambleMd(pDevice->PortOffset); - } else { + else MACvDisableBarkerPreambleMd(pDevice->PortOffset); - } } } @@ -534,22 +533,22 @@ bool CARDbSetPhyParameter(void *pDeviceHandler, CARD_PHY_TYPE ePHYType, unsigned if (pDevice->bySlot != bySlot) { pDevice->bySlot = bySlot; VNSvOutPortB(pDevice->PortOffset + MAC_REG_SLOT, pDevice->bySlot); - if (pDevice->bySlot == C_SLOT_SHORT) { + if (pDevice->bySlot == C_SLOT_SHORT) pDevice->bShortSlotTime = true; - } else { + else pDevice->bShortSlotTime = false; - } + BBvSetShortSlotTime(pDevice); } if (pDevice->byCWMaxMin != byCWMaxMin) { pDevice->byCWMaxMin = byCWMaxMin; VNSvOutPortB(pDevice->PortOffset + MAC_REG_CWMAXMIN0, pDevice->byCWMaxMin); } - if (VNTWIFIbIsShortPreamble(wCapInfo)) { + if (VNTWIFIbIsShortPreamble(wCapInfo)) pDevice->byPreambleType = pDevice->byShortPreamble; - } else { + else pDevice->byPreambleType = 0; - } + s_vSetRSPINF(pDevice, ePHYType, pSupportRates, pExtSupportRates); pDevice->eCurrentPHYType = ePHYType; // set for NDIS OID_802_11SUPPORTED_RATES @@ -629,9 +628,9 @@ bool CARDbSetBeaconPeriod(void *pDeviceHandler, unsigned short wBeaconInterval) uLowRemain = uBeaconInterval - uLowRemain; // check if carry when add one beacon interval - if ((~uLowNextTBTT) < uLowRemain) { + if ((~uLowNextTBTT) < uLowRemain) HIDWORD(qwNextTBTT)++; - } + LODWORD(qwNextTBTT) = uLowNextTBTT + uLowRemain; // set HW beacon interval @@ -687,15 +686,13 @@ bool CARDbStopTxPacket(void *pDeviceHandler, CARD_PKT_TYPE ePktType) } // wait all TD0 complete if (pDevice->bStopTx0Pkt == true) { - if (pDevice->iTDUsed[TYPE_TXDMA0] != 0) { + if (pDevice->iTDUsed[TYPE_TXDMA0] != 0) return false; - } } // wait all Data TD complete if (pDevice->bStopDataPkt == true) { - if (pDevice->iTDUsed[TYPE_AC0DMA] != 0) { + if (pDevice->iTDUsed[TYPE_AC0DMA] != 0) return false; - } } return true; @@ -759,16 +756,16 @@ bool CARDbSetBSSID(void *pDeviceHandler, unsigned char *pbyBSSID, CARD_OP_MODE e MACvWriteBSSIDAddress(pDevice->PortOffset, pbyBSSID); memcpy(pDevice->abyBSSID, pbyBSSID, WLAN_BSSID_LEN); - if (eOPMode == OP_MODE_ADHOC) { + if (eOPMode == OP_MODE_ADHOC) MACvRegBitsOn(pDevice->PortOffset, MAC_REG_HOSTCR, HOSTCR_ADHOC); - } else { + else MACvRegBitsOff(pDevice->PortOffset, MAC_REG_HOSTCR, HOSTCR_ADHOC); - } - if (eOPMode == OP_MODE_AP) { + + if (eOPMode == OP_MODE_AP) MACvRegBitsOn(pDevice->PortOffset, MAC_REG_HOSTCR, HOSTCR_AP); - } else { + else MACvRegBitsOff(pDevice->PortOffset, MAC_REG_HOSTCR, HOSTCR_AP); - } + if (eOPMode == OP_MODE_UNKNOWN) { MACvRegBitsOff(pDevice->PortOffset, MAC_REG_RCR, RCR_BSSID); pDevice->bBSSIDFilter = false; @@ -1011,31 +1008,31 @@ CARDbAdd_PMKID_Candidate( memset(&pDevice->gsPMKIDCandidate, 0, sizeof(SPMKIDCandidateEvent)); } - for (ii = 0; ii < 6; ii++) { + for (ii = 0; ii < 6; ii++) DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "%02X ", *(pbyBSSID + ii)); - } + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "\n"); // Update Old Candidate for (ii = 0; ii < pDevice->gsPMKIDCandidate.NumCandidates; ii++) { pCandidateList = &pDevice->gsPMKIDCandidate.CandidateList[ii]; if (!memcmp(pCandidateList->BSSID, pbyBSSID, ETH_ALEN)) { - if (bRSNCapExist && (wRSNCap & BIT0)) { + if (bRSNCapExist && (wRSNCap & BIT0)) pCandidateList->Flags |= NDIS_802_11_PMKID_CANDIDATE_PREAUTH_ENABLED; - } else { + else pCandidateList->Flags &= ~(NDIS_802_11_PMKID_CANDIDATE_PREAUTH_ENABLED); - } + return true; } } // New Candidate pCandidateList = &pDevice->gsPMKIDCandidate.CandidateList[pDevice->gsPMKIDCandidate.NumCandidates]; - if (bRSNCapExist && (wRSNCap & BIT0)) { + if (bRSNCapExist && (wRSNCap & BIT0)) pCandidateList->Flags |= NDIS_802_11_PMKID_CANDIDATE_PREAUTH_ENABLED; - } else { + else pCandidateList->Flags &= ~(NDIS_802_11_PMKID_CANDIDATE_PREAUTH_ENABLED); - } + memcpy(pCandidateList->BSSID, pbyBSSID, ETH_ALEN); pDevice->gsPMKIDCandidate.NumCandidates++; DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "NumCandidates:%d\n", (int)pDevice->gsPMKIDCandidate.NumCandidates); @@ -1116,16 +1113,16 @@ CARDbStartMeasure( // start immediately by setting start TSF == current TSF + 2 TU LODWORD(qwStartTSF) = LODWORD(qwCurrTSF) + 2048; HIDWORD(qwStartTSF) = HIDWORD(qwCurrTSF); - if (LODWORD(qwCurrTSF) > LODWORD(qwStartTSF)) { + if (LODWORD(qwCurrTSF) > LODWORD(qwStartTSF)) HIDWORD(qwStartTSF)++; - } + bExpired = false; break; } else { // start at setting start TSF - 1TU(for channel switching) - if (LODWORD(qwStartTSF) < 1024) { + if (LODWORD(qwStartTSF) < 1024) HIDWORD(qwStartTSF)--; - } + LODWORD(qwStartTSF) -= 1024; } @@ -1214,9 +1211,9 @@ CARDbChannelSwitch( pDevice->byChannelSwitchCount = byCount; pDevice->byNewChannel = byNewChannel; pDevice->bChannelSwitch = true; - if (byMode == 1) { + if (byMode == 1) bResult = CARDbStopTxPacket(pDevice, PKT_TYPE_802_11_ALL); - } + return bResult; } @@ -1249,9 +1246,9 @@ CARDbSetQuiet( if (bResetQuiet) { MACvRegBitsOff(pDevice->PortOffset, MAC_REG_MSRCTL, (MSRCTL_QUIETTXCHK | MSRCTL_QUIETEN)); - for (ii = 0; ii < MAX_QUIET_COUNT; ii++) { + for (ii = 0; ii < MAX_QUIET_COUNT; ii++) pDevice->sQuiet[ii].bEnable = false; - } + pDevice->uQuietEnqueue = 0; pDevice->bEnableFirstQuiet = false; pDevice->bQuietEnable = false; @@ -1266,9 +1263,8 @@ CARDbSetQuiet( pDevice->sQuiet[pDevice->uQuietEnqueue].dwStartTime += wQuietOffset; pDevice->uQuietEnqueue++; pDevice->uQuietEnqueue %= MAX_QUIET_COUNT; - if (pDevice->byQuietStartCount < byQuietCount) { + if (pDevice->byQuietStartCount < byQuietCount) pDevice->byQuietStartCount = byQuietCount; - } } return true; } @@ -1364,9 +1360,9 @@ CARDbStartQuiet( if (pDevice->dwCurrentQuietEndTime > 0x80010000) { // decreament all time to avoid wrap around for (ii = 0; ii < MAX_QUIET_COUNT; ii++) { - if (pDevice->sQuiet[ii].bEnable == true) { + if (pDevice->sQuiet[ii].bEnable == true) pDevice->sQuiet[ii].dwStartTime -= 0x80000000; - } + } pDevice->dwCurrentQuietEndTime -= 0x80000000; } @@ -1398,13 +1394,13 @@ CARDvSetPowerConstraint( PSDevice pDevice = (PSDevice) pDeviceHandler; if (byChannel > CB_MAX_CHANNEL_24G) { - if (pDevice->bCountryInfo5G == true) { + if (pDevice->bCountryInfo5G == true) pDevice->abyLocalPwr[byChannel] = pDevice->abyRegPwr[byChannel] - byPower; - } + } else { - if (pDevice->bCountryInfo24G == true) { + if (pDevice->bCountryInfo24G == true) pDevice->abyLocalPwr[byChannel] = pDevice->abyRegPwr[byChannel] - byPower; - } + } } @@ -1583,9 +1579,9 @@ unsigned short CARDwGetCCKControlRate(void *pDeviceHandler, unsigned short wRate unsigned int ui = (unsigned int) wRateIdx; while (ui > RATE_1M) { - if (pDevice->wBasicRate & ((unsigned short)1 << ui)) { + if (pDevice->wBasicRate & ((unsigned short)1 << ui)) return (unsigned short)ui; - } + ui--; } return (unsigned short)RATE_1M; @@ -1785,11 +1781,11 @@ void vUpdateIFS(void *pDeviceHandler) byMaxMin = 5; } else { // PK_TYPE_11GA & PK_TYPE_11GB pDevice->uSIFS = C_SIFS_BG; - if (pDevice->bShortSlotTime) { + if (pDevice->bShortSlotTime) pDevice->uSlot = C_SLOT_SHORT; - } else { + else pDevice->uSlot = C_SLOT_LONG; - } + pDevice->uDIFS = C_SIFS_BG + 2*pDevice->uSlot; if (pDevice->wBasicRate & 0x0150) { //0000 0001 0101 0000,24M,12M,6M pDevice->uCwMin = C_CWMIN_A; @@ -1871,13 +1867,12 @@ unsigned char CARDbyGetPktType(void *pDeviceHandler) { PSDevice pDevice = (PSDevice) pDeviceHandler; - if (pDevice->byBBType == BB_TYPE_11A || pDevice->byBBType == BB_TYPE_11B) { + if (pDevice->byBBType == BB_TYPE_11A || pDevice->byBBType == BB_TYPE_11B) return (unsigned char)pDevice->byBBType; - } else if (CARDbIsOFDMinBasicRate((void *)pDevice)) { + else if (CARDbIsOFDMinBasicRate((void *)pDevice)) return PK_TYPE_11GA; - } else { + else return PK_TYPE_11GB; - } } /* @@ -1956,9 +1951,9 @@ QWORD CARDqGetTSFOffset(unsigned char byRxRate, QWORD qwTSF1, QWORD qwTSF2) LODWORD(qwTSFOffset) = 0; wRxBcnTSFOffst = cwRXBCNTSFOff[byRxRate%MAX_RATE]; (qwTSF2).u.dwLowDword += (unsigned long)(wRxBcnTSFOffst); - if ((qwTSF2).u.dwLowDword < (unsigned long)(wRxBcnTSFOffst)) { + if ((qwTSF2).u.dwLowDword < (unsigned long)(wRxBcnTSFOffst)) (qwTSF2).u.dwHighDword++; - } + LODWORD(qwTSFOffset) = LODWORD(qwTSF1) - LODWORD(qwTSF2); if (LODWORD(qwTSF1) < LODWORD(qwTSF2)) { // if borrow needed |