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