📄 hwacproc.c
字号:
//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 + -