📄 oidproc.c
字号:
Status = PrepareAndSendCommand(
Adapter,
HostCmd_CMD_802_11_RF_ANTENNA,
HostCmd_ACT_GET_TX,
HostCmd_OPTION_USE_INT,
Oid,
HostCmd_PENDING_ON_GET_OID,
0,
FALSE,
BytesWritten,
0,
BytesNeeded,
InformationBuffer);
if (Status == NDIS_STATUS_FAILURE || Status == NDIS_STATUS_RESOURCES)
return NDIS_STATUS_FAILURE;
else
Status = NDIS_STATUS_PENDING;
*BytesWritten=sizeof(NDIS_802_11_ANTENNA);
break;
case OID_802_11_TX_POWER_LEVEL:
DBGPRINT(DBG_OID,("REQUEST - OID_802_11_TX_POWER_LEVEL ****\n"));
if ( InformationBufferLength < sizeof(NDIS_802_11_TX_POWER_LEVEL) )
{
*BytesNeeded = sizeof(NDIS_802_11_TX_POWER_LEVEL);
return NDIS_STATUS_INVALID_LENGTH;
}
Status = PrepareAndSendCommand(
Adapter,
HostCmd_CMD_802_11_RF_TX_POWER,
HostCmd_ACT_TX_POWER_OPT_GET,
HostCmd_OPTION_USE_INT,
Oid,
HostCmd_PENDING_ON_GET_OID,
0,
FALSE,
BytesWritten,
0,
BytesNeeded,
InformationBuffer);
if (Status == NDIS_STATUS_FAILURE || Status == NDIS_STATUS_RESOURCES)
return NDIS_STATUS_FAILURE;
else
Status = NDIS_STATUS_PENDING;
*BytesWritten=sizeof(NDIS_802_11_TX_POWER_LEVEL);
break;
#ifdef WPA
case OID_802_11_ENCRYPTION_STATUS:
DBGPRINT(DBG_OID | DBG_WPA,
("REQUEST - OID_802_11_ENCRYPTION_STATUS - %d ****\n",
Adapter->EncryptionStatus));
if (InformationBufferLength < sizeof(NDIS_802_11_ENCRYPTION_STATUS))
{
*BytesNeeded = sizeof(NDIS_802_11_ENCRYPTION_STATUS);
return NDIS_STATUS_INVALID_LENGTH;
}
GenericULONG = (ULONG)Adapter->EncryptionStatus;
//GenericULONG = 4;
*BytesWritten = sizeof(NDIS_802_11_ENCRYPTION_STATUS);
break;
case OID_802_11_ASSOCIATION_INFORMATION:
{
PNDIS_802_11_ASSOCIATION_INFORMATION pAssoInfo;
DBGPRINT(DBG_OID | DBG_WPA ,
("REQUEST - OID_802_11_ASSOCIATION_INFORMATION ****\n"));
pAssoInfo = (PNDIS_802_11_ASSOCIATION_INFORMATION)
Adapter->AssocInfoBuffer;
// reponse IE is the the last part of the buffer
if ( InformationBufferLength < (pAssoInfo->OffsetResponseIEs +
pAssoInfo->ResponseIELength) )
{
*BytesNeeded = pAssoInfo->OffsetResponseIEs +
pAssoInfo->ResponseIELength;
return NDIS_STATUS_INVALID_LENGTH;
}
MoveSource = Adapter->AssocInfoBuffer;
MoveBytes = pAssoInfo->OffsetResponseIEs +
pAssoInfo->ResponseIELength;
DBGPRINT(DBG_WPA, ("OID_802_11_ASSOCIATiON_INFO move bytes = %d\n",
MoveBytes));
HexDump(DBG_CMDRESP,"AssocInfoBuffer: ", MoveSource,
MoveBytes);
}
break;
#endif
// WMI support
case OID_MRVL_OEM_GET_ULONG:
GenericULONG = 0;
break;
case OID_MRVL_OEM_SET_ULONG:
break;
case OID_MRVL_OEM_GET_STRING:
MoveSource = (PVOID)VendorDescriptor;
MoveBytes = sizeof(VendorDescriptor);
break;
case OID_MRVL_OEM_COMMAND:
DBGPRINT(DBG_OID, ("GET - OID_MRVL_OEM_COMMAND \n"));
*BytesWritten = InformationBufferLength;
Status = ProcessHostCommand(Adapter, (PUCHAR)InformationBuffer);
if (Status == NDIS_STATUS_SUCCESS)
return Status;
else
return PassHostCommand( Adapter,HostCmd_PENDING_ON_CMD, InformationBuffer, InformationBufferLength,
BytesWritten, BytesNeeded);
break;
case OID_MRVL_BBP_REG:
{
// request BBP reg access
if (InformationBufferLength < sizeof(OID_MRVL_DS_BBP_REGISTER_ACCESS))
{
*BytesNeeded = sizeof(OID_MRVL_DS_BBP_REGISTER_ACCESS);
return NDIS_STATUS_INVALID_LENGTH;
}
HexDump(DBG_OID,"OID_MRVL_BBP_REG(GET): ", (PUCHAR)InformationBuffer, InformationBufferLength);
Status = PrepareAndSendCommand(
Adapter,
HostCmd_CMD_BBP_REG_ACCESS,
HostCmd_ACT_GET,
HostCmd_OPTION_USE_INT,
Oid,
HostCmd_PENDING_ON_GET_OID,
0,
FALSE,
BytesWritten,
0,
BytesNeeded,
InformationBuffer);
if (Status == NDIS_STATUS_FAILURE || Status == NDIS_STATUS_RESOURCES)
return NDIS_STATUS_FAILURE;
else
Status = NDIS_STATUS_PENDING;
*BytesWritten=sizeof(OID_MRVL_DS_BBP_REGISTER_ACCESS);
}
break;
case OID_MRVL_MAC_REG:
// request MAC reg access
if ( InformationBufferLength < sizeof(OID_MRVL_DS_MAC_REGISTER_ACCESS) )
{
*BytesNeeded = sizeof(OID_MRVL_DS_MAC_REGISTER_ACCESS);
return NDIS_STATUS_INVALID_LENGTH;
}
Status = PrepareAndSendCommand(
Adapter,
HostCmd_CMD_MAC_REG_ACCESS,
HostCmd_ACT_GET,
HostCmd_OPTION_USE_INT,
Oid,
HostCmd_PENDING_ON_GET_OID,
0,
FALSE,
BytesWritten,
0,
BytesNeeded,
InformationBuffer);
if (Status == NDIS_STATUS_FAILURE || Status == NDIS_STATUS_RESOURCES)
return NDIS_STATUS_FAILURE;
else
Status = NDIS_STATUS_PENDING;
*BytesWritten=sizeof(OID_MRVL_DS_MAC_REGISTER_ACCESS);
break;
case OID_MRVL_RF_REG:
// request RF reg access
if (InformationBufferLength < sizeof(OID_MRVL_DS_RF_REGISTER_ACCESS))
{
*BytesNeeded = sizeof(OID_MRVL_DS_RF_REGISTER_ACCESS);
return NDIS_STATUS_INVALID_LENGTH;
}
Status = PrepareAndSendCommand(
Adapter,
HostCmd_CMD_RF_REG_ACCESS,
HostCmd_ACT_GET,
HostCmd_OPTION_USE_INT,
Oid,
HostCmd_PENDING_ON_GET_OID,
0,
FALSE,
BytesWritten,
0,
BytesNeeded,
InformationBuffer);
if (Status == NDIS_STATUS_FAILURE || Status == NDIS_STATUS_RESOURCES)
return NDIS_STATUS_FAILURE;
else
Status = NDIS_STATUS_PENDING;
*BytesWritten=sizeof(OID_MRVL_DS_RF_REGISTER_ACCESS);
break;
case OID_MRVL_EEPROM_ACCESS:
{
POID_MRVL_DS_EEPROM_ACCESS pData;
// request flash access
if ( InformationBufferLength < sizeof(OID_MRVL_DS_EEPROM_ACCESS) )
{
*BytesNeeded = sizeof(OID_MRVL_DS_EEPROM_ACCESS);
return NDIS_STATUS_INVALID_LENGTH;
}
pData = (POID_MRVL_DS_EEPROM_ACCESS)InformationBuffer;
if ( (pData->usDataLength + sizeof(OID_MRVL_DS_EEPROM_ACCESS)) >
InformationBufferLength )
{
*BytesNeeded = sizeof(OID_MRVL_DS_EEPROM_ACCESS) +
pData->usDataLength;
return NDIS_STATUS_INVALID_LENGTH;
}
Status = PrepareAndSendCommand(
Adapter,
HostCmd_CMD_EEPROM_ACCESS,
HostCmd_ACT_GET,
HostCmd_OPTION_USE_INT,
Oid,
HostCmd_PENDING_ON_GET_OID,
0,
FALSE,
BytesWritten,
0,
BytesNeeded,
InformationBuffer);
if (Status == NDIS_STATUS_FAILURE || Status == NDIS_STATUS_RESOURCES)
return NDIS_STATUS_FAILURE;
else
Status = NDIS_STATUS_PENDING;
*BytesWritten=sizeof(OID_MRVL_DS_RF_REGISTER_ACCESS);
}
break;
case OID_MRVL_RF_CHANNEL:
{
POID_MRVL_DS_RF_CHANNEL pChannelInfo;
// ULONG ulNewChannel,i;
// BOOLEAN bValidChannel;
// lykao, 012005
// UCHAR ucChannel;
if (InformationBufferLength < sizeof(OID_MRVL_DS_RF_CHANNEL))
{
*BytesNeeded = sizeof(OID_MRVL_DS_RF_CHANNEL);
return NDIS_STATUS_INVALID_LENGTH;
}
pChannelInfo = (POID_MRVL_DS_RF_CHANNEL)InformationBuffer;
#ifdef MRVL_RFCHANNEL
Status = PrepareAndSendCommand(
Adapter,
HostCmd_CMD_802_11_RF_CHANNEL,
HostCmd_ACT_GEN_GET,
HostCmd_OPTION_USE_INT,
0,
HostCmd_PENDING_ON_GET_OID,
0,
FALSE,
BytesWritten,
0,
BytesNeeded,
InformationBuffer);
if (Status == NDIS_STATUS_FAILURE || Status == NDIS_STATUS_RESOURCES)
return NDIS_STATUS_FAILURE;
else
{
DBGPRINT(DBG_OID, ("*****1 GET success - OID_MRVL_RF_CHANNEL\n"));
Status = NDIS_STATUS_PENDING;
}
#else
pChannelInfo->ulChannelNumber = Adapter->Channel;
pChannelInfo->Oid = OID_MRVL_RF_CHANNEL;
*BytesWritten = sizeof(OID_MRVL_DS_RF_CHANNEL);
#endif
}
break;
case OID_MRVL_REGION_CODE:
{
/*
#ifndef ENABLE_802_11D
// read the region code from EEPROM
if( InformationBufferLength < sizeof(OID_MRVL_DS_REGION_CODE) )
{
*BytesNeeded = sizeof(OID_MRVL_DS_REGION_CODE);
return NDIS_STATUS_INVALID_LENGTH;
}
Status = PrepareAndSendCommand(
Adapter,
HostCmd_CMD_REGION_CODE,
HostCmd_ACT_GET,
HostCmd_OPTION_USE_INT,
Oid,
HostCmd_PENDING_ON_GET_OID,
0,
FALSE,
BytesWritten,
0,
BytesNeeded,
InformationBuffer);
if (Status == NDIS_STATUS_FAILURE || Status == NDIS_STATUS_RESOURCES)
return NDIS_STATUS_FAILURE;
else
Status = NDIS_STATUS_PENDING;
#endif
*/
GenericULONG = (ULONG) Adapter->RegionCode;
MoveSource = (PVOID)(&GenericULONG);
MoveBytes = sizeof(GenericULONG);
break;
}
case OID_MRVL_MAC_ADDRESS:
// read the mac address from EEPROM
if ( InformationBufferLength < sizeof(OID_MRVL_DS_MAC_ADDRESS) )
{
*BytesNeeded = sizeof(OID_MRVL_DS_MAC_ADDRESS);
return NDIS_STATUS_INVALID_LENGTH;
}
Status = PrepareAndSendCommand(
Adapter,
HostCmd_CMD_MAC_ADDRESS,
HostCmd_ACT_GET,
HostCmd_OPTION_USE_INT,
Oid,
HostCmd_PENDING_ON_GET_OID,
0,
FALSE,
BytesWritten,
0,
BytesNeeded,
InformationBuffer);
if (Status == NDIS_STATUS_FAILURE || Status == NDIS_STATUS_RESOURCES)
return NDIS_STATUS_FAILURE;
else
Status = NDIS_STATUS_PENDING;
break;
/*
case OID_MRVL_L2ROAMING:
{
POID_MRVL_DS_L2ROAMING pL2Roaming;
if ( InformationBufferLength < sizeof(OID_MRVL_DS_L2ROAMING) )
{
*BytesNeeded = sizeof(OID_MRVL_DS_L2ROAMING);
return NDIS_STATUS_INVALID_LENGTH;
}
pL2Roaming = (POID_MRVL_DS_L2ROAMING)InformationBuffer;
*BytesWritten = sizeof(OID_MRVL_DS_RF_CHANNEL);
pL2Roaming->Delta = Adapter->RoamingDelta;
pL2Roaming->Mode = Adapter->RoamingMode;
pL2Roaming->Period = Adapter->RoamingPeriod;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -