⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 oidproc.c

📁 marvell wifi driver CF-8385PN-NDIS-ARM4-WINCE50-5.24.17.p5-27.p11.src.zip
💻 C
📖 第 1 页 / 共 5 页
字号:
		
		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 + -