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

📄 oidproc.c

📁 marvell wifi driver CF-8385PN-NDIS-ARM4-WINCE50-5.24.17.p5-27.p11.src.zip
💻 C
📖 第 1 页 / 共 5 页
字号:
			*BytesNeeded = MRVDRV_ETH_ADDR_LEN;
			return NDIS_STATUS_INVALID_LENGTH;
		}
		else
		{
			MoveSource = (PVOID)Adapter->CurrentBSSID;
			MoveBytes = MRVDRV_ETH_ADDR_LEN;
		}
		break;

	case OID_802_11_SSID:
		
		DBGPRINT(DBG_OID,("REQUEST - OID_802_11_SSID ****\n"));
		/*		
              if (Adapter->MediaConnectStatus == NdisMediaStateDisconnected)
	       {	 	
	       	MoveBytes = 0;
              }
		else
		*/
		{
			if ( InformationBufferLength < sizeof(NDIS_802_11_SSID))
			{
				*BytesNeeded = sizeof(NDIS_802_11_SSID);
				return NDIS_STATUS_INVALID_LENGTH;
			}		

			if ( NdisEqualMemory( &(Adapter->CurrentSSID), 
						            &(Adapter->NullSSID), 
							     sizeof(NDIS_802_11_SSID)))
			{
				MoveBytes = 0;
            			DBGPRINT(DBG_OID,("Current SSID is null!\n"));
			}
			else
			{		
            			DBGPRINT(DBG_OID,("Current SSID is %s\n", Adapter->CurrentSSID.Ssid));
				MoveSource = (PVOID)&Adapter->CurrentSSID;
				MoveBytes = sizeof(NDIS_802_11_SSID);
            			// HexDump(DBG_OID, "CurrentSSID: ", (PUCHAR)&Adapter->CurrentSSID,
            			//         				 sizeof(NDIS_802_11_SSID));
			}
		}	
		break;

	case OID_802_11_POWER_MODE:
		
		DBGPRINT(DBG_OID | DBG_SP,("REQUEST - OID_802_11_POWER_MODE ****\n"));
		if( InformationBufferLength < sizeof(NDIS_802_11_POWER_MODE) )
		{
			*BytesNeeded = sizeof(NDIS_802_11_POWER_MODE);
			return NDIS_STATUS_INVALID_LENGTH;
		}		
		MoveSource = (PVOID)&Adapter->PSMode;
		MoveBytes = sizeof(NDIS_802_11_POWER_MODE);	 
		break;

	case OID_802_11_RSSI:

		DBGPRINT(DBG_OID,("REQUEST - OID_802_11_RSSI (%d)****\n", 
                           Adapter->LastRSSI));

		if( InformationBufferLength < sizeof(NDIS_802_11_RSSI) )
		{
			*BytesNeeded = sizeof(NDIS_802_11_RSSI);
			return NDIS_STATUS_INVALID_LENGTH;
		}
        
        	GenericLONG = Adapter->LastRSSI;
		MoveSource = (PVOID) (&GenericLONG);
		MoveBytes = sizeof(GenericLONG);

		break;

	case OID_802_11_RSSI_TRIGGER:

		//DBGPRINT(DBG_OID,("REQUEST - OID_802_11_RSSI_TRIGGER ****\n"));
		if( InformationBufferLength < sizeof(NDIS_802_11_RSSI) )
		{
			*BytesNeeded = sizeof(NDIS_802_11_RSSI);
			return NDIS_STATUS_INVALID_LENGTH;
		}		
		GenericLONG = Adapter->RSSITriggerValue;
		MoveSource = (PVOID) (&GenericLONG);
		MoveBytes = sizeof(GenericLONG);
		break;

	case OID_802_11_INFRASTRUCTURE_MODE:

		//DBGPRINT(DBG_OID,("REQUEST - OID_802_11_INFRASTRUCTURE_MODE ****\n"));

		if( InformationBufferLength < sizeof(NDIS_802_11_NETWORK_INFRASTRUCTURE) )
		{	
			*BytesNeeded = sizeof(NDIS_802_11_NETWORK_INFRASTRUCTURE);
			return NDIS_STATUS_INVALID_LENGTH;
		}

		if (Adapter->ulCurrentBSSIDIndex < MRVDRV_MAX_BSSID_LIST)
		{
			GenericULONG = Adapter->InfrastructureMode;
		}

		break;

	case OID_802_11_FRAGMENTATION_THRESHOLD:

		if( InformationBufferLength < sizeof(NDIS_802_11_FRAGMENTATION_THRESHOLD) )
		{
			*BytesNeeded = sizeof(NDIS_802_11_FRAGMENTATION_THRESHOLD);
			return NDIS_STATUS_INVALID_LENGTH;
		}		 
		Status = PrepareAndSendCommand(
						Adapter,
						HostCmd_CMD_802_11_SNMP_MIB,
						0,
						HostCmd_OPTION_USE_INT,
						Oid,
						HostCmd_PENDING_ON_GET_OID,
						0,
						FALSE,
						BytesWritten,
						NULL,
						BytesNeeded,
						InformationBuffer); 
		
		if (Status == NDIS_STATUS_FAILURE || Status == NDIS_STATUS_RESOURCES)
			return NDIS_STATUS_FAILURE;
		else
			Status = NDIS_STATUS_PENDING;	
		break;
		
	case OID_802_11_RTS_THRESHOLD:

		if( InformationBufferLength < sizeof(NDIS_802_11_RTS_THRESHOLD) )
		{
			*BytesNeeded = sizeof(NDIS_802_11_RTS_THRESHOLD);
			return NDIS_STATUS_INVALID_LENGTH;
		}	
		Status = PrepareAndSendCommand(
						Adapter,
						HostCmd_CMD_802_11_SNMP_MIB,
						0,
						HostCmd_OPTION_USE_INT,
						Oid,
						HostCmd_PENDING_ON_GET_OID,
						0,
						FALSE,
						BytesWritten,
						NULL,
						BytesNeeded,
						InformationBuffer);
		
		if (Status == NDIS_STATUS_FAILURE || Status == NDIS_STATUS_RESOURCES)
			return NDIS_STATUS_FAILURE;
		else
			Status = NDIS_STATUS_PENDING;		
	
		break;							
		
	case OID_802_11_CONFIGURATION:

		//DBGPRINT(DBG_OID,("REQUEST - OID_802_11_CONFIGURATION ****\n"));
		if ( InformationBufferLength < sizeof(NDIS_802_11_CONFIGURATION) )
		{	
			*BytesNeeded = sizeof(NDIS_802_11_CONFIGURATION);
			return NDIS_STATUS_INVALID_LENGTH;
		}		
		
		MoveSource = (PVOID)&(Adapter->CurrentConfiguration);
		MoveBytes = sizeof(NDIS_802_11_CONFIGURATION);
		break;

	case OID_802_11_SUPPORTED_RATES:

		DBGPRINT(DBG_OID,("REQUEST - OID_802_11_SUPPORTED_RATES ****\n"));
		
        	if( InformationBufferLength < MRVDRV_NUM_SUPPORTED_RATES )
        	{
			*BytesNeeded = MRVDRV_NUM_SUPPORTED_RATES;
			return NDIS_STATUS_INVALID_LENGTH;
		}		
       	MoveSource = (PVOID)MrvDrvSupportedRates;
        	MoveBytes = MRVDRV_NUM_SUPPORTED_RATES;
		
		break;

	case OID_802_11_DESIRED_RATES:

        	DBGPRINT(DBG_OID,("REQUEST - OID_802_11_DESIRED_RATES ****\n"));

		if( InformationBufferLength < 8 )
        	{
			*BytesNeeded = 8;
			return NDIS_STATUS_INVALID_LENGTH;
		}		
		Status = PrepareAndSendCommand(
						Adapter,
						HostCmd_CMD_802_11_DATA_RATE,
						HostCmd_ACT_GET,
						HostCmd_OPTION_USE_INT,
						Oid,
						HostCmd_PENDING_ON_GET_OID,
						0,
						FALSE,
						BytesWritten,
						NULL,
						BytesNeeded,
						InformationBuffer); 
		
		if (Status == NDIS_STATUS_FAILURE || Status == NDIS_STATUS_RESOURCES)
			return NDIS_STATUS_FAILURE;
		else
			Status = NDIS_STATUS_PENDING;	

		*BytesWritten=8;	

		break;

	case OID_802_11_STATISTICS:

		//DBGPRINT(DBG_OID,("REQUEST - OID_802_11_STATISTICS ****\n"));
		if ( InformationBufferLength < sizeof(NDIS_802_11_STATISTICS) )
		{
			*BytesNeeded = sizeof(NDIS_802_11_STATISTICS);
			return NDIS_STATUS_INVALID_LENGTH;
		}
		//      If we use timer to handle statistics update , we just report 
		//      current statistics, otherwise, we need to send command and 
		//      return NDIS_STATUS_PENDING
		//      We can also call NdisMoveMemory() to hadnle it
		MoveSource = (PVOID)InformationBuffer;

		pn11Stat = (PNDIS_802_11_STATISTICS)InformationBuffer;
		pn11Stat->Length = sizeof(NDIS_802_11_STATISTICS);

		pn11Stat->TransmittedFragmentCount.LowPart = 
			Adapter->TransmittedFragmentCount.LowPart;
		pn11Stat->TransmittedFragmentCount.HighPart = 
			Adapter->TransmittedFragmentCount.HighPart;

		pn11Stat->MulticastTransmittedFrameCount.LowPart = 
			Adapter->MulticastTransmittedFrameCount.LowPart;
		pn11Stat->MulticastTransmittedFrameCount.HighPart = 
			Adapter->MulticastTransmittedFrameCount.HighPart;

		pn11Stat->FailedCount.LowPart = 
			Adapter->FailedCount.LowPart;
		pn11Stat->FailedCount.HighPart = 
			Adapter->FailedCount.HighPart;

		pn11Stat->RetryCount.LowPart = 
			Adapter->RetryCount.LowPart;
		pn11Stat->RetryCount.HighPart = 
			Adapter->RetryCount.HighPart;

		pn11Stat->MultipleRetryCount.LowPart = 
			Adapter->MultipleRetryCount.LowPart;
		pn11Stat->MultipleRetryCount.HighPart = 
			Adapter->MultipleRetryCount.HighPart;

		pn11Stat->RTSSuccessCount.LowPart = 
			Adapter->RTSSuccessCount.LowPart;
		pn11Stat->RTSSuccessCount.HighPart = 
			Adapter->RTSSuccessCount.HighPart;

		pn11Stat->RTSFailureCount.LowPart = 
			Adapter->RTSFailureCount.LowPart;
		pn11Stat->RTSFailureCount.HighPart = 
			Adapter->RTSFailureCount.HighPart;

		pn11Stat->ACKFailureCount.LowPart = 
			Adapter->ACKFailureCount.LowPart;
		pn11Stat->ACKFailureCount.HighPart = 
			Adapter->ACKFailureCount.HighPart;

		pn11Stat->FrameDuplicateCount.LowPart = 
			Adapter->FrameDuplicateCount.LowPart;
		pn11Stat->FrameDuplicateCount.HighPart = 
			Adapter->FrameDuplicateCount.HighPart;

		pn11Stat->ReceivedFragmentCount.LowPart = 
			Adapter->ReceivedFragmentCount.LowPart;
		pn11Stat->ReceivedFragmentCount.HighPart = 
			Adapter->ReceivedFragmentCount.HighPart;

		pn11Stat->MulticastReceivedFrameCount.LowPart = 
			Adapter->MulticastReceivedFrameCount.LowPart;
		pn11Stat->MulticastReceivedFrameCount.HighPart = 
			Adapter->MulticastReceivedFrameCount.HighPart;

		pn11Stat->FCSErrorCount.LowPart = 
			Adapter->FCSErrorCount.LowPart;
		pn11Stat->FCSErrorCount.HighPart = 
			Adapter->FCSErrorCount.HighPart;

		*BytesWritten = sizeof(NDIS_802_11_STATISTICS);

		break;

	case OID_802_11_BSSID_LIST:
		
    	{
		DBGPRINT(DBG_OID, ("OID_802_11_BSSID_LIST\n"));

///		RETAILMSG(1, (TEXT("OID_802_11_BSSID_LIST \r\n")));	

              // Check the buffer size
			  
		if (InformationBufferLength < Adapter->ListBufferLen)
        	{			    
			*BytesWritten = 0;
			*BytesNeeded = Adapter->ListBufferLen;
            		DBGPRINT(DBG_OID, ("OID_802_11_BSSID_LIST: Need %d bytes\n", Adapter->ListBufferLen));
///			RETAILMSG(1, (TEXT("OID_802_11_BSSID_LIST: Need %d bytes  \r\n"),Adapter->ListBufferLen));		
            		return NDIS_STATUS_INVALID_LENGTH;
		}

///             	RETAILMSG(1, (TEXT("ListBufferLen = %d   \r\n"), Adapter->ListBufferLen));	
		
		// Copy the cached BSSID list			    
		if ( Adapter->ListBufferLen == 0)
		{
			*BytesWritten = 0;
			*BytesNeeded = Adapter->ListBufferLen;
		}
		else		
		{
		 	NdisMoveMemory( InformationBuffer, 
			   			      Adapter->ListBuffer,
						      Adapter->ListBufferLen);

			*BytesWritten = Adapter->ListBufferLen;
			*BytesNeeded = 0;
		}

		return NDIS_STATUS_SUCCESS;    

 
    	}
		
	case OID_802_11_AUTHENTICATION_MODE:

		DBGPRINT(DBG_OID,("REQUEST - OID_802_11_AUTHENTICATION_MODE - %d ****\n",
                          			Adapter->AuthenticationMode));
		
		if (InformationBufferLength < sizeof(NDIS_802_11_AUTHENTICATION_MODE))
		{	
			*BytesNeeded = sizeof(NDIS_802_11_AUTHENTICATION_MODE);
			return NDIS_STATUS_INVALID_LENGTH;
		}		
		
		GenericULONG = (ULONG)Adapter->AuthenticationMode;
		*BytesWritten = sizeof(NDIS_802_11_AUTHENTICATION_MODE);

		break;

	case OID_802_11_PRIVACY_FILTER:

		//DBGPRINT(DBG_OID,("REQUEST - OID_802_11_PRIVACY_FILTER ****\n"));
		if (InformationBufferLength < sizeof(NDIS_802_11_PRIVACY_FILTER))
		{	
			*BytesNeeded = sizeof(NDIS_802_11_PRIVACY_FILTER);
			return NDIS_STATUS_INVALID_LENGTH;
		}		
		
		GenericULONG = (ULONG)Adapter->PrivacyFilter;
		*BytesWritten = sizeof(NDIS_802_11_PRIVACY_FILTER);

		break;

#ifndef WPA // mutually exclusive with OID_802_11_ENCRYPTION_STATUS

	case OID_802_11_WEP_STATUS:

		//DBGPRINT(DBG_OID,("REQUEST - OID_802_11_WEP_STATUS ****\n"));
		if (InformationBufferLength < sizeof(NDIS_802_11_WEP_STATUS))
		{	
			*BytesNeeded = sizeof(NDIS_802_11_WEP_STATUS);
			return NDIS_STATUS_INVALID_LENGTH;
		}		
		GenericULONG = (ULONG)Adapter->WEPStatus;
		*BytesWritten = sizeof(NDIS_802_11_WEP_STATUS);
		break;
#endif 

	case OID_802_11_RX_ANTENNA_SELECTED: 
		
		DBGPRINT(DBG_OID,("REQUEST - OID_802_11_RX_ANTENNA_SELECTED ****\n"));
		if (InformationBufferLength < sizeof(NDIS_802_11_ANTENNA))
		{
			*BytesNeeded = sizeof(NDIS_802_11_ANTENNA);
			return NDIS_STATUS_INVALID_LENGTH;
		}	 
		Status = PrepareAndSendCommand(
						Adapter,
						HostCmd_CMD_802_11_RF_ANTENNA,
						HostCmd_ACT_GET_RX,
						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_ANTENNA_SELECTED: 
		
		DBGPRINT(DBG_OID,("REQUEST - OID_802_11_TX_ANTENNA_SELECTED ****\n"));
		if (InformationBufferLength < sizeof(NDIS_802_11_ANTENNA))
		{
			*BytesNeeded = sizeof(NDIS_802_11_ANTENNA);
			return NDIS_STATUS_INVALID_LENGTH;
		} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -