📄 cmdsend.c
字号:
if (((i %16) == 0) && i)
AllenDBGPRINT(1, ("\n"));
}
AllenDBGPRINT(1, ("\n"));
}
*/
}
break;
case HostCmd_CMD_802_11_HOST_SLEEP_AWAKE_CONFIRM:
{
DBGPRINT(DBG_HOSTWAKEUP, ("HostCmd_CMD_802_11_HOST_SLEEP_AWAKE_CONFIRM\n"));
Size = sizeof( HostCmd_DS_WAKEUP_CONFIRM);
}
break;
#endif
#ifdef MRVL_SLEEPPARAMS
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;
///AllenDBGPRINT(DBG_OID, ("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;
#endif
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 )
{
DBGPRINT(DBG_CMDRESP, ("Set RSN authentication Suites to WPA\n"));
// 802.1X - RADIUS
ulAuthSuite = 0x01F25000;
}
else
{
// unrecognized RSN suite
DBGPRINT(DBG_WARNING, ("WARNING: Unrecognized WPA authentication mode: %d\n",
Adapter->AuthenticationMode));
return NDIS_STATUS_FAILURE;
}
// copy the authentication suite
NdisMoveMemory( pAuth->AuthSuites, &ulAuthSuite, sizeof(ulAuthSuite));
break;
}
case HostCmd_CMD_802_11_PWK_KEY:
{
// caller of the command needs to set Adapter->pLastAddedPWK
// prior to calling
PHostCmd_DS_802_11_PWK_KEY pCmdPwk;
PMRVL_NDIS_WPA_KEY pKey;
UCHAR ucTmp;
PNDIS_802_11_KEY pNdisKey;
pNdisKey = (PNDIS_802_11_KEY)InformationBuffer;
pCmdPwk = (PHostCmd_DS_802_11_PWK_KEY)pCmdPtr;
pCmdPwk->Action = CmdOption;
Size = pCmdPwk->Size = sizeof(HostCmd_DS_802_11_PWK_KEY);
#ifdef ADHOCAES
if (CmdOption == HostCmd_ACT_SET_AES)
{
/*UCHAR temp[16];
AsciiToHex(temp, (UCHAR *)InformationBuffer+sizeof(ULONG), 16);
NdisMoveMemory(pCmdPwk->TkipEncryptKey, temp, 16);
*/
NdisMoveMemory(pCmdPwk->TkipEncryptKey, (UCHAR *)InformationBuffer+sizeof(ULONG), 16);
break;
}
if (CmdOption == HostCmd_ACT_GET_AES || CmdOption == HostCmd_ACT_REMOVE_AES)
{
break;
}
#endif
if ( CmdOption == HostCmd_ACT_GET )
{
// done, no more work for query
break;
}
pKey = (PMRVL_NDIS_WPA_KEY)pNdisKey->KeyMaterial;
// TODO: Check authentication mode for WPANone
// check bit 28 of the TKIP key, MIC keys are 8 byte long
ucTmp = pKey->EncryptionKey[3];
if ( 0xdf & ucTmp )
{
// WPA - authenticator
// MICKey1 is RX, MICKey2 is TX
NdisMoveMemory(pCmdPwk->TkipRxMicKey, pKey->MICKey1, 8);
NdisMoveMemory(pCmdPwk->TkipTxMicKey, pKey->MICKey2, 8);
}
else
{
// MICKey1 is TX, MICKey2 is RX
NdisMoveMemory(pCmdPwk->TkipRxMicKey, pKey->MICKey2, 8);
NdisMoveMemory(pCmdPwk->TkipTxMicKey, pKey->MICKey1, 8);
}
// TKIP key is 16 bytes long
NdisMoveMemory(pCmdPwk->TkipEncryptKey, pKey->EncryptionKey, 16);
DBGPRINT(DBG_WPA, ("HostCmd_CMD_802_11_PWK_KEY: \n"));
DBGPRINT(DBG_WPA, ("\tTKIP Key: 0x2%x 0x2%x 0x2%x 0x2%x 0x2%x "
"0x2%x 0x2%x 0x2%x - 0x2%x 0x2%x 0x2%x 0x2%x 0x2%x 0x2%x "
"0x2%x 0x2%x\n",
pCmdPwk->TkipEncryptKey[0],
pCmdPwk->TkipEncryptKey[1],
pCmdPwk->TkipEncryptKey[2],
pCmdPwk->TkipEncryptKey[3],
pCmdPwk->TkipEncryptKey[4],
pCmdPwk->TkipEncryptKey[5],
pCmdPwk->TkipEncryptKey[6],
pCmdPwk->TkipEncryptKey[7],
pCmdPwk->TkipEncryptKey[8],
pCmdPwk->TkipEncryptKey[9],
pCmdPwk->TkipEncryptKey[10],
pCmdPwk->TkipEncryptKey[11],
pCmdPwk->TkipEncryptKey[12],
pCmdPwk->TkipEncryptKey[13],
pCmdPwk->TkipEncryptKey[14],
pCmdPwk->TkipEncryptKey[15]));
DBGPRINT(DBG_WPA, ("\tTX MIC Key: 0x2%x 0x2%x 0x2%x 0x2%x "
"0x2%x 0x2%x 0x2%x 0x2%x\n",
pCmdPwk->TkipTxMicKey[0],
pCmdPwk->TkipTxMicKey[1],
pCmdPwk->TkipTxMicKey[2],
pCmdPwk->TkipTxMicKey[3],
pCmdPwk->TkipTxMicKey[4],
pCmdPwk->TkipTxMicKey[5],
pCmdPwk->TkipTxMicKey[6],
pCmdPwk->TkipTxMicKey[7]));
DBGPRINT(DBG_WPA, ("\tRX MIC Key: 0x2%x 0x2%x 0x2%x 0x2%x "
"0x2%x 0x2%x 0x2%x 0x2%x\n",
pCmdPwk->TkipRxMicKey[0],
pCmdPwk->TkipRxMicKey[1],
pCmdPwk->TkipRxMicKey[2],
pCmdPwk->TkipRxMicKey[3],
pCmdPwk->TkipRxMicKey[4],
pCmdPwk->TkipRxMicKey[5],
pCmdPwk->TkipRxMicKey[6],
pCmdPwk->TkipRxMicKey[7]));
break;
}
case HostCmd_CMD_802_11_GRP_KEY:
{
// TODO: This is almost the same as handling PWK command, merge
// them later
// caller of the command needs to set Adapter->pLastAddedPWK
// prior to calling
PHostCmd_DS_802_11_GRP_KEY pCmdPwk;
PMRVL_NDIS_WPA_KEY pKey;
UCHAR ucTmp;
PNDIS_802_11_KEY pNdisKey;
pNdisKey = (PNDIS_802_11_KEY)InformationBuffer;
pCmdPwk = (PHostCmd_DS_802_11_GRP_KEY)pCmdPtr;
pCmdPwk->Action = CmdOption;
Size = pCmdPwk->Size = sizeof(HostCmd_DS_802_11_GRP_KEY);
if ( CmdOption == HostCmd_ACT_GET )
{
// done, no more work for query
break;
}
pKey = (PMRVL_NDIS_WPA_KEY)pNdisKey->KeyMaterial;
// TODO: Check authentication mode for WPANone
// check bit 28 of the TKIP key, MIC keys are 8 byte long
ucTmp = pKey->EncryptionKey[3];
if ( 0xdf & ucTmp )
{
// WPA - authenticator
// MICKey1 is RX, MICKey2 is TX
NdisMoveMemory(pCmdPwk->TkipRxMicKey, pKey->MICKey1, 8);
NdisMoveMemory(pCmdPwk->TkipTxMicKey, pKey->MICKey2, 8);
}
else
{
// MICKey1 is TX, MICKey2 is RX
NdisMoveMemory(pCmdPwk->TkipRxMicKey, pKey->MICKey2, 8);
NdisMoveMemory(pCmdPwk->TkipTxMicKey, pKey->MICKey1, 8);
}
// TKIP key is 16 bytes long
NdisMoveMemory(pCmdPwk->TkipEncryptKey, pKey->EncryptionKey, 16);
DBGPRINT(DBG_WPA, ("HostCmd_CMD_802_11_GRP_KEY: \n"));
DBGPRINT(DBG_WPA, ("\tTKIP Key: 0x2%x 0x2%x 0x2%x 0x2%x 0x2%x "
"0x2%x 0x2%x 0x2%x - 0x2%x 0x2%x 0x2%x 0x2%x 0x2%x 0x2%x "
"0x2%x 0x2%x\n",
pCmdPwk->TkipEncryptKey[0],
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -