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

📄 hwacproc.c

📁 此压缩包为杰得开发得z228的BSP的源代码,可以实现很多功能,尤其是视频解码有很好的效果.
💻 C
📖 第 1 页 / 共 5 页
字号:
                  0,
                  FALSE,
                  NULL,
                  NULL,
                  NULL,
                  NULL);

    NdisMSleep(60000);
    
    DBGPRINT( DBG_WARNING, ("[Mrvl] Reset and disconnect due to MIC error\n") );
    
    ResetDisconnectStatus( pAdapter );
}
// tt mic error --

/******************************************************************************
 *
 *  Name: HandleAdHocModeLink()
 *
 *  Description: Handle link sensed and bcn lost event in adhoc mode
 *
 *  Arguments:  PMRVDRV_ADAPTER Adapter
 *        UINT INTCode
 *    
 *  Return Value:        
 * 
 *  Notes:               
 *
 *****************************************************************************/
VOID
HandleAdHocModeLink(
    IN PMRVDRV_ADAPTER Adapter, 
  IN UINT INTCode)
{
    if ( Adapter->InfrastructureMode != Ndis802_11IBSS )
    {
        DBGPRINT(DBG_WARNING, ("HandleAdHocModeLink(): Currently NOT in adhoc "
            "mode, event IGNORED!\n"));
        return;
    }

} // HandleAdHocModeLink


/******************************************************************************
 *
 *  Name: HandleMACEvent()
 *
 *  Description: MAC event handler
 *
 *  Arguments:  PMRVDRV_ADAPTER Adapter
 *        UINT INTCode
 *    
 *  Return Value:        
 * 
 *  Notes:               
 *
 *****************************************************************************/
VOID
HandleMACEvent(
  IN PMRVDRV_ADAPTER Adapter, 
  IN UINT INTCode)
{
    // ULONG i;
    // CmdCtrlNode *pTempNode; 
   PNDIS_PACKET pPacket;
   NDIS_STATUS Status;  
  #ifdef DEEP_SLEEP
  #ifdef IF_SDIO
     UCHAR regValue;
     SD_API_STATUS sdStatus;
  #endif    ///IF_SDIO
  #endif  

    //RETAILMSG(1,(L"Handle Mac Evt(0x%x)+++\n\r",INTCode )); 

    switch( INTCode ){  

#ifdef WMM
    case MACREG_INT_CODE_WMM_STATUS_CHANGE:
        DbgWmmMsg( (L"MAC - wmm status change\n") );
        PrepareAndSendCommand(
            Adapter,
            HostCmd_CMD_802_11_WMM_GET_STATUS,
            HostCmd_ACT_GET,
            HostCmd_OPTION_USE_INT,
            (NDIS_OID)0,
            HostCmd_PENDING_ON_NONE,
            0,
            FALSE,
            NULL,
            NULL,
            NULL,
            NULL );               
        break;
#endif

   #ifdef BG_SCAN
        case MACREG_INT_CODE_BG_SCAN_REPORT:

		//RETAILMSG(1, (TEXT("MACREG_INT_CODE_BG_SCAN_REPORT \r\n")));	
             #ifdef DEEP_SLEEP
		    if (Adapter->IsDeepSleep == TRUE)
                  {
	                Adapter->IsDeepSleep = FALSE;
	                Adapter->IsDeepSleepRequired= FALSE; 
                  }
             #endif   

            
            DBGPRINT( DBG_SCAN, ("MACREG_INT_CODE_BG_SCAN_REPORT: \n") );
                if ( Adapter->PSMode == Ndis802_11PowerModeMAX_PSP )
	       	{
	       	    Adapter->PSMode = Ndis802_11PowerModeCAM;
		    Adapter->PSMode_B = Ndis802_11PowerModeCAM;
                    PSWakeup(Adapter);
		    Adapter->bPSEnableBGScan=TRUE;
	       	}
		          	
            HandleBgScanResultEvent( Adapter );
            break;
    #endif      
  
    case MACREG_INT_CODE_TX_PPA_FREE: // 05/28/02 TX PPA is available
        DBGPRINT(DBG_MACEVENT,("MACREG_INT_CODE_TX_PPA_FREE: \n"));
    break;
    
  case MACREG_INT_CODE_TX_DMA_DONE: // TX DMA finished
        DBGPRINT(DBG_MACEVENT,("MACREG_INT_CODE_TX_DMA_DONE: Unimplemented"));
    break;

  case MACREG_INT_CODE_LINK_SENSED: //Link found
    DBGPRINT(DBG_MACEVENT,("MACREG_INT_CODE_LINK_SENSED\n"));
        HandleAdHocModeLink(Adapter, MACREG_INT_CODE_LINK_SENSED);
    break;

    case MACREG_INT_CODE_ADHOC_BCN_LOST:    // last partner in adhoc mode left
        DBGPRINT(DBG_MACEVENT,("MACREG_INT_CODE_ADHOC_BCN_LOST\n"));
    //dralee, 081005 
    //if( Adapter->CurPowerState == NdisDeviceStateD0)
    {
                HandleAdHocModeLink(Adapter, MACREG_INT_CODE_ADHOC_BCN_LOST);
    }
        break;

    case MACREG_INT_CODE_DEAUTHENTICATED:
    {
    DBGPRINT(DBG_MACEVENT|DBG_CCX,("HWAC - Deauthenticated\n"));
    //RETAILMSG(1,(TEXT("HWAC - Deauthenticated**************\n\r")));

        // tt mic error ++
        //if ( Adapter->bMicErrorIsHappened )
        if ( IsInMicErrorPeriod( Adapter ) )
        {
            //Adapter->bMicErrorIsHappened = FALSE;
            DisconnectDueToMicError( Adapter );
        }
        else
        {
        // tt mic error --
             #ifdef REASSOCIATE
               if (Adapter->bIsDeauthenticationEvent == FALSE)
               {
               Adapter->bIsDeauthenticationEvent = TRUE;
              
                       MacEventDisconnected(Adapter, 5000, FALSE);

               InfraBssReconnectStart( Adapter, RECONNECT_DEAUTHENTICATE );
                 }
            #else          
                  // when disassociated, the number of bssid should be 0
                  Adapter->ulNumOfBSSIDs = 0;
                  Adapter->ulPSNumOfBSSIDs = 0;
                  MacEventDisconnected(Adapter,(UINT) MRVDRV_TEN_SECS_TIMER_INTERVAL, TRUE);
        #endif
        }
    	} 
        break;
    
    case MACREG_INT_CODE_DISASSOCIATED:
    DBGPRINT(DBG_MACEVENT,("HWAC - Disassociated\n"));
    //RETAILMSG(1,(TEXT("HWAC - Disassociated*******\n\r")));
         //35.p6++
         // when disassociated, the number of bssid should be 0
          //Adapter->ulNumOfBSSIDs = 0;
          //Adapter->ulPSNumOfBSSIDs = 0;
        //35.p6--  

        // tt mic error ++
        //if ( Adapter->bMicErrorIsHappened )
        if ( IsInMicErrorPeriod( Adapter ) )
        {
            //Adapter->bMicErrorIsHappened = FALSE;
            DisconnectDueToMicError( Adapter );
        }
        else
        // tt mic error --
    MacEventDisconnected(Adapter,(UINT) MRVDRV_TEN_SECS_TIMER_INTERVAL, TRUE);
        
        break;


    case MACREG_INT_CODE_LINK_LOSE_W_SCAN: // Link lost
    DBGPRINT(DBG_MACEVENT,("HWAC - Link lost WITH SCAN\n"));
    //RETAILMSG(1,(TEXT("HWAC - Link lost WITH SCAN******\n\r")));
	///crlo:fastroam ++
	#ifdef CCX_FASTROAM
	PrintMacro("\nHWAC - Link lost WITH SCAN******\n");
	v5MrvPrintFileW(L"\nHWAC - Link lost WITH SCAN******\n");
	#endif ///CCX_FASTROAM
	///crlo:fastroam --
	
#ifdef AUTO_REASSOCIATION
        if ( StartReassociation( Adapter, MACREG_INT_CODE_LINK_LOSE_W_SCAN ) )
            break;
#endif
    if( Adapter->CurPowerState == NdisDeviceStateD0)
    {
       #ifdef ACTIVE_ROAMING
	   if(Adapter->bIsActiveRoaming ==TRUE)
	        ActiveRoamingStop(Adapter);
       #endif	
         MacEventDisconnected(Adapter, Adapter->TimerInterval,FALSE);
      #ifdef REASSOCIATE
           InfraBssReconnectStart( Adapter, RECONNECT_LINK_LOST );    
         #endif 
    } 
    break;

  case MACREG_INT_CODE_LINK_LOSE_NO_SCAN:
    DBGPRINT(DBG_MACEVENT,("HWAC - Link lost\n"));
    //RETAILMSG(1,(TEXT("HWAC - Link lost***********\n\r")));
	///crlo:fastroam ++
	#ifdef CCX_FASTROAM
	PrintMacro("\nHWAC - Link lost NO SCAN******\n");
	v5MrvPrintFileW(L"\nHWAC - Link lost NO SCAN******\n");
	#endif ///CCX_FASTROAM
	///crlo:fastroam --
//35.p6++
// tt ++ re-assoc issue 060123
    //DeleteBssidInPSList( Adapter, Adapter->CurrentBSSID );
// tt -- re-assoc issue 060123
//35.p6--
#ifdef AUTO_REASSOCIATION
        if ( StartReassociation( Adapter, MACREG_INT_CODE_LINK_LOSE_NO_SCAN ) )
            break;
#endif
    //dralee 081005, V4
    //if( Adapter->CurPowerState == NdisDeviceStateD0)
      {
                //35.p6++
                 #ifdef REASSOCIATE
               Adapter->bIsBeaconLoseEvent = TRUE;
           #endif     
             //35.p6--  
            #ifdef ACTIVE_ROAMING
	         if(Adapter->bIsActiveRoaming ==TRUE)
	              ActiveRoamingStop(Adapter);
            #endif	
                //dralee_20060509
                if( Adapter->bHostWakeCfgSet == SPCFG_ENABLE )
                {
                    Deactivate_Host_Sleep_Cfg(Adapter);
                    Adapter->bHostWakeCfgSet = SPCFG_MASKED;  
                }

                MacEventDisconnected(Adapter, 5000,FALSE);

          #ifdef REASSOCIATE
            InfraBssReconnectStart( Adapter, RECONNECT_LINK_LOST );        
             #endif //REASSOCIATE               
      }
    break;

    case MACREG_INT_CODE_PS_SLEEP:
    DBGPRINT(DBG_MACEVENT,("HWAC - MACREG_INT_CODE_PS_SLEEP 0xb Power Save -> Sleep\n"));
    DBGPRINT(DBG_ALLEN,("HWAC - MACREG_INT_CODE_PS_SLEEP 0xb Power Save -> Sleep\n"));
#ifdef WMM_UAPSD
    //DbgWmmMsg( (L"+wmm+ PS sleep mac event\n") );
    Adapter->bNullFrameSent = 0; //clear flag to let ps_confirm can be sent down.
#endif
    //RETAILMSG(1,(TEXT("[MACEvent]:MACREG_INT_CODE_PS_SLEEP\n\r")));

    //DBGPRINT(DBG_ALLEN,("HWAC - MACREG_INT_CODE_PS_SLEEP 0xb Power Save -> Sleep\n"));
    /// DBGPRINT(DBG_MACEVENT | DBG_POWERSAVE,("SLEEP called\n")); 
 
    UpdatePowerSaveState( Adapter, NULL, MACREG_INT_CODE_PS_SLEEP);

  break;

  case MACREG_INT_CODE_PS_AWAKE:
    DBGPRINT(DBG_MACEVENT,("HWAC - MACREG_INT_CODE_PS_AWAKE 0xa Power Save -> Awake\n"));
    //RETAILMSG(1,(TEXT("\n\r[MACEvent]: HOST_WAKE_UP:MACREG_INT_CODE_PS_AWAKE")));
#ifdef WMM_UAPSD
    Adapter->bNullFrameSent = 0;
    //DbgWmmMsg( (L"+wmm+ PS awake mac event\n") );
    //DbgWmmMsg( (L"+wmm+ TxPktCount=%d, SentPkt=0x%x\n", Adapter->TxPacketCount, Adapter->SentPacket ) );
#endif
    UpdatePowerSaveState( Adapter, NULL, MACREG_INT_CODE_PS_AWAKE);

// tt  ++ 2005/10/13 Dragon's suggestion. The reason is: we should give driver a chance to execute cmd after awake.
    GetCmdFromQueueToExecute( Adapter );
// tt --  
    //dralee_20060509
    if( Adapter->bHostWakeCfgSet == SPCFG_MASKED )
    {    
        NDIS_STATUS Status;
        
        if( Adapter->bIsReconnectEnable == FALSE && 
            Adapter->MediaConnectStatus == NdisMediaStateConnected )
        {              
            if( ++Adapter->SleepCfgRestoreTick > TIME_TO_RESTORE_HOST_SLEEP_CFG )
            {
               Adapter->SleepCfgRestoreTick = 0;
               Status =Reactivate_Host_Sleep_Cfg(Adapter); 
               if( Status == NDIS_STATUS_SUCCESS )
                   Adapter->bHostWakeCfgSet = SPCFG_ENABLE;
            }
        }
    }  

      
    //dralee 
    EnterCriticalSection(&Adapter->TxCriticalSection);

    //++dralee_20060327
    Adapter->TxLock = 0;  

    if( Adapter->TxPacketCount &&
        Adapter->SentPacket == NULL)
    {    
        PTXQ_KEEPER  pTxQKeeper;
        PTXQ_NODE    pTQNode;
 
        TxPacketDeQueue(Adapter, &pTxQKeeper, &pTQNode);
        //++dralee_20060327
        Adapter->TxPacketCount--;

        pPacket = pTQNode -> pPacket; 
        #ifdef RETQ_TIMER
        Status = SendSinglePacket(Adapter,pPacket);     
        #else
        Status = SendSinglePacket(Adapter,pPacket,&(pTQNode->DnldPacket));
        #endif
        if(Status == NDIS_STATUS_SUCCESS)
        {                         
          //Adapter->TxPacketCount--;  //++dralee_20060327
          PushFreeTxQNode(Adapter->TxFreeQ,pTQNode);  
          //Status = NDIS_STATUS_PENDING;  
        }
        else
        {    
             RETAILMSG(1, (TEXT("[PS_AWAKE]Send packet fail\r\n")));;
             //Error handling , push back this node 
             InsertTxQNodeFromHead(pTxQKeeper,pTQNode);
             //++dralee_20060327                      
             Adapter->TxPacketCount++;
 
        }
    }
#ifdef WMM_UAPSD
    else if(Adapter->WmmDesc.WmmUapsdEnabled && CheckLastPacketIndication(Adapter) )
    {    

⌨️ 快捷键说明

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