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

📄 hwacproc.c

📁 此压缩包为杰得开发得z228的BSP的源代码,可以实现很多功能,尤其是视频解码有很好的效果.
💻 C
📖 第 1 页 / 共 5 页
字号:
          Adapter->bNullFrameSent = 1;
          SendNullPacket(Adapter, MRVDRV_WCB_POWER_MGMT_NULL_PACKET|MRVDRV_WCB_POWER_MGMT_LAST_PACKET);
    } 
#else
    #ifdef PROPRIETARY_PERIODIC_PS    //++dralee_20060327
    else if( CheckLastPacketIndication(Adapter)  ) 
    {                       
          SendNullPacket(Adapter, (MRVDRV_WCB_POWER_MGMT_NULL_PACKET|MRVDRV_WCB_POWER_MGMT_LAST_PACKET));
          Adapter->TxLock = 1;  
    } 
    #endif
#endif


    LeaveCriticalSection(&Adapter->TxCriticalSection);
      
    break;
#ifdef DEEP_SLEEP
  case MACREG_INT_CODE_DS_AWAKE:

    if (Adapter->IsDeepSleep == TRUE) 
    {
        Adapter->IsDeepSleep = FALSE;
     Adapter->IsDeepSleepRequired= FALSE; 
    } 
    #ifdef IF_SDIO
          regValue = 0x0;  //Configuration: Host Offset: 0x03
        
          sdStatus = If_WriteRegister(Adapter,
                                            //SD_IO_WRITE,          
                                            1,     
                                            HCR_HOST_CONFIGURATION_REGISTER,  //0x03 
                                            FALSE,
                                            &regValue,   // reg
                                            1);   
    
        if (!SD_API_SUCCESS(sdStatus)) {
             DBGPRINT(DBG_ERROR, 
                 ("OID_MRVL_DEEP_SLEEP Exit Deep Sleep Fail: 0x%08X  \n",sdStatus));
    }else{
      
      DBGPRINT(DBG_DEEPSLEEP , ("MarEvent MACREG_INT_CODE_DS_AWAKE clear reg 0x3=0\n"));
    }
// 36.p4 : Fix for deep sleep +++
    #elif IF_GSPI
       spi_ResetDeepSleep();        
// 36.p4 : Fix for deep sleep ---
    #endif //IF_SDIO

    #ifdef  REASSOCIATE
       InfraBssReconnectStart (Adapter, RECONNECT_DEEP_SLEEP_AWAKE); 
    #endif  
    
    break;
#endif

#ifdef HOST_SLEEP
  case MACREG_INT_CODE_HOST_SLEEP_AWAKE:
     {                       
      
       DBGPRINT(DBG_MACEVENT,("HOST_WAKEUP!!\n"));

       #ifdef HOST_SLEEP_PS
       Adapter->HostPowerState = HTWK_STATE_FULL_POWER; 
       UpdatePowerSaveState( Adapter, NULL, MACREG_INT_CODE_PS_AWAKE);
       #else
       Adapter->bHostWakeupDevRequired = FALSE;
       #endif 
       PrepareAndSendCommand(
                             Adapter,
                             HostCmd_CMD_802_11_HOST_SLEEP_AWAKE_CONFIRM,
                             0,          
                             HostCmd_OPTION_USE_INT,
                             0,
                             HostCmd_PENDING_ON_NONE,
                             0,
                             FALSE,
                             NULL,
                             NULL,
                             NULL,
                             NULL); 

           
      //RETAILMSG(1,(TEXT("MACEvent: HOST_WAKE_UP...")));
    }
    break;
#endif

  //dralee_20060601                   
  #ifdef IBSS_COALESCE
  case MACREG_INT_CODE_IBSS_COALESCED:
    {
      Status = PrepareAndSendCommand(
               Adapter,
               HostCmd_CMD_802_11_IBSS_COALESING_STATUS,
               HostCmd_ACT_GEN_GET,
               HostCmd_OPTION_USE_INT,
               (NDIS_OID)0,
               HostCmd_PENDING_ON_NONE,
               0,
               FALSE,
               NULL,
               NULL,
               NULL,
               NULL);

      RETAILMSG(1,(L"IBSSCOALSE Event:%x\n\r",Adapter->IbssCoalsecingEnable));         
    }    
    break; 
  #endif 
// **********************************************************************************

  case MACREG_INT_CODE_CMD_FINISHED: // Command finished
    DBGPRINT(DBG_MACEVENT,("MACREG_INT_CODE_CMD_FINISHED\n"));
    HandleCommandFinishedEvent(Adapter);
    break;

    case MACREG_INT_CODE_WPA_MIC_ERR_UNICAST:
        DBGPRINT(DBG_MACEVENT, ("*** Received UNICAST MIC error ***\n"));
    HandleMicError(Adapter, MACREG_INT_CODE_WPA_MIC_ERR_UNICAST); 
        break;

    case MACREG_INT_CODE_WPA_MIC_ERR_MULTICAST:
        DBGPRINT(DBG_MACEVENT, ("*** Received MULTICAST MIC error ***\n"));
        HandleMicError(Adapter, MACREG_INT_CODE_WPA_MIC_ERR_MULTICAST);
        break;

//ahan [2005-12-13], Subscribe Event ++dralee_20060217
    case MACREG_INT_CODE_RSSI_LOW:
        {
        DBGPRINT(DBG_MACEVENT, ("MACREG_INT_CODE_RSSI_LOW\n"));
        RETAILMSG(1, (L"MACREG_INT_CODE_RSSI_LOW\n"));
		
		///crlo:fastroam ++
		#ifdef CCX_FASTROAM
		PrintMacro("\n[Marvell]MACREG_INT_CODE_RSSI_LOW!!\n");
		v5MrvPrintFileW(L"\n[Marvell]MACREG_INT_CODE_RSSI_LOW!!\n");
		if ((Adapter->InfrastructureMode == Ndis802_11Infrastructure) && 
			(Adapter->isCiscoAP == TRUE)){
			PrintMacro("\nCCX-FastRoaming with %s\n", Adapter->CurrentSSID.Ssid);
			v5MrvPrintFileW(L"\nCCX-FastRoaming with %s\n", Adapter->CurrentSSID.Ssid);
			Adapter->MediaConnectStatus = NdisMediaStateDisconnected;
			PrepareAndSendCommand(
							Adapter,
							HostCmd_CMD_802_11_ASSOCIATE_EXT,
							0,
							HostCmd_OPTION_USE_INT,
							(NDIS_OID)0,
							HostCmd_PENDING_ON_NONE,
							0,
							FALSE,
							NULL,
							NULL,
							NULL,
							&(Adapter->CurrentSSID));
			break;
		}
		#endif ///CCX_FASTROAM
		///crlo:fastroam --

             #ifdef ACTIVE_ROAMING
		     #ifdef MRVL_DBG_ACTIVE_ROAMING
			 #ifdef MRVL_PRINT_DBG_MSG
                             MrvPrintFile("\n[Marvell]MACREG_INT_CODE_RSSI_LOW: call ActiveRoamingStart\n");  
			  #endif
		      #endif  
		      Adapter->bIsActiveRoaming =TRUE;
		     ActiveRoamingStart (Adapter);	
              #endif     
        }
        break;
    case MACREG_INT_CODE_SNR_LOW:
        DBGPRINT(DBG_MACEVENT, ("MACREG_INT_CODE_SNR_LOW\n"));
        RETAILMSG(1, (L"MACREG_INT_CODE_SNR_LOW\n"));
        break;
    case MACREG_INT_CODE_MAX_FAIL:
        DBGPRINT(DBG_MACEVENT, ("MACREG_INT_CODE_MAX_FAIL\n"));
        RETAILMSG(1, (L"MACREG_INT_CODE_MAX_FAIL\n"));
        break;
   #ifdef SubEvent_RSSI_SNR_HIGH			
    case MACREG_INT_CODE_RSSI_HIGH: 
        DBGPRINT(DBG_MACEVENT, ("MACREG_INT_CODE_RSSI_HIGH\n"));
        RETAILMSG(1, (L"MACREG_INT_CODE_SNR_LOW\n"));
        break;
    case MACREG_INT_CODE_SNR_HIGH: 
        DBGPRINT(DBG_MACEVENT, ("MACREG_INT_CODE_SNR_HIGH\n"));
        RETAILMSG(1, (L"MACREG_INT_CODE_SNR_LOW\n"));
        break;		
    #endif		
//ahan [2005-12-13] ++dralee_20060217

    #ifdef IF_SDIO
      case MACREG_INT_CODE_TX_DONE:
    HandleTxSingleDoneEvent(Adapter);
    break;
  #endif    ///IF_SDIO
  default:
  // PJG: not implemented in the firmware. (in original fw from marvell)
  case MACREG_INT_CODE_MIB_CHANGED:
  case MACREG_INT_CODE_INIT_DONE:
    break;
  }
  // RETAILMSG(1,(TEXT("[Marvell]-HandleMACEvent"))); 
  return;

}


/******************************************************************************
 *
 *  Name: MacEventDisconnected()
 *
 *  Description: MAC event handler for link lost condition, disassociation,
 *          deauthentication
 *
 *  Arguments:  PMRVDRV_ADAPTER Adapter
 *    
 *  Return Value:        
 * 
 *  Notes:               
 *
 *****************************************************************************/
VOID
MacEventDisconnected(
  PMRVDRV_ADAPTER Adapter,
  UINT TimerValue,
  BOOLEAN PowerFlag
  )
{
  #ifdef AvoidOidSetScan
    BOOLEAN                            timerStatus;
  #endif
  DBGPRINT(DBG_NEWPS | DBG_NEWCMD, ("MacEventDisconnected() \n"));
  //RETAILMSG(1, (TEXT("MacEventDisconnected()******** \n\r")));

  //  need to clean up Rx and Tx first  
#if 0 //dralee_20051128
  CleanUpSingleTxBuffer(Adapter);
  ResetRxPDQ(Adapter);
#endif

    if ((Adapter->MediaConnectStatus != NdisMediaStateDisconnected) && 
        (Adapter->PSMode == Ndis802_11PowerModeMAX_PSP))
    {
        PSWakeup(Adapter);
    }
    #ifdef AvoidOidSetScan        
     if((Adapter->MediaConnectStatus == NdisMediaStateConnected)&&(Adapter->bAvoidScanAfterConnectedforMSecs == TRUE))  
       {
            NdisMCancelTimer(&Adapter->MrvDrvAvoidScanAfterConnectedTimer, &timerStatus);
            Adapter->bAvoidScanAfterConnectedforMSecs=FALSE;         
       }
    #endif

    //35.p6++
    #ifndef REASSOCIATE 
       Adapter->MediaConnectStatus = NdisMediaStateDisconnected;

    NdisMIndicateStatus(
        Adapter->MrvDrvAdapterHdl,
        NDIS_STATUS_MEDIA_DISCONNECT,
        (PVOID)NULL,
        0);     
    NdisMIndicateStatusComplete(Adapter->MrvDrvAdapterHdl);
   #else //REASSOCIATE

    if ( Adapter->MediaConnectStatus == NdisMediaStateConnected )
    {               
        USHORT usCommand;
            
        if ( Adapter->InfrastructureMode == Ndis802_11Infrastructure )
                usCommand = HostCmd_CMD_802_11_DEAUTHENTICATE;
                else
                usCommand = HostCmd_CMD_802_11_AD_HOC_STOP;

           
                PrepareAndSendCommand(
                    Adapter,
                    usCommand,
                    0,
                    HostCmd_OPTION_USE_INT,
                    (NDIS_OID)0,
                    HostCmd_PENDING_ON_NONE,
                    0,
                    FALSE,
                    NULL,
                    NULL,
                    NULL,
                    Adapter->CurrentBSSID);

  }

 if ((Adapter->bIsReconnectEnable == FALSE) && 
        (Adapter->bIsBeaconLoseEvent == FALSE) &&
        (Adapter->bIsDeauthenticationEvent == FALSE)
   #ifdef ACTIVE_ROAMING
     && (Adapter->bIsActiveRoaming== FALSE)
  #endif
 )
 {
     Adapter->MediaConnectStatus = NdisMediaStateDisconnected;

    NdisMIndicateStatus(
        Adapter->MrvDrvAdapterHdl,
        NDIS_STATUS_MEDIA_DISCONNECT,
        (PVOID)NULL,
        0);     
    NdisMIndicateStatusComplete(Adapter->MrvDrvAdapterHdl);

 }  
#endif //REASSOCIATE
 //35.p6--
 
  //dralee_20051128
  //  need to report disconnect event if currently associated
  //if ( Adapter->MediaConnectStatus != NdisMediaStateDisconnected )
  //  {       
        ResetDisconnectStatus(Adapter);
  /* dralee_20051128
      // send a scan command to get the latest AP list 
      PrepareAndSendCommand(
          Adapter,
          HostCmd_CMD_802_11_SCAN,
          0,
          HostCmd_OPTION_USE_INT,
          (NDIS_OID)0,
          HostCmd_PENDING_ON_NONE,
          0,
          FALSE,
          NULL,
          NULL,
          NULL,
          NULL);
    } // if ( Adapter->MediaConnectStatus != NdisMediaStateDisconnected )
  */

	///crlo:fastroam ++
	#ifdef CCX_FASTROAM
	{
		if (NdisEqualMemory(Adapter->ccxLastAP.alMACAddr, Adapter->ccxCurrentAP.alMACAddr, sizeof(NDIS_802_11_MAC_ADDRESS))) {
			///The Adapter->ccxCurrentAP is an valid data, complete the data by recording 
			///		the dis-association time
			Adapter->ccxLastAP.alDisassocTime = GetTickCount();
			RETAILMSG(1,(TEXT("Disconnected, Ticks: %d \n"), Adapter->ccxLastAP.alDisassocTime));
		} else {
			///NdisZeroMemory(&Adapter->ccxLastAP, sizeof(CCX_AP_INFO));
		}
		NdisZeroMemory(&Adapter->ccxCurrentAP, sizeof(CCX_AP_INFO));
	}
	#endif ///CCX_FASTROAM
	///crlo:fastroam --
  return; 
}

/******************************************************************************
 *
 *  Name: HandleRFRegAccess()
 *
 *  Description: Patch offset 7 for rev 4 boards
 *
 *****************************************************************************/
#ifdef EVALBOARD_REV4_FIX
VOID HandleRFRegAccess(PHostCmd_DS_CMD_RF_REG_ACCESS pRegPtr, 

⌨️ 快捷键说明

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