1 /*
2 * MibDbg.c
3 *
4 * Copyright(c) 1998 - 2009 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 /* MODULE: MibDbg.c */
37 /* PURPOSE: MIB debug implementation */
38 /* */
39 /***************************************************************************/
40
41 #include "MibDbg.h"
42 #include "TWDriver.h"
43 #include "report.h"
44 #include "osApi.h"
45
46 /*
47 ***********************************************************************
48 * Internal functions definitions
49 ***********************************************************************
50 */
51
mibDbgGetArpIpTable(TI_HANDLE hTWD)52 static void mibDbgGetArpIpTable(TI_HANDLE hTWD)
53 {
54 TI_STATUS status = TI_OK;
55 TMib mib;
56 TI_INT32 i;
57
58 /* init */
59 mib.aMib = MIB_arpIpAddressesTable;
60 mib.aData.ArpIpAddressesTable.FilteringEnable = 0;
61 for ( i = 0 ; i < IP_V4_ADDR_LEN ; i++ )
62 {
63 mib.aData.ArpIpAddressesTable.addr[i] = 0;
64 }
65
66 status = TWD_ReadMib(hTWD,NULL,NULL,(void*)&mib);
67 if (status != TI_OK)
68 {
69 WLAN_OS_REPORT(("Get ARP Table failed\n"));
70 return;
71 }
72
73 /* print ARP Table */
74 WLAN_OS_REPORT(("ARP IP Table:\n"));
75 WLAN_OS_REPORT(("FilteringEnable: %s (%d)\n",
76 (mib.aData.ArpIpAddressesTable.FilteringEnable)?"Enable":"Disable",
77 mib.aData.ArpIpAddressesTable.FilteringEnable));
78 WLAN_OS_REPORT(("ArpIpAddress: %d.%d.%d.%d\n",
79 mib.aData.ArpIpAddressesTable.addr[0],
80 mib.aData.ArpIpAddressesTable.addr[1],
81 mib.aData.ArpIpAddressesTable.addr[2],
82 mib.aData.ArpIpAddressesTable.addr[3]));
83 }
84
mibDbgGetGroupAddressTable(TI_HANDLE hTWD)85 static void mibDbgGetGroupAddressTable(TI_HANDLE hTWD)
86 {
87 TI_STATUS status = TI_OK;
88 TMib mib;
89 TI_INT32 i,j;
90
91 /* init */
92 mib.aMib = MIB_dot11GroupAddressesTable;
93 mib.aData.GroupAddressTable.bFilteringEnable = 0;
94 mib.aData.GroupAddressTable.nNumberOfAddresses = 0;
95 for ( i = 0 ; i < MIB_MAX_MULTICAST_GROUP_ADDRS ; i++ )
96 {
97 for ( j = 0 ; j < MAC_ADDR_LEN ; j++ )
98 {
99 mib.aData.GroupAddressTable.aGroupTable[i][j] = 0;
100 }
101 }
102
103 status = TWD_ReadMib(hTWD,NULL,NULL,(void*)&mib);
104 if (status != TI_OK)
105 {
106 WLAN_OS_REPORT(("Get Group Address Table failed\n"));
107 return;
108 }
109
110 /* print Group Address Table */
111 WLAN_OS_REPORT(("Group addresses Table:\n"));
112 WLAN_OS_REPORT(("FilteringEnable: %s (%d)\n",
113 (mib.aData.GroupAddressTable.bFilteringEnable)?"Enable":"Disable",
114 mib.aData.GroupAddressTable.bFilteringEnable));
115 WLAN_OS_REPORT(("nNumberOfAddresses: %d\n",
116 mib.aData.GroupAddressTable.nNumberOfAddresses));
117
118 WLAN_OS_REPORT(("Group addresses: \n"));
119 for ( i = 0 ; i < MIB_MAX_MULTICAST_GROUP_ADDRS ; i++ )
120 WLAN_OS_REPORT(("%x:%x:%x:%x:%x:%x\n",
121 mib.aData.GroupAddressTable.aGroupTable[i][0],
122 mib.aData.GroupAddressTable.aGroupTable[i][1],
123 mib.aData.GroupAddressTable.aGroupTable[i][2],
124 mib.aData.GroupAddressTable.aGroupTable[i][3],
125 mib.aData.GroupAddressTable.aGroupTable[i][4],
126 mib.aData.GroupAddressTable.aGroupTable[i][5]));
127 }
128
mibDbgGetCounterTable(TI_HANDLE hTWD)129 static void mibDbgGetCounterTable(TI_HANDLE hTWD)
130 {
131 TI_STATUS status = TI_OK;
132 TMib mib;
133
134 /* init */
135 mib.aMib = MIB_countersTable;
136 mib.aData.CounterTable.FCSErrorCount = 0;
137 mib.aData.CounterTable.PLCPErrorCount = 0;
138 mib.aData.CounterTable.SeqNumMissCount = 0;
139
140 status = TWD_ReadMib(hTWD,NULL,NULL,(void*)&mib);
141 if (status != TI_OK)
142 {
143 WLAN_OS_REPORT(("Get Counter Table failed\n"));
144 return;
145 }
146
147 /* print Counter Table */
148 WLAN_OS_REPORT(("FCS error count= %d \nPLCP error count = %d \nSeq error count= %d\n",
149 mib.aData.CounterTable.FCSErrorCount,
150 mib.aData.CounterTable.PLCPErrorCount,
151 mib.aData.CounterTable.SeqNumMissCount));
152
153 }
154
mibDbgModifyCtsToSelf(TI_HANDLE hTWD,void * pParam)155 static void mibDbgModifyCtsToSelf(TI_HANDLE hTWD, void* pParam)
156 {
157 TI_STATUS status = TI_OK;
158 TMib mib;
159
160 if (pParam == NULL)
161 {
162 WLAN_OS_REPORT(("Modify CTS To Self failed: No Parameter received\n"));
163 return;
164 }
165
166 /* init */
167 mib.aMib = MIB_ctsToSelf;
168 mib.aData.CTSToSelfEnable = 0;
169 mib.aData.CTSToSelfEnable = *(TI_UINT32*)pParam;
170
171 status = TWD_WriteMib(hTWD, &mib);
172 if (status != TI_OK)
173 {
174 WLAN_OS_REPORT(("Modify CTS To Self failed\n"));
175 return;
176 }
177 WLAN_OS_REPORT(("Modify CTS To Self OK\n"));
178
179 WLAN_OS_REPORT(("CtsToSelf = %s (%d)\n",
180 mib.aData.CTSToSelfEnable?"Enable":"Disable",
181 mib.aData.CTSToSelfEnable));
182 WLAN_OS_REPORT(("CTS to self: [0 - Disable, 1 - Enable]\n"));
183 }
184
mibDbgGetCtsToSelf(TI_HANDLE hTWD)185 static void mibDbgGetCtsToSelf(TI_HANDLE hTWD)
186 {
187 TI_STATUS status = TI_OK;
188 TMib mib;
189
190 /* init */
191 mib.aMib = MIB_ctsToSelf;
192 mib.aData.CTSToSelfEnable = 0;
193
194 status = TWD_ReadMib(hTWD,NULL,NULL,(void*)&mib);
195 if (status != TI_OK)
196 {
197 WLAN_OS_REPORT(("Get CTS To Self failed\n"));
198 return;
199 }
200
201 WLAN_OS_REPORT(("CtsToSelf = %s (%d)\n",
202 mib.aData.CTSToSelfEnable?"Enable":"Disable",
203 mib.aData.CTSToSelfEnable));
204 WLAN_OS_REPORT(("CTS to self: [0 - Disable, 1 - Enable]\n"));
205 }
206
mibDbgSetMaxRxLifetime(TI_HANDLE hTWD,void * pParam)207 static void mibDbgSetMaxRxLifetime(TI_HANDLE hTWD, void* pParam)
208 {
209 TI_STATUS status = TI_OK;
210 TMib mib;
211
212 if (pParam == NULL)
213 {
214 WLAN_OS_REPORT(("Set Maximum Rx Life Time failed: No Parameter received\n"));
215 return;
216 }
217
218 /* init */
219 mib.aMib = MIB_dot11MaxReceiveLifetime;
220 mib.aData.MaxReceiveLifeTime = *(TI_UINT32*)pParam;
221
222 status = TWD_WriteMib(hTWD, &mib);
223 if (status != TI_OK)
224 {
225 WLAN_OS_REPORT(("Set Maximum Rx Life Time failed\n"));
226 return;
227 }
228 }
229
230 /*
231 ***********************************************************************
232 * External functions definitions
233 ***********************************************************************
234 */
mibDbgPrintFunctions(void)235 void mibDbgPrintFunctions(void)
236 {
237 WLAN_OS_REPORT(("\n MIB Dbg Functions \n"));
238 WLAN_OS_REPORT(("--------------------------------------\n"));
239
240 WLAN_OS_REPORT(("2101 - Print ARP Table\n"));
241 WLAN_OS_REPORT(("2102 - Print Group Address Table\n"));
242 WLAN_OS_REPORT(("2103 - Print Counter Table\n"));
243 WLAN_OS_REPORT(("2104 - Print Modify CTS to Self\n"));
244 WLAN_OS_REPORT(("2105 - Print Max RX Life Time\n"));
245 }
246
MibDebugFunction(TI_HANDLE hTWD,TI_UINT32 funcType,void * pParam)247 void MibDebugFunction(TI_HANDLE hTWD ,TI_UINT32 funcType, void* pParam)
248 {
249 if (hTWD == NULL)
250 {
251 return;
252 }
253
254 switch (funcType)
255 {
256 case DBG_MIB_PRINT_HELP:
257 mibDbgPrintFunctions();
258 break;
259 case DBG_MIB_GET_ARP_TABLE:
260 mibDbgGetArpIpTable(hTWD);
261 break;
262 case DBG_MIB_GET_GROUP_ADDRESS_TABLE:
263 mibDbgGetGroupAddressTable(hTWD);
264 break;
265 case DBG_MIB_GET_COUNTER_TABLE:
266 mibDbgGetCounterTable(hTWD);
267 break;
268 case DBG_MIB_MODIFY_CTS_TO_SELF:
269 mibDbgModifyCtsToSelf(hTWD, pParam);
270 break;
271 case DBG_MIB_GET_CTS_TO_SELF:
272 mibDbgGetCtsToSelf(hTWD);
273 break;
274 case DBG_MIB_SET_MAX_RX_LIFE_TIME:
275 mibDbgSetMaxRxLifetime(hTWD, pParam);
276 break;
277 default:
278 WLAN_OS_REPORT(("MIB Debug: Invalid function type in MIB Debug function: %d\n", funcType));
279 break;
280 }
281 }
282