📄 hwacproc.c
字号:
break;
#endif //BCA
case HostCmd_RET_802_11_LED_CONTROL:
TT_CMDPARSE_CMD_RESP2( HostCmd_DS_802_11_LED_CONTROL, NumLed, data[0] );
break;
#ifdef CAL_DATA
case HostCmd_RET_802_11_CAL_DATA_EXT:
TT_CMDPARSE_CMD_RESP2(HostCmd_DS_802_11_CAL_DATA_EXT, Revision, CalDataLen );
break;
case HostCmd_RET_802_11_CAL_DATA:
TT_CMDPARSE_CMD_RESP2(HostCmd_DS_802_11_CAL_DATA, PAOption, Domain );
break;
#endif //CAL_DATA
case HostCmd_RET_802_11_PWR_CFG:
TT_CMDPARSE_CMD_RESP2(HostCmd_DS_802_11_PWR_CFG, Enable, P2);
// TT_CMDPARSE_QUERY_BACKUP_CMD_RESP( Adapter, HostCmd_DS_802_11_PWR_CFG, Enable, P2);
// TT_CMDPARSE_DUMP_DATA3( Adapter->OidCmdRespBuf, OID_MRVL_DS_PWR_CFG, P0, P1, P2 );
// TT_CMDPARSE_SET_EVENT( Adapter );
break;
case HostCmd_RET_802_11_TPC_CFG:
TT_CMDPARSE_CMD_RESP2(HostCmd_DS_802_11_TPC_CFG, Enable, P2);
// TT_CMDPARSE_QUERY_BACKUP_CMD_RESP( Adapter, HostCmd_DS_802_11_TPC_CFG, Enable, P2);
// TT_CMDPARSE_DUMP_DATA3( Adapter->OidCmdRespBuf, OID_MRVL_DS_TPC_CFG, P0, P1, P2 );
// TT_CMDPARSE_SET_EVENT( Adapter );
/* {
PHostCmd_DS_802_11_TPC_CFG pCmdResult;
NKDbgPrintfW( L"-v5- CMD_RSP: TPC_CFG, Result=%d\n",
pCmdResult->Result );
}
*/ break;
case HostCmd_RET_802_11_RATE_ADAPT_RATESET:
TT_CMDPARSE_CMD_RESP2(HostCmd_RATE_ADAPT_RATESET, EnableHwAuto, Bitmap);
// TT_CMDPARSE_QUERY_BACKUP_CMD_RESP( Adapter, HostCmd_RATE_ADAPT_RATESET, EnableHwAuto );
// TT_CMDPARSE_DUMP_DATA3( Adapter->OidCmdRespBuf, OID_MRVL_DS_RATE_ADAPT_RATESET, EnableHwAuto, Bitmap, Bitmap );
// TT_CMDPARSE_SET_EVENT( Adapter );
/* {
PHostCmd_RATE_ADAPT_RATESET pCmdResult;
pCmdResult = (PHostCmd_RATE_ADAPT_RATESET) pRetPtr;
NKDbgPrintfW( L"-v5- CMD_RSP: RATE_ADAPT, Act=%d, Result=%d, Enable=%d, Bitmap=0x%x\n",
pCmdResult->Action, pCmdResult->Result, pCmdResult->EnableHwAuto, pCmdResult->Bitmap );
}
*/ break;
//tt --
/* tt
#ifdef ADHOCAES
case HostCmd_RET_802_11_PWK_KEY:
{
PHostCmd_DS_802_11_PWK_KEY pCmd = (PHostCmd_DS_802_11_PWK_KEY)pRetPtr;
if (pCmd->Action == HostCmd_ACT_GET_AES)
{
HandleAdhocAES( Adapter,
pCmd,
Adapter->CurCmd->InformationBuffer,
Adapter->CurCmd->BytesWritten);
}
}
break;
#endif
*/
case HostCmd_RET_802_11_RSSI:
{
PHostCmd_DS_802_11_RSSI pCmd = (PHostCmd_DS_802_11_RSSI)pRetPtr;
#ifdef NEW_RSSI
/* store the non average value */
Adapter->SNR[TYPE_BEACON][TYPE_NOAVG] = pCmd->SNR ;
Adapter->NF[TYPE_BEACON][TYPE_NOAVG] = pCmd->NoiseFloor ;
Adapter->SNR[TYPE_BEACON][TYPE_AVG] =
CAL_AVG_SNR_NF(Adapter->SNR[TYPE_BEACON][TYPE_AVG],(pCmd->SNR));
Adapter->NF[TYPE_BEACON][TYPE_AVG] =
CAL_AVG_SNR_NF(Adapter->NF[TYPE_BEACON][TYPE_AVG],(pCmd->NoiseFloor));
/* store the beacon values in SNRNF variable, which
* is present in adapter structure */
Adapter->SNRNF[SNR_BEACON][TYPE_NOAVG] =
(UCHAR)Adapter->SNR[TYPE_BEACON][TYPE_NOAVG];
Adapter->SNRNF[SNR_BEACON][TYPE_AVG] =
Adapter->SNR[TYPE_BEACON][TYPE_AVG] / AVG_SCALE;
Adapter->SNRNF[NF_BEACON][TYPE_NOAVG] =
(UCHAR)Adapter->NF[TYPE_BEACON][TYPE_NOAVG];
Adapter->SNRNF[NF_BEACON][TYPE_AVG] =
Adapter->NF[TYPE_BEACON][TYPE_AVG] / AVG_SCALE;
// NOTE: Adapter->SNRNF[SNR_RXPD][X] - represents RXPD for SNR
// Adapter->SNRNF[NF_RXPD][X] - represents RXPD for NF
Adapter->RSSI[TYPE_BEACON][TYPE_NOAVG] =
CAL_RSSI(Adapter->SNR[TYPE_BEACON][TYPE_NOAVG],
Adapter->NF[TYPE_BEACON][TYPE_NOAVG]);
Adapter->RSSI[TYPE_BEACON][TYPE_AVG] =
CAL_RSSI(Adapter->SNR[TYPE_BEACON][TYPE_AVG] / AVG_SCALE,
Adapter->NF[TYPE_BEACON][TYPE_AVG] / AVG_SCALE);
if ((Adapter->RSSI[TYPE_BEACON][TYPE_AVG] > -10) || (Adapter->RSSI[TYPE_BEACON][TYPE_AVG] < -200))
{
DBGPRINT(DBG_ERROR, ("ERROR: Incorrect RSSI Value1 - SNR = %d, "
"NF= %d, Adapter->RSSI[TYPE_BEACON][TYPE_AVG] = %d, Adapter->LastRSSI = %d\n",
pCmd->SNR,
pCmd->NoiseFloor,
Adapter->RSSI[TYPE_BEACON][TYPE_AVG],
Adapter->LastRSSI));
}
else
{
if (Adapter->LastRSSI == MRVL_DEFAULT_INITIAL_RSSI)
{
Adapter->LastRSSI = Adapter->RSSI[TYPE_BEACON][TYPE_AVG];
}else
{
Adapter->LastRSSI = ((Adapter->LastRSSI * 3)+(Adapter->RSSI[TYPE_BEACON][TYPE_AVG]))/4;
}
}
//PRINTK1("Beacon RSSI value = 0x%x\n",
// Adapter->RSSI[TYPE_BEACON][TYPE_AVG]);
DBGPRINT(DBG_CMDRESP, ("HostCmd_RET_802_11_RSSI: pCmd->SNR = %d,pCmd->NoiseFloor= %d,Adapter->RSSI[TYPE_BEACON][TYPE_NOAVG] = %d, Adapter->RSSI[TYPE_BEACON][TYPE_AVG]= %d, Adapter->LastRSSI=%d\n",
pCmd->SNR,
pCmd->NoiseFloor,
Adapter->RSSI[TYPE_BEACON][TYPE_NOAVG],
Adapter->RSSI[TYPE_BEACON][TYPE_AVG],
Adapter->LastRSSI));
#else
//CHAR cNF; // noise floor value
//LONG CurRSSI;
SHORT sNF;
LONG CurRSSI;
#ifndef MRV_CHIP_8385PN
SHORT sSNR;
#endif
#ifdef MRV_CHIP_8385PN
// cNF =-(SHORT)(~(pCmd->NoiseFloor)&0X7F);
//
// CurRSSI = pCmd->SNR + cNF;
sNF =-((SHORT)((pCmd->NoiseFloor & 0X7F) + 5));
CurRSSI = -((SHORT)((pCmd->SNR & 0X7F) + 5));
//DBGPRINT(DBG_LOAD, ("Print B0 RSSI Value - SNR = %d, "
// "NFRaw = %d, NF = %d, Ave = %d\n",
// pCmd->SNR,
// pCmd->NoiseFloor,
// cNF,
// Adapter->LastRSSI));
#elif defined(MRV_CHIP_8686PN) //dralee_1209
sNF =-((SHORT)((pCmd->NoiseFloor & 0X7F) + 5));
CurRSSI = -((SHORT)((pCmd->SNR & 0X7F) + 5));
#else
//cNF = pCmd->NoiseFloor << 2;
//cNF -= 96;
//cNF -= 60; // normalization
//CurRSSI = pCmd->SNR + cNF;
sNF = -((SHORT)((pCmd->NoiseFloor & 0X7F) + 30 + 5));
sSNR = (SHORT)((pCmd->SNR& 0X7F)
CurRSSI = sSNR + sNF;
#endif
if ( (CurRSSI > 0) || (CurRSSI < -200) )
{
DBGPRINT(DBG_ERROR, ("ERROR: Incorrect RSSI Value1 - SNR = %d, "
"NFRaw = %d, NF = %d, Ave = %d\n",
pCmd->SNR,
pCmd->NoiseFloor,
sNF,
Adapter->LastRSSI));
}
else
{
if ( Adapter->LastRSSI == MRVL_DEFAULT_INITIAL_RSSI )
{
Adapter->LastRSSI = CurRSSI;
}
else
{
Adapter->LastRSSI = ((Adapter->LastRSSI * 3)+CurRSSI)/4;
}
}
//HexDump(DBG_ALL, "RSSI CMD Resp:", (PUCHAR)pRetPtr, pRetPtr->Size);
//DBGPRINT(DBG_ALL, ("RSSI CMD: SNR = %d, NFRaw = %d, NF = %d, AveRSSI = %d\n",
// pCmd->SNR, pCmd->NoiseFloor, cNF, Adapter->LastRSSI));
#endif //NEW_RSSI
#ifdef CONFIG_VERTICAL_HANDOFF
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("Wake up beacon rssi listen thread!Caused by HostCmd_RET_802_11_RSSI...\n")));
#endif
SetEvent(priv.hBeaconRSSIUpdatedEvent);
#endif
}
break;
case HostCmd_RET_HW_SPEC_INFO:
pHWSpec = (PHostCmd_DS_GET_HW_SPEC)pRetPtr;
HandleHardwareSpec(pHWSpec, Adapter);
break;
case HostCmd_RET_802_11_RESET:
DBGPRINT(DBG_CMDRESP,("HWAC - Reset command successful\n"));
SetMacPacketFilter(
Adapter,
Adapter->CurrentPacketFilter);
break;
case HostCmd_RET_802_11_STATUS_INFO:
pStatus = (PHostCmd_DS_802_11_QUERY_STATUS)pRetPtr;
Adapter->HardwareStatus = NdisHardwareStatusReady;
Adapter->LinkSpeed = pStatus->MaxLinkSpeed;
Adapter->FWStatus = pStatus->FWStatus;
Adapter->MACStatus = pStatus->MACStatus;
Adapter->RFStatus = pStatus->RFStatus;
Adapter->CurentChannel = pStatus->CurentChannel;
break;
case HostCmd_RET_802_11_STAT:
// TODO: 802.11 stat in adapter object
/*
p11Stat = (PHostCmd_DS_802_11_GET_STAT)pRetPtr;
Adapter->TransmittedFragmentCount.LowPart = p11Stat->TXFragmentCnt;
Adapter->MulticastTransmittedFrameCount.LowPart = p11Stat->MCastTXFrameCnt;
Adapter->FailedCount.LowPart = p11Stat->FailedCnt;
Adapter->RetryCount.LowPart = p11Stat->RetryCnt;
Adapter->MultipleRetryCount.LowPart = p11Stat->MultipleRetryCnt;
Adapter->RTSSuccessCount.LowPart = p11Stat->RTSSuccessCnt;
Adapter->RTSFailureCount.LowPart = p11Stat->RTSFailureCnt;
Adapter->ACKFailureCount.LowPart = p11Stat->ACKFailureCnt;
Adapter->FrameDuplicateCount.LowPart = p11Stat->FrameDuplicateCnt;
Adapter->ReceivedFragmentCount.LowPart = p11Stat->RXFragmentCnt;
Adapter->MulticastReceivedFrameCount.LowPart = p11Stat->MCastRXFrameCnt;
Adapter->FCSErrorCount.LowPart = p11Stat->FCSErrorCnt;
*/
break;
case HostCmd_RET_802_3_STAT:
p3Stat = (PHostCmd_DS_802_3_GET_STAT)pRetPtr;
Adapter->XmitOK = p3Stat->XmitOK;
Adapter->RcvOK = p3Stat->RcvOK;
Adapter->XmitError = p3Stat->XmitError;
Adapter->RcvError = p3Stat->RcvError;
Adapter->RcvNoBuffer = p3Stat->RcvNoBuffer;
Adapter->RcvCRCError = p3Stat->RcvCRCError;
break;
case HostCmd_RET_802_11_PS_MODE:
DBGPRINT(DBG_NEWPS,("PS command response \n"));
UpdatePowerSaveState( Adapter, Adapter->CurCmd, 0);
break;
case HostCmd_RET_802_11_SCAN:
pScanResponse = (PHostCmd_DS_802_11_SCAN_RSP) pRetPtr;
/* dralee_0112, dummy //dralee
if( Adapter->ResourcesEvts & RSC_SCANNING )
{
Adapter->ResourcesEvts &= ~RSC_SCANNING;
if( Adapter->ResourcesEvts == 0 )
NdisMSendResourcesAvailable(Adapter->MrvDrvAdapterHdl);
}
*/
//if( Adapter->ResourceFlag )
//{
// NdisMSendResourcesAvailable(Adapter->MrvDrvAdapterHdl);
// Adapter->ResourceFlag = 0;
//}
HandleScanResponse(pScanResponse, Adapter);
#ifdef AUTO_REASSOCIATION
DBGPRINT( DBG_MACEVENT, (" -> Got SCAN cmd return\n") ); //tt
if ( Adapter->CurCmd->PendingInfo == HostCmd_PENDING_ON_REASSOCIATION )
{
if ( Adapter->ReAssociationInProgress )
DoReAssociation( Adapter );
}
#endif //AUTO_REASSOCIATION
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("Got SCAN cmd return! :( \n")));
#endif
#ifdef DEBUG_PARA_ROAMING
#ifdef PARA_WPA_1X
if(!IsRoamingWantWZCWorkProperly()){//internal block added by zhangbing
#else
{//internal block added by zhangbing
#endif
UCHAR ucScanCmdEnd, ucScanCmdStart;
if(priv.bAutoRoamingInProcess
|| priv.bManualRoamingInProcess
|| priv.bWlanSmartDetectionInProcess
|| priv.bWlanAllDetectionInProcess
|| priv.bOID_BSSID_LIST_SCAN)
{
ucScanCmdEnd = ( (Adapter->CurCmd->Pad[2] & MRVDRV_SCAN_CMD_END) ? 1 : 0 );
ucScanCmdStart = ( (Adapter->CurCmd->Pad[2] & MRVDRV_SCAN_CMD_START) ? 1 : 0 );
if ( ucScanCmdEnd == 1)
{
if(priv.bOID_BSSID_LIST_SCAN)
{
priv.bOID_BSSID_LIST_SCAN = FALSE;
}
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT(" Scan Finished! :) \n")));
#endif
SetEvent(priv.hScanFinishedEvent);
}
else
{
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT(" SCAN is still in progress, skip this\n")));
#endif
break;
}
}
}
#endif
break;
#ifdef DEBUG_PARA_ROAMING
case HostCmd_RET_802_11_AUTHENTICATE:
if(priv.bAutoRoamingInProcess || priv.bManualRoamingInProcess)
{
priv.bAuthenticated = TRUE;
SetEvent(priv.hAuthFinishedEvent);
}
break;
#endif
case HostCmd_RET_802_11_ASSOCIATE:
case HostCmd_RET_802_11_REASSOCIATE:
pAssoResult = (PHostCmd_DS_802_11_ASSOCIATE_RESULT)
(Adapter->CurCmd->BufVirtualAddr);
#ifdef AUTO_REASSOCIATION
DBGPRINT( DBG_MACEVENT, ("CmdRet - (Re)Associate [CmdCode: %x, Result: %x]\n",
pAssoResult->Command, pAssoResult->Result) );
#endif
HandleAssocReassoc(pAssoResult, Adapter);
break;
case HostCmd_RET_802_11_AD_HOC_JOIN:
case HostCmd_RET_802_11_AD_HOC_START:
pAdHocResult = (PHostCmd_DS_802_11_AD_HOC_RESULT)
(Adapter->CurCmd->BufVirtualAddr);
HandleAdHocJoinStart(pAdHocResult, Ret, Adapter);
break;
case HostCmd_RET_802_11_DISASSOCIATE:
#ifdef AUTO_REASSOCIATION
DBGPRINT( DBG_MACEVENT, ("CmdRet - DisAssociate\n") );
#endif
case HostCmd_RET_802_11_DEAUTHENTICATE:
#ifdef AUTO_REASSOCIATION
if ( Ret == HostCmd_RET_802_11_DEAUTHENTICATE )
{
PHostCmd_DS_802_11_DEAUTHENTICATE_RESULT pRetDeauth = (PHostCmd_DS_802_11_DEAUTHENTICATE_RESULT) pRetPtr;
DBGPRINT( DBG_MACEVENT, ("CmdRet - DeAuthenticate [AuthStatus: %x, Result: %x]\n",
pRetDeauth->AuthStatus, pRetDeauth->Result) );
}
#endif
// tt ++ v5 firmware
if ( Adapter->CurCmd->PendingInfo != HostCmd_PENDING_ON_SET_OID )
{
#ifdef DEBUG_PARA_ROAMING
#ifdef PARA_WPA_1X
if((!priv.bAutoRoamingInProcess)&&(!priv.bManualRoamingInProcess)||IsRoamingWantWZCWorkProperly())
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -