📄 cmdsend.c
字号:
#ifdef CAL_DATA
case HostCmd_CMD_802_11_CAL_DATA_EXT:
//TT_CMDPARSE_SEND_CMD_VAR_LEN( HostCmd_DS_802_11_CAL_DATA_EXT, OID_MRVL_DS_CAL_DATA_EXT,
// Revision, CalDataLen,
// sizeof(OID_MRVL_DS_CAL_DATA_EXT)-sizeof(NDIS_OID)-1024 );
TT_CMDPARSE_SEND_CMD( HostCmd_DS_802_11_CAL_DATA_EXT, OID_MRVL_DS_CAL_DATA_EXT, Revision );
break;
case HostCmd_CMD_802_11_CAL_DATA:
TT_CMDPARSE_SEND_CMD( HostCmd_DS_802_11_CAL_DATA, OID_MRVL_DS_CAL_DATA, Reserved1[0] );
break;
#endif //CAL_DATA
case HostCmd_CMD_802_11_PWR_CFG:
TT_CMDPARSE_SEND_CMD( HostCmd_DS_802_11_PWR_CFG, OID_MRVL_DS_PWR_CFG, Enable );
break;
case HostCmd_CMD_802_11_TPC_CFG:
TT_CMDPARSE_SEND_CMD( HostCmd_DS_802_11_TPC_CFG, OID_MRVL_DS_TPC_CFG, Enable );
/* {
PHostCmd_DS_802_11_TPC_CFG pThisCmd;
POID_MRVL_DS_TPC_CFG pOid;
pThisCmd = (PHostCmd_DS_802_11_TPC_CFG) pCmdPtr;
Size = sizeof(HostCmd_DS_802_11_TPC_CFG);
pThisCmd->Action = CmdOption;
if ( CmdOption == HostCmd_ACT_GEN_SET )
{
pOid = (POID_MRVL_DS_TPC_CFG) InformationBuffer;
NdisMoveMemory(
(PUCHAR) &(pThisCmd->Enable),
(PUCHAR) &(pOid->Enable),
sizeof(OID_MRVL_DS_TPC_CFG) - sizeof(NDIS_OID) );
}
}
*/ break;
case HostCmd_CMD_802_11_RATE_ADAPT_RATESET:
TT_CMDPARSE_SEND_CMD( HostCmd_RATE_ADAPT_RATESET, OID_MRVL_DS_RATE_ADAPT_RATESET, EnableHwAuto );
/* {
PHostCmd_RATE_ADAPT_RATESET pRate;
POID_MRVL_DS_RATE_ADAPT_RATESET pOid;
pRate = (PHostCmd_RATE_ADAPT_RATESET) pCmdPtr;
Size = sizeof(HostCmd_RATE_ADAPT_RATESET);
pRate->Action = CmdOption;
if ( CmdOption == HostCmd_ACT_GEN_SET )
{
pOid = (POID_MRVL_DS_RATE_ADAPT_RATESET) InformationBuffer;
pRate->EnableHwAuto = pOid->EnableHwAuto;
pRate->Bitmap = pOid->Bitmap;
NKDbgPrintfW( L"-v5- Ready to send RATE_ADAPTION command\n" );
}
}
*/ break;
//tt --
case HostCmd_CMD_BCA_CONFIG:
{
PHostCmd_DS_CMD_BCA_CONFIGURATION pCmdBCAConfig;
pCmdBCAConfig = (PHostCmd_DS_CMD_BCA_CONFIGURATION)pCmdPtr;
Size = sizeof(HostCmd_DS_CMD_BCA_CONFIGURATION);
pCmdBCAConfig->Action = CmdOption;
if ( CmdOption == HostCmd_ACT_GEN_SET )
{
pCmdBCAConfig->Mode = (USHORT)Adapter->BTMode;
pCmdBCAConfig->AntennaConfig = (USHORT)Adapter->BTAntennaConfig;
pCmdBCAConfig->FreqConfig = (USHORT)Adapter->BTFrequencyConfig;
pCmdBCAConfig->TxPriorityLo = Adapter->BTWLANTxPriorityLo;
pCmdBCAConfig->TxPriorityHi = Adapter->BTWLANTxPriorityHi;
pCmdBCAConfig->RxPriorityLo = Adapter->BTWLANRxPriorityLo;
pCmdBCAConfig->RxPriorityHi = Adapter->BTWLANRxPriorityHi;
}
}
break;
#ifdef DEEP_SLEEP
case HostCmd_CMD_802_11_DEEP_SLEEP:
Size = sizeof(HostCmd_DS_802_11_DEEP_SLEEP);
break;
#endif
#ifdef HOST_SLEEP
case HostCmd_CMD_802_11_HOST_SLEEP_CFG:
{
PHostCmd_DS_HOST_SLEEP pCmdHostSleep;
POID_MRVL_DS_HOST_SLEEP_CFG pOIDHostSleep;
int len;
pOIDHostSleep = (POID_MRVL_DS_HOST_SLEEP_CFG)InformationBuffer;
pCmdHostSleep= (PHostCmd_DS_HOST_SLEEP)pCmdPtr;
//dralee_20060606
//Size = sizeof(HostCmd_DS_HOST_SLEEP);
//pCmdHostSleep->Size =sizeof(HostCmd_DS_HOST_SLEEP);
pCmdHostSleep->Criteria=pOIDHostSleep->ulCriteria;
pCmdHostSleep->GPIO=pOIDHostSleep->ucGPIO;
pCmdHostSleep->Gap=pOIDHostSleep->ucGap;
Size = sizeof(HostCmd_DS_HOST_SLEEP)-sizeof(HostCmd_DS_HOST_WAKEUP_FILTER);
//dralee_20060606
if( pCmdHostSleep->Criteria != -1 && pOIDHostSleep->Filter.Header.Type == Host_Sleep_Filter_Type)
{
//dralee_20060606
len = (pOIDHostSleep->Filter.Header.Len + sizeof(MrvlIEtypesHeader_t));
NdisMoveMemory( (UCHAR *)&pCmdHostSleep->Filter.Header.Type,
(UCHAR *)&pOIDHostSleep->Filter.Header.Type,
len );
Size = sizeof(HostCmd_DS_HOST_SLEEP)-sizeof(HostCmd_DS_HOST_WAKEUP_FILTER)+ len;
//RETAILMSG(1,(L"v8 hostsleepcfg cmd:%x,%x,%x,%x,%x,%x\n\r",
// pCmdHostSleep->Criteria,
// pCmdHostSleep->Filter.Header.Type,
// pOIDHostSleep->Filter.Header.Len,
// pOIDHostSleep->Filter.entry[0].AddressType,
// pOIDHostSleep->Filter.entry[0].EthType,
// pOIDHostSleep->Filter.entry[0].Ipv4Addr
// ));
}
// 36.p4 : Fix deep sleep +++
#ifdef IF_GSPI
if ( pCmdHostSleep->Criteria == 0xFFFFFFFF ) {
// wake up the device to leave sleep, when we set "hostsleepcfg ffffffff 1 80"
spi_ExitDeepSleep();
} else {
// At normal situation, we don't need to do spi_ResetDeepSleep here.
// Since it will be called when handling awake event.
// To This is to do fault torance, to make sure the status is corrent
spi_ResetDeepSleep();
}
#endif
// 36.p4 : Fix deep sleep ---
DBGPRINT(DBG_HOSTSLEEP, ("HostCmd_CMD_802_11_HOST_SLEEP_CFG:pCmdHostSleep->Criteria=0x%x\n,pCmdHostSleep->GPIO=0x%x\n,pCmdHostSleep->Gap =0x%x,pCmdHostSleep->Size =0x%x\n", pCmdHostSleep->Criteria ,pCmdHostSleep->GPIO,pCmdHostSleep->Gap,pCmdHostSleep->Size));
//RETAILMSG(1, (L"HostCmd_CMD_802_11_HOST_SLEEP_CFG:pCmdHostSleep->Criteria=0x%x\n,pCmdHostSleep->GPIO=0x%x\n,pCmdHostSleep->Gap =0x%x,pCmdHostSleep->Size =0x%x\n", pCmdHostSleep->Criteria ,pCmdHostSleep->GPIO,pCmdHostSleep->Gap,pCmdHostSleep->Size));
}
break;
case HostCmd_CMD_802_11_HOST_SLEEP_AWAKE_CONFIRM:
Size = sizeof( HostCmd_DS_WAKEUP_CONFIRM);
break;
#endif
case HostCmd_CMD_802_11_SLEEP_PARAMS:
{
PHostCmd_DS_802_11_SLEEP_PARAMS pCmdSleepParams;
POID_MRVL_DS_SLEEP_PARAMS pOIDSleep_Params;
pCmdSleepParams= (PHostCmd_DS_802_11_SLEEP_PARAMS)pCmdPtr;
Size = sizeof(HostCmd_DS_802_11_SLEEP_PARAMS);
if(CmdOption ==HostCmd_ACT_SET)
{
pOIDSleep_Params = (POID_MRVL_DS_SLEEP_PARAMS)InformationBuffer;
pCmdSleepParams->Action=HostCmd_ACT_SET;
pCmdSleepParams->Error=pOIDSleep_Params->Error;
pCmdSleepParams->Offset=pOIDSleep_Params->Offset;
pCmdSleepParams->StableTime=pOIDSleep_Params->StableTime;
pCmdSleepParams->CalControl=pOIDSleep_Params->CalControl;
pCmdSleepParams->ExternalSleepClk=pOIDSleep_Params->ExternalSleepClk;
pCmdSleepParams->Reserved=pOIDSleep_Params->Reserved;
DBGPRINT(DBG_OID|DBG_DEBUGUSE, ("Set HostCmd_CMD_802_11_SLEEP_PARAMS:Size=%d\n, pCmdSleepParams->Error=%d\n,pCmdSleepParams->Offset=%d\n,pCmdHostWakeup->Gap =%d\n,pCmdSleepParams->CalControl=%d\n,pCmdSleepParams->ExternalSleepClk=%d\n,pCmdSleepParams->Reserved=%d\n",Size, pCmdSleepParams->Error ,pCmdSleepParams->Offset,pCmdSleepParams->StableTime,pCmdSleepParams->CalControl,pCmdSleepParams->ExternalSleepClk,pCmdSleepParams->Reserved));
}else if(CmdOption ==HostCmd_ACT_GET)
{
pCmdSleepParams->Action=HostCmd_ACT_GET;
}
}
break;
#if 0 //tt ++ v5 firmware
case HostCmd_CMD_802_11_LED_CONTROL:
{
PHostCmd_DS_CMD_802_11_LED_CONTROL pCmdLEDControl;
POID_MRVL_DS_LED_CONTROL pOIDLEDControl;
if ( InformationBuffer == NULL )
{
DBGPRINT(DBG_ERROR, ("HostCmd_CMD_802_11_LED_CONTROL: "
"InformationBuffer is NULL!\n"));
break;
}
pOIDLEDControl = (POID_MRVL_DS_LED_CONTROL)InformationBuffer;
pCmdLEDControl = (PHostCmd_DS_CMD_802_11_LED_CONTROL)pCmdPtr;
Size = sizeof(HostCmd_DS_CMD_802_11_LED_CONTROL);
pCmdLEDControl->DutyCycle = pOIDLEDControl->DutyCycle;
pCmdLEDControl->GpioNum = pOIDLEDControl->GpioNum;
pCmdLEDControl->LedCycle = pOIDLEDControl->LedCycle;
}
break;
#endif //0 //tt -- v5 firmware
case HostCmd_CMD_802_11_MULTIPLE_DTIM:
{
POID_MRVL_DS_MULTIPLE_DTIM pOIDMultipleDtim;
PHostCmd_DS_CMD_802_11_MULTIPLE_DTIM pCmdMultipleDtim;
pCmdMultipleDtim = (PHostCmd_DS_CMD_802_11_MULTIPLE_DTIM)pCmdPtr;
Size = sizeof(HostCmd_DS_CMD_802_11_MULTIPLE_DTIM);
#ifdef MRVL_USE_MULTIPLE_DTIM
if (CmdOption ==HostCmd_ACT_SET)
{
pOIDMultipleDtim = (POID_MRVL_DS_MULTIPLE_DTIM)InformationBuffer;
if (Adapter->DTIMFlag==TRUE)
{ //execute initproc.c: MrvDrvInitialize
//set DTIMNum initial value
Adapter->DTIMFlag=FALSE;
pCmdMultipleDtim->DtimNum =(USHORT)Adapter->DTIMNum;
} else {
//execute OID_MRVL_MULTIPLE_DTIM
pCmdMultipleDtim->DtimNum =(USHORT)pOIDMultipleDtim->DtimNum;
Adapter->DTIMNum=pCmdMultipleDtim->DtimNum;
}
pCmdMultipleDtim->Size=sizeof(HostCmd_DS_CMD_802_11_MULTIPLE_DTIM);//(USHORT)0xe;
pCmdMultipleDtim->Action=(USHORT)HostCmd_ACT_SET;
DBGPRINT(DBG_OID, ("***** 1 PrepareAndSendCommand:HostCmd_CMD_802_11_MULTIPLE_DTIM pCmdMultipleDtim->DTIMNum=%d\n",pCmdMultipleDtim->DtimNum));
DBGPRINT(DBG_OID, ("1 PrepareAndSendCommand:HostCmd_CMD_802_11_MULTIPLE_DTIM: CmdOption=0x%x, size=0x%x,pCmdMultipleDtim->Size=0x%x\n ", CmdOption,Size,pCmdMultipleDtim->Size ));
//DBGPRINT(DBG_OID, ("HostCmd_CMD_802_11_MULTIPLE_DTIM:pCmdMultipleDtim->Command=0x%x\n,pCmdMultipleDtim->Size=0x%x\n,pCmdMultipleDtim->SeqNum=0x%x\n,pCmdMultipleDtim->Result=0x%x\n,pCmdMultipleDtim->Action=0x%x\n,pCmdMultipleDtim->PowerMode=0x%x\n,pCmdMultipleDtim->DtimNum=0x%x\n", pCmdMultipleDtim->Command,pCmdMultipleDtim->Size,pCmdMultipleDtim->SeqNum,pCmdMultipleDtim->Result,pCmdMultipleDtim->Action,pCmdMultipleDtim->PowerMode,pCmdMultipleDtim->DtimNum));
}
#else
pOIDMultipleDtim = (POID_MRVL_DS_MULTIPLE_DTIM)InformationBuffer;
pCmdMultipleDtim->DtimNum = pOIDMultipleDtim->DtimNum;
#endif
}
break;
#ifdef WPA
case HostCmd_CMD_802_11_ENABLE_RSN:
{
// Adapter->EnableWPA contains whether
// wpa should be enabled or disabled
PHostCmd_DS_802_11_ENABLE_RSN pEnableRSNDS;
pEnableRSNDS = (PHostCmd_DS_802_11_ENABLE_RSN)pCmdPtr;
if ( Adapter->WPAEnabled == TRUE )
{
// enable WPA
pEnableRSNDS->Enable = HostCmd_ENABLE_RSN;
}
else
{
// disable WPA
pEnableRSNDS->Enable = HostCmd_DISABLE_RSN;
}
Size = sizeof(HostCmd_DS_802_11_ENABLE_RSN);
pEnableRSNDS->Action = CmdOption;
}
break;
case HostCmd_CMD_802_11_CONFIG_RSN:
break;
case HostCmd_CMD_802_11_MCAST_CIPHER:
{
PHostCmd_DS_802_11_MCAST_CIPHER pMcastCiper;
ULONG ulMcastCipher;
pMcastCiper = (PHostCmd_DS_802_11_MCAST_CIPHER)pCmdPtr;
pMcastCiper->Action = CmdOption;
Size = pMcastCiper->Size = sizeof(HostCmd_DS_802_11_MCAST_CIPHER);
if( Adapter->EncryptionStatus == Ndis802_11Encryption2KeyAbsent)
{
DBGPRINT(DBG_CMDRESP, ("Set MCAST_CIPHER to WPA-PSK\n"));
// TKIP
//ulMcastCipher = 0x0050F202;
ulMcastCipher = 0x02F25000;
}
else
{
// unrecognized RSN suite
DBGPRINT(DBG_WARNING, ("WARNING: Unrecognized WPA encryption status: %d\n",
Adapter->EncryptionStatus));
return NDIS_STATUS_FAILURE;
}
// copy the authentication suite
NdisMoveMemory( pMcastCiper->McastCipher, &ulMcastCipher,
sizeof(ulMcastCipher));
}
break;
case HostCmd_CMD_802_11_UNICAST_CIPHER:
{
PHostCmd_DS_802_11_UNICAST_CIPHER pUnicastCiper;
ULONG ulUnicastCipher;
pUnicastCiper = (PHostCmd_DS_802_11_UNICAST_CIPHER)pCmdPtr;
pUnicastCiper->Action = CmdOption;
Size = pUnicastCiper->Size = sizeof(HostCmd_DS_802_11_UNICAST_CIPHER);
if( Adapter->EncryptionStatus == Ndis802_11Encryption2KeyAbsent)
{
DBGPRINT(DBG_CMDRESP, ("Set UNICAST_CIPHER to WPA-PSK\n"));
// TKIP
//ulUnicastCipher = 0x0050F202;
ulUnicastCipher = 0x02F25000;
}
else
{
// unrecognized RSN suite
DBGPRINT(DBG_WARNING, ("WARNING: Unrecognized WPA encryption status: %d\n",
Adapter->EncryptionStatus));
return NDIS_STATUS_FAILURE;
}
// copy the authentication suite
NdisMoveMemory( pUnicastCiper->UnicastCipher, &ulUnicastCipher,
sizeof(ulUnicastCipher));
}
break;
case HostCmd_CMD_802_11_RSN_AUTH_SUITES:
{
PHostCmd_DS_802_11_RSN_AUTH_SUITES pAuth;
ULONG ulAuthSuite;
pAuth = (PHostCmd_DS_802_11_RSN_AUTH_SUITES)pCmdPtr;
pAuth->Action = CmdOption;
Size = pAuth->Size = sizeof(HostCmd_DS_802_11_RSN_AUTH_SUITES);
if ( Adapter->AuthenticationMode == Ndis802_11AuthModeWPAPSK )
{
DBGPRINT(DBG_CMDRESP, ("Set RSN authentication Suites to WPA-PSK\n"));
// PSK
ulAuthSuite = 0x02F25000;
}
else if (Adapter->AuthenticationMode == Ndis802_11AuthModeWPA )
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -