提交 7c65fa2a 编写于 作者: M Malcolm Priestley 提交者: Greg Kroah-Hartman

staging: vt6656: Remove QWORD from source and replace with u64.

Signed-off-by: NMalcolm Priestley <tvboxspy@gmail.com>
Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
上级 1901ab62
......@@ -96,9 +96,10 @@ vMgrEncodeBeacon(
{
pFrame->pHdr = (PUWLAN_80211HDR)pFrame->pBuf;
/* Fixed Fields */
pFrame->pqwTimestamp = (PQWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
+ WLAN_BEACON_OFF_TS);
/* Fixed Fields */
pFrame->pqwTimestamp =
(u64 *)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3)) +
WLAN_BEACON_OFF_TS);
pFrame->pwBeaconInterval = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
+ WLAN_BEACON_OFF_BCN_INT);
pFrame->pwCapInfo = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
......@@ -130,9 +131,10 @@ vMgrDecodeBeacon(
pFrame->pHdr = (PUWLAN_80211HDR)pFrame->pBuf;
/* Fixed Fields */
pFrame->pqwTimestamp = (PQWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
+ WLAN_BEACON_OFF_TS);
/* Fixed Fields */
pFrame->pqwTimestamp =
(u64 *)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3)) +
WLAN_BEACON_OFF_TS);
pFrame->pwBeaconInterval = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
+ WLAN_BEACON_OFF_BCN_INT);
pFrame->pwCapInfo = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
......@@ -671,9 +673,10 @@ vMgrEncodeProbeResponse(
{
pFrame->pHdr = (PUWLAN_80211HDR)pFrame->pBuf;
/* Fixed Fields */
pFrame->pqwTimestamp = (PQWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
+ WLAN_PROBERESP_OFF_TS);
/* Fixed Fields */
pFrame->pqwTimestamp =
(u64 *)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3)) +
WLAN_PROBERESP_OFF_TS);
pFrame->pwBeaconInterval = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
+ WLAN_PROBERESP_OFF_BCN_INT);
pFrame->pwCapInfo = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
......@@ -706,9 +709,10 @@ vMgrDecodeProbeResponse(
pFrame->pHdr = (PUWLAN_80211HDR)pFrame->pBuf;
/* Fixed Fields */
pFrame->pqwTimestamp = (PQWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
+ WLAN_PROBERESP_OFF_TS);
/* Fixed Fields */
pFrame->pqwTimestamp =
(u64 *)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3)) +
WLAN_PROBERESP_OFF_TS);
pFrame->pwBeaconInterval = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
+ WLAN_PROBERESP_OFF_BCN_INT);
pFrame->pwCapInfo = (PWORD)(WLAN_HDR_A3_DATA_PTR(&(pFrame->pHdr->sA3))
......
......@@ -526,7 +526,7 @@ typedef struct tagWLAN_FR_BEACON {
PBYTE pBuf;
PUWLAN_80211HDR pHdr;
// fixed fields
PQWORD pqwTimestamp;
u64 *pqwTimestamp;
PWORD pwBeaconInterval;
PWORD pwCapInfo;
/*-- info elements ----------*/
......@@ -683,7 +683,7 @@ typedef struct tagWLAN_FR_PROBERESP {
PBYTE pBuf;
PUWLAN_80211HDR pHdr;
/*-- fixed fields -----------*/
PQWORD pqwTimestamp;
u64 *pqwTimestamp;
PWORD pwBeaconInterval;
PWORD pwCapInfo;
/*-- info elements ----------*/
......
......@@ -339,7 +339,7 @@ PKnownBSS BSSpAddrIsInBSSList(void *hDeviceContext,
BOOL BSSbInsertToBSSList(void *hDeviceContext,
PBYTE abyBSSIDAddr,
QWORD qwTimestamp,
u64 qwTimestamp,
WORD wBeaconInterval,
WORD wCapInfo,
BYTE byCurrChannel,
......@@ -380,8 +380,7 @@ BOOL BSSbInsertToBSSList(void *hDeviceContext,
// save the BSS info
pBSSList->bActive = TRUE;
memcpy( pBSSList->abyBSSID, abyBSSIDAddr, WLAN_BSSID_LEN);
HIDWORD(pBSSList->qwBSSTimestamp) = cpu_to_le32(HIDWORD(qwTimestamp));
LODWORD(pBSSList->qwBSSTimestamp) = cpu_to_le32(LODWORD(qwTimestamp));
pBSSList->qwBSSTimestamp = cpu_to_le64(qwTimestamp);
pBSSList->wBeaconInterval = cpu_to_le16(wBeaconInterval);
pBSSList->wCapInfo = cpu_to_le16(wCapInfo);
pBSSList->uClearCount = 0;
......@@ -519,7 +518,7 @@ BOOL BSSbInsertToBSSList(void *hDeviceContext,
// TODO: input structure modify
BOOL BSSbUpdateToBSSList(void *hDeviceContext,
QWORD qwTimestamp,
u64 qwTimestamp,
WORD wBeaconInterval,
WORD wCapInfo,
BYTE byCurrChannel,
......@@ -548,8 +547,8 @@ BOOL BSSbUpdateToBSSList(void *hDeviceContext,
return FALSE;
HIDWORD(pBSSList->qwBSSTimestamp) = cpu_to_le32(HIDWORD(qwTimestamp));
LODWORD(pBSSList->qwBSSTimestamp) = cpu_to_le32(LODWORD(qwTimestamp));
pBSSList->qwBSSTimestamp = cpu_to_le64(qwTimestamp);
pBSSList->wBeaconInterval = cpu_to_le16(wBeaconInterval);
pBSSList->wCapInfo = cpu_to_le16(wCapInfo);
pBSSList->uClearCount = 0;
......
......@@ -142,8 +142,8 @@ typedef struct tagKnownBSS {
unsigned int uClearCount;
// BYTE abyIEs[WLAN_BEACON_FR_MAXLEN];
unsigned int uIELength;
QWORD qwBSSTimestamp;
QWORD qwLocalTSF; // local TSF timer
u64 qwBSSTimestamp;
u64 qwLocalTSF;/* local TSF timer */
CARD_PHY_TYPE eNetworkTypeInUse;
......@@ -239,7 +239,7 @@ void BSSvClearBSSList(void *hDeviceContext, BOOL bKeepCurrBSSID);
BOOL BSSbInsertToBSSList(void *hDeviceContext,
PBYTE abyBSSIDAddr,
QWORD qwTimestamp,
u64 qwTimestamp,
WORD wBeaconInterval,
WORD wCapInfo,
BYTE byCurrChannel,
......@@ -256,7 +256,7 @@ BOOL BSSbInsertToBSSList(void *hDeviceContext,
void *pRxPacketContext);
BOOL BSSbUpdateToBSSList(void *hDeviceContext,
QWORD qwTimestamp,
u64 qwTimestamp,
WORD wBeaconInterval,
WORD wCapInfo,
BYTE byCurrChannel,
......
......@@ -654,28 +654,18 @@ BYTE CARDbyGetPktType(void *pDeviceHandler)
* Return Value: TSF Offset value
*
*/
QWORD CARDqGetTSFOffset (BYTE byRxRate, QWORD qwTSF1, QWORD qwTSF2)
u64 CARDqGetTSFOffset(BYTE byRxRate, u64 qwTSF1, u64 qwTSF2)
{
QWORD qwTSFOffset;
WORD wRxBcnTSFOffst = 0;
u64 qwTSFOffset = 0;
WORD wRxBcnTSFOffst = 0;
HIDWORD(qwTSFOffset) = 0;
LODWORD(qwTSFOffset) = 0;
wRxBcnTSFOffst = cwRXBCNTSFOff[byRxRate % MAX_RATE];
wRxBcnTSFOffst = cwRXBCNTSFOff[byRxRate%MAX_RATE];
(qwTSF2).u.dwLowDword += (DWORD)(wRxBcnTSFOffst);
if ((qwTSF2).u.dwLowDword < (DWORD)(wRxBcnTSFOffst)) {
(qwTSF2).u.dwHighDword++;
}
LODWORD(qwTSFOffset) = LODWORD(qwTSF1) - LODWORD(qwTSF2);
if (LODWORD(qwTSF1) < LODWORD(qwTSF2)) {
// if borrow needed
HIDWORD(qwTSFOffset) = HIDWORD(qwTSF1) - HIDWORD(qwTSF2) - 1 ;
}
else {
HIDWORD(qwTSFOffset) = HIDWORD(qwTSF1) - HIDWORD(qwTSF2);
};
return (qwTSFOffset);
qwTSF2 += (u64)wRxBcnTSFOffst;
qwTSFOffset = qwTSF1 - qwTSF2;
return qwTSFOffset;
}
......@@ -696,32 +686,26 @@ QWORD CARDqGetTSFOffset (BYTE byRxRate, QWORD qwTSF1, QWORD qwTSF2)
*
*/
void CARDvAdjustTSF(void *pDeviceHandler, BYTE byRxRate,
QWORD qwBSSTimestamp, QWORD qwLocalTSF)
u64 qwBSSTimestamp, u64 qwLocalTSF)
{
PSDevice pDevice = (PSDevice) pDeviceHandler;
QWORD qwTSFOffset;
DWORD dwTSFOffset1,dwTSFOffset2;
u64 qwTSFOffset = 0;
BYTE pbyData[8];
HIDWORD(qwTSFOffset) = 0;
LODWORD(qwTSFOffset) = 0;
qwTSFOffset = CARDqGetTSFOffset(byRxRate, qwBSSTimestamp, qwLocalTSF);
// adjust TSF
// HW's TSF add TSF Offset reg
dwTSFOffset1 = LODWORD(qwTSFOffset);
dwTSFOffset2 = HIDWORD(qwTSFOffset);
pbyData[0] = (BYTE)dwTSFOffset1;
pbyData[1] = (BYTE)(dwTSFOffset1>>8);
pbyData[2] = (BYTE)(dwTSFOffset1>>16);
pbyData[3] = (BYTE)(dwTSFOffset1>>24);
pbyData[4] = (BYTE)dwTSFOffset2;
pbyData[5] = (BYTE)(dwTSFOffset2>>8);
pbyData[6] = (BYTE)(dwTSFOffset2>>16);
pbyData[7] = (BYTE)(dwTSFOffset2>>24);
pbyData[0] = (u8)qwTSFOffset;
pbyData[1] = (u8)(qwTSFOffset >> 8);
pbyData[2] = (u8)(qwTSFOffset >> 16);
pbyData[3] = (u8)(qwTSFOffset >> 24);
pbyData[4] = (u8)(qwTSFOffset >> 32);
pbyData[5] = (u8)(qwTSFOffset >> 40);
pbyData[6] = (u8)(qwTSFOffset >> 48);
pbyData[7] = (u8)(qwTSFOffset >> 56);
CONTROLnsRequestOut(pDevice,
MESSAGE_TYPE_SET_TSFTBTT,
......@@ -745,12 +729,11 @@ void CARDvAdjustTSF(void *pDeviceHandler, BYTE byRxRate,
* Return Value: TRUE if success; otherwise FALSE
*
*/
BOOL CARDbGetCurrentTSF(void *pDeviceHandler, PQWORD pqwCurrTSF)
BOOL CARDbGetCurrentTSF(void *pDeviceHandler, u64 *pqwCurrTSF)
{
PSDevice pDevice = (PSDevice) pDeviceHandler;
PSDevice pDevice = (PSDevice) pDeviceHandler;
LODWORD(*pqwCurrTSF) = LODWORD(pDevice->qwCurrTSF);
HIDWORD(*pqwCurrTSF) = HIDWORD(pDevice->qwCurrTSF);
*pqwCurrTSF = pDevice->qwCurrTSF;
return(TRUE);
}
......@@ -773,8 +756,7 @@ BOOL CARDbClearCurrentTSF(void *pDeviceHandler)
MACvRegBitsOn(pDevice,MAC_REG_TFTCTL,TFTCTL_TSFCNTRST);
LODWORD(pDevice->qwCurrTSF) = 0;
HIDWORD(pDevice->qwCurrTSF) = 0;
pDevice->qwCurrTSF = 0;
return(TRUE);
}
......@@ -793,7 +775,7 @@ BOOL CARDbClearCurrentTSF(void *pDeviceHandler)
* Return Value: TSF value of next Beacon
*
*/
QWORD CARDqGetNextTBTT (QWORD qwTSF, WORD wBeaconInterval)
u64 CARDqGetNextTBTT(u64 qwTSF, WORD wBeaconInterval)
{
unsigned int uLowNextTBTT;
......@@ -802,18 +784,19 @@ QWORD CARDqGetNextTBTT (QWORD qwTSF, WORD wBeaconInterval)
uBeaconInterval = wBeaconInterval * 1024;
// Next TBTT = ((local_current_TSF / beacon_interval) + 1 ) * beacon_interval
uLowNextTBTT = (LODWORD(qwTSF) >> 10) << 10;
uLowRemain = (uLowNextTBTT) % uBeaconInterval;
uHighRemain = ((0x80000000 % uBeaconInterval)* 2 * HIDWORD(qwTSF))
% uBeaconInterval;
uLowRemain = (uHighRemain + uLowRemain) % uBeaconInterval;
uLowRemain = uBeaconInterval - uLowRemain;
uLowNextTBTT = ((qwTSF & 0xffffffffU) >> 10) << 10;
uLowRemain = (uLowNextTBTT) % uBeaconInterval;
uHighRemain = ((0x80000000 % uBeaconInterval) * 2 * (u32)(qwTSF >> 32))
% uBeaconInterval;
uLowRemain = (uHighRemain + uLowRemain) % uBeaconInterval;
uLowRemain = uBeaconInterval - uLowRemain;
// check if carry when add one beacon interval
if ((~uLowNextTBTT) < uLowRemain)
HIDWORD(qwTSF) ++ ;
if ((~uLowNextTBTT) < uLowRemain)
qwTSF = ((qwTSF >> 32) + 1) << 32;
LODWORD(qwTSF) = uLowNextTBTT + uLowRemain;
qwTSF = (qwTSF & 0xffffffff00000000U) |
(u64)(uLowNextTBTT + uLowRemain);
return (qwTSF);
}
......@@ -837,28 +820,22 @@ void CARDvSetFirstNextTBTT(void *pDeviceHandler, WORD wBeaconInterval)
{
PSDevice pDevice = (PSDevice) pDeviceHandler;
QWORD qwNextTBTT;
DWORD dwLoTBTT,dwHiTBTT;
BYTE pbyData[8];
u64 qwNextTBTT = 0;
BYTE pbyData[8];
HIDWORD(qwNextTBTT) = 0;
LODWORD(qwNextTBTT) = 0;
CARDbClearCurrentTSF(pDevice);
CARDbClearCurrentTSF(pDevice);
//CARDbGetCurrentTSF(pDevice, &qwNextTBTT); //Get Local TSF counter
qwNextTBTT = CARDqGetNextTBTT(qwNextTBTT, wBeaconInterval);
qwNextTBTT = CARDqGetNextTBTT(qwNextTBTT, wBeaconInterval);
// Set NextTBTT
dwLoTBTT = LODWORD(qwNextTBTT);
dwHiTBTT = HIDWORD(qwNextTBTT);
pbyData[0] = (BYTE)dwLoTBTT;
pbyData[1] = (BYTE)(dwLoTBTT>>8);
pbyData[2] = (BYTE)(dwLoTBTT>>16);
pbyData[3] = (BYTE)(dwLoTBTT>>24);
pbyData[4] = (BYTE)dwHiTBTT;
pbyData[5] = (BYTE)(dwHiTBTT>>8);
pbyData[6] = (BYTE)(dwHiTBTT>>16);
pbyData[7] = (BYTE)(dwHiTBTT>>24);
pbyData[0] = (u8)qwNextTBTT;
pbyData[1] = (u8)(qwNextTBTT >> 8);
pbyData[2] = (u8)(qwNextTBTT >> 16);
pbyData[3] = (u8)(qwNextTBTT >> 24);
pbyData[4] = (u8)(qwNextTBTT >> 32);
pbyData[5] = (u8)(qwNextTBTT >> 40);
pbyData[6] = (u8)(qwNextTBTT >> 48);
pbyData[7] = (u8)(qwNextTBTT >> 56);
CONTROLnsRequestOut(pDevice,
MESSAGE_TYPE_SET_TSFTBTT,
......@@ -887,27 +864,24 @@ void CARDvSetFirstNextTBTT(void *pDeviceHandler, WORD wBeaconInterval)
* Return Value: none
*
*/
void CARDvUpdateNextTBTT(void *pDeviceHandler, QWORD qwTSF,
void CARDvUpdateNextTBTT(void *pDeviceHandler, u64 qwTSF,
WORD wBeaconInterval)
{
PSDevice pDevice = (PSDevice) pDeviceHandler;
DWORD dwLoTBTT,dwHiTBTT;
BYTE pbyData[8];
qwTSF = CARDqGetNextTBTT(qwTSF, wBeaconInterval);
// Set NextTBTT
dwLoTBTT = LODWORD(qwTSF);
dwHiTBTT = HIDWORD(qwTSF);
pbyData[0] = (BYTE)dwLoTBTT;
pbyData[1] = (BYTE)(dwLoTBTT>>8);
pbyData[2] = (BYTE)(dwLoTBTT>>16);
pbyData[3] = (BYTE)(dwLoTBTT>>24);
pbyData[4] = (BYTE)dwHiTBTT;
pbyData[5] = (BYTE)(dwHiTBTT>>8);
pbyData[6] = (BYTE)(dwHiTBTT>>16);
pbyData[7] = (BYTE)(dwHiTBTT>>24);
pbyData[0] = (u8)qwTSF;
pbyData[1] = (u8)(qwTSF >> 8);
pbyData[2] = (u8)(qwTSF >> 16);
pbyData[3] = (u8)(qwTSF >> 24);
pbyData[4] = (u8)(qwTSF >> 32);
pbyData[5] = (u8)(qwTSF >> 40);
pbyData[6] = (u8)(qwTSF >> 48);
pbyData[7] = (u8)(qwTSF >> 56);
CONTROLnsRequestOut(pDevice,
MESSAGE_TYPE_SET_TSFTBTT,
......@@ -918,7 +892,8 @@ void CARDvUpdateNextTBTT(void *pDeviceHandler, QWORD qwTSF,
);
DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Card:Update Next TBTT[%8xh:%8xh] \n",(int)HIDWORD(qwTSF), (int)LODWORD(qwTSF));
DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO
"Card:Update Next TBTT[%8lx]\n", (unsigned long)qwTSF);
return;
}
......
......@@ -67,14 +67,14 @@ void CARDvUpdateBasicTopRate(void *pDeviceHandler);
void CARDbAddBasicRate(void *pDeviceHandler, WORD wRateIdx);
BOOL CARDbIsOFDMinBasicRate(void *pDeviceHandler);
void CARDvAdjustTSF(void *pDeviceHandler, BYTE byRxRate,
QWORD qwBSSTimestamp, QWORD qwLocalTSF);
BOOL CARDbGetCurrentTSF(void *pDeviceHandler, PQWORD pqwCurrTSF);
u64 qwBSSTimestamp, u64 qwLocalTSF);
BOOL CARDbGetCurrentTSF(void *pDeviceHandler, u64 *pqwCurrTSF);
BOOL CARDbClearCurrentTSF(void *pDeviceHandler);
void CARDvSetFirstNextTBTT(void *pDeviceHandler, WORD wBeaconInterval);
void CARDvUpdateNextTBTT(void *pDeviceHandler, QWORD qwTSF,
void CARDvUpdateNextTBTT(void *pDeviceHandler, u64 qwTSF,
WORD wBeaconInterval);
QWORD CARDqGetNextTBTT(QWORD qwTSF, WORD wBeaconInterval);
QWORD CARDqGetTSFOffset(BYTE byRxRate, QWORD qwTSF1, QWORD qwTSF2);
u64 CARDqGetNextTBTT(u64 qwTSF, WORD wBeaconInterval);
u64 CARDqGetTSFOffset(BYTE byRxRate, u64 qwTSF1, u64 qwTSF2);
BOOL CARDbRadioPowerOff(void *pDeviceHandler);
BOOL CARDbRadioPowerOn(void *pDeviceHandler);
BYTE CARDbyGetPktType(void *pDeviceHandler);
......
......@@ -527,7 +527,7 @@ typedef struct __device_info {
// 802.11 management
SMgmtObject sMgmtObj;
QWORD qwCurrTSF;
u64 qwCurrTSF;
unsigned int cbBulkInMax;
BOOL bPSRxBeacon;
......
......@@ -328,7 +328,7 @@ RXbBulkInProcessData (
PBYTE pbyRsr;
PBYTE pbyNewRsr;
PBYTE pbyRSSI;
PQWORD pqwTSFTime;
u64 *pqwTSFTime;
PBYTE pbyFrame;
BOOL bDeFragRx = FALSE;
unsigned int cbHeaderOffset;
......@@ -411,7 +411,7 @@ RXbBulkInProcessData (
wPLCPwithPadding = ( (*pwPLCP_Length / 4) + ( (*pwPLCP_Length % 4) ? 1:0 ) ) *4;
pqwTSFTime = (PQWORD) (pbyDAddress + 8 + wPLCPwithPadding);
pqwTSFTime = (u64 *)(pbyDAddress + 8 + wPLCPwithPadding);
if(pDevice->byBBType == BB_TYPE_11G) {
pby3SQ = pbyDAddress + 8 + wPLCPwithPadding + 12;
pbySQ = pby3SQ;
......@@ -598,8 +598,7 @@ RXbBulkInProcessData (
pRxPacket->cbMPDULen = FrameSize;
pRxPacket->uRSSI = *pbyRSSI;
pRxPacket->bySQ = *pbySQ;
HIDWORD(pRxPacket->qwLocalTSF) = cpu_to_le32(HIDWORD(*pqwTSFTime));
LODWORD(pRxPacket->qwLocalTSF) = cpu_to_le32(LODWORD(*pqwTSFTime));
pRxPacket->qwLocalTSF = cpu_to_le64(*pqwTSFTime);
if (bIsWEP) {
// strip IV
pbyData1 = WLAN_HDR_A3_DATA_PTR(pbyFrame);
......@@ -910,7 +909,7 @@ RXbBulkInProcessData (
RSC = dwRxTSC47_16;
RSC <<= 16;
RSC += wRxTSC15_0;
memcpy(&(pKey->KeyRSC), &RSC, sizeof(QWORD));
memcpy(&(pKey->KeyRSC), &RSC, sizeof(u64));
if ( (pDevice->sMgmtObj.eCurrMode == WMAC_MODE_ESS_STA) &&
(pDevice->sMgmtObj.eCurrState == WMAC_STATE_ASSOC)) {
......
......@@ -512,14 +512,12 @@ static int hostap_set_encryption(PSDevice pDevice,
} else {
// 8021x enable, individual key
dwKeyIndex |= (1 << 30); // set pairwise key
if (KeybSetKey(pDevice,
&(pDevice->sKey),
&param->sta_addr[0],
dwKeyIndex & ~(USE_KEYRSC),
param->u.crypt.key_len,
(PQWORD) &(KeyRSC),
(PBYTE)abyKey,
KEY_CTL_WEP
if (KeybSetKey(pDevice, &(pDevice->sKey),
&param->sta_addr[0],
dwKeyIndex & ~(USE_KEYRSC),
param->u.crypt.key_len,
&KeyRSC, (PBYTE)abyKey,
KEY_CTL_WEP
) == TRUE) {
......@@ -574,7 +572,7 @@ static int hostap_set_encryption(PSDevice pDevice,
&(pDevice->sKey),
dwKeyIndex,
param->u.crypt.key_len,
(PQWORD) &(KeyRSC),
&KeyRSC,
abyKey,
byKeyDecMode
);
......@@ -587,7 +585,7 @@ static int hostap_set_encryption(PSDevice pDevice,
&param->sta_addr[0],
dwKeyIndex,
param->u.crypt.key_len,
(PQWORD) &(KeyRSC),
&KeyRSC,
(PBYTE)abyKey,
byKeyDecMode
) == TRUE) {
......
......@@ -179,8 +179,7 @@ void INTnsProcessData(PSDevice pDevice)
NULL);
}
}
LODWORD(pDevice->qwCurrTSF) = pINTData->dwLoTSF;
HIDWORD(pDevice->qwCurrTSF) = pINTData->dwHiTSF;
pDevice->qwCurrTSF = cpu_to_le64(pINTData->qwTSF);
/*DBG_PRN_GRP01(("ISR0 = %02x ,
LoTsf = %08x,
HiTsf = %08x\n",
......
......@@ -48,8 +48,7 @@ typedef struct tagSINTData {
BYTE byTSR3;
BYTE byPkt3;
WORD wTime3;
u32 dwLoTSF;
u32 dwHiTSF;
u64 qwTSF;
BYTE byISR0;
BYTE byISR1;
BYTE byRTSSuccess;
......
......@@ -224,7 +224,7 @@ BOOL KeybSetKey(
PBYTE pbyBSSID,
DWORD dwKeyIndex,
u32 uKeyLength,
PQWORD pKeyRSC,
u64 *KeyRSC,
PBYTE pbyKey,
BYTE byKeyDecMode
)
......@@ -286,13 +286,11 @@ BOOL KeybSetKey(
}
MACvSetKeyEntry(pDevice, pTable->KeyTable[i].wKeyCtl, i, uKeyIdx, pbyBSSID, (PDWORD)pKey->abyKey);
if ((dwKeyIndex & USE_KEYRSC) == 0) {
// RSC set by NIC
memset(&(pKey->KeyRSC), 0, sizeof(QWORD));
}
else {
memcpy(&(pKey->KeyRSC), pKeyRSC, sizeof(QWORD));
}
if ((dwKeyIndex & USE_KEYRSC) == 0)
pKey->KeyRSC = 0; /* RSC set by NIC */
else
pKey->KeyRSC = *KeyRSC;
pKey->dwTSC47_16 = 0;
pKey->wTSC15_0 = 0;
......@@ -356,13 +354,11 @@ BOOL KeybSetKey(
}
MACvSetKeyEntry(pDevice, pTable->KeyTable[j].wKeyCtl, j, uKeyIdx, pbyBSSID, (PDWORD)pKey->abyKey);
if ((dwKeyIndex & USE_KEYRSC) == 0) {
// RSC set by NIC
memset(&(pKey->KeyRSC), 0, sizeof(QWORD));
}
else {
memcpy(&(pKey->KeyRSC), pKeyRSC, sizeof(QWORD));
}
if ((dwKeyIndex & USE_KEYRSC) == 0)
pKey->KeyRSC = 0; /* RSC set by NIC */
else
pKey->KeyRSC = *KeyRSC;
pKey->dwTSC47_16 = 0;
pKey->wTSC15_0 = 0;
......@@ -676,7 +672,7 @@ BOOL KeybSetDefaultKey(
PSKeyManagement pTable,
DWORD dwKeyIndex,
u32 uKeyLength,
PQWORD pKeyRSC,
u64 *KeyRSC,
PBYTE pbyKey,
BYTE byKeyDecMode
)
......@@ -742,12 +738,12 @@ BOOL KeybSetDefaultKey(
MACvSetKeyEntry(pDevice, pTable->KeyTable[MAX_KEY_TABLE-1].wKeyCtl, MAX_KEY_TABLE-1, uKeyIdx, pTable->KeyTable[MAX_KEY_TABLE-1].abyBSSID, (PDWORD) pKey->abyKey);
if ((dwKeyIndex & USE_KEYRSC) == 0) {
// RSC set by NIC
memset(&(pKey->KeyRSC), 0, sizeof(QWORD));
} else {
memcpy(&(pKey->KeyRSC), pKeyRSC, sizeof(QWORD));
}
if ((dwKeyIndex & USE_KEYRSC) == 0)
pKey->KeyRSC = 0; /* RSC set by NIC */
else
pKey->KeyRSC = *KeyRSC;
pKey->dwTSC47_16 = 0;
pKey->wTSC15_0 = 0;
......@@ -792,7 +788,7 @@ BOOL KeybSetAllGroupKey(
PSKeyManagement pTable,
DWORD dwKeyIndex,
u32 uKeyLength,
PQWORD pKeyRSC,
u64 *KeyRSC,
PBYTE pbyKey,
BYTE byKeyDecMode
)
......@@ -847,13 +843,11 @@ BOOL KeybSetAllGroupKey(
MACvSetKeyEntry(pDevice, pTable->KeyTable[i].wKeyCtl, i, uKeyIdx, pTable->KeyTable[i].abyBSSID, (PDWORD) pKey->abyKey);
if ((dwKeyIndex & USE_KEYRSC) == 0) {
// RSC set by NIC
memset(&(pKey->KeyRSC), 0, sizeof(QWORD));
}
else {
memcpy(&(pKey->KeyRSC), pKeyRSC, sizeof(QWORD));
}
if ((dwKeyIndex & USE_KEYRSC) == 0)
pKey->KeyRSC = 0; /* RSC set by NIC */
else
pKey->KeyRSC = *KeyRSC;
pKey->dwTSC47_16 = 0;
pKey->wTSC15_0 = 0;
......
......@@ -60,7 +60,7 @@ typedef struct tagSKeyItem
BOOL bKeyValid;
u32 uKeyLength;
BYTE abyKey[MAX_KEY_LEN];
QWORD KeyRSC;
u64 KeyRSC;
DWORD dwTSC47_16;
WORD wTSC15_0;
BYTE byCipherSuite;
......@@ -108,7 +108,7 @@ BOOL KeybSetKey(
PBYTE pbyBSSID,
DWORD dwKeyIndex,
u32 uKeyLength,
PQWORD pKeyRSC,
u64 *KeyRSC,
PBYTE pbyKey,
BYTE byKeyDecMode
);
......@@ -147,7 +147,7 @@ BOOL KeybSetDefaultKey(
PSKeyManagement pTable,
DWORD dwKeyIndex,
u32 uKeyLength,
PQWORD pKeyRSC,
u64 *KeyRSC,
PBYTE pbyKey,
BYTE byKeyDecMode
);
......@@ -157,7 +157,7 @@ BOOL KeybSetAllGroupKey(
PSKeyManagement pTable,
DWORD dwKeyIndex,
u32 uKeyLength,
PQWORD pKeyRSC,
u64 *KeyRSC,
PBYTE pbyKey,
BYTE byKeyDecMode
);
......
......@@ -48,18 +48,6 @@ typedef u8 BYTE;
typedef u16 WORD;
typedef u32 DWORD;
// QWORD is for those situation that we want
// an 8-byte-aligned 8 byte long structure
// which is NOT really a floating point number.
typedef union tagUQuadWord {
struct {
u32 dwLowDword;
u32 dwHighDword;
} u;
double DoNotUseThisField;
} UQuadWord;
typedef UQuadWord QWORD; // 64-bit
/****** Common pointer types ***********************************************/
typedef u32 ULONG_PTR;
......@@ -73,6 +61,4 @@ typedef WORD * PWORD;
typedef DWORD * PDWORD;
typedef QWORD * PQWORD;
#endif /* __TTYPE_H__ */
......@@ -1740,7 +1740,7 @@ s_vMgrRxBeacon(
PKnownBSS pBSSList;
WLAN_FR_BEACON sFrame;
QWORD qwTSFOffset;
u64 qwTSFOffset;
BOOL bIsBSSIDEqual = FALSE;
BOOL bIsSSIDEqual = FALSE;
BOOL bTSFLargeDiff = FALSE;
......@@ -1752,8 +1752,8 @@ s_vMgrRxBeacon(
BYTE byTIMBitOn = 0;
WORD wAIDNumber = 0;
unsigned int uNodeIndex;
QWORD qwTimestamp, qwLocalTSF;
QWORD qwCurrTSF;
u64 qwTimestamp, qwLocalTSF;
u64 qwCurrTSF;
WORD wStartIndex = 0;
WORD wAIDIndex = 0;
BYTE byCurrChannel = pRxPacket->byRxChannel;
......@@ -2013,26 +2013,14 @@ if(ChannelExceedZoneType(pDevice,byCurrChannel)==TRUE)
}
}
HIDWORD(qwTimestamp) = cpu_to_le32(HIDWORD(*sFrame.pqwTimestamp));
LODWORD(qwTimestamp) = cpu_to_le32(LODWORD(*sFrame.pqwTimestamp));
HIDWORD(qwLocalTSF) = HIDWORD(pRxPacket->qwLocalTSF);
LODWORD(qwLocalTSF) = LODWORD(pRxPacket->qwLocalTSF);
qwTimestamp = cpu_to_le64(*sFrame.pqwTimestamp);
qwLocalTSF = pRxPacket->qwLocalTSF;
// check if beacon TSF larger or small than our local TSF
if (HIDWORD(qwTimestamp) == HIDWORD(qwLocalTSF)) {
if (LODWORD(qwTimestamp) >= LODWORD(qwLocalTSF)) {
bTSFOffsetPostive = TRUE;
}
else {
bTSFOffsetPostive = FALSE;
}
}
else if (HIDWORD(qwTimestamp) > HIDWORD(qwLocalTSF)) {
bTSFOffsetPostive = TRUE;
}
else if (HIDWORD(qwTimestamp) < HIDWORD(qwLocalTSF)) {
bTSFOffsetPostive = FALSE;
}
if (qwTimestamp >= qwLocalTSF)
bTSFOffsetPostive = TRUE;
else
bTSFOffsetPostive = FALSE;
if (bTSFOffsetPostive) {
qwTSFOffset = CARDqGetTSFOffset(pRxPacket->byRxRate, (qwTimestamp), (qwLocalTSF));
......@@ -2041,10 +2029,8 @@ if(ChannelExceedZoneType(pDevice,byCurrChannel)==TRUE)
qwTSFOffset = CARDqGetTSFOffset(pRxPacket->byRxRate, (qwLocalTSF), (qwTimestamp));
}
if (HIDWORD(qwTSFOffset) != 0 ||
(LODWORD(qwTSFOffset) > TRIVIAL_SYNC_DIFFERENCE )) {
bTSFLargeDiff = TRUE;
}
if (qwTSFOffset > TRIVIAL_SYNC_DIFFERENCE)
bTSFLargeDiff = TRUE;
// if infra mode
......@@ -2265,7 +2251,7 @@ void vMgrCreateOwnIBSS(void *hDeviceContext,
WORD wMaxSuppRate;
BYTE byTopCCKBasicRate;
BYTE byTopOFDMBasicRate;
QWORD qwCurrTSF;
u64 qwCurrTSF = 0;
unsigned int ii;
BYTE abyRATE[] = {0x82, 0x84, 0x8B, 0x96, 0x24, 0x30, 0x48, 0x6C, 0x0C, 0x12, 0x18, 0x60};
BYTE abyCCK_RATE[] = {0x82, 0x84, 0x8B, 0x96};
......@@ -2274,9 +2260,6 @@ void vMgrCreateOwnIBSS(void *hDeviceContext,
HIDWORD(qwCurrTSF) = 0;
LODWORD(qwCurrTSF) = 0;
DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "Create Basic Service Set .......\n");
if (pMgmt->eConfigMode == WMAC_CONFIG_IBSS_STA) {
......@@ -2420,12 +2403,12 @@ void vMgrCreateOwnIBSS(void *hDeviceContext,
if (pMgmt->eCurrMode == WMAC_MODE_IBSS_STA) {
// BSSID selected must be randomized as spec 11.1.3
pMgmt->abyCurrBSSID[5] = (BYTE) (LODWORD(qwCurrTSF)& 0x000000ff);
pMgmt->abyCurrBSSID[4] = (BYTE)((LODWORD(qwCurrTSF)& 0x0000ff00) >> 8);
pMgmt->abyCurrBSSID[3] = (BYTE)((LODWORD(qwCurrTSF)& 0x00ff0000) >> 16);
pMgmt->abyCurrBSSID[2] = (BYTE)((LODWORD(qwCurrTSF)& 0x00000ff0) >> 4);
pMgmt->abyCurrBSSID[1] = (BYTE)((LODWORD(qwCurrTSF)& 0x000ff000) >> 12);
pMgmt->abyCurrBSSID[0] = (BYTE)((LODWORD(qwCurrTSF)& 0x0ff00000) >> 20);
pMgmt->abyCurrBSSID[5] = (u8)(qwCurrTSF & 0x000000ff);
pMgmt->abyCurrBSSID[4] = (u8)((qwCurrTSF & 0x0000ff00) >> 8);
pMgmt->abyCurrBSSID[3] = (u8)((qwCurrTSF & 0x00ff0000) >> 16);
pMgmt->abyCurrBSSID[2] = (u8)((qwCurrTSF & 0x00000ff0) >> 4);
pMgmt->abyCurrBSSID[1] = (u8)((qwCurrTSF & 0x000ff000) >> 12);
pMgmt->abyCurrBSSID[0] = (u8)((qwCurrTSF & 0x0ff00000) >> 20);
pMgmt->abyCurrBSSID[5] ^= pMgmt->abyMACAddr[0];
pMgmt->abyCurrBSSID[4] ^= pMgmt->abyMACAddr[1];
pMgmt->abyCurrBSSID[3] ^= pMgmt->abyMACAddr[2];
......
......@@ -232,7 +232,7 @@ typedef struct tagSTxMgmtPacket {
typedef struct tagSRxMgmtPacket {
PUWLAN_80211HDR p80211Header;
QWORD qwLocalTSF;
u64 qwLocalTSF;
unsigned int cbMPDULen;
unsigned int cbPayloadLen;
unsigned int uRSSI;
......
......@@ -74,7 +74,7 @@ int wpa_set_keys(PSDevice pDevice, void *ctx)
DWORD dwKeyIndex = 0;
BYTE abyKey[MAX_KEY_LEN];
BYTE abySeq[MAX_KEY_LEN];
QWORD KeyRSC;
u64 KeyRSC;
BYTE byKeyDecMode = KEY_CTL_WEP;
int ret = 0;
int uu;
......@@ -136,9 +136,9 @@ int wpa_set_keys(PSDevice pDevice, void *ctx)
if (param->u.wpa_key.seq_len > 0) {
for (ii = 0 ; ii < param->u.wpa_key.seq_len ; ii++) {
if (ii < 4)
LODWORD(KeyRSC) |= (abySeq[ii] << (ii * 8));
KeyRSC |= (abySeq[ii] << (ii * 8));
else
HIDWORD(KeyRSC) |= (abySeq[ii] << ((ii-4) * 8));
KeyRSC |= (abySeq[ii] << ((ii-4) * 8));
}
dwKeyIndex |= 1 << 29;
}
......@@ -203,7 +203,7 @@ int wpa_set_keys(PSDevice pDevice, void *ctx)
if ((KeybSetAllGroupKey(pDevice, &(pDevice->sKey), dwKeyIndex,
param->u.wpa_key.key_len,
(PQWORD) &(KeyRSC),
&KeyRSC,
(PBYTE)abyKey,
byKeyDecMode
) == TRUE) &&
......@@ -211,7 +211,7 @@ int wpa_set_keys(PSDevice pDevice, void *ctx)
&(pDevice->sKey),
dwKeyIndex,
param->u.wpa_key.key_len,
(PQWORD) &(KeyRSC),
&KeyRSC,
(PBYTE)abyKey,
byKeyDecMode
) == TRUE) ) {
......@@ -234,7 +234,7 @@ int wpa_set_keys(PSDevice pDevice, void *ctx)
}
if (KeybSetKey(pDevice, &(pDevice->sKey), &param->addr[0],
dwKeyIndex, param->u.wpa_key.key_len,
(PQWORD) &(KeyRSC), (PBYTE)abyKey, byKeyDecMode
&KeyRSC, (PBYTE)abyKey, byKeyDecMode
) == TRUE) {
DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "Pairwise Key Set\n");
} else {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册