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

📄 hwacproc.c

📁 marvell8385 GSPI开发驱动
💻 C
📖 第 1 页 / 共 5 页
字号:
#else
   	if((!priv.bAutoRoamingInProcess)&&(!priv.bManualRoamingInProcess))
#endif
	{
#endif
        V5DbgMsg( (L"** before ResetDisconnectStatus\n") );
        ResetDisconnectStatus(Adapter); 
        V5DbgMsg( (L"** after  ResetDisconnectStatus\n") );
	#ifdef PARA_WPA_1X
     	 SendNotifyToRoaming_wx(DEAUTHENTICATE_EVENT_WX,0,0,2);//zzh added 2006-08-2

	#endif
#ifdef DEBUG_PARA_ROAMING
   	}
#endif
    }
	
#ifdef DEBUG_PARA_ROAMING
#ifdef PARA_WPA_1X
if(!IsRoamingWantWZCWorkProperly()){
#endif
    if(priv.bAutoRoamingInProcess || priv.bManualRoamingInProcess)
    {
		//Adapter->MediaConnectStatus = NdisMediaStateDisconnected;
		ParaResetDisconnectStatus(Adapter); 
#ifdef DEBUG_PARA_ROAMING_PRINT
	RETAILMSG(1,(TEXT("NdisMediaStateDisconnected is caused by HostCmd_RET_802_11_DISASSOCIATE!...\n")));
#endif
		SetEvent(priv.hDeauthFinishedEvent);
    }
#ifdef PARA_WPA_1X
    }
#endif
#endif
// tt --

/* tt 
    V5DbgMsg( (L"** before ResetDisconnectStatus\n") );
      ResetDisconnectStatus(Adapter); 
    V5DbgMsg( (L"** after  ResetDisconnectStatus\n") );
*/                      


      break;
            
#ifndef MRVL_RFCHANNEL
    case HostCmd_RET_802_11_RF_CHANNEL:  
      pRF = (PHostCmd_DS_802_11_RF_CHANNEL)pRetPtr;

      if (pRF) 
      {
    
        Adapter->Channel = pRF->CurentChannel;
      }
      DBGPRINT(DBG_OID,("RETURN - HostCmd_RET_802_11_RF_CHANNEL,  Adapter->Channel=0x%x ****\n",Adapter->Channel)); 
    break;
#endif
    case HostCmd_RET_802_11_ENABLE_QOS_WME:

      HandleEnableQosWmeCommand(
        (PHostCmd_CMD_QOS_WME_ENABLE_STATE)pRetPtr, Adapter);

      break;

    case HostCmd_RET_802_11_WME_AC_PARAMS:

      HandleWmeACParamsCommand(
        (PHostCmd_CMD_QOS_WME_ACCESS_CATEGORY_PARAMETERS)pRetPtr, 
        Adapter);

      break;

        case HostCmd_RET_802_11_GRP_KEY:
#ifdef PARA_WPA_1X
		SendNotifyToRoaming_wx(INSTALL_GTK_SUCCESS_EVENT_WX,0,0,3);//zzh added 2006-08-2
#endif
            break;

        case HostCmd_RET_MAC_REG_ACCESS:
    case HostCmd_RET_BBP_REG_ACCESS:
    case HostCmd_RET_RF_REG_ACCESS:
    {
      if(*((USHORT *)pRetPtr +4) == HostCmd_ACT_GEN_READ)
      {
            
        if((Ret == HostCmd_RET_BBP_REG_ACCESS) || (Ret == HostCmd_RET_RF_REG_ACCESS))
        {     
        #ifdef  MRVL_GUI_INTERFACE        
          MrvlNotifyApplication(
                COMMAND_EVENT_READ_REG_DONE,
                (UCHAR *)((USHORT *)pRetPtr +6),
                1);
        #endif //MRVL_GUI_INTERFACE

        }
        else
        {
        #ifdef  MRVL_GUI_INTERFACE
          MrvlNotifyApplication(
                COMMAND_EVENT_READ_REG_DONE,
                (UCHAR *)((USHORT *)pRetPtr +6),
                4);   
        #endif //MRVL_GUI_INTERFACE         
        }                         
      }                                           
#ifdef EVALBOARD_REV4_FIX
            if ( pRetPtr->Command == HostCmd_RET_RF_REG_ACCESS )
            {
                HandleRFRegAccess((PHostCmd_DS_CMD_RF_REG_ACCESS)pRetPtr, Adapter);
            }
#endif // #ifdef EVALBOARD_REV4_FIX
    }       
    break;


    case HostCmd_RET_802_11_HOST_SLEEP_CFG:
    {  
       #ifdef  HOST_SLEEP_PS     
       Adapter->HostPowerState = HTWK_STATE_SLEEP;
       #else   //#ifndef HOST_SLEEP_PS
       PHostCmd_DS_HOST_SLEEP    pHostWakeup;
       pHostWakeup= (PHostCmd_DS_HOST_SLEEP)pRetPtr;  
                   
       Adapter->bHostWakeupDevRequired = TRUE;   //valid in PS mode only 
       DBGPRINT(DBG_HOSTSLEEP, ("Host Wake Up Cfg cmd resp 0x8043 Command= 0x%04X received\n",pHostWakeup->Command)); 
       #endif    
    } 
      break;
    case HostCmd_RET_802_11_HOST_SLEEP_AWAKE_CONFIRM:
      DBGPRINT(DBG_HOSTSLEEP, ("[Marvell]HostCmd_RET_802_11_HOST_SLEEP_AWAKE_CONFIRM:Host Awake Confirm cmd resp 0x8044=0x%04X received. Adapter->bPowerUpDevice=%d\n",pRetPtr->Command,Adapter->bPowerUpDevice));  
#ifdef HOST_SLEEP_PS
      if( Adapter->bPowerUpDevice)
      { 
         ///UCHAR   regValue;
    
//         RETAILMSG(1,(TEXT("Clear Pwr on bit\n\r")));
         DBGPRINT(DBG_MACEVENT|DBG_HOSTSLEEP, ("[Marvell]HostCmd_RET_802_11_HOST_SLEEP_AWAKE_CONFIRM:Clear Pwr Up bit: Adapter->bPowerUpDevice\n"));  

         Adapter->bPowerUpDevice=0;

#ifdef SDIO
		 {
		UCHAR   regValue;
         regValue = 0x0;  //Configuration: Host Offset: 0x03 Write Bit1=1    

      
          If_WriteRegister(Adapter,
                                            //SD_IO_WRITE,          
                                            1,     
                                            HCR_HOST_CONFIGURATION_REGISTER,  //0x03 
                                            FALSE,
                                            &regValue,   // reg
                                            1); 
		 }
#endif  
#ifdef CONFIG_WLAN_PMU
    wlan_PMUGetHostSleepConfirmResp();
#endif
    //SPI
          sbi_exit_deep_sleep_clean();
         RETAILMSG(1,(TEXT("Reciver HostCmd_RET_802_11_HOST_SLEEP_CFG Clear Pwr on bit\n\r")));




      }
#endif

      break;
    
      case HostCmd_RET_802_11_BAND_CONFIG:
      
      pBandConf = (PHostCmd_DS_802_11_BAND_CONFIG)pRetPtr;
      
      DBGPRINT(DBG_CMDRESP,("*** pBandConf->BandSelection %d\n",pBandConf->BandSelection));
      DBGPRINT(DBG_CMDRESP,("*** pBandConf->Command %x\n",pBandConf->Command)); 
      DBGPRINT(DBG_CMDRESP,("*** pBandConf->Channel %d\n",pBandConf->Channel));   
    break;
    case HostCmd_RET_802_11_QUERY_TRAFFIC:
    case HostCmd_RET_MAC_CONTROL:
    case HostCmd_RET_MAC_MULTICAST_ADR:
    case HostCmd_RET_802_11_SNMP_MIB: 
    case HostCmd_RET_802_11_SET_WEP:
    break;
  #ifdef DEEP_SLEEP
    case HostCmd_RET_802_11_DEEP_SLEEP: 
    {
#ifdef CONFIG_WLAN_PMU
        wlan_PMUGetEnterDeepSleepResp();
#endif
    }
    break;
  #endif 
    case HostCmd_RET_802_11_FW_WAKE_METHOD:
    case HostCmd_RET_802_11_INACTIVITY_TIMEOUT:
    case HostCmd_RET_802_11_SLEEP_PARAMS: 
    #ifdef WMM_UAPSD
    case HostCmd_RET_802_11_SLEEP_PERIOD: 
    #endif
    break; 
    

    case HostCmd_RET_MAC_ADDRESS:
	{
	   
            PHostCmd_DS_CMD_MAC_ADDRESS pCmd;

            if ( priv.bGetMacAddr)
            {
	            pCmd = (PHostCmd_DS_CMD_MAC_ADDRESS)pRetPtr;
	            NdisMoveMemory(priv.MacAddr,
	                           pCmd->MacAddress,
	                           MRVDRV_ETH_ADDR_LEN);
	            RETAILMSG(1,(TEXT("*** HostCmd_RET_MAC_ADDRESS: %2x %2x %2x %2x %2x %2x ***\n"), 
	                priv.MacAddr[0],
	                priv.MacAddr[1],
	                priv.MacAddr[2],
	                priv.MacAddr[3],
	                priv.MacAddr[4],
	                priv.MacAddr[5]));
	           SetEvent(priv.hGetMacAddrFinishedEvent);
           }
	}
      break;

    
    default:
      break;  
  } 
   
  #ifdef HOST_SLEEP_PS
  if( Adapter->psState == PS_STATE_SLEEP && Adapter->bPSConfirm== FALSE)
  {   
      PSConfirmSleep(Adapter); 
#ifdef CONFIG_WLAN_PMU
	wlan_PMUSleepConfirmed();
#endif			
     
      //MrvPrintFile("\nPS_confirmed at cmdfsh");  
    
  } 
  #endif  
/*
  #ifdef HOST_SLEEP_PS
  if ( Adapter->psState == PS_STATE_SLEEP && Adapter->bPSConfirm==FALSE && 
       (Adapter->HostPowerState == HTWK_STATE_FULL_POWER  || Adapter->HostPowerState == HTWK_STATE_SLEEP) )
       PSConfirmSleep(Adapter);
  #endif
*/

  //
  // Check pending OID or command
  //
  if ( Adapter->CurCmd->PendingInfo == HostCmd_PENDING_ON_CMD )
    HandleHostPendCommand(Ret,Adapter,pRetPtr); 
  else if ( Adapter->CurCmd->PendingInfo == HostCmd_PENDING_ON_GET_OID )
    HandleHostPendGetOid(Ret,Adapter,pRetPtr);
  else if ( Adapter->CurCmd->PendingInfo == HostCmd_PENDING_ON_SET_OID )
    HandleHostPendSetOid(Ret,Adapter);
  
  ReturnCmdNode(Adapter, Adapter->CurCmd);
  Adapter->CurCmd = NULL;
  GetCmdFromQueueToExecute (Adapter);
  //RETAILMSG(1,(TEXT("[Marvell]-HandleCommandFinishedEvent"))); 
  return NDIS_STATUS_SUCCESS;
}



/******************************************************************************
 *
 *  Name: HandleHardwareSpec()
 *
 *  Description: Handle hardware spec command
 *
 *  Arguments:  PHostCmd_DS_802_11_SCAN_RSP pRetPtr
 *        PMRVDRV_ADAPTER Adapter
 *          
 *
 *  Return Value:        
 * 
 *  Notes:               
 *
 *****************************************************************************/
VOID
HandleHardwareSpec(
  PHostCmd_DS_GET_HW_SPEC pHWSpec,
  PMRVDRV_ADAPTER Adapter
  )
{
  ULONG i;
  UCHAR TempBuf[4];
    UCHAR ucA, ucB, ucC, ucP;

#ifdef INTERFACE20

    // check if the interface number is correct

    if ( pHWSpec->HWIfVersion != 2 )
    {
        DBGPRINT(DBG_ERROR, ("Fatal error: HW interface version mismatch! \n"));
        DBGPRINT(DBG_ERROR, ("Expected version 2, got %d\n", pHWSpec->HWIfVersion));
        ASSERT(FALSE);
    }
    
#endif // #ifdef INTERFACE20
    HexDump(DBG_ALLEN, "HostCmd_DS_GET_HW_SPEC: ", (UCHAR *)pHWSpec, sizeof(HostCmd_DS_GET_HW_SPEC));

  Adapter->HardwareStatus = NdisHardwareStatusReady;

  // permanent address should only be set once at start up
  //dralee 081005, V4
  if ( Adapter->PermanentAddr[0] == 0xff )
  {
    // permanent address has not been set yet, set it

    NdisMoveMemory(
      (PVOID)Adapter->PermanentAddr, 
      (PVOID)pHWSpec->PermanentAddr,
      MRVDRV_ETH_ADDR_LEN);

     DBGPRINT(DBG_CMDRESP | DBG_LOAD|DBG_ALLEN,("*** PermanentAddr %02x.%02x.%02x.%02x.%02x.%02x ***\n", 
                                Adapter->PermanentAddr[0],
                          Adapter->PermanentAddr[1],
                          Adapter->PermanentAddr[2],
                          Adapter->PermanentAddr[3],
                          Adapter->PermanentAddr[4],
                          Adapter->PermanentAddr[5]
                             ));
  }
 
  NdisMoveMemory(
    &(Adapter->FWReleaseNumber), 
    &(pHWSpec->FWReleaseNumber),
    4);

    ucA = (UCHAR)((Adapter->FWReleaseNumber >> 16) & 0xff);
    ucB = (UCHAR)((Adapter->FWReleaseNumber >> 8 ) & 0xff);
    ucC = (UCHAR)((Adapter->FWReleaseNumber      ) & 0xff);
  ucP = (UCHAR)((Adapter->FWReleaseNumber >> 24) & 0xff);
    DBGPRINT(DBG_ALL,("*** FW Release number (0x%x) %d.%d.%d.%d ***\n", 
             Adapter->FWReleaseNumber, ucA, ucB, ucC, ucP));

#ifdef UNDER_CE

    {   // Add FW version to registry
        REG_VALUE_DESCR Vals[2];
        wchar_t buf[50];

    swprintf(buf, TEXT("%d.%d.%d.%d"), ucA, ucB, ucC, ucP);

        Vals[0].val_data = (PBYTE)buf;
        Vals[0].val_name = TEXT("FWVersion");
        Vals[0].val_type = REG_SZ;
        Vals[1].val_name = NULL;


#ifdef SDIO
   //AddKeyValues (TEXT("Comm\\EAGLEND5SDIO"), Vals); 
   //lykao, 053005 
   #ifdef MRV_CHIP_8385H
     AddKeyValues (TEXT("Comm\\SD8385H"), Vals);  // SD8385H  
   #elif defined(MRV_CHIP_8399)
     AddKeyValues (TEXT("Comm\\SD8399"), Vals); // SD8399 
   #elif defined(MRV_CHIP_8385PN)
     AddKeyValues (TEXT("Comm\\SD8385PN"), Vals); // SD8385PN
   #elif defined(MRV_CHIP_8381PN)
     AddKeyValues (TEXT("Comm\\SD8381PN"), Vals); // SD8381PN  
   #elif defined(MRV_CHIP_8686PN)    //dralee_1209
     AddKeyValues (TEXT("Comm\\SD8686PN"), Vals); // SD8385PN
   #else
     AddKeyValues (TEXT("Comm\\EAGLEND5SDIO"), Vals); // SD8305
   #endif // MRV_CHIP_8385H
#elif defined (IF_SPI)
   #ifdef MRV_CHIP_8385H
     AddKeyValues (TEXT("Comm\\GSPI8385H"), Vals);  // SD8385H  
   #elif defined(MRV_CHIP_8399)
     AddKeyValues (TEXT("Comm\\GSPI8399"), Vals); // SD8399 
   #elif defined(MRV_CHIP_8385PN)
     AddKeyValues (TEXT("Comm\\GSPI8385PN"), Vals); // SD8385PN
   #elif defined(MRV_CHIP_8381PN)
     AddKeyValues (TEXT("Comm\\GSPI8381PN"), Vals); // SD8381PN  
   #elif defined(MRV_CHIP_8686PN)    //dralee_1209
     AddKeyValues (TEXT("Comm\\GSPI8686PN"), Vals); // SD8385PN
   #else
     AddKeyValues (TEXT("Comm\\EAGLEND5SDIO"), Vals); // SD8305
   #endif // MRV_CHIP_8385H
#else
   #ifdef MRV_CHIP_8385H
     AddKeyValues (TEXT("Comm\\CF8385H"), Vals);  // CF8385H  
   #elif defined(MRV_CHIP_8385PN)
     AddKeyValues (TEXT("Comm\\CF8385PN"), Vals); // CF8385PN
   #elif defined(MRV_CHIP_8381PN)
     AddKeyValues (TEXT("Comm\\CF8381PN"), Vals); // CF8381PN  
   #elif defined(MRV_CHIP_8381P)
     AddKeyValues (TEXT(

⌨️ 快捷键说明

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