summaryrefslogtreecommitdiff
path: root/wl1271/stad/src/Sta_Management/healthMonitor.c
diff options
context:
space:
mode:
Diffstat (limited to 'wl1271/stad/src/Sta_Management/healthMonitor.c')
-rw-r--r--wl1271/stad/src/Sta_Management/healthMonitor.c487
1 files changed, 0 insertions, 487 deletions
diff --git a/wl1271/stad/src/Sta_Management/healthMonitor.c b/wl1271/stad/src/Sta_Management/healthMonitor.c
deleted file mode 100644
index ed7d8e44..00000000
--- a/wl1271/stad/src/Sta_Management/healthMonitor.c
+++ /dev/null
@@ -1,487 +0,0 @@
-/*
- * healthMonitor.c
- *
- * Copyright(c) 1998 - 2010 Texas Instruments. All rights reserved.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * * Neither the name Texas Instruments nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/** \file healthMonitor.c
- * \brief Firmware Recovery Mechanism
- */
-
-/** \file healthMonitor.c
- * \brief The health monitor module. Gets failures indications and handle them.
- *
- * For periodic check, use HW watchdog mechanizem instead of local periodic timer check
- *
- * \see healthMonitor.h
- */
-
-#define __FILE_ID__ FILE_ID_66
-#include "healthMonitor.h"
-#include "osApi.h"
-#include "timer.h"
-#include "report.h"
-#include "siteMgrApi.h"
-#include "PowerMgr_API.h"
-#include "currBss.h"
-#include "DataCtrl_Api.h"
-#include "TWDriver.h"
-#include "SoftGeminiApi.h"
-#include "currBss.h"
-#include "rsnApi.h"
-#include "DrvMain.h"
-#include "DrvMainModules.h"
-#include "TWDriverInternal.h"
-
-
-typedef struct
-{
- /* handles to other modules */
- TI_HANDLE hOs; /* handle to the OS object */
- TI_HANDLE hReport; /* handle to the report object */
- TI_HANDLE hTWD; /* handle to the TWD object */
- TI_HANDLE hSiteMgr; /* handle to the site manager object */
- TI_HANDLE hScr; /* handle to the SCR object */
- TI_HANDLE hSoftGemini; /* handle to the Soft Gemini object */
- TI_HANDLE hDrvMain; /* handle to the Recovery Mgr object */
- TI_HANDLE hTxCtrl; /* handle to the TX Ctrl object */
- TI_HANDLE hCurrBss; /* handle to the currBss object */
- TI_HANDLE hRsn; /* handle to the RSN */
- TI_HANDLE hTimer; /* handle to the Timer module object */
- TI_HANDLE hContext; /* handle to the context-engine object */
-
- /* Timers handles */
- TI_HANDLE hFailTimer; /* failure event timer */
-
- /* Management variables */
- TI_UINT32 numOfHealthTests; /* number of health tests performed counter */
- healthMonitorState_e state; /* health monitor state */
- TI_BOOL bFullRecoveryEnable; /* full recovery enable flag */
- TI_BOOL recoveryTriggerEnabled [MAX_FAILURE_EVENTS];
- /* recovery enable flags per trigger type */
- TI_UINT32 failureEvent; /* current recovery trigger */
- TI_UINT32 keepAliveIntervals; /* number of health monitor timer intervals at which keep alive should be sent */
- TI_UINT32 currentKeepAliveCounter;/* counting how many timer intervals had passed w/o a keep alive */
-
- /* Recoveries Statistics */
- TI_UINT32 recoveryTriggersNumber [MAX_FAILURE_EVENTS];
- /* Number of times each recovery trigger occured */
- TI_UINT32 numOfRecoveryPerformed; /* number of recoveries performed */
-
-} THealthMonitor;
-
-
-static void healthMonitor_proccessFailureEvent (TI_HANDLE hHealthMonitor, TI_BOOL bTwdInitOccured);
-
-
-#ifdef REPORT_LOG
-
-static char* sRecoveryTriggersNames [MAX_FAILURE_EVENTS] =
-{
- "NO_SCAN_COMPLETE_FAILURE",
- "MBOX_FAILURE",
- "HW_AWAKE_FAILURE",
- "TX_STUCK",
- "DISCONNECT_TIMEOUT",
- "POWER_SAVE_FAILURE",
- "MEASUREMENT_FAILURE",
- "BUS_FAILURE",
- "HW_WD_EXPIRE",
- "RX_XFER_FAILURE"
-};
-#endif
-
-
-/**
- * \fn healthMonitor_create
- * \brief Create module object
- *
- * Create module object.
- *
- * \note
- * \param hOs - The OS adaptation handle
- * \return The created module handle
- * \sa
- */
-TI_HANDLE healthMonitor_create (TI_HANDLE hOs)
-{
- THealthMonitor *pHealthMonitor;
-
- /* Allocate memory for the health monitor object and nullify it */
- pHealthMonitor = (THealthMonitor*)os_memoryAlloc (hOs, sizeof(THealthMonitor));
- if (pHealthMonitor == NULL)
- {
- return NULL;
- }
- os_memoryZero (hOs, pHealthMonitor, sizeof(THealthMonitor));
-
- /* Store OS object handle */
- pHealthMonitor->hOs = hOs;
-
- return (TI_HANDLE)pHealthMonitor;
-}
-
-
-/**
- * \fn healthMonitor_init
- * \brief Init module handles and variables
- *
- * Init module handles and variables.
- *
- * \note
- * \param pStadHandles - The driver modules handles
- * \return void
- * \sa
- */
-void healthMonitor_init (TStadHandlesList *pStadHandles)
-{
- THealthMonitor *pHealthMonitor = (THealthMonitor *)(pStadHandles->hHealthMonitor);
-
- pHealthMonitor->hReport = pStadHandles->hReport;
- pHealthMonitor->hTWD = pStadHandles->hTWD;
- pHealthMonitor->hSiteMgr = pStadHandles->hSiteMgr;
- pHealthMonitor->hScr = pStadHandles->hSCR;
- pHealthMonitor->hSoftGemini = pStadHandles->hSoftGemini;
- pHealthMonitor->hDrvMain = pStadHandles->hDrvMain;
- pHealthMonitor->hTxCtrl = pStadHandles->hTxCtrl;
- pHealthMonitor->hCurrBss = pStadHandles->hCurrBss;
- pHealthMonitor->hRsn = pStadHandles->hRsn;
- pHealthMonitor->hTimer = pStadHandles->hTimer;
- pHealthMonitor->hContext = pStadHandles->hContext;
-
- pHealthMonitor->state = HEALTH_MONITOR_STATE_DISCONNECTED;
- pHealthMonitor->failureEvent = (TI_UINT32)NO_FAILURE;
-
- /* Register the failure event callback */
- TWD_RegisterCb (pHealthMonitor->hTWD,
- TWD_EVENT_FAILURE,
- (void *)healthMonitor_sendFailureEvent,
- (void *)pHealthMonitor);
-}
-
-
-/**
- * \fn healthMonitor_SetDefaults
- * \brief Set module defaults and create timers
- *
- * Set module defaults from Ini-file and create timers.
- *
- * \note
- * \param hHealthMonitor - The module's handle
- * \param healthMonitorInitParams - The module's parameters default values (from Ini-file).
- * \return void
- * \sa
- */
-TI_STATUS healthMonitor_SetDefaults (TI_HANDLE hHealthMonitor, healthMonitorInitParams_t *healthMonitorInitParams)
-{
- THealthMonitor *pHealthMonitor = hHealthMonitor;
- int i;
-
- /* Registry configuration */
- pHealthMonitor->bFullRecoveryEnable = healthMonitorInitParams->FullRecoveryEnable;
-
- for (i = 0; i < MAX_FAILURE_EVENTS; i++)
- {
- pHealthMonitor->recoveryTriggerEnabled[i] = healthMonitorInitParams->recoveryTriggerEnabled[i];
- }
-
- /* Create recovery request timer */
- pHealthMonitor->hFailTimer = tmr_CreateTimer (pHealthMonitor->hTimer);
- if (pHealthMonitor->hFailTimer == NULL)
- {
- TRACE0(pHealthMonitor->hReport, REPORT_SEVERITY_ERROR, "healthMonitor_SetDefaults(): Failed to create hFailTimer!\n");
- return TI_NOK;
- }
-
- return TI_OK;
-}
-
-
-/***********************************************************************
- * healthMonitor_unload
- ***********************************************************************
-DESCRIPTION:
-
-INPUT:
-
-OUTPUT:
-
-RETURN:
-
-************************************************************************/
-TI_STATUS healthMonitor_unload (TI_HANDLE hHealthMonitor)
-{
- THealthMonitor *pHealthMonitor;
-
- pHealthMonitor = (THealthMonitor*)hHealthMonitor;
-
- if (pHealthMonitor != NULL)
- {
- if (NULL != pHealthMonitor->hFailTimer)
- {
- /* Release the timer */
- tmr_DestroyTimer (pHealthMonitor->hFailTimer);
- }
-
- /* Freeing the object should be called last !!!!!!!!!!!! */
- os_memoryFree (pHealthMonitor->hOs, pHealthMonitor, sizeof(THealthMonitor));
- }
-
- return TI_OK;
-}
-
-
-/***********************************************************************
- * healthMonitor_setState
- ***********************************************************************
-DESCRIPTION:
-
-
-INPUT:
-
-OUTPUT:
-
-RETURN:
-
-************************************************************************/
-void healthMonitor_setState (TI_HANDLE hHealthMonitor, healthMonitorState_e state)
-{
- THealthMonitor *pHealthMonitor = (THealthMonitor*)hHealthMonitor;
-
- pHealthMonitor->state = state;
-}
-
-
-/***********************************************************************
- * healthMonitor_PerformTest
- ***********************************************************************
-DESCRIPTION: Called periodically by timer every few seconds (depends on connection state),
- or optionally by external application.
-
-INPUT: hHealthMonitor - Module handle.
- bTwdInitOccured - Indicates if TWDriver recovery occured since timer started
-
-OUTPUT:
-
-RETURN:
-
-************************************************************************/
-void healthMonitor_PerformTest (TI_HANDLE hHealthMonitor, TI_BOOL bTwdInitOccured)
-{
- THealthMonitor *pHealthMonitor = (THealthMonitor*)hHealthMonitor;
-
- pHealthMonitor->numOfHealthTests++;
-
- /* Send health-check command to FW, just to ensure command complete is accepted */
- TWD_CmdHealthCheck (pHealthMonitor->hTWD);
-}
-
-
-/***********************************************************************
- * healthMonitor_sendFailureEvent
- ***********************************************************************
-DESCRIPTION: Entry point for all low level modules to send a failure evrnt
-
-INPUT: handle - health monitor handle
- failureEvent - the error
-
-OUTPUT:
-
-RETURN:
-
-************************************************************************/
-void healthMonitor_sendFailureEvent (TI_HANDLE hHealthMonitor, EFailureEvent failureEvent)
-{
- THealthMonitor *pHealthMonitor = (THealthMonitor*)hHealthMonitor;
-
- /* Check the recovery process is already running */
- if (pHealthMonitor->failureEvent < MAX_FAILURE_EVENTS)
- {
- TRACE0(pHealthMonitor->hReport, REPORT_SEVERITY_WARNING , ": recovery process is already handling , new trigger is \n");
- }
-
- /* Recovery is performed only if this trigger is enabled in the .INI file */
- else if (pHealthMonitor->recoveryTriggerEnabled[failureEvent])
- {
- pHealthMonitor->failureEvent = failureEvent;
- /*
- * NOTE: start timer with minimum expiry (1 msec) for recovery will start
- * from the top of the stack
- */
- tmr_StartTimer (pHealthMonitor->hFailTimer,
- healthMonitor_proccessFailureEvent,
- (TI_HANDLE)pHealthMonitor,
- 1,
- TI_FALSE);
- }
- else
- {
- TRACE0(pHealthMonitor->hReport, REPORT_SEVERITY_ERROR , ": Recovery trigger is disabled!\n");
- }
-}
-
-
-/***********************************************************************
- * healthMonitor_proccessFailureEvent
- ***********************************************************************
-DESCRIPTION: this is the central error function - will be passed as call back
- to the TnetWDriver modules. it will parse the error and dispatch the
- relevant action (recovery or not)
-
-INPUT: hHealthMonitor - health monitor handle
- bTwdInitOccured - Indicates if TWDriver recovery occured since timer started
-
-OUTPUT:
-
-RETURN:
-
-************************************************************************/
-void healthMonitor_proccessFailureEvent (TI_HANDLE hHealthMonitor, TI_BOOL bTwdInitOccured)
-{
- THealthMonitor *pHealthMonitor = (THealthMonitor*)hHealthMonitor;
-
- /* Check failure event validity */
- if (pHealthMonitor->failureEvent < MAX_FAILURE_EVENTS)
- {
- pHealthMonitor->recoveryTriggersNumber[pHealthMonitor->failureEvent] ++;
-
- TRACE2(pHealthMonitor->hReport, REPORT_SEVERITY_CONSOLE, "***** recovery trigger: failureEvent =%d *****, ts=%d\n", pHealthMonitor->failureEvent, os_timeStampMs(pHealthMonitor->hOs));
- WLAN_OS_REPORT (("***** recovery trigger: %s *****, ts=%d\n", sRecoveryTriggersNames[pHealthMonitor->failureEvent], os_timeStampMs(pHealthMonitor->hOs)));
-
- if (TWD_RecoveryEnabled (pHealthMonitor->hTWD))
- {
- pHealthMonitor->numOfRecoveryPerformed ++;
- drvMain_Recovery (pHealthMonitor->hDrvMain);
- }
- else
- {
- TRACE0(pHealthMonitor->hReport, REPORT_SEVERITY_CONSOLE, "healthMonitor_proccessFailureEvent: Recovery is disabled in tiwlan.ini, abort recovery process\n");
- WLAN_OS_REPORT(("healthMonitor_proccessFailureEvent: Recovery is disabled in tiwlan.ini, abort recovery process\n"));
- }
-
- pHealthMonitor->failureEvent = (TI_UINT32)NO_FAILURE;
- }
- else
- {
- TRACE1(pHealthMonitor->hReport, REPORT_SEVERITY_ERROR , "unsupported failure event = %d\n", pHealthMonitor->failureEvent);
- }
-}
-
-
-/***********************************************************************
- * healthMonitor_printFailureEvents
- ***********************************************************************
-DESCRIPTION:
-
-INPUT:
-
-OUTPUT:
-
-RETURN:
-************************************************************************/
-void healthMonitor_printFailureEvents(TI_HANDLE hHealthMonitor)
-{
-#ifdef TI_DBG
-#ifdef REPORT_LOG
- THealthMonitor *pHealthMonitor = (THealthMonitor*)hHealthMonitor;
- int i;
-
- WLAN_OS_REPORT(("-------------- STA Health Failure Statistics ---------------\n"));
- WLAN_OS_REPORT(("FULL RECOVERY PERFORMED = %d\n", pHealthMonitor->numOfRecoveryPerformed));
- for (i = 0; i < MAX_FAILURE_EVENTS; i++)
- {
- WLAN_OS_REPORT(("%27s= %d\n", sRecoveryTriggersNames[ i ], pHealthMonitor->recoveryTriggersNumber[ i ]));
- }
- WLAN_OS_REPORT(("Maximum number of commands in mailbox queue = %u\n", TWD_GetMaxNumberOfCommandsInQueue(pHealthMonitor->hTWD)));
- WLAN_OS_REPORT(("Health Test Performed = %d\n", pHealthMonitor->numOfHealthTests));
- WLAN_OS_REPORT(("\n"));
-#endif
-#endif /* TI_DBG */
-}
-
-
-/***********************************************************************
- * healthMonitor_SetParam
- ***********************************************************************
-DESCRIPTION: Set module parameters from the external command interface
-
-INPUT: hHealthMonitor - module handle.
- pParam - Pointer to the parameter
-
-OUTPUT:
-
-RETURN: TI_OK on success, TI_NOK otherwise
-************************************************************************/
-TI_STATUS healthMonitor_SetParam (TI_HANDLE hHealthMonitor, paramInfo_t *pParam)
-{
- THealthMonitor *pHealthMonitor = (THealthMonitor*)hHealthMonitor;
- TI_STATUS eStatus = TI_OK;
-
- TRACE1(pHealthMonitor->hReport, REPORT_SEVERITY_INFORMATION, "healthMonitor_SetParam() - %d\n", pParam->paramType);
-
- switch(pParam->paramType)
- {
-
- case HEALTH_MONITOR_CHECK_DEVICE:
- /* Send health check command to FW if we are not disconnceted */
- if (pHealthMonitor->state != HEALTH_MONITOR_STATE_DISCONNECTED)
- {
- healthMonitor_PerformTest (hHealthMonitor, TI_FALSE);
- }
- break;
-
- default:
- TRACE1(pHealthMonitor->hReport, REPORT_SEVERITY_ERROR, "healthMonitor_SetParam(): Params is not supported, %d\n", pParam->paramType);
- }
-
- return eStatus;
-}
-
-
-/***********************************************************************
- * healthMonitor_GetParam
- ***********************************************************************
-DESCRIPTION: Get module parameters from the external command interface
-
-INPUT: hHealthMonitor - module handle.
- pParam - Pointer to the parameter
-
-OUTPUT:
-
-RETURN: TI_OK on success, TI_NOK otherwise
-************************************************************************/
-TI_STATUS healthMonitor_GetParam (TI_HANDLE hHealthMonitor, paramInfo_t *pParam)
-{
- return TI_OK;
-}
-
-
-
-