📄 hwacproc.c
字号:
#else
if((!priv.bAutoRoamingInProcess)&&(!priv.bManualRoamingInProcess))
#endif
{
#endif
V5DbgMsg( (L"** before ResetDisconnectStatus\n") );
ResetDisconnectStatus(Adapter);
V5DbgMsg( (L"** after ResetDisconnectStatus\n") );
#ifdef PARA_WPA_1X
SendNotifyToRoaming_wx(DEAUTHENTICATE_EVENT_WX,0,0,2);//zzh added 2006-08-2
#endif
#ifdef DEBUG_PARA_ROAMING
}
#endif
}
#ifdef DEBUG_PARA_ROAMING
#ifdef PARA_WPA_1X
if(!IsRoamingWantWZCWorkProperly()){
#endif
if(priv.bAutoRoamingInProcess || priv.bManualRoamingInProcess)
{
//Adapter->MediaConnectStatus = NdisMediaStateDisconnected;
ParaResetDisconnectStatus(Adapter);
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("NdisMediaStateDisconnected is caused by HostCmd_RET_802_11_DISASSOCIATE!...\n")));
#endif
SetEvent(priv.hDeauthFinishedEvent);
}
#ifdef PARA_WPA_1X
}
#endif
#endif
// tt --
/* tt
V5DbgMsg( (L"** before ResetDisconnectStatus\n") );
ResetDisconnectStatus(Adapter);
V5DbgMsg( (L"** after ResetDisconnectStatus\n") );
*/
break;
#ifndef MRVL_RFCHANNEL
case HostCmd_RET_802_11_RF_CHANNEL:
pRF = (PHostCmd_DS_802_11_RF_CHANNEL)pRetPtr;
if (pRF)
{
Adapter->Channel = pRF->CurentChannel;
}
DBGPRINT(DBG_OID,("RETURN - HostCmd_RET_802_11_RF_CHANNEL, Adapter->Channel=0x%x ****\n",Adapter->Channel));
break;
#endif
case HostCmd_RET_802_11_ENABLE_QOS_WME:
HandleEnableQosWmeCommand(
(PHostCmd_CMD_QOS_WME_ENABLE_STATE)pRetPtr, Adapter);
break;
case HostCmd_RET_802_11_WME_AC_PARAMS:
HandleWmeACParamsCommand(
(PHostCmd_CMD_QOS_WME_ACCESS_CATEGORY_PARAMETERS)pRetPtr,
Adapter);
break;
case HostCmd_RET_802_11_GRP_KEY:
#ifdef PARA_WPA_1X
SendNotifyToRoaming_wx(INSTALL_GTK_SUCCESS_EVENT_WX,0,0,3);//zzh added 2006-08-2
#endif
break;
case HostCmd_RET_MAC_REG_ACCESS:
case HostCmd_RET_BBP_REG_ACCESS:
case HostCmd_RET_RF_REG_ACCESS:
{
if(*((USHORT *)pRetPtr +4) == HostCmd_ACT_GEN_READ)
{
if((Ret == HostCmd_RET_BBP_REG_ACCESS) || (Ret == HostCmd_RET_RF_REG_ACCESS))
{
#ifdef MRVL_GUI_INTERFACE
MrvlNotifyApplication(
COMMAND_EVENT_READ_REG_DONE,
(UCHAR *)((USHORT *)pRetPtr +6),
1);
#endif //MRVL_GUI_INTERFACE
}
else
{
#ifdef MRVL_GUI_INTERFACE
MrvlNotifyApplication(
COMMAND_EVENT_READ_REG_DONE,
(UCHAR *)((USHORT *)pRetPtr +6),
4);
#endif //MRVL_GUI_INTERFACE
}
}
#ifdef EVALBOARD_REV4_FIX
if ( pRetPtr->Command == HostCmd_RET_RF_REG_ACCESS )
{
HandleRFRegAccess((PHostCmd_DS_CMD_RF_REG_ACCESS)pRetPtr, Adapter);
}
#endif // #ifdef EVALBOARD_REV4_FIX
}
break;
case HostCmd_RET_802_11_HOST_SLEEP_CFG:
{
#ifdef HOST_SLEEP_PS
Adapter->HostPowerState = HTWK_STATE_SLEEP;
#else //#ifndef HOST_SLEEP_PS
PHostCmd_DS_HOST_SLEEP pHostWakeup;
pHostWakeup= (PHostCmd_DS_HOST_SLEEP)pRetPtr;
Adapter->bHostWakeupDevRequired = TRUE; //valid in PS mode only
DBGPRINT(DBG_HOSTSLEEP, ("Host Wake Up Cfg cmd resp 0x8043 Command= 0x%04X received\n",pHostWakeup->Command));
#endif
}
break;
case HostCmd_RET_802_11_HOST_SLEEP_AWAKE_CONFIRM:
DBGPRINT(DBG_HOSTSLEEP, ("[Marvell]HostCmd_RET_802_11_HOST_SLEEP_AWAKE_CONFIRM:Host Awake Confirm cmd resp 0x8044=0x%04X received. Adapter->bPowerUpDevice=%d\n",pRetPtr->Command,Adapter->bPowerUpDevice));
#ifdef HOST_SLEEP_PS
if( Adapter->bPowerUpDevice)
{
///UCHAR regValue;
// RETAILMSG(1,(TEXT("Clear Pwr on bit\n\r")));
DBGPRINT(DBG_MACEVENT|DBG_HOSTSLEEP, ("[Marvell]HostCmd_RET_802_11_HOST_SLEEP_AWAKE_CONFIRM:Clear Pwr Up bit: Adapter->bPowerUpDevice\n"));
Adapter->bPowerUpDevice=0;
#ifdef SDIO
{
UCHAR regValue;
regValue = 0x0; //Configuration: Host Offset: 0x03 Write Bit1=1
If_WriteRegister(Adapter,
//SD_IO_WRITE,
1,
HCR_HOST_CONFIGURATION_REGISTER, //0x03
FALSE,
®Value, // reg
1);
}
#endif
#ifdef CONFIG_WLAN_PMU
wlan_PMUGetHostSleepConfirmResp();
#endif
//SPI
sbi_exit_deep_sleep_clean();
RETAILMSG(1,(TEXT("Reciver HostCmd_RET_802_11_HOST_SLEEP_CFG Clear Pwr on bit\n\r")));
}
#endif
break;
case HostCmd_RET_802_11_BAND_CONFIG:
pBandConf = (PHostCmd_DS_802_11_BAND_CONFIG)pRetPtr;
DBGPRINT(DBG_CMDRESP,("*** pBandConf->BandSelection %d\n",pBandConf->BandSelection));
DBGPRINT(DBG_CMDRESP,("*** pBandConf->Command %x\n",pBandConf->Command));
DBGPRINT(DBG_CMDRESP,("*** pBandConf->Channel %d\n",pBandConf->Channel));
break;
case HostCmd_RET_802_11_QUERY_TRAFFIC:
case HostCmd_RET_MAC_CONTROL:
case HostCmd_RET_MAC_MULTICAST_ADR:
case HostCmd_RET_802_11_SNMP_MIB:
case HostCmd_RET_802_11_SET_WEP:
break;
#ifdef DEEP_SLEEP
case HostCmd_RET_802_11_DEEP_SLEEP:
{
#ifdef CONFIG_WLAN_PMU
wlan_PMUGetEnterDeepSleepResp();
#endif
}
break;
#endif
case HostCmd_RET_802_11_FW_WAKE_METHOD:
case HostCmd_RET_802_11_INACTIVITY_TIMEOUT:
case HostCmd_RET_802_11_SLEEP_PARAMS:
#ifdef WMM_UAPSD
case HostCmd_RET_802_11_SLEEP_PERIOD:
#endif
break;
case HostCmd_RET_MAC_ADDRESS:
{
PHostCmd_DS_CMD_MAC_ADDRESS pCmd;
if ( priv.bGetMacAddr)
{
pCmd = (PHostCmd_DS_CMD_MAC_ADDRESS)pRetPtr;
NdisMoveMemory(priv.MacAddr,
pCmd->MacAddress,
MRVDRV_ETH_ADDR_LEN);
RETAILMSG(1,(TEXT("*** HostCmd_RET_MAC_ADDRESS: %2x %2x %2x %2x %2x %2x ***\n"),
priv.MacAddr[0],
priv.MacAddr[1],
priv.MacAddr[2],
priv.MacAddr[3],
priv.MacAddr[4],
priv.MacAddr[5]));
SetEvent(priv.hGetMacAddrFinishedEvent);
}
}
break;
default:
break;
}
#ifdef HOST_SLEEP_PS
if( Adapter->psState == PS_STATE_SLEEP && Adapter->bPSConfirm== FALSE)
{
PSConfirmSleep(Adapter);
#ifdef CONFIG_WLAN_PMU
wlan_PMUSleepConfirmed();
#endif
//MrvPrintFile("\nPS_confirmed at cmdfsh");
}
#endif
/*
#ifdef HOST_SLEEP_PS
if ( Adapter->psState == PS_STATE_SLEEP && Adapter->bPSConfirm==FALSE &&
(Adapter->HostPowerState == HTWK_STATE_FULL_POWER || Adapter->HostPowerState == HTWK_STATE_SLEEP) )
PSConfirmSleep(Adapter);
#endif
*/
//
// Check pending OID or command
//
if ( Adapter->CurCmd->PendingInfo == HostCmd_PENDING_ON_CMD )
HandleHostPendCommand(Ret,Adapter,pRetPtr);
else if ( Adapter->CurCmd->PendingInfo == HostCmd_PENDING_ON_GET_OID )
HandleHostPendGetOid(Ret,Adapter,pRetPtr);
else if ( Adapter->CurCmd->PendingInfo == HostCmd_PENDING_ON_SET_OID )
HandleHostPendSetOid(Ret,Adapter);
ReturnCmdNode(Adapter, Adapter->CurCmd);
Adapter->CurCmd = NULL;
GetCmdFromQueueToExecute (Adapter);
//RETAILMSG(1,(TEXT("[Marvell]-HandleCommandFinishedEvent")));
return NDIS_STATUS_SUCCESS;
}
/******************************************************************************
*
* Name: HandleHardwareSpec()
*
* Description: Handle hardware spec command
*
* Arguments: PHostCmd_DS_802_11_SCAN_RSP pRetPtr
* PMRVDRV_ADAPTER Adapter
*
*
* Return Value:
*
* Notes:
*
*****************************************************************************/
VOID
HandleHardwareSpec(
PHostCmd_DS_GET_HW_SPEC pHWSpec,
PMRVDRV_ADAPTER Adapter
)
{
ULONG i;
UCHAR TempBuf[4];
UCHAR ucA, ucB, ucC, ucP;
#ifdef INTERFACE20
// check if the interface number is correct
if ( pHWSpec->HWIfVersion != 2 )
{
DBGPRINT(DBG_ERROR, ("Fatal error: HW interface version mismatch! \n"));
DBGPRINT(DBG_ERROR, ("Expected version 2, got %d\n", pHWSpec->HWIfVersion));
ASSERT(FALSE);
}
#endif // #ifdef INTERFACE20
HexDump(DBG_ALLEN, "HostCmd_DS_GET_HW_SPEC: ", (UCHAR *)pHWSpec, sizeof(HostCmd_DS_GET_HW_SPEC));
Adapter->HardwareStatus = NdisHardwareStatusReady;
// permanent address should only be set once at start up
//dralee 081005, V4
if ( Adapter->PermanentAddr[0] == 0xff )
{
// permanent address has not been set yet, set it
NdisMoveMemory(
(PVOID)Adapter->PermanentAddr,
(PVOID)pHWSpec->PermanentAddr,
MRVDRV_ETH_ADDR_LEN);
DBGPRINT(DBG_CMDRESP | DBG_LOAD|DBG_ALLEN,("*** PermanentAddr %02x.%02x.%02x.%02x.%02x.%02x ***\n",
Adapter->PermanentAddr[0],
Adapter->PermanentAddr[1],
Adapter->PermanentAddr[2],
Adapter->PermanentAddr[3],
Adapter->PermanentAddr[4],
Adapter->PermanentAddr[5]
));
}
NdisMoveMemory(
&(Adapter->FWReleaseNumber),
&(pHWSpec->FWReleaseNumber),
4);
ucA = (UCHAR)((Adapter->FWReleaseNumber >> 16) & 0xff);
ucB = (UCHAR)((Adapter->FWReleaseNumber >> 8 ) & 0xff);
ucC = (UCHAR)((Adapter->FWReleaseNumber ) & 0xff);
ucP = (UCHAR)((Adapter->FWReleaseNumber >> 24) & 0xff);
DBGPRINT(DBG_ALL,("*** FW Release number (0x%x) %d.%d.%d.%d ***\n",
Adapter->FWReleaseNumber, ucA, ucB, ucC, ucP));
#ifdef UNDER_CE
{ // Add FW version to registry
REG_VALUE_DESCR Vals[2];
wchar_t buf[50];
swprintf(buf, TEXT("%d.%d.%d.%d"), ucA, ucB, ucC, ucP);
Vals[0].val_data = (PBYTE)buf;
Vals[0].val_name = TEXT("FWVersion");
Vals[0].val_type = REG_SZ;
Vals[1].val_name = NULL;
#ifdef SDIO
//AddKeyValues (TEXT("Comm\\EAGLEND5SDIO"), Vals);
//lykao, 053005
#ifdef MRV_CHIP_8385H
AddKeyValues (TEXT("Comm\\SD8385H"), Vals); // SD8385H
#elif defined(MRV_CHIP_8399)
AddKeyValues (TEXT("Comm\\SD8399"), Vals); // SD8399
#elif defined(MRV_CHIP_8385PN)
AddKeyValues (TEXT("Comm\\SD8385PN"), Vals); // SD8385PN
#elif defined(MRV_CHIP_8381PN)
AddKeyValues (TEXT("Comm\\SD8381PN"), Vals); // SD8381PN
#elif defined(MRV_CHIP_8686PN) //dralee_1209
AddKeyValues (TEXT("Comm\\SD8686PN"), Vals); // SD8385PN
#else
AddKeyValues (TEXT("Comm\\EAGLEND5SDIO"), Vals); // SD8305
#endif // MRV_CHIP_8385H
#elif defined (IF_SPI)
#ifdef MRV_CHIP_8385H
AddKeyValues (TEXT("Comm\\GSPI8385H"), Vals); // SD8385H
#elif defined(MRV_CHIP_8399)
AddKeyValues (TEXT("Comm\\GSPI8399"), Vals); // SD8399
#elif defined(MRV_CHIP_8385PN)
AddKeyValues (TEXT("Comm\\GSPI8385PN"), Vals); // SD8385PN
#elif defined(MRV_CHIP_8381PN)
AddKeyValues (TEXT("Comm\\GSPI8381PN"), Vals); // SD8381PN
#elif defined(MRV_CHIP_8686PN) //dralee_1209
AddKeyValues (TEXT("Comm\\GSPI8686PN"), Vals); // SD8385PN
#else
AddKeyValues (TEXT("Comm\\EAGLEND5SDIO"), Vals); // SD8305
#endif // MRV_CHIP_8385H
#else
#ifdef MRV_CHIP_8385H
AddKeyValues (TEXT("Comm\\CF8385H"), Vals); // CF8385H
#elif defined(MRV_CHIP_8385PN)
AddKeyValues (TEXT("Comm\\CF8385PN"), Vals); // CF8385PN
#elif defined(MRV_CHIP_8381PN)
AddKeyValues (TEXT("Comm\\CF8381PN"), Vals); // CF8381PN
#elif defined(MRV_CHIP_8381P)
AddKeyValues (TEXT(
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -