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

📄 hwacproc.c

📁 marvell8385 GSPI开发驱动
💻 C
📖 第 1 页 / 共 5 页
字号:
    //NdisMSleep(10000);
        NdisMSleep(60000);
        DBGPRINT(DBG_WARNING, ("Time since last MIC error is %d, disconnect!\n", ulTimeDiff));
        //062905
#if 0
#ifdef DEBUG_PARA_ROAMING
	if((!priv.bAutoRoamingInProcess) && (!priv.bManualRoamingInProcess))
    	{
#endif
#endif
#ifdef DEBUG_PARA_ROAMING
#ifdef PARA_WPA_1X
//#else
if(IsRoamingWantWZCWorkProperly()){
     		ResetDisconnectStatus(Adapter);		
}
#endif
#else
     		ResetDisconnectStatus(Adapter);		
#endif
#if 0
#ifdef DEBUG_PARA_ROAMING
	}
#endif
#endif
    DBGPRINT(DBG_WARNING, ("Time since last MIC error is %d, disconnect!\n", ulTimeDiff));
    
    }

    Adapter->ulLastMICErrorTime = ulCurrTime;
  
}

/******************************************************************************
 *
 *  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 SDIO
     UCHAR regValue;
     SD_API_STATUS sdStatus;
  #endif
  #endif  

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

    switch( INTCode ){  
  
    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,("HWAC - Deauthenticated\n"));
    RETAILMSG(1,(TEXT("HWAC - Deauthenticated**************\n\r")));
	
	WriteCommonLogFile(WIFI_LOG,"AP is disconnected(Reason=3)  (Deauthenticated)!...\r\n",
				strlen("AP is disconnected(Reason=3)	(Deauthenticated)!...\r\n"));
	 if(g_AssociationDuration != 0)
	{
	  char logstr[200];
	  sprintf(logstr,"Association Duration is %d seconds\r\n", (GetTickCount() - g_AssociationDuration)/1000);
	  WriteCommonLogFile(WIFI_LOG,logstr, strlen(logstr));
	  g_AssociationDuration = 0;
	}

#ifdef PARA_WPA_1X
    SendNotifyToRoaming_wx(DEAUTHENTICATE_EVENT_WX,0,0,1);//zzh added 2006-08-2
#endif
#ifdef DEBUG_PARA_ROAMING

#ifdef DEBUG_PARA_ROAMING_PRINT
	ParaPrintFile("\n[HandleMACEvent]:MACREG_INT_CODE_DEAUTHENTICATED\n");
#endif

#ifdef PARA_WPA_1X
if(!IsRoamingWantWZCWorkProperly()){
        wlan_RMMLinkLost(Adapter);
//#else
}else{
    	Adapter->ulNumOfBSSIDs = 0;
       Adapter->ulPSNumOfBSSIDs = 0;
	MacEventDisconnected(Adapter,(UINT) MRVDRV_TEN_SECS_TIMER_INTERVAL, TRUE);
}
#else
        wlan_RMMLinkLost(Adapter);
#endif
#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")));
	WriteCommonLogFile(WIFI_LOG,"AP is disconnected(Reason=3)  (Disassociated)!...\r\n",
				strlen("AP is disconnected(Reason=3)	(Disassociated)!...\r\n"));
	 if(g_AssociationDuration != 0)
	{
	  char logstr[200];
	  sprintf(logstr,"Association Duration is %d seconds\r\n", (GetTickCount() - g_AssociationDuration)/1000);
	  WriteCommonLogFile(WIFI_LOG,logstr, strlen(logstr));
	  g_AssociationDuration = 0;
	}

#ifdef DEBUG_PARA_ROAMING

#ifdef DEBUG_PARA_ROAMING_PRINT
	ParaPrintFile("\n[HandleMACEvent]:MACREG_INT_CODE_DISASSOCIATED\n");
#endif

#ifdef PARA_WPA_1X
if(!IsRoamingWantWZCWorkProperly()){
        wlan_RMMLinkLost(Adapter);
}else{
    	Adapter->ulNumOfBSSIDs = 0;
       Adapter->ulPSNumOfBSSIDs = 0;
    MacEventDisconnected(Adapter,(UINT) MRVDRV_TEN_SECS_TIMER_INTERVAL, TRUE);
}
#else
        wlan_RMMLinkLost(Adapter);
#endif
#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_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")));
	WriteCommonLogFile(WIFI_LOG,"AP is disconnected(Reason=2)  (lose beacon)!...\r\n",
				strlen("AP is disconnected(Reason=2)	(lose beacon)!...\r\n"));
	 if(g_AssociationDuration != 0)
	{
	  char logstr[200];
	  sprintf(logstr,"Association Duration is %d seconds\r\n", (GetTickCount() - g_AssociationDuration)/1000);
	  WriteCommonLogFile(WIFI_LOG,logstr, strlen(logstr));
	  g_AssociationDuration = 0;
	}


#ifdef DEBUG_PARA_ROAMING

#ifdef DEBUG_PARA_ROAMING_PRINT
	ParaPrintFile("\n[HandleMACEvent]:MACREG_INT_CODE_LINK_LOSE_W_SCAN\n");
#endif

#ifdef PARA_WPA_1X
if(!IsRoamingWantWZCWorkProperly()){
        wlan_RMMLinkLost(Adapter);
//#else
}else{
#ifdef AUTO_REASSOCIATION
        if ( StartReassociation( Adapter, MACREG_INT_CODE_LINK_LOSE_W_SCAN ) )
            break;
#endif
    if( Adapter->CurPowerState == NdisDeviceStateD0)
    {
      MacEventDisconnected(Adapter, Adapter->TimerInterval,FALSE);
    } 
}
#else
        wlan_RMMLinkLost(Adapter);
#endif
#else
#ifdef AUTO_REASSOCIATION
        if ( StartReassociation( Adapter, MACREG_INT_CODE_LINK_LOSE_W_SCAN ) )
            break;
#endif
    if( Adapter->CurPowerState == NdisDeviceStateD0)
    {
      MacEventDisconnected(Adapter, Adapter->TimerInterval,FALSE);
    } 
#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")));
	WriteCommonLogFile(WIFI_LOG,"AP is disconnected(Reason=2)  (lose beacon)!...\r\n",
	strlen("AP is disconnected(Reason=2)	(lose beacon)!...\r\n"));
	 if(g_AssociationDuration != 0)
	{
	  char logstr[200];
	  sprintf(logstr,"Association Duration is %d seconds\r\n", (GetTickCount() - g_AssociationDuration)/1000);
	  WriteCommonLogFile(WIFI_LOG,logstr, strlen(logstr));
	  g_AssociationDuration = 0;
	}


#ifdef DEBUG_PARA_ROAMING
#ifdef DEBUG_PARA_ROAMING_PRINT
	ParaPrintFile("\n[HandleMACEvent]:MACREG_INT_CODE_LINK_LOSE_NO_SCAN\n");
#endif
#ifdef PARA_WPA_1X
if(!IsRoamingWantWZCWorkProperly()){
        wlan_RMMLinkLost(Adapter);
//#else
}else{
#ifdef AUTO_REASSOCIATION
        if ( StartReassociation( Adapter, MACREG_INT_CODE_LINK_LOSE_NO_SCAN ) )
            break;
#endif
    //dralee 081005, V4
    //if( Adapter->CurPowerState == NdisDeviceStateD0)
      {
                if( Adapter->bHostWakeCfgSet == 1 )
                {
                    Deactivate_Host_Sleep_Cfg(Adapter);
                    Adapter->bHostWakeCfgSet = 0;
                }

                MacEventDisconnected(Adapter, 5000,FALSE);
		  #ifdef REASSOCIATE
		    InfraBssReconnectStart( Adapter, RECONNECT_LINK_LOST );		   
	         #endif //REASSOCIATE		   		
      }
}
#else
        wlan_RMMLinkLost(Adapter);
#endif
#else
#ifdef AUTO_REASSOCIATION
        if ( StartReassociation( Adapter, MACREG_INT_CODE_LINK_LOSE_NO_SCAN ) )
            break;
#endif
    //dralee 081005, V4
    //if( Adapter->CurPowerState == NdisDeviceStateD0)
      {
                if( Adapter->bHostWakeCfgSet == 1 )
                {
                    Deactivate_Host_Sleep_Cfg(Adapter);
                    Adapter->bHostWakeCfgSet = 0;
                }

                MacEventDisconnected(Adapter, 5000,FALSE);
		  #ifdef REASSOCIATE
		    InfraBssReconnectStart( Adapter, RECONNECT_LINK_LOST );		   
	         #endif //REASSOCIATE		   		
      }
#endif
    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
    Adapter->bNullFrameSent = 0; //clear flag to let ps_confirm can be sent down.
#endif
#ifdef WLAN_PMU_DEBUG
      RETAILMSG(1,(TEXT("MACEvent: MACREG_INT_CODE_PS_SLEEP..., ticks: %d"), GetTickCount() ));
//    RETAILMSG(1,(TEXT("[MACEvent]:MACREG_INT_CODE_PS_SLEEP\n\r")));
#endif
    //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;
#endif
#ifdef WLAN_PMU_DEBUG
      RETAILMSG(1,(TEXT("MACEvent: MACREG_INT_CODE_PS_AWAKE..., ticks: %d"), GetTickCount() ));
//    RETAILMSG(1,(TEXT("[MACEvent]:MACREG_INT_CODE_PS_AWAKE\n\r")));
#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 
    EnterCriticalSection(&Adapter->TxCriticalSection);
    if( Adapter->TxPacketCount &&
        Adapter->SentPacket == NULL)
    #ifdef TX_PRY_Q    
    {    
        PTXQ_KEEPER  pTxQKeeper;
        PTXQ_NODE    pTQNode;
 
        TxPacketDeQueue(Adapter, &pTxQKeeper, &pTQNode);

// tt ++ ps check
    if ( pTQNode == NULL )
        DBGPRINT(DBG_WARNING, ( "pq: 1\n") );
// tt --

        pPacket = pTQNode -> pPacket;  
        Status = SendSinglePacket(Adapter,pPacket);
        if(Status == NDIS_STATUS_SUCCESS)
        {                         
          Adapter->TxPacketCount--;
          PushFreeTxQNode(Adapter->TxFreeQ,pTQNode);  
          //Status = NDIS_STATUS_PENDING;  
        }
        else
        {    
#ifdef WLAN_PMU_DEBUG
            RETAILMSG(1, (TEXT("[PS_AWAKE]Send packet fail\r\n")));;
#endif
//Error handling , push back this node 
             InsertTxQNodeFromHead(pTxQKeeper,pTQNode); 
        }
    }
    #else
    {   
        pPacket = Adapter->SendPackets[Adapter->TxPacketGet];
        Status = SendSinglePacket(Adapter,pPacket);
        if(Status == NDIS_STATUS_SUCCESS)
        {
                                
           //RETAILMSG(1,(TEXT("PS_AWAKE: Packet is Sent \r\n")));
           Adapter->TxPacketGet++;
           Adapter->TxPacketGet %= MAX_TX_PACKETS;
        }
        else
            RETAILMSG(1, (L"PS_AWAKE:Send packet fail %d \r\n", Adapter->TxPacketGet));;

⌨️ 快捷键说明

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