• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /****************************************************************************
2 **+-----------------------------------------------------------------------+**
3 **|                                                                       |**
4 **| Copyright(c) 1998 - 2008 Texas Instruments. All rights reserved.      |**
5 **| All rights reserved.                                                  |**
6 **|                                                                       |**
7 **| Redistribution and use in source and binary forms, with or without    |**
8 **| modification, are permitted provided that the following conditions    |**
9 **| are met:                                                              |**
10 **|                                                                       |**
11 **|  * Redistributions of source code must retain the above copyright     |**
12 **|    notice, this list of conditions and the following disclaimer.      |**
13 **|  * Redistributions in binary form must reproduce the above copyright  |**
14 **|    notice, this list of conditions and the following disclaimer in    |**
15 **|    the documentation and/or other materials provided with the         |**
16 **|    distribution.                                                      |**
17 **|  * Neither the name Texas Instruments nor the names of its            |**
18 **|    contributors may be used to endorse or promote products derived    |**
19 **|    from this software without specific prior written permission.      |**
20 **|                                                                       |**
21 **| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   |**
22 **| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     |**
23 **| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |**
24 **| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  |**
25 **| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |**
26 **| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      |**
27 **| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |**
28 **| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |**
29 **| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   |**
30 **| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |**
31 **| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  |**
32 **|                                                                       |**
33 **+-----------------------------------------------------------------------+**
34 ****************************************************************************/
35 
36 
37 /* Dm: #include <linux/config.h> */
38 #include <linux/module.h>
39 #include <linux/errno.h>
40 #include <linux/string.h>
41 #include <linux/proc_fs.h>
42 
43 #include "healthMonitor.h"
44 #include "whalCtrl.h"
45 #include "osTIType.h"
46 #include "configMgr.h"
47 
48 int proc_stat_res_read_proc(char *page, char **start, off_t off, int count, int *eof, void *data);
49 static struct proc_dir_entry *res;
50 
proc_stat_init(TI_HANDLE * pHandle)51 int proc_stat_init(TI_HANDLE     *pHandle)
52 {
53     configMgr_t         *pConfigManager  = (configMgr_t *)pHandle;
54     res = proc_mkdir("tiwlan", NULL);
55     create_proc_read_entry("tiwlan0_proc_stat", 0, res, proc_stat_res_read_proc, pConfigManager->hHealthMonitor);
56     return 0;
57 }
58 
proc_stat_res_read_proc(char * page,char ** start,off_t off,int count,int * eof,void * data)59 int proc_stat_res_read_proc(char *page, char **start, off_t off, int count, int *eof, void *data)
60 {
61     int len=0;
62     healthMonitor_t  *pHealthMonitor = (healthMonitor_t*) data;
63     WHAL_CTRL *pWhalCtrl = (WHAL_CTRL *)pHealthMonitor->hHalCtrl;
64     whalCtrl_hwStatus_t *pHwStatus = &pWhalCtrl->pHwCtrl->HwStatus;
65 
66     count -= 80; /* some reserve */
67 
68     len += (len<count)?sprintf(page+len,"-------------- STA Health Configuration ---------------\n"):0;
69     len += (len<count)?sprintf(page+len,"Full recovery enabled      = %d\n",pHealthMonitor->bFullRecoveryEnable):0;
70     len += (len<count)?sprintf(page+len,"Timer interval             = %d msec\n",pHealthMonitor->timerInterval):0;
71     len += (len<count)?sprintf(page+len,"\n"):0;
72 
73 
74     len += (len<count)?sprintf(page+len,"-------------- STA Health Failure Statistics ---------------\n"):0;
75     len += (len<count)?sprintf(page+len,"Health test perfomred      = %d\n",pHealthMonitor->numOfHealthTests):0;
76     len += (len<count)?sprintf(page+len,"Full recovery performed    = %d\n",pHealthMonitor->numOfRecoveryPerformed):0;
77     len += (len<count)?sprintf(page+len,"No scan complete failure   = %d\n",pHealthMonitor->recoveryTriggersNumber[ NO_SCAN_COMPLETE_FAILURE ]):0;
78     len += (len<count)?sprintf(page+len,"Mailbox failure            = %d\n",pHealthMonitor->recoveryTriggersNumber[ MBOX_FAILURE ]):0;
79     len += (len<count)?sprintf(page+len,"HW awake failure           = %d\n",pHealthMonitor->recoveryTriggersNumber[ HW_AWAKE_FAILURE ]):0;
80     len += (len<count)?sprintf(page+len,"Bus error           		= %d\n",pHealthMonitor->recoveryTriggersNumber[ BUS_ERROR ]):0;
81     len += (len<count)?sprintf(page+len,"Device error               = %d\n",pHealthMonitor->recoveryTriggersNumber[ DEVICE_ERROR ]):0;
82     len += (len<count)?sprintf(page+len,"Tx Stuck Errors            = %d\n",pHealthMonitor->recoveryTriggersNumber[ TX_STUCK ]):0;
83     len += (len<count)?sprintf(page+len,"Disconnect timeouts        = %d\n",pHealthMonitor->recoveryTriggersNumber[ DISCONNECT_TIMEOUT ]):0;
84 	len += (len<count)?sprintf(page+len,"Power save failures        = %d\n",pHealthMonitor->recoveryTriggersNumber[ POWER_SAVE_FAILURE ]):0;
85 	len += (len<count)?sprintf(page+len,"measurement failures       = %d\n",pHealthMonitor->recoveryTriggersNumber[ MEASUREMENT_FAILURE ]):0;
86 
87     len += (len<count)?sprintf(page+len,"--------------- whalCtrl_PrintHwStatus ---------------\n\n"):0;
88     len += (len<count)?sprintf(page+len,"NumMboxErrDueToPeriodicBuiltInTestCheck = %d\n", pHwStatus->NumMboxErrDueToPeriodicBuiltInTestCheck):0;
89     len += (len<count)?sprintf(page+len,"NumMboxFailures = %d\n", pHwStatus->NumMboxFailures):0;
90     len += (len<count)?sprintf(page+len, "\n"):0;
91     *eof = 1;
92     return len;
93 }
94 
proc_stat_destroy(void)95 int proc_stat_destroy(void)
96 {
97     remove_proc_entry("tiwlan0_proc_stat", res);
98     remove_proc_entry("tiwlan", NULL);
99     return 0;
100 }
101 
102 
103 
104 
105 
106