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

📄 oidproc.c

📁 marvell8385 GSPI开发驱动
💻 C
📖 第 1 页 / 共 5 页
字号:
	case OID_GEN_TRANSMIT_QUEUE_LENGTH:
	ParaPrintFile("\n[OID->QUERY]: OID_GEN_TRANSMIT_QUEUE_LENGTH\n");
	break;

	case OID_802_3_RCV_ERROR_ALIGNMENT:
	ParaPrintFile("\n[OID->QUERY]: OID_802_3_RCV_ERROR_ALIGNMENT\n");
	break;

	case OID_802_3_XMIT_ONE_COLLISION:
	ParaPrintFile("\n[OID->QUERY]: OID_802_3_XMIT_ONE_COLLISION\n");
	break;

	case OID_802_3_XMIT_MORE_COLLISIONS:
	ParaPrintFile("\n[OID->QUERY]: OID_802_3_XMIT_MORE_COLLISIONS\n");
	break;

#ifdef MRVL_GUI_INTERFACE
	case OID_MRVL_OEM_GET_ULONG:
	ParaPrintFile("\n[OID->QUERY]: OID_MRVL_OEM_GET_ULONG\n");
	break;

	case OID_MRVL_OEM_GET_STRING:
	ParaPrintFile("\n[OID->QUERY]: OID_MRVL_OEM_GET_STRING\n");
	break;

	case OID_MRVL_OEM_COMMAND:
	ParaPrintFile("\n[OID->QUERY]: OID_MRVL_OEM_COMMAND\n");
	break;
	
	case OID_MRVL_RADIO_PREAMBLE:
	ParaPrintFile("\n[OID->QUERY]: OID_MRVL_RADIO_PREAMBLE\n");
	break;

	case OID_MRVL_CHIP_VERSION:
	ParaPrintFile("\n[OID->QUERY]: OID_MRVL_CHIP_VERSION\n");
	break;
