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

📄 oidproc.c

📁 marvell8385 GSPI开发驱动
💻 C
📖 第 1 页 / 共 5 页
字号:

        break;

    case OID_PNP_CAPABILITIES:
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_PNP_CAPABILITIES ****\n")));
#endif
        DBGPRINT(DBG_POWER,("OID_PNP_CAPABILITIES\n"));

 //       return NDIS_STATUS_NOT_SUPPORTED;

/*
#ifdef UNDER_CE
*/                    
        PMCap.WakeUpCapabilities.MinMagicPacketWakeUp   = NdisDeviceStateUnspecified;
        PMCap.WakeUpCapabilities.MinPatternWakeUp       = NdisDeviceStateUnspecified;
        PMCap.WakeUpCapabilities.MinLinkChangeWakeUp    = NdisDeviceStateUnspecified;

/*
#else    
        // PNP support for XP is broken, return NDIS_STATUS_NOT_SUPPORTED for now
        return NDIS_STATUS_NOT_SUPPORTED;
#endif 
*/
        MoveSource = (PVOID) &PMCap;
        MoveBytes = sizeof(NDIS_PNP_CAPABILITIES);

        break;

    case OID_PNP_QUERY_POWER:
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_PNP_QUERY_POWER ****\n")));
#endif
        DBGPRINT(DBG_POWER,("OID_PNP_QUERY_POWER\n"));

        //return NDIS_STATUS_NOT_SUPPORTED;

        NewPowerState = (NDIS_DEVICE_POWER_STATE)*(PNDIS_DEVICE_POWER_STATE)InformationBuffer;

        if ( NewPowerState == NdisDeviceStateUnspecified )
        {
            DBGPRINT(DBG_POWER,("Requested power state: NdisDeviceStateUnspecified\n"));
        }
        else if ( NewPowerState == NdisDeviceStateD0 )
        {
            DBGPRINT(DBG_POWER,("Requested power state: NdisDeviceStateD0\n"));
        }
        else if ( NewPowerState == NdisDeviceStateD1  )
        {
            DBGPRINT(DBG_POWER,("Requested power state: NdisDeviceStateD1\n"));
        }
        else if ( NewPowerState == NdisDeviceStateD2 )
        {
            DBGPRINT(DBG_POWER,("Requested power state: NdisDeviceStateD2\n"));
        }
        else if ( NewPowerState == NdisDeviceStateD3 )
        {
            DBGPRINT(DBG_POWER,("Requested power state: NdisDeviceStateD3\n"));
        }
        else
        {
            DBGPRINT(DBG_POWER,("UNKNOWN POWER STATE REQUESTED %x\n", NewPowerState));
        }

    //      Determine if Station can suuport this state
    if( ( NewPowerState == NdisDeviceStateD0 ) || ( NewPowerState == NdisDeviceStateD3 ) )
    {
            DBGPRINT(DBG_POWER,("REQUESTED POWER STATE SUPPORTED!\n"));
      return NDIS_STATUS_SUCCESS;
    }
    else //         We don't know hot to handle NdisDeviceStateD2 yet
    {
            DBGPRINT(DBG_POWER,("REQUESTED POWER STATE NOT SUPPORTED %x\n",NewPowerState ));
      return NDIS_STATUS_NOT_SUPPORTED;
    }
        break;

#ifndef WHQL_FIX
  case OID_PNP_WAKE_UP_PATTERN_LIST:
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_PNP_WAKE_UP_PATTERN_LIST ****\n")));
#endif
        DBGPRINT(DBG_POWER | DBG_ALLEN,("REQUESTED POWER STATE NOT SUPPORTED %x\n",NewPowerState ));
      return NDIS_STATUS_NOT_SUPPORTED;
    break;
#endif

  case OID_GEN_PHYSICAL_MEDIUM:
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_GEN_PHYSICAL_MEDIUM ****\n")));
#endif
    GenericULONG = (ULONG)NdisPhysicalMediumWirelessLan;
    break;

    case OID_802_11_NETWORK_TYPES_SUPPORTED:
        {
            NDIS_802_11_NETWORK_TYPE_LIST *pNetworkTypeList;
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_802_11_NETWORK_TYPES_SUPPORTED ****\n")));
#endif
            DBGPRINT(DBG_OID, ("Requst - OID_802_11_NETWORK_TYPES_SUPPORTED ****\n"));
            
            if( InformationBufferLength < sizeof(NDIS_802_11_NETWORK_TYPE_LIST) )
            {
          *BytesNeeded = sizeof(NDIS_802_11_NETWORK_TYPE_LIST);
          return NDIS_STATUS_INVALID_LENGTH;
            }

            // only 1 item
            pNetworkTypeList = (NDIS_802_11_NETWORK_TYPE_LIST *)InformationBuffer;
            pNetworkTypeList->NumberOfItems = 1;
            pNetworkTypeList->NetworkType[0] = Ndis802_11DS;

    *BytesWritten = sizeof(NDIS_802_11_NETWORK_TYPE_LIST);
    return NDIS_STATUS_SUCCESS;
/* tt
            MoveBytes = sizeof(NDIS_802_11_NETWORK_TYPE_LIST);
*/
        }
        break;

  case OID_802_11_NETWORK_TYPE_IN_USE:
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_802_11_NETWORK_TYPE_IN_USE ****\n")));
#endif
    //DBGPRINT(DBG_OID,("REQUEST - OID_802_11_NETWORK_TYPE_IN_USE ****\n"));
    if( InformationBufferLength < sizeof(NDIS_802_11_NETWORK_TYPE) ){
      *BytesNeeded = sizeof(NDIS_802_11_NETWORK_TYPE);
      return NDIS_STATUS_INVALID_LENGTH;
    }     
    GenericULONG = (ULONG)Ndis802_11DS;
    break;

  case OID_802_11_BSSID:
    
    //DBGPRINT(DBG_OID,("REQUEST - OID_802_11_BSSID ****\n"));
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_802_11_BSSID ****\n")));
#endif
    // if the CurrentBSSID is a NULL string
    if ( NdisEqualMemory(Adapter->CurrentBSSID, 
               Adapter->NullBSSID, 
               MRVDRV_ETH_ADDR_LEN) )
    {
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - CurrentBSSID = NULL ****\n")));
#endif
      Status = NDIS_STATUS_ADAPTER_NOT_READY;
    }
    else if( InformationBufferLength < MRVDRV_ETH_ADDR_LEN )
    {
      
      *BytesNeeded = MRVDRV_ETH_ADDR_LEN;
      return NDIS_STATUS_INVALID_LENGTH;
    }
    else if(Adapter->MediaConnectStatus == NdisMediaStateDisconnected)
    {
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - CurrentBSSID = NULL ****\n")));
#endif
      Status = NDIS_STATUS_ADAPTER_NOT_READY;
    }
    else{
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - CurrentBSSID = %2x:%2x:%2x:%2x:%2x:%2x ****\n"),
			Adapter->CurrentBSSID[0],
			Adapter->CurrentBSSID[1],
			Adapter->CurrentBSSID[2],
			Adapter->CurrentBSSID[3],
			Adapter->CurrentBSSID[4],
			Adapter->CurrentBSSID[5]));
#endif
      MoveSource = (PVOID)Adapter->CurrentBSSID;
      MoveBytes = MRVDRV_ETH_ADDR_LEN;
    }
    break;

  case OID_802_11_SSID:
    
    DBGPRINT(DBG_OID,("REQUEST - OID_802_11_SSID ****\n"));
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_802_11_SSID ****\n")));
#endif
    if( InformationBufferLength < sizeof(NDIS_802_11_SSID))
    {
      *BytesNeeded = sizeof(NDIS_802_11_SSID);
      return NDIS_STATUS_INVALID_LENGTH;
    }   

	if(Adapter->MediaConnectStatus == NdisMediaStateDisconnected)
	{
      	MoveBytes = 0;
        DBGPRINT(DBG_OID,("Current SSID is null!\n"));
	}
    else 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,length = %d\n", Adapter->CurrentSSID.Ssid,Adapter->CurrentSSID.SsidLength));
      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:
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_802_11_POWER_MODE ****\n")));
#endif    
    DBGPRINT(DBG_OID,("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:
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_802_11_RSSI ****\n")));
#endif 
    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;
	
	if(Adapter->MediaConnectStatus == NdisMediaStateDisconnected)
	{
		GenericLONG = MRVL_DEFAULT_INITIAL_RSSI;
	}
	RETAILMSG(1,(TEXT("REQUEST - OID_802_11_RSSI (%d)****\n"),GenericLONG));
    MoveSource = (PVOID) (&GenericLONG);
    MoveBytes = sizeof(GenericLONG);

     //NKDbgPrintfW(L"[Marvell]Query+OID_802_11_RSSI= %d", (LONG)GenericLONG);  

    break;

  case OID_PARA_GET_RSSI:
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_PARA_GET_RSSI ****\n")));
#endif 
    DBGPRINT(DBG_OID,("REQUEST - OID_PARA_GET_RSSI (%d)****\n", 
                           Adapter->LastRSSI));

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

		if(Adapter->MediaConnectStatus == NdisMediaStateDisconnected)
		{
			Adapter->LastRSSI = MRVL_DEFAULT_INITIAL_RSSI;
		}
		else
		{    
	    // update RSSI value
	    PrepareAndSendCommand(
	        Adapter,
	        HostCmd_CMD_802_11_RSSI,
	        0,
	        HostCmd_OPTION_USE_INT,
	        (NDIS_OID)0,
	        HostCmd_PENDING_ON_NONE,
	        0, 
	        FALSE, 
	        NULL, 
	        NULL, 
	        NULL, 
	        NULL);    
	    
	    Sleep(1000);//wait for refresh Adapter->LastRSSI
  	}
  	
    GenericLONG = Adapter->LastRSSI;

	RETAILMSG(1,(TEXT("REQUEST - OID_802_11_RSSI (%d)****\n"),GenericLONG));
    MoveSource = (PVOID) (&GenericLONG);
    MoveBytes = sizeof(GenericLONG);

     //NKDbgPrintfW(L"[Marvell]Query+OID_802_11_RSSI= %d", (LONG)GenericLONG);  

    break;

  case OID_802_11_RSSI_TRIGGER:
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_802_11_RSSI_TRIGGER ****\n")));
#endif 
    //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"));
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_802_11_INFRASTRUCTURE_MODE ****\n")));
#endif 
    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->BSSIDList[Adapter->ulCurrentBSSIDIndex].InfrastructureMode);
    }
    break;

  case OID_802_11_FRAGMENTATION_THRESHOLD:
  {
 #ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_802_11_FRAGMENTATION_THRESHOLD ****\n")));
#endif 
    DBGPRINT(DBG_OID,("REQUEST - OID_802_11_FRAGMENTATION_THRESHOLD ****\n"));

    TT_CMDPARSE_SYNC_STD_OID_QUERY_AND_RETURN( 
      sizeof(NDIS_802_11_FRAGMENTATION_THRESHOLD), 
      HostCmd_CMD_802_11_SNMP_MIB, 
      HostCmd_ACT_GET );
  }
/* tt
    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 Status;
    else
      Status = NDIS_STATUS_PENDING; 
    break;
*/

  case OID_802_11_RTS_THRESHOLD:
  {
 #ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_802_11_RTS_THRESHOLD ****\n")));
#endif 
    DBGPRINT(DBG_OID,("REQUEST - OID_802_11_RTS_THRESHOLD ****\n"));

    TT_CMDPARSE_SYNC_STD_OID_QUERY_AND_RETURN( 
      sizeof(NDIS_802_11_RTS_THRESHOLD), 
      HostCmd_CMD_802_11_SNMP_MIB, 
      HostCmd_ACT_GET );
  }

/* tt
    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 Status;
    else
      Status = NDIS_STATUS_PENDING;   
  
    break;              
*/
  
  case OID_802_11_CONFIGURATION:
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_802_11_CONFIGURATION ****\n")));
#endif 
  DBGPRINT(DBG_OID,("REQUEST - OID_802_11_CONFIGURATION ****\n"));
  
    if( InformationBufferLength < sizeof(NDIS_802_11_CONFIGURATION) )
    {

⌨️ 快捷键说明

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