#endif // MRVL_GUI_INTERFACE

	default:
	ParaPrintFile("\n[OID->QUERY]: OID_UNKNOWN (= %x )!!!\n",Oid);
	break;
}  
#endif


    // Switch on request type
    switch (Oid)
    {

//tt ++ v5 firmware
  case OID_MRVL_LED_CONTROL:
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_MRVL_LED_CONTROL ****\n")));
#endif
    TT_CMDPARSE_SYNC_OID( HostCmd_CMD_802_11_LED_CONTROL, OID_MRVL_LED_CONTROL, 
      sizeof(OID_MRVL_DS_LED_CONTROL), HostCmd_ACT_GET, HostCmd_PENDING_ON_GET_OID, BytesWritten );
    TT_CMDPARSE_QUERY_WAIT_COMPLETE_AND_RETURN( Adapter, OID_MRVL_DS_LED_CONTROL, NumLed, SIZEOF_OID_DS_LEADING );
    break;
    
#ifdef CAL_DATA
  case OID_MRVL_CAL_DATA:
 #ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_MRVL_CAL_DATA ****\n")));
#endif
    TT_CMDPARSE_SYNC_OID( HostCmd_CMD_802_11_CAL_DATA, OID_MRVL_CAL_DATA, 
      sizeof(OID_MRVL_DS_CAL_DATA), HostCmd_ACT_GET, HostCmd_PENDING_ON_GET_OID, BytesWritten );
    TT_CMDPARSE_QUERY_WAIT_COMPLETE_AND_RETURN( Adapter, OID_MRVL_DS_CAL_DATA, Reserved1[0], SIZEOF_OID_DS_LEADING );
    break;
  case OID_MRVL_CAL_DATA_EXT:
 #ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_MRVL_CAL_DATA_EXT ****\n")));
#endif  	
    TT_CMDPARSE_SYNC_OID( HostCmd_CMD_802_11_CAL_DATA_EXT, OID_MRVL_CAL_DATA_EXT, 
      sizeof(OID_MRVL_DS_CAL_DATA_EXT), HostCmd_ACT_GET, HostCmd_PENDING_ON_GET_OID, BytesWritten );
    TT_CMDPARSE_QUERY_WAIT_COMPLETE_AND_RETURN( Adapter, OID_MRVL_DS_CAL_DATA_EXT, Revision, SIZEOF_OID_DS_LEADING );
    break;
#endif //CAL_DATA

  case OID_MRVL_PWR_CFG:
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_MRVL_PWR_CFG ****\n")));
#endif
    TT_CMDPARSE_SYNC_OID( HostCmd_CMD_802_11_PWR_CFG, OID_MRVL_PWR_CFG, 
      sizeof(OID_MRVL_DS_PWR_CFG), HostCmd_ACT_GET, HostCmd_PENDING_ON_GET_OID, BytesWritten );
    TT_CMDPARSE_QUERY_WAIT_COMPLETE_AND_RETURN( Adapter, OID_MRVL_DS_PWR_CFG, Enable, SIZEOF_OID_DS_LEADING );
    break;
  case OID_MRVL_TPC_CFG:
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_MRVL_TPC_CFG ****\n")));
#endif
    TT_CMDPARSE_SYNC_OID( HostCmd_CMD_802_11_TPC_CFG, OID_MRVL_TPC_CFG, 
      sizeof(OID_MRVL_DS_TPC_CFG), HostCmd_ACT_GET, HostCmd_PENDING_ON_GET_OID, BytesWritten );
    TT_CMDPARSE_QUERY_WAIT_COMPLETE_AND_RETURN( Adapter, OID_MRVL_DS_TPC_CFG, Enable, SIZEOF_OID_DS_LEADING );
    break;
  case OID_MRVL_RATE_ADAPT_RATESET:
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_MRVL_RATE_ADAPT_RATESET ****\n")));
#endif
    TT_CMDPARSE_SYNC_OID( HostCmd_CMD_802_11_RATE_ADAPT_RATESET, OID_MRVL_RATE_ADAPT_RATESET, 
      sizeof(OID_MRVL_DS_RATE_ADAPT_RATESET), HostCmd_ACT_GET, HostCmd_PENDING_ON_GET_OID, BytesWritten );
    TT_CMDPARSE_QUERY_WAIT_COMPLETE_AND_RETURN( Adapter, OID_MRVL_DS_RATE_ADAPT_RATESET, EnableHwAuto, SIZEOF_OID_DS_LEADING );
    break;
//tt --

    case OID_GEN_MAC_OPTIONS:
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_GEN_MAC_OPTIONS ****\n")));
#endif
        //      NOTE: Don't set NDIS_MAC_OPTION_RECEIVE_SERIALIZED if we
        //      are doing multipacket (ndis4) style receives.
        
    GenericULONG = (ULONG)NDIS_MAC_OPTION_NO_LOOPBACK |
        NDIS_MAC_OPTION_TRANSFERS_NOT_PEND;

    if ( Adapter->EnableQOS )
    {
      GenericULONG = GenericULONG | NDIS_MAC_OPTION_8021P_PRIORITY;
    }

    break;

    case OID_GEN_CURRENT_PACKET_FILTER:
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_GEN_CURRENT_PACKET_FILTER ****\n")));
#endif
  GenericULONG = Adapter->CurrentPacketFilter;
/* tt
        //      Verify the Length
        if (InformationBufferLength < 4){
            *BytesNeeded = 4;

 
            return (NDIS_STATUS_INVALID_LENGTH);
        }

        //      Now call the filter function to set the packet filter.
        NdisMoveMemory(InformationBuffer, (PVOID)&(Adapter->CurrentPacketFilter), sizeof(ULONG));
*/
    break;

    case OID_GEN_SUPPORTED_LIST:
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_GEN_SUPPORTED_LIST ****\n")));
#endif
        MoveSource = (PVOID) (MrvDrvGlobalSupportedOids);
        MoveBytes = sizeof(MrvDrvGlobalSupportedOids);
        break;


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


    case OID_GEN_MEDIA_SUPPORTED:
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_GEN_MEDIA_SUPPORTED ****\n")));
#endif
        MoveSource = (PVOID)MediaSupported;
        MoveBytes = sizeof(NDIS_MEDIUM); // need to change for 802.11
        break;

    case OID_GEN_MEDIA_IN_USE:
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_GEN_MEDIA_IN_USE ****\n")));
#endif
    GenericULONG = Adapter->MediaInUse;
        //MoveSource = (PVOID)MediaSupported;
        //MoveBytes = sizeof(NDIS_MEDIUM); // need to change for 802.11
        break;

    case OID_GEN_MAXIMUM_FRAME_SIZE:
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_GEN_MAXIMUM_FRAME_SIZE ****\n")));
#endif
  // this is a work around for the ping problem.
//        GenericULONG = (ULONG)(MRVDRV_MAXIMUM_ETH_PACKET_SIZE - MRVDRV_ETH_HEADER_SIZE);
        //GenericULONG = (ULONG)CF_MAX_PACKET_SIZE;
		///crlo:MTU ++
		///If this value is incorrect, the TCP layer will not fragment the packets correct
		///The sent packets will be discarded by the other side (eg: AP) and big-size ping (eg: 10000) will fail 
		GenericULONG = (ULONG)MRVDRV_MTU;
        	///GenericULONG = (ULONG)CF_MAX_PACKET_SIZE;
		///crlo:MTU ++
        break;

    case OID_GEN_MAXIMUM_LOOKAHEAD:
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_GEN_MAXIMUM_LOOKAHEAD ****\n")));
#endif
        GenericULONG = (ULONG)MRVDRV_MAXIMUM_ETH_PACKET_SIZE - MRVDRV_ETH_HEADER_SIZE;
        DBGPRINT(DBG_RXDATA, ("OID: Return OID_GEN_MAXIMUM_LOOKAHEAD to %d\n", 
            MRVDRV_MAXIMUM_ETH_PACKET_SIZE- MRVDRV_ETH_HEADER_SIZE));
        break;

    case OID_GEN_CURRENT_LOOKAHEAD:
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_GEN_CURRENT_LOOKAHEAD ****\n")));
#endif
        GenericULONG = (ULONG)MRVDRV_MAXIMUM_ETH_PACKET_SIZE - MRVDRV_ETH_HEADER_SIZE;
        DBGPRINT(DBG_RXDATA, ("OID: Return OID_GEN_CURRENT_LOOKAHEAD to %d\n", 
            MRVDRV_MAXIMUM_ETH_PACKET_SIZE- MRVDRV_ETH_HEADER_SIZE));
        break;

    
    case OID_GEN_MAXIMUM_TOTAL_SIZE:
    case OID_GEN_RECEIVE_BLOCK_SIZE:
    case OID_GEN_TRANSMIT_BLOCK_SIZE:
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_GEN_MAXIMUM_TOTAL_SIZE ****\n")));
#endif
		///crlo:MTU ++
		///GenericULONG = (ULONG)MRVDRV_MAXIMUM_ETH_PACKET_SIZE;
		GenericULONG = (ULONG)MRVDRV_MTU_TOTAL;
		///crlo:MTU --
        break;

    case OID_GEN_LINK_SPEED:
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_GEN_LINK_SPEED ****\n")));
#endif
    // should never return 0mbps according to spec
    if ( Adapter->LinkSpeed == MRVDRV_LINK_SPEED_0mbps )
    {
      GenericULONG = (ULONG) MRVDRV_LINK_SPEED_1mbps;
    }
    else
    {
      GenericULONG = (ULONG) Adapter->LinkSpeed;
    }
              //NKDbgPrintfW(L"[Marvell]Query+OID_GEN_LINK_SPEED= %d", (ULONG)GenericULONG);  
         break;


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


  case OID_GEN_RECEIVE_BUFFER_SPACE:
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_GEN_RECEIVE_BUFFER_SPACE ****\n")));
#endif
//        GenericULONG = (ULONG) MRVDRV_MAXIMUM_ETH_PACKET_SIZE*MRVDRV_NUM_OF_RXPD; // 1514 * 8
        GenericULONG = (ULONG) MRVDRV_MAXIMUM_ETH_PACKET_SIZE; // 1514 * 8
        break;


    case OID_GEN_VENDOR_ID:
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_GEN_VENDOR_ID ****\n")));
#endif
        MoveSource = (PVOID) (&Adapter->VendorID);
        MoveBytes = 4;
    break;


    case OID_GEN_VENDOR_DESCRIPTION:
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_GEN_VENDOR_DESCRIPTION ****\n")));
#endif
        MoveSource = (PVOID) VendorDescriptor;
        MoveBytes = sizeof(VendorDescriptor);
        break;


    case OID_GEN_DRIVER_VERSION:
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_GEN_DRIVER_VERSION ****\n")));
#endif
        GenericUSHORT = (USHORT) MRVDRV_DRIVER_VERSION;
        MoveSource = (PVOID)(&GenericUSHORT);
        MoveBytes = sizeof(GenericUSHORT);
        break;

  case OID_GEN_VENDOR_DRIVER_VERSION:
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_GEN_VENDOR_DRIVER_VERSION ****\n")));
#endif
        // CF8381/8385 only uses the last 3 bytes
        GenericULONG = Adapter->FWReleaseNumber << 8;  
        break;

    //      WMI support
    case OID_GEN_SUPPORTED_GUIDS:
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_GEN_SUPPORTED_GUIDS ****\n")));
#endif
    MoveSource = (PUCHAR)&GUIDList;
        MoveBytes =  sizeof(GUIDList);
        break;

    //      Task Offload
    //case OID_GEN_TASK_OFFLOAD:
  //
    //  Status = NDIS_STATUS_NOT_SUPPORTED;
    //  break;

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

  if (InformationBufferLength < (Adapter->NumOfMulticastMACAddr*ETH_LENGTH_OF_ADDRESS))
  {
    *BytesNeeded = Adapter->NumOfMulticastMACAddr*ETH_LENGTH_OF_ADDRESS;
    return NDIS_STATUS_INVALID_LENGTH;
  }

  MoveSource = (PVOID) Adapter->MulticastList;
  MoveBytes = Adapter->NumOfMulticastMACAddr*ETH_LENGTH_OF_ADDRESS;
  break;
/* tt
        //      The data must be a multiple of the Ethernet address size.
        if (InformationBufferLength < (Adapter->NumOfMulticastMACAddr*ETH_LENGTH_OF_ADDRESS)){
            *BytesNeeded = Adapter->NumOfMulticastMACAddr*ETH_LENGTH_OF_ADDRESS;
           

      return NDIS_STATUS_INVALID_LENGTH;
        }

        //      Save these new MC addresses to our adapter object
        NdisMoveMemory(InformationBuffer,
            Adapter->MulticastList,
            Adapter->NumOfMulticastMACAddr*ETH_LENGTH_OF_ADDRESS);

        *BytesWritten = Adapter->NumOfMulticastMACAddr*ETH_LENGTH_OF_ADDRESS;

    PrepareAndSendCommand(
      Adapter,
      HostCmd_CMD_MAC_MULTICAST_ADR,
      HostCmd_ACT_GEN_GET,
      HostCmd_OPTION_USE_INT,
      Oid,
      HostCmd_PENDING_ON_GET_OID,
      0,
      FALSE,
      NULL,
      NULL,
      NULL,
      NULL);

    if (Status == NDIS_STATUS_FAILURE || Status == NDIS_STATUS_RESOURCES){

      return Status;
    }
    else {
    
      Status = NDIS_STATUS_PENDING;
    }
*/

//        //      Save the number of MC address in our adapter object
//        Adapter->NumOfMulticastMACAddr = (InformationBufferLength / ETH_LENGTH_OF_ADDRESS);
    case OID_802_3_PERMANENT_ADDRESS:
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_802_3_PERMANENT_ADDRESS ****\n")));
#endif
        ETH_COPY_NETWORK_ADDRESS((PCHAR) GenericArray, Adapter->PermanentAddr);

        MoveSource = (PVOID) (GenericArray);
        MoveBytes = MRVDRV_ETH_ADDR_LEN;

#ifdef DBG
    DBGPRINT(DBG_OID,("*** OID return permanent addr: %2x %2x %2x %2x %2x %2x ***\n", 
      Adapter->PermanentAddr[0],
      Adapter->PermanentAddr[1],
      Adapter->PermanentAddr[2],
      Adapter->PermanentAddr[3],
      Adapter->PermanentAddr[4],
      Adapter->PermanentAddr[5]));
#endif

        break;

    case OID_802_3_CURRENT_ADDRESS:
#ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_802_3_CURRENT_ADDRESS ****\n")));
#endif
        ETH_COPY_NETWORK_ADDRESS(GenericArray, Adapter->CurrentAddr);

        MoveSource = (PVOID) (GenericArray);
        MoveBytes = MRVDRV_ETH_ADDR_LEN;
        break;

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

    case OID_GEN_MAXIMUM_SEND_PACKETS:
 #ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_GEN_MAXIMUM_SEND_PACKETS ****\n")));
#endif
    GenericULONG = 1;//MiniportSend only 

#ifdef USE_TX_QUEUE
        GenericULONG = 10;
#endif // #ifdef USE_TX_QUEUE
        break;

  case OID_GEN_MEDIA_CONNECT_STATUS:
 #ifdef DEBUG_PARA_ROAMING_PRINT
RETAILMSG(1,(TEXT("william REQUEST - OID_GEN_MEDIA_CONNECT_STATUS ****\n")));
#endif
        DBGPRINT(DBG_OID, ("Request - OID_GEN_MEDIA_CONNECT_STATUS : %d\n",
                            Adapter->MediaConnectStatus));
    //GenericLONG = (ULONG) NdisMediaStateConnected;
    GenericLONG = (ULONG) Adapter->MediaConnectStatus;
    MoveSource = (PVOID) (&GenericLONG);
    MoveBytes = sizeof(GenericLONG);

⌨️ 快捷键说明

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