0
|
1 |
/*
|
|
2 |
* CmdBldCfg.c
|
|
3 |
*
|
|
4 |
* Copyright(c) 1998 - 2010 Texas Instruments. All rights reserved.
|
|
5 |
* All rights reserved.
|
|
6 |
*
|
|
7 |
* This program and the accompanying materials are made available under the
|
|
8 |
* terms of the Eclipse Public License v1.0 or BSD License which accompanies
|
|
9 |
* this distribution. The Eclipse Public License is available at
|
|
10 |
* http://www.eclipse.org/legal/epl-v10.html and the BSD License is as below.
|
|
11 |
*
|
|
12 |
* Redistribution and use in source and binary forms, with or without
|
|
13 |
* modification, are permitted provided that the following conditions
|
|
14 |
* are met:
|
|
15 |
*
|
|
16 |
* * Redistributions of source code must retain the above copyright
|
|
17 |
* notice, this list of conditions and the following disclaimer.
|
|
18 |
* * Redistributions in binary form must reproduce the above copyright
|
|
19 |
* notice, this list of conditions and the following disclaimer in
|
|
20 |
* the documentation and/or other materials provided with the
|
|
21 |
* distribution.
|
|
22 |
* * Neither the name Texas Instruments nor the names of its
|
|
23 |
* contributors may be used to endorse or promote products derived
|
|
24 |
* from this software without specific prior written permission.
|
|
25 |
*
|
|
26 |
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
27 |
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
28 |
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
29 |
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
30 |
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
31 |
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
32 |
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
33 |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
34 |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
35 |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
36 |
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
37 |
*/
|
|
38 |
|
|
39 |
|
|
40 |
/** \file CmdBldCfg.c
|
|
41 |
* \brief Command builder. Configuration commands
|
|
42 |
*
|
|
43 |
* \see CmdBld.h
|
|
44 |
*/
|
|
45 |
#define __FILE_ID__ FILE_ID_91
|
|
46 |
#include "osApi.h"
|
|
47 |
#include "tidef.h"
|
|
48 |
#include "report.h"
|
|
49 |
#include "CmdBld.h"
|
|
50 |
#include "CmdBldCfgIE.h"
|
|
51 |
#include "TWDriverInternal.h"
|
|
52 |
|
|
53 |
|
|
54 |
/****************************************************************************
|
|
55 |
* cmdBld_CfgRx()
|
|
56 |
****************************************************************************
|
|
57 |
* DESCRIPTION: Sets the filters according to the given configuration.
|
|
58 |
*
|
|
59 |
* INPUTS: RxConfigOption - The given Rx filters configuration
|
|
60 |
* RxFilterOption - The given Rx filters options
|
|
61 |
*
|
|
62 |
* OUTPUT: None
|
|
63 |
*
|
|
64 |
* RETURNS: TI_OK or TI_NOK
|
|
65 |
****************************************************************************/
|
|
66 |
TI_STATUS cmdBld_CfgRx (TI_HANDLE hCmdBld, TI_UINT32 uRxConfigOption, TI_UINT32 uRxFilterOption, void *fCb, TI_HANDLE hCb)
|
|
67 |
{
|
|
68 |
DB_WLAN(hCmdBld).RxConfigOption = uRxConfigOption;
|
|
69 |
DB_WLAN(hCmdBld).RxFilterOption = uRxFilterOption;
|
|
70 |
DB_WLAN(hCmdBld).RxConfigOption |= RX_CFG_ENABLE_PHY_HEADER_PLCP;
|
|
71 |
#if defined (TNETW_MASTER_MODE) || defined (TNETW_USB_MODE)
|
|
72 |
DB_WLAN(hCmdBld).RxConfigOption |= RX_CFG_COPY_RX_STATUS;
|
|
73 |
#endif
|
|
74 |
|
|
75 |
if (DB_WLAN(hCmdBld).RxDisableBroadcast)
|
|
76 |
{
|
|
77 |
DB_WLAN(hCmdBld).RxConfigOption |= RX_CFG_DISABLE_BCAST;
|
|
78 |
}
|
|
79 |
|
|
80 |
return cmdBld_CfgIeRx (hCmdBld,
|
|
81 |
DB_WLAN(hCmdBld).RxConfigOption,
|
|
82 |
DB_WLAN(hCmdBld).RxFilterOption,
|
|
83 |
fCb,
|
|
84 |
hCb);
|
|
85 |
}
|
|
86 |
|
|
87 |
|
|
88 |
/****************************************************************************
|
|
89 |
* cmdBld_CfgArpIpAddrTable()
|
|
90 |
****************************************************************************
|
|
91 |
* DESCRIPTION: Sets the ARP IP table according to the given configuration.
|
|
92 |
*
|
|
93 |
* OUTPUT: None
|
|
94 |
*
|
|
95 |
* RETURNS: TI_OK or TI_NOK
|
|
96 |
****************************************************************************/
|
|
97 |
TI_STATUS cmdBld_CfgArpIpAddrTable (TI_HANDLE hCmdBld, TIpAddr tIpAddr, TI_BOOL bEnabled, EIpVer eIpVer, void *fCb, TI_HANDLE hCb)
|
|
98 |
{
|
|
99 |
DB_WLAN(hCmdBld).arp_IP_ver = eIpVer;
|
|
100 |
|
|
101 |
/* no support for IPV6 */
|
|
102 |
if (eIpVer == IP_VER_4)
|
|
103 |
{
|
|
104 |
IP_COPY (DB_WLAN(hCmdBld).arp_IP_addr, tIpAddr);
|
|
105 |
}
|
|
106 |
|
|
107 |
DB_WLAN(hCmdBld).isArpIpFilteringEnabled = bEnabled;
|
|
108 |
|
|
109 |
/* Set the new ip with the current state (e/d) */
|
|
110 |
return cmdBld_CfgIeArpIpFilter (hCmdBld, tIpAddr, bEnabled, fCb, hCb);
|
|
111 |
}
|
|
112 |
|
|
113 |
/****************************************************************************
|
|
114 |
* cmdBld_CfgArpIpFilter()
|
|
115 |
****************************************************************************
|
|
116 |
* DESCRIPTION: Enable\Disable the ARP filter
|
|
117 |
*
|
|
118 |
* OUTPUT: None
|
|
119 |
*
|
|
120 |
* RETURNS: TI_OK or TI_NOK
|
|
121 |
****************************************************************************/
|
|
122 |
TI_STATUS cmdBld_CfgArpIpFilter (TI_HANDLE hCmdBld, TI_BOOL bEnabled, void *fCb, TI_HANDLE hCb)
|
|
123 |
{
|
|
124 |
/* Set the current ip address with the new state (e/d) */
|
|
125 |
DB_WLAN(hCmdBld).isArpIpFilteringEnabled = bEnabled;
|
|
126 |
|
|
127 |
return cmdBld_CfgIeArpIpFilter (hCmdBld,
|
|
128 |
DB_WLAN(hCmdBld).arp_IP_addr,
|
|
129 |
bEnabled,
|
|
130 |
fCb,
|
|
131 |
hCb);
|
|
132 |
}
|
|
133 |
/****************************************************************************
|
|
134 |
* cmdBld_CfgGroupAddressTable()
|
|
135 |
****************************************************************************
|
|
136 |
* DESCRIPTION: Sets the Group table according to the given configuration.
|
|
137 |
*
|
|
138 |
* OUTPUT: None
|
|
139 |
*
|
|
140 |
* RETURNS: TI_OK or TI_NOK
|
|
141 |
****************************************************************************/
|
|
142 |
TI_STATUS cmdBld_CfgGroupAddressTable (TI_HANDLE hCmdBld,
|
|
143 |
TI_UINT8 uNumGroupAddr,
|
|
144 |
TMacAddr *pGroupAddr,
|
|
145 |
TI_BOOL bEnabled,
|
|
146 |
void *fCb,
|
|
147 |
TI_HANDLE hCb)
|
|
148 |
{
|
|
149 |
TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
|
|
150 |
TI_UINT32 i;
|
|
151 |
|
|
152 |
if (uNumGroupAddr > MAX_MULTICAST_GROUP_ADDRS)
|
|
153 |
{
|
|
154 |
TRACE1(pCmdBld->hReport, REPORT_SEVERITY_ERROR, "cmdBld_CfgGroupAddressTable: numGroupAddrs=%d\n", uNumGroupAddr);
|
|
155 |
return PARAM_VALUE_NOT_VALID;
|
|
156 |
}
|
|
157 |
|
|
158 |
if (NULL == pGroupAddr)
|
|
159 |
{
|
|
160 |
TRACE2(pCmdBld->hReport, REPORT_SEVERITY_ERROR, "cmdBld_CfgGroupAddressTable: numGroupAddrs=%d Group_addr=0x%x !!!\n", uNumGroupAddr, pGroupAddr);
|
|
161 |
return PARAM_VALUE_NOT_VALID;
|
|
162 |
}
|
|
163 |
|
|
164 |
/* Keeps the parameters in the db */
|
|
165 |
DB_WLAN(hCmdBld).numGroupAddrs = uNumGroupAddr;
|
|
166 |
DB_WLAN(hCmdBld).isMacAddrFilteringnabled = bEnabled;
|
|
167 |
|
|
168 |
for (i = 0; i < uNumGroupAddr; i++)
|
|
169 |
{
|
|
170 |
MAC_COPY (DB_WLAN(hCmdBld).aGroupAddr[i], *(pGroupAddr + i));
|
|
171 |
}
|
|
172 |
|
|
173 |
return cmdBld_CfgIeGroupAdressTable (hCmdBld, uNumGroupAddr, pGroupAddr, bEnabled, fCb, hCb);
|
|
174 |
}
|
|
175 |
|
|
176 |
|
|
177 |
/****************************************************************************
|
|
178 |
* cmdBld_CfgRtsThreshold()
|
|
179 |
****************************************************************************
|
|
180 |
* DESCRIPTION: Sets the Rts Threshold.
|
|
181 |
*
|
|
182 |
* OUTPUT: None
|
|
183 |
*
|
|
184 |
* RETURNS: TI_OK or TI_NOK pWlanParams->RtsThreshold
|
|
185 |
****************************************************************************/
|
|
186 |
TI_STATUS cmdBld_CfgRtsThreshold (TI_HANDLE hCmdBld, TI_UINT16 threshold, void *fCb, TI_HANDLE hCb)
|
|
187 |
{
|
|
188 |
return cmdBld_CfgIeRtsThreshold (hCmdBld, threshold, fCb, hCb);
|
|
189 |
}
|
|
190 |
|
|
191 |
/****************************************************************************
|
|
192 |
* cmdBld_CfgDcoItrimParams()
|
|
193 |
****************************************************************************
|
|
194 |
* DESCRIPTION: Sets the DCO Itrim parameters.
|
|
195 |
*
|
|
196 |
* OUTPUT: None
|
|
197 |
*
|
|
198 |
* RETURNS: TI_OK or TI_NOK
|
|
199 |
****************************************************************************/
|
|
200 |
TI_STATUS cmdBld_CfgDcoItrimParams (TI_HANDLE hCmdBld, TI_BOOL enable, TI_UINT32 moderationTimeoutUsec, void *fCb, TI_HANDLE hCb)
|
|
201 |
{
|
|
202 |
/* Keeps the parameters in the db */
|
|
203 |
DB_WLAN(hCmdBld).dcoItrimEnabled = enable;
|
|
204 |
DB_WLAN(hCmdBld).dcoItrimModerationTimeoutUsec = moderationTimeoutUsec;
|
|
205 |
|
|
206 |
return cmdBld_CfgIeDcoItrimParams (hCmdBld, enable, moderationTimeoutUsec, fCb, hCb);
|
|
207 |
}
|
|
208 |
|
|
209 |
/****************************************************************************
|
|
210 |
* cmdBld_CfgFragmentThreshold()
|
|
211 |
****************************************************************************
|
|
212 |
* DESCRIPTION: Sets the tx fragmentation Threshold.
|
|
213 |
*
|
|
214 |
* OUTPUT: None
|
|
215 |
*
|
|
216 |
* RETURNS: TI_OK or TI_NOK
|
|
217 |
****************************************************************************/
|
|
218 |
TI_STATUS cmdBld_CfgFragmentThreshold (TI_HANDLE hCmdBld, TI_UINT16 uFragmentThreshold, void *fCb, TI_HANDLE hCb)
|
|
219 |
{
|
|
220 |
DB_WLAN(hCmdBld).FragmentThreshold = uFragmentThreshold;
|
|
221 |
|
|
222 |
return cmdBld_CfgIeFragmentThreshold (hCmdBld, uFragmentThreshold, fCb, hCb);
|
|
223 |
}
|
|
224 |
|
|
225 |
|
|
226 |
/****************************************************************************
|
|
227 |
* cmdBld_CfgPreamble()
|
|
228 |
****************************************************************************
|
|
229 |
* DESCRIPTION: Set the preamble in ?????? hardware register
|
|
230 |
*
|
|
231 |
* INPUTS:
|
|
232 |
* preambleVal
|
|
233 |
*
|
|
234 |
* OUTPUT: None
|
|
235 |
*
|
|
236 |
* RETURNS: None
|
|
237 |
****************************************************************************/
|
|
238 |
TI_STATUS cmdBld_CfgPreamble (TI_HANDLE hCmdBld, Preamble_e ePreamble, void *fCb, TI_HANDLE hCb)
|
|
239 |
{
|
|
240 |
DB_WLAN(hCmdBld).preamble = ePreamble;
|
|
241 |
|
|
242 |
return cmdBld_CfgIePreamble (hCmdBld, (TI_UINT8)ePreamble, fCb, hCb);
|
|
243 |
}
|
|
244 |
|
|
245 |
|
|
246 |
/****************************************************************************
|
|
247 |
* cmdBld_CfgBcnBrcOptions()
|
|
248 |
****************************************************************************
|
|
249 |
* DESCRIPTION: Configure the wlan hardware
|
|
250 |
*
|
|
251 |
* INPUTS: None
|
|
252 |
*
|
|
253 |
* OUTPUT: None
|
|
254 |
*
|
|
255 |
* RETURNS: TI_OK or TI_NOK
|
|
256 |
****************************************************************************/
|
|
257 |
TI_STATUS cmdBld_CfgBcnBrcOptions (TI_HANDLE hCmdBld, TPowerMgmtConfig *pPMConfig, void *fCb, TI_HANDLE hCb)
|
|
258 |
{
|
|
259 |
return cmdBld_CfgIeBcnBrcOptions (hCmdBld, pPMConfig, fCb, hCb);
|
|
260 |
}
|
|
261 |
|
|
262 |
|
|
263 |
/****************************************************************************
|
|
264 |
* cmdBld_CfgWakeUpCondition()
|
|
265 |
****************************************************************************
|
|
266 |
* DESCRIPTION: Configure the wlan hardware
|
|
267 |
*
|
|
268 |
* INPUTS: None
|
|
269 |
*
|
|
270 |
* OUTPUT: None
|
|
271 |
*
|
|
272 |
* RETURNS: TI_OK or TI_NOK
|
|
273 |
****************************************************************************/
|
|
274 |
TI_STATUS cmdBld_CfgWakeUpCondition (TI_HANDLE hCmdBld, TPowerMgmtConfig *pPMConfig, void *fCb, TI_HANDLE hCb)
|
|
275 |
{
|
|
276 |
return cmdBld_CfgIeWakeUpCondition (hCmdBld, pPMConfig, fCb, hCb);
|
|
277 |
}
|
|
278 |
|
|
279 |
|
|
280 |
/****************************************************************************
|
|
281 |
* cmdBld_CfgSleepAuth ()
|
|
282 |
****************************************************************************
|
|
283 |
* DESCRIPTION: Set the min power level
|
|
284 |
*
|
|
285 |
* INPUTS:
|
|
286 |
*
|
|
287 |
* OUTPUT:
|
|
288 |
*
|
|
289 |
* RETURNS: TI_OK or TI_NOK
|
|
290 |
****************************************************************************/
|
|
291 |
TI_STATUS cmdBld_CfgSleepAuth (TI_HANDLE hCmdBld, EPowerPolicy eMinPowerLevel, void *fCb, TI_HANDLE hCb)
|
|
292 |
{
|
|
293 |
/* Save th parameter in database */
|
|
294 |
DB_WLAN(hCmdBld).minPowerLevel = eMinPowerLevel;
|
|
295 |
|
|
296 |
return cmdBld_CfgIeSleepAuth (hCmdBld, eMinPowerLevel, fCb, hCb);
|
|
297 |
}
|
|
298 |
|
|
299 |
|
|
300 |
typedef enum { HW_CLOCK_40_MHZ = 40, HW_CLOCK_80_MHZ = 80 } EHwClock;
|
|
301 |
|
|
302 |
|
|
303 |
/****************************************************************************
|
|
304 |
* cmdBld_CfgArmClock()
|
|
305 |
****************************************************************************
|
|
306 |
* DESCRIPTION: Configure the arm clock
|
|
307 |
* !!! Note that the firmware will set the slot time according to the new clock
|
|
308 |
*
|
|
309 |
* INPUTS: None
|
|
310 |
*
|
|
311 |
* OUTPUT: None
|
|
312 |
*
|
|
313 |
* RETURNS: TI_OK or TI_NOK
|
|
314 |
****************************************************************************/
|
|
315 |
TI_STATUS cmdBld_CfgArmClock (TI_HANDLE hCmdBld, TI_UINT32 uArmClock, void *fCb, TI_HANDLE hCb)
|
|
316 |
{
|
|
317 |
TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
|
|
318 |
TWlanParams *pWlanParams = &DB_WLAN(hCmdBld);
|
|
319 |
|
|
320 |
pWlanParams->ArmClock = uArmClock;
|
|
321 |
|
|
322 |
/* Illegal combination Mac=80, Arm=40 ==> force setting 40/40*/
|
|
323 |
if (pWlanParams->MacClock == HW_CLOCK_80_MHZ && pWlanParams->ArmClock == HW_CLOCK_40_MHZ)
|
|
324 |
{
|
|
325 |
TRACE0(pCmdBld->hReport, REPORT_SEVERITY_ERROR, "cmdBld_ArmClockSet: Illegal combination Mac=80, Arm=40 ==> force setting 40/40\n");
|
|
326 |
pWlanParams->MacClock = HW_CLOCK_40_MHZ;
|
|
327 |
}
|
|
328 |
|
|
329 |
return cmdBld_CfgIeFeatureConfig (hCmdBld,
|
|
330 |
pWlanParams->FeatureOptions,
|
|
331 |
pWlanParams->FeatureDataFlowOptions,
|
|
332 |
fCb,
|
|
333 |
hCb);
|
|
334 |
}
|
|
335 |
|
|
336 |
|
|
337 |
/****************************************************************************
|
|
338 |
* cmdBld_CfgMacClock()
|
|
339 |
****************************************************************************
|
|
340 |
* DESCRIPTION: Configure the mac clock
|
|
341 |
* !!! Note that the firmware will set the slot time according to the new clock
|
|
342 |
*
|
|
343 |
* INPUTS: None
|
|
344 |
*
|
|
345 |
* OUTPUT: None
|
|
346 |
*
|
|
347 |
* RETURNS: TI_OK or TI_NOK
|
|
348 |
****************************************************************************/
|
|
349 |
TI_STATUS cmdBld_CfgMacClock (TI_HANDLE hCmdBld, TI_UINT32 uMacClock, void *fCb, TI_HANDLE hCb)
|
|
350 |
{
|
|
351 |
TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
|
|
352 |
TWlanParams *pWlanParams = &DB_WLAN(hCmdBld);
|
|
353 |
|
|
354 |
pWlanParams->MacClock = uMacClock;
|
|
355 |
|
|
356 |
/* Force same clock - for printing */
|
|
357 |
pWlanParams->ArmClock = uMacClock;
|
|
358 |
|
|
359 |
/* Illegal combination Mac=80, Arm=40 ==> force setting 40/40*/
|
|
360 |
if (pWlanParams->MacClock == HW_CLOCK_80_MHZ && pWlanParams->ArmClock == HW_CLOCK_40_MHZ)
|
|
361 |
{
|
|
362 |
TRACE0(pCmdBld->hReport, REPORT_SEVERITY_ERROR, "cmdBld_MacClockSet: Illegal combination Mac=80, Arm=40 ==> force setting 40/40\n");
|
|
363 |
pWlanParams->MacClock = HW_CLOCK_40_MHZ;
|
|
364 |
}
|
|
365 |
|
|
366 |
return cmdBld_CfgIeFeatureConfig (hCmdBld,
|
|
367 |
pWlanParams->FeatureOptions,
|
|
368 |
pWlanParams->FeatureDataFlowOptions,
|
|
369 |
fCb,
|
|
370 |
hCb);
|
|
371 |
}
|
|
372 |
|
|
373 |
|
|
374 |
/****************************************************************************
|
|
375 |
* cmdBld_CfgAid()
|
|
376 |
****************************************************************************
|
|
377 |
* DESCRIPTION: Set the AID
|
|
378 |
*
|
|
379 |
* INPUTS:
|
|
380 |
*
|
|
381 |
* OUTPUT:
|
|
382 |
*
|
|
383 |
* RETURNS: TI_OK or TI_NOK
|
|
384 |
****************************************************************************/
|
|
385 |
TI_STATUS cmdBld_CfgAid (TI_HANDLE hCmdBld, TI_UINT16 uAidVal, void *fCb, TI_HANDLE hCb)
|
|
386 |
{
|
|
387 |
return cmdBld_CfgIeAid (hCmdBld, uAidVal, fCb, hCb);
|
|
388 |
}
|
|
389 |
|
|
390 |
TI_STATUS cmdBld_CfgClkRun (TI_HANDLE hCmdBld, TI_BOOL aClkRunEnable, void *fCb, TI_HANDLE hCb)
|
|
391 |
{
|
|
392 |
TWlanParams *pWlanParams = &DB_WLAN(hCmdBld);
|
|
393 |
|
|
394 |
if (aClkRunEnable)
|
|
395 |
{
|
|
396 |
pWlanParams->FeatureDataFlowOptions |= FEAT_PCI_CLK_RUN_ENABLE;
|
|
397 |
}
|
|
398 |
else
|
|
399 |
{
|
|
400 |
pWlanParams->FeatureDataFlowOptions &= ~FEAT_PCI_CLK_RUN_ENABLE;
|
|
401 |
}
|
|
402 |
|
|
403 |
return cmdBld_CfgIeFeatureConfig (hCmdBld,
|
|
404 |
pWlanParams->FeatureOptions,
|
|
405 |
pWlanParams->FeatureDataFlowOptions,
|
|
406 |
fCb,
|
|
407 |
hCb);
|
|
408 |
}
|
|
409 |
|
|
410 |
|
|
411 |
TI_STATUS cmdBld_CfgRxMsduFormat (TI_HANDLE hCmdBld, TI_BOOL bRxMsduForamtEnable, void *fCb, TI_HANDLE hCb)
|
|
412 |
{
|
|
413 |
#if 1
|
|
414 |
/* WARNING: Have to check how to control the Rx Frame format select (which bit)
|
|
415 |
and then access the HW*/
|
|
416 |
return TI_OK;
|
|
417 |
#else
|
|
418 |
TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
|
|
419 |
TWlanParams *pWlanParams = &DB_WLAN(hCmdBld);
|
|
420 |
|
|
421 |
if (aRxMsduForamtEnable)
|
|
422 |
{
|
|
423 |
pWlanParams->FeatureDataFlowOptions |= DATA_FLOW_RX_MSDU_FRAME;
|
|
424 |
}
|
|
425 |
else
|
|
426 |
{
|
|
427 |
pWlanParams->FeatureDataFlowOptions &= ~DATA_FLOW_RX_MSDU_FRAME;
|
|
428 |
}
|
|
429 |
|
|
430 |
return cmdBld_CfgIeFeatureConfig (hCmdBld,
|
|
431 |
pWlanParams->FeatureOptions,
|
|
432 |
pWlanParams->FeatureDataFlowOptions,
|
|
433 |
fCb,
|
|
434 |
hCb);
|
|
435 |
#endif
|
|
436 |
}
|
|
437 |
|
|
438 |
|
|
439 |
/****************************************************************************
|
|
440 |
* cmdBld_CfgTid()
|
|
441 |
****************************************************************************
|
|
442 |
* DESCRIPTION: configure Queue traffic params
|
|
443 |
*
|
|
444 |
* INPUTS: None
|
|
445 |
*
|
|
446 |
* OUTPUT: None
|
|
447 |
*
|
|
448 |
* RETURNS: TI_OK or TI_NOK
|
|
449 |
****************************************************************************/
|
|
450 |
TI_STATUS cmdBld_CfgTid (TI_HANDLE hCmdBld, TQueueTrafficParams *pQtrafficParams, void *fCb, TI_HANDLE hCb)
|
|
451 |
{
|
|
452 |
DB_QUEUES(hCmdBld).isQueueConfigured[pQtrafficParams->queueID] = TI_TRUE;
|
|
453 |
DB_QUEUES(hCmdBld).queues[pQtrafficParams->queueID] = *pQtrafficParams;
|
|
454 |
|
|
455 |
return cmdBld_CfgIeTid (hCmdBld, pQtrafficParams, fCb, hCb);
|
|
456 |
}
|
|
457 |
|
|
458 |
|
|
459 |
/****************************************************************************
|
|
460 |
* cmdBld_CfgAcParams()
|
|
461 |
****************************************************************************
|
|
462 |
* DESCRIPTION: configure AC params
|
|
463 |
*
|
|
464 |
* INPUTS: None
|
|
465 |
*
|
|
466 |
* OUTPUT: None
|
|
467 |
*
|
|
468 |
* RETURNS: TI_OK or TI_NOK
|
|
469 |
****************************************************************************/
|
|
470 |
TI_STATUS cmdBld_CfgAcParams (TI_HANDLE hCmdBld, TAcQosParams *pAcQosParams, void *fCb, TI_HANDLE hCb)
|
|
471 |
{
|
|
472 |
DB_AC(hCmdBld).isAcConfigured[pAcQosParams->ac] = TI_TRUE;
|
|
473 |
DB_AC(hCmdBld).ac[pAcQosParams->ac] = *pAcQosParams;
|
|
474 |
|
|
475 |
return cmdBld_CfgIeAcParams (hCmdBld, pAcQosParams, fCb, hCb);
|
|
476 |
}
|
|
477 |
|
|
478 |
|
|
479 |
/****************************************************************************
|
|
480 |
* cmdBld_CfgPsRxStreaming()
|
|
481 |
****************************************************************************
|
|
482 |
* DESCRIPTION: configure PS-Rx-Streaming params
|
|
483 |
*
|
|
484 |
* INPUTS: None
|
|
485 |
*
|
|
486 |
* OUTPUT: None
|
|
487 |
*
|
|
488 |
* RETURNS: TI_OK or TI_NOK
|
|
489 |
****************************************************************************/
|
|
490 |
TI_STATUS cmdBld_CfgPsRxStreaming (TI_HANDLE hCmdBld, TPsRxStreaming *pPsRxStreaming, void *fCb, TI_HANDLE hCb)
|
|
491 |
{
|
|
492 |
DB_PS_STREAM(hCmdBld).tid[pPsRxStreaming->uTid] = *pPsRxStreaming;
|
|
493 |
|
|
494 |
return cmdBld_CfgIePsRxStreaming (hCmdBld, pPsRxStreaming, fCb, hCb);
|
|
495 |
}
|
|
496 |
|
|
497 |
|
|
498 |
/****************************************************************************
|
|
499 |
* cmdBld_CfgPacketDetectionThreshold
|
|
500 |
****************************************************************************
|
|
501 |
* DESCRIPTION: Sets Packet Detection Threshold
|
|
502 |
*
|
|
503 |
* INPUTS: None
|
|
504 |
*
|
|
505 |
* OUTPUT: None
|
|
506 |
*
|
|
507 |
* RETURNS: TI_OK or TI_NOK
|
|
508 |
****************************************************************************/
|
|
509 |
TI_STATUS cmdBld_CfgPacketDetectionThreshold (TI_HANDLE hCmdBld, TI_UINT32 threshold, void *fCb, TI_HANDLE hCb)
|
|
510 |
{
|
|
511 |
DB_WLAN(hCmdBld).PacketDetectionThreshold = threshold;
|
|
512 |
|
|
513 |
return cmdBld_CfgIePacketDetectionThreshold (hCmdBld, threshold, fCb, hCb);
|
|
514 |
}
|
|
515 |
|
|
516 |
|
|
517 |
/****************************************************************************
|
|
518 |
* cmdBld_CfgBeaconFilterOpt
|
|
519 |
****************************************************************************
|
|
520 |
* DESCRIPTION: Sets Beacon filtering state
|
|
521 |
*
|
|
522 |
* INPUTS: None
|
|
523 |
*
|
|
524 |
* OUTPUT: None
|
|
525 |
*
|
|
526 |
* RETURNS: TI_OK or TI_NOK
|
|
527 |
****************************************************************************/
|
|
528 |
TI_STATUS cmdBld_CfgBeaconFilterOpt (TI_HANDLE hCmdBld,
|
|
529 |
TI_UINT8 uBeaconFilteringStatus,
|
|
530 |
TI_UINT8 uNumOfBeaconsToBuffer,
|
|
531 |
void *fCb,
|
|
532 |
TI_HANDLE hCb)
|
|
533 |
{
|
|
534 |
DB_WLAN(hCmdBld).beaconFilterParams.desiredState = uBeaconFilteringStatus;
|
|
535 |
DB_WLAN(hCmdBld).beaconFilterParams.numOfElements = uNumOfBeaconsToBuffer;
|
|
536 |
|
|
537 |
return cmdBld_CfgIeBeaconFilterOpt (hCmdBld,
|
|
538 |
uBeaconFilteringStatus,
|
|
539 |
uNumOfBeaconsToBuffer,
|
|
540 |
fCb,
|
|
541 |
hCb);
|
|
542 |
}
|
|
543 |
|
|
544 |
/****************************************************************************
|
|
545 |
* cmdBld_CfgRateMngDbg
|
|
546 |
****************************************************************************
|
|
547 |
* DESCRIPTION: Sets rate managment params
|
|
548 |
*
|
|
549 |
* INPUTS: None
|
|
550 |
*
|
|
551 |
* OUTPUT: None
|
|
552 |
*
|
|
553 |
* RETURNS: TI_OK or TI_NOK
|
|
554 |
****************************************************************************/
|
|
555 |
|
|
556 |
TI_STATUS cmdBld_CfgRateMngDbg (TI_HANDLE hCmdBld,
|
|
557 |
RateMangeParams_t *pRateMngParams ,
|
|
558 |
void *fCb,
|
|
559 |
TI_HANDLE hCb)
|
|
560 |
{
|
|
561 |
|
|
562 |
TRateMngParams *pRateMngParamsDB = &DB_RM(hCmdBld);
|
|
563 |
int uIndex;
|
|
564 |
|
|
565 |
pRateMngParamsDB->rateMngParams.paramIndex = pRateMngParams->paramIndex;
|
|
566 |
|
|
567 |
switch (pRateMngParams->paramIndex)
|
|
568 |
{
|
|
569 |
case RATE_MGMT_RETRY_SCORE_PARAM:
|
|
570 |
pRateMngParamsDB->rateMngParams.RateRetryScore = pRateMngParams->RateRetryScore;
|
|
571 |
break;
|
|
572 |
case RATE_MGMT_PER_ADD_PARAM:
|
|
573 |
pRateMngParamsDB->rateMngParams.PerAdd = pRateMngParams->PerAdd;
|
|
574 |
break;
|
|
575 |
case RATE_MGMT_PER_TH1_PARAM:
|
|
576 |
pRateMngParamsDB->rateMngParams.PerTh1 = pRateMngParams->PerTh1;
|
|
577 |
break;
|
|
578 |
case RATE_MGMT_PER_TH2_PARAM:
|
|
579 |
pRateMngParamsDB->rateMngParams.PerTh2 = pRateMngParams->PerTh2;
|
|
580 |
break;
|
|
581 |
case RATE_MGMT_MAX_PER_PARAM:
|
|
582 |
pRateMngParamsDB->rateMngParams.MaxPer = pRateMngParams->MaxPer;
|
|
583 |
break;
|
|
584 |
case RATE_MGMT_INVERSE_CURIOSITY_FACTOR_PARAM:
|
|
585 |
pRateMngParamsDB->rateMngParams.InverseCuriosityFactor[0] = pRateMngParams->InverseCuriosityFactor[0];
|
|
586 |
pRateMngParamsDB->rateMngParams.InverseCuriosityFactor[1] = pRateMngParams->InverseCuriosityFactor[1];
|
|
587 |
break;
|
|
588 |
case RATE_MGMT_TX_FAIL_LOW_TH_PARAM:
|
|
589 |
pRateMngParamsDB->rateMngParams.TxFailLowTh = pRateMngParams->TxFailLowTh;
|
|
590 |
break;
|
|
591 |
case RATE_MGMT_TX_FAIL_HIGH_TH_PARAM:
|
|
592 |
pRateMngParamsDB->rateMngParams.TxFailHighTh = pRateMngParams->TxFailHighTh;
|
|
593 |
break;
|
|
594 |
case RATE_MGMT_PER_ALPHA_SHIFT_PARAM:
|
|
595 |
pRateMngParamsDB->rateMngParams.PerAlphaShift = pRateMngParams->PerAlphaShift;
|
|
596 |
break;
|
|
597 |
case RATE_MGMT_PER_ADD_SHIFT_PARAM:
|
|
598 |
pRateMngParamsDB->rateMngParams.PerAddShift = pRateMngParams->PerAddShift;
|
|
599 |
break;
|
|
600 |
case RATE_MGMT_PER_BETA1_SHIFT_PARAM:
|
|
601 |
pRateMngParamsDB->rateMngParams.PerBeta1Shift = pRateMngParams->PerBeta1Shift;
|
|
602 |
break;
|
|
603 |
case RATE_MGMT_PER_BETA2_SHIFT_PARAM:
|
|
604 |
pRateMngParamsDB->rateMngParams.PerBeta2Shift = pRateMngParams->PerBeta2Shift;
|
|
605 |
break;
|
|
606 |
case RATE_MGMT_RATE_CHECK_UP_PARAM:
|
|
607 |
pRateMngParamsDB->rateMngParams.RateCheckUp = pRateMngParams->RateCheckUp;
|
|
608 |
break;
|
|
609 |
case RATE_MGMT_RATE_CHECK_DOWN_PARAM:
|
|
610 |
pRateMngParamsDB->rateMngParams.RateCheckDown = pRateMngParams->RateCheckDown;
|
|
611 |
break;
|
|
612 |
case RATE_MGMT_RATE_RETRY_POLICY_PARAM:
|
|
613 |
for (uIndex = 0; uIndex < 13; uIndex++)
|
|
614 |
{
|
|
615 |
pRateMngParamsDB->rateMngParams.RateRetryPolicy[uIndex] = pRateMngParams->RateRetryPolicy[uIndex];
|
|
616 |
}
|
|
617 |
break;
|
|
618 |
case RATE_MGMT_PER_WEIGHT_SHIFT_PARAM:
|
|
619 |
pRateMngParamsDB->rateMngParams.PerWeightShift[0] = pRateMngParams->PerWeightShift[0];
|
|
620 |
pRateMngParamsDB->rateMngParams.PerWeightShift[1] = pRateMngParams->PerWeightShift[1];
|
|
621 |
break;
|
|
622 |
case RATE_MGMT_TP_WEIGHT_SHIFT_PARAM:
|
|
623 |
pRateMngParamsDB->rateMngParams.TpWeightShift[0] = pRateMngParams->TpWeightShift[0];
|
|
624 |
pRateMngParamsDB->rateMngParams.TpWeightShift[1] = pRateMngParams->TpWeightShift[1];
|
|
625 |
break;
|
|
626 |
case RATE_MGMT_ALL_PARAMS:
|
|
627 |
pRateMngParamsDB->rateMngParams.RateRetryScore = pRateMngParams->RateRetryScore;
|
|
628 |
pRateMngParamsDB->rateMngParams.PerAdd = pRateMngParams->PerAdd;
|
|
629 |
pRateMngParamsDB->rateMngParams.PerTh1 = pRateMngParams->PerTh1;
|
|
630 |
pRateMngParamsDB->rateMngParams.PerTh2 = pRateMngParams->PerTh2;
|
|
631 |
pRateMngParamsDB->rateMngParams.MaxPer = pRateMngParams->MaxPer;
|
|
632 |
pRateMngParamsDB->rateMngParams.InverseCuriosityFactor[0] = pRateMngParams->InverseCuriosityFactor[0];
|
|
633 |
pRateMngParamsDB->rateMngParams.InverseCuriosityFactor[1] = pRateMngParams->InverseCuriosityFactor[1];
|
|
634 |
pRateMngParamsDB->rateMngParams.TxFailLowTh = pRateMngParams->TxFailLowTh;
|
|
635 |
pRateMngParamsDB->rateMngParams.TxFailHighTh = pRateMngParams->TxFailHighTh;
|
|
636 |
pRateMngParamsDB->rateMngParams.PerAlphaShift = pRateMngParams->PerAlphaShift;
|
|
637 |
pRateMngParamsDB->rateMngParams.PerAddShift = pRateMngParams->PerAddShift;
|
|
638 |
pRateMngParamsDB->rateMngParams.PerBeta1Shift = pRateMngParams->PerBeta1Shift;
|
|
639 |
pRateMngParamsDB->rateMngParams.PerBeta2Shift = pRateMngParams->PerBeta2Shift;
|
|
640 |
pRateMngParamsDB->rateMngParams.RateCheckUp = pRateMngParams->RateCheckUp;
|
|
641 |
pRateMngParamsDB->rateMngParams.RateCheckDown = pRateMngParams->RateCheckDown;
|
|
642 |
for (uIndex = 0; uIndex < 13; uIndex++)
|
|
643 |
{
|
|
644 |
pRateMngParamsDB->rateMngParams.RateRetryPolicy[uIndex] = pRateMngParams->RateRetryPolicy[uIndex];
|
|
645 |
}
|
|
646 |
pRateMngParamsDB->rateMngParams.PerWeightShift[0] = pRateMngParams->PerWeightShift[0];
|
|
647 |
pRateMngParamsDB->rateMngParams.PerWeightShift[1] = pRateMngParams->PerWeightShift[1];
|
|
648 |
pRateMngParamsDB->rateMngParams.TpWeightShift[0] = pRateMngParams->TpWeightShift[0];
|
|
649 |
pRateMngParamsDB->rateMngParams.TpWeightShift[1] = pRateMngParams->TpWeightShift[1];
|
|
650 |
break;
|
|
651 |
}
|
|
652 |
|
|
653 |
return cmdBld_CfgIeRateMngDbg (hCmdBld,
|
|
654 |
pRateMngParams,
|
|
655 |
fCb,
|
|
656 |
hCb);
|
|
657 |
}
|
|
658 |
|
|
659 |
|
|
660 |
/****************************************************************************
|
|
661 |
* cmdBld_CfgBeaconFilterTable
|
|
662 |
****************************************************************************
|
|
663 |
* DESCRIPTION: Sets Beacon filtering state
|
|
664 |
*
|
|
665 |
* INPUTS: None
|
|
666 |
*
|
|
667 |
* OUTPUT: None
|
|
668 |
*
|
|
669 |
* RETURNS: TI_OK or TI_NOK
|
|
670 |
****************************************************************************/
|
|
671 |
TI_STATUS cmdBld_CfgBeaconFilterTable (TI_HANDLE hCmdBld,
|
|
672 |
TI_UINT8 uNumberOfIEs,
|
|
673 |
TI_UINT8 *pIETable,
|
|
674 |
TI_UINT8 uIETableSize,
|
|
675 |
void *fCb,
|
|
676 |
TI_HANDLE hCb)
|
|
677 |
{
|
|
678 |
TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
|
|
679 |
|
|
680 |
if (uIETableSize > BEACON_FILTER_TABLE_MAX_SIZE)
|
|
681 |
{
|
|
682 |
TRACE2(pCmdBld->hReport, REPORT_SEVERITY_ERROR, "cmdBld_CfgBeaconFilterTable: Table size is too big %d (>%d)\n", uIETableSize, BEACON_FILTER_TABLE_MAX_SIZE);
|
|
683 |
|
|
684 |
return PARAM_VALUE_NOT_VALID;
|
|
685 |
}
|
|
686 |
|
|
687 |
os_memoryZero (pCmdBld->hOs,
|
|
688 |
(void *)DB_WLAN(hCmdBld).beaconFilterIETable.IETable,
|
|
689 |
BEACON_FILTER_TABLE_MAX_SIZE);
|
|
690 |
os_memoryCopy (pCmdBld->hOs,
|
|
691 |
(void *)DB_WLAN(hCmdBld).beaconFilterIETable.IETable,
|
|
692 |
(void *)pIETable,
|
|
693 |
uIETableSize);
|
|
694 |
DB_WLAN(hCmdBld).beaconFilterIETable.numberOfIEs = uNumberOfIEs;
|
|
695 |
DB_WLAN(hCmdBld).beaconFilterIETable.IETableSize = uIETableSize;
|
|
696 |
|
|
697 |
return cmdBld_CfgIeBeaconFilterTable (hCmdBld, uNumberOfIEs, pIETable, uIETableSize, fCb, hCb);
|
|
698 |
}
|
|
699 |
|
|
700 |
|
|
701 |
/*----------------------------------------*/
|
|
702 |
/* Roaming Trigger Configuration Commands */
|
|
703 |
/*----------------------------------------*/
|
|
704 |
|
|
705 |
/****************************************************************************
|
|
706 |
* cmdBld_CfgRssiSnrTrigger()
|
|
707 |
****************************************************************************
|
|
708 |
* DESCRIPTION: Set the RSSI/SNR Trigger parameters.
|
|
709 |
*
|
|
710 |
* INPUTS:
|
|
711 |
*
|
|
712 |
* OUTPUT: None
|
|
713 |
*
|
|
714 |
* RETURNS: None
|
|
715 |
****************************************************************************/
|
|
716 |
TI_STATUS cmdBld_CfgRssiSnrTrigger (TI_HANDLE hCmdBld, RssiSnrTriggerCfg_t *pTriggerParam, void *fCb, TI_HANDLE hCb)
|
|
717 |
{
|
|
718 |
DB_WLAN(hCmdBld).tRssiSnrTrigger[pTriggerParam->index].index = pTriggerParam->index;
|
|
719 |
DB_WLAN(hCmdBld).tRssiSnrTrigger[pTriggerParam->index].threshold = pTriggerParam->threshold;
|
|
720 |
DB_WLAN(hCmdBld).tRssiSnrTrigger[pTriggerParam->index].pacing = pTriggerParam->pacing;
|
|
721 |
DB_WLAN(hCmdBld).tRssiSnrTrigger[pTriggerParam->index].metric = pTriggerParam->metric;
|
|
722 |
DB_WLAN(hCmdBld).tRssiSnrTrigger[pTriggerParam->index].type = pTriggerParam->type;
|
|
723 |
DB_WLAN(hCmdBld).tRssiSnrTrigger[pTriggerParam->index].direction = pTriggerParam->direction;
|
|
724 |
DB_WLAN(hCmdBld).tRssiSnrTrigger[pTriggerParam->index].hystersis = pTriggerParam->hystersis;
|
|
725 |
DB_WLAN(hCmdBld).tRssiSnrTrigger[pTriggerParam->index].enable = pTriggerParam->enable;
|
|
726 |
|
|
727 |
return cmdBld_CfgIeRssiSnrTrigger (hCmdBld, pTriggerParam, fCb, hCb);
|
|
728 |
}
|
|
729 |
|
|
730 |
|
|
731 |
/****************************************************************************
|
|
732 |
* cmdBld_CfgRssiSnrWeights()
|
|
733 |
****************************************************************************
|
|
734 |
* DESCRIPTION: Set RSSI/SNR Weights for Average calculations.
|
|
735 |
*
|
|
736 |
* INPUTS:
|
|
737 |
*
|
|
738 |
* OUTPUT: None
|
|
739 |
*
|
|
740 |
* RETURNS: None
|
|
741 |
****************************************************************************/
|
|
742 |
TI_STATUS cmdBld_CfgRssiSnrWeights (TI_HANDLE hCmdBld, RssiSnrAverageWeights_t *pWeightsParam, void *fCb, TI_HANDLE hCb)
|
|
743 |
{
|
|
744 |
TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
|
|
745 |
|
|
746 |
TRACE4(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "\n cmdBld_CfgRssiSnrWeights :\n uRssiBeaconAverageWeight = %d\n uRssiPacketAverageWeight = %d\n uSnrBeaconAverageWeight = %d\n uSnrPacketAverageWeight = %d \n ", pWeightsParam->rssiBeaconAverageWeight, pWeightsParam->rssiPacketAverageWeight, pWeightsParam->snrBeaconAverageWeight , pWeightsParam->snrPacketAverageWeight );
|
|
747 |
|
|
748 |
DB_WLAN(hCmdBld).tRssiSnrWeights.rssiBeaconAverageWeight = pWeightsParam->rssiBeaconAverageWeight;
|
|
749 |
DB_WLAN(hCmdBld).tRssiSnrWeights.rssiPacketAverageWeight = pWeightsParam->rssiPacketAverageWeight;
|
|
750 |
DB_WLAN(hCmdBld).tRssiSnrWeights.snrBeaconAverageWeight = pWeightsParam->snrBeaconAverageWeight ;
|
|
751 |
DB_WLAN(hCmdBld).tRssiSnrWeights.snrPacketAverageWeight = pWeightsParam->snrPacketAverageWeight ;
|
|
752 |
|
|
753 |
return cmdBld_CfgIeRssiSnrWeights (hCmdBld, pWeightsParam, fCb, hCb);
|
|
754 |
}
|
|
755 |
|
|
756 |
|
|
757 |
/****************************************************************************
|
|
758 |
* cmdBld_CfgMaxTxRetry()
|
|
759 |
****************************************************************************
|
|
760 |
* DESCRIPTION: Set Max Tx retry parmaters.
|
|
761 |
*
|
|
762 |
* INPUTS:
|
|
763 |
* maxTxRetry max Tx Retry
|
|
764 |
*
|
|
765 |
* OUTPUT: None
|
|
766 |
*
|
|
767 |
* RETURNS: None
|
|
768 |
****************************************************************************/
|
|
769 |
TI_STATUS cmdBld_CfgMaxTxRetry (TI_HANDLE hCmdBld, TRroamingTriggerParams *pRoamingTriggerCmd, void *fCb, TI_HANDLE hCb)
|
|
770 |
{
|
|
771 |
DB_WLAN(hCmdBld).roamTriggers.maxTxRetry = pRoamingTriggerCmd->maxTxRetry;
|
|
772 |
|
|
773 |
return cmdBld_CfgIeMaxTxRetry (hCmdBld, pRoamingTriggerCmd, fCb, hCb);
|
|
774 |
}
|
|
775 |
|
|
776 |
|
|
777 |
/****************************************************************************
|
|
778 |
* cmdBld_CfgSgEnable()
|
|
779 |
****************************************************************************
|
|
780 |
* DESCRIPTION: Save Soft Gemini enable parameter
|
|
781 |
*
|
|
782 |
* INPUTS:
|
|
783 |
*
|
|
784 |
* OUTPUT:
|
|
785 |
*
|
|
786 |
* RETURNS: TI_OK or TI_NOK
|
|
787 |
****************************************************************************/
|
|
788 |
TI_STATUS cmdBld_CfgSgEnable (TI_HANDLE hCmdBld, ESoftGeminiEnableModes eSgEnable, void *fCb, TI_HANDLE hCb)
|
|
789 |
{
|
|
790 |
DB_WLAN(hCmdBld).SoftGeminiEnable = eSgEnable;
|
|
791 |
|
|
792 |
return cmdBld_CfgIeSgEnable (hCmdBld, eSgEnable, fCb, hCb);
|
|
793 |
}
|
|
794 |
|
|
795 |
|
|
796 |
/****************************************************************************
|
|
797 |
* cmdBld_CfgSg()
|
|
798 |
****************************************************************************
|
|
799 |
* DESCRIPTION: Save Soft Gemini config parameter
|
|
800 |
*
|
|
801 |
* INPUTS:
|
|
802 |
*
|
|
803 |
* OUTPUT:
|
|
804 |
*
|
|
805 |
* RETURNS: TI_OK or TI_NOK
|
|
806 |
****************************************************************************/
|
|
807 |
TI_STATUS cmdBld_CfgSg (TI_HANDLE hCmdBld, TSoftGeminiParams *pSgParam, void *fCb, TI_HANDLE hCb)
|
|
808 |
{
|
|
809 |
TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
|
|
810 |
|
|
811 |
/* Copy params for recovery */
|
|
812 |
os_memoryCopy (pCmdBld->hOs,
|
|
813 |
(void*)&DB_WLAN(hCmdBld).SoftGeminiParams,
|
|
814 |
(void*)pSgParam,
|
|
815 |
sizeof(TSoftGeminiParams));
|
|
816 |
|
|
817 |
return cmdBld_CfgIeSg (hCmdBld, pSgParam, fCb, hCb);
|
|
818 |
}
|
|
819 |
|
|
820 |
/****************************************************************************
|
|
821 |
* cmdBld_CfgCoexActivity()
|
|
822 |
****************************************************************************
|
|
823 |
* DESCRIPTION: Sets the CoexActivity table.
|
|
824 |
*
|
|
825 |
* OUTPUT: None
|
|
826 |
*
|
|
827 |
* RETURNS: TI_OK or TI_NOK pWlanParams->RtsThreshold
|
|
828 |
****************************************************************************/
|
|
829 |
TI_STATUS cmdBld_CfgCoexActivity (TI_HANDLE hCmdBld, TCoexActivity *pCoexActivity, void *fCb, TI_HANDLE hCb)
|
|
830 |
{
|
|
831 |
TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
|
|
832 |
TWlanParams *pWlanParams = &DB_WLAN(hCmdBld);
|
|
833 |
TCoexActivity *pSaveCoex = &pWlanParams->tWlanParamsCoexActivityTable.entry[0];
|
|
834 |
int numOfElements = pWlanParams->tWlanParamsCoexActivityTable.numOfElements;
|
|
835 |
int i;
|
|
836 |
|
|
837 |
/* Check if to overwrite existing entry or put on last index */
|
|
838 |
for (i=0; i<numOfElements; i++)
|
|
839 |
{
|
|
840 |
if ((pSaveCoex[i].activityId == pCoexActivity->activityId) && (pSaveCoex->coexIp == pCoexActivity->coexIp))
|
|
841 |
{
|
|
842 |
break;
|
|
843 |
}
|
|
844 |
}
|
|
845 |
|
|
846 |
TRACE4(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "cmdBld_CfgCoexActivity: save Param %d in index %d, %d %d\n", 0, i, pCoexActivity->coexIp, pCoexActivity->activityId);
|
|
847 |
/* save in WlanParams for recovery */
|
|
848 |
pSaveCoex[i].coexIp = pCoexActivity->coexIp;
|
|
849 |
pSaveCoex[i].activityId = pCoexActivity->activityId;
|
|
850 |
pSaveCoex[i].defaultPriority = pCoexActivity->defaultPriority;
|
|
851 |
pSaveCoex[i].raisedPriority = pCoexActivity->raisedPriority;
|
|
852 |
pSaveCoex[i].minService = pCoexActivity->minService;
|
|
853 |
pSaveCoex[i].maxService = pCoexActivity->maxService;
|
|
854 |
|
|
855 |
if (i == numOfElements)
|
|
856 |
{
|
|
857 |
/* no existing entry overwrite, increment number of elements */
|
|
858 |
pWlanParams->tWlanParamsCoexActivityTable.numOfElements++;
|
|
859 |
}
|
|
860 |
|
|
861 |
return cmdBld_CfgIeCoexActivity (hCmdBld, pCoexActivity, fCb, hCb);
|
|
862 |
}
|
|
863 |
|
|
864 |
/****************************************************************************
|
|
865 |
* cmdBld_CfgFmCoex()
|
|
866 |
****************************************************************************
|
|
867 |
* DESCRIPTION: Save and configure FM coexistence parameters
|
|
868 |
*
|
|
869 |
* INPUTS:
|
|
870 |
*
|
|
871 |
* OUTPUT:
|
|
872 |
*
|
|
873 |
* RETURNS: TI_OK or TI_NOK
|
|
874 |
****************************************************************************/
|
|
875 |
TI_STATUS cmdBld_CfgFmCoex (TI_HANDLE hCmdBld, TFmCoexParams *pFmCoexParams, void *fCb, TI_HANDLE hCb)
|
|
876 |
{
|
|
877 |
TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
|
|
878 |
|
|
879 |
/* Copy params for recovery */
|
|
880 |
os_memoryCopy (pCmdBld->hOs,
|
|
881 |
(void*)&(DB_WLAN(hCmdBld).tFmCoexParams),
|
|
882 |
(void*)pFmCoexParams,
|
|
883 |
sizeof(TFmCoexParams));
|
|
884 |
|
|
885 |
return cmdBld_CfgIeFmCoex (hCmdBld, pFmCoexParams, fCb, hCb);
|
|
886 |
}
|
|
887 |
|
|
888 |
/****************************************************************************
|
|
889 |
* cmdBld_CfgTxRatePolicy()
|
|
890 |
****************************************************************************
|
|
891 |
* DESCRIPTION: configure TxRatePolicy params
|
|
892 |
*
|
|
893 |
* INPUTS: None
|
|
894 |
*
|
|
895 |
* OUTPUT: None
|
|
896 |
*
|
|
897 |
* RETURNS: TI_OK or TI_NOK
|
|
898 |
****************************************************************************/
|
|
899 |
TI_STATUS cmdBld_CfgTxRatePolicy (TI_HANDLE hCmdBld, TTxRatePolicy *pTxRatePolicy, void *fCb, TI_HANDLE hCb)
|
|
900 |
{
|
|
901 |
TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
|
|
902 |
TTxRateClass *pTxRateClass = pTxRatePolicy->rateClass;
|
|
903 |
TI_UINT8 index;
|
|
904 |
|
|
905 |
TRACE1(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, "_1, Num of classes = 0x%x\n", pTxRatePolicy->numOfRateClasses);
|
|
906 |
|
|
907 |
DB_BSS(hCmdBld).TxRateClassParams.numOfRateClasses = pTxRatePolicy->numOfRateClasses;
|
|
908 |
|
|
909 |
for (index = 0; index < pTxRatePolicy->numOfRateClasses; index++, pTxRateClass++)
|
|
910 |
{
|
|
911 |
TRACE4(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, "_2loop, Index = %d, Short R = 0x%x, Long R = 0x%x, Rates = 0x%x\n", index, pTxRateClass->shortRetryLimit, pTxRateClass->longRetryLimit, pTxRateClass->txEnabledRates);
|
|
912 |
|
|
913 |
DB_BSS(hCmdBld).TxRateClassParams.rateClass[index] = *pTxRateClass;
|
|
914 |
}
|
|
915 |
|
|
916 |
return cmdBld_CfgIeTxRatePolicy (hCmdBld, pTxRatePolicy, fCb, hCb);
|
|
917 |
}
|
|
918 |
|
|
919 |
|
|
920 |
TI_STATUS cmdBld_CfgSlotTime (TI_HANDLE hCmdBld, ESlotTime eSlotTime, void *fCb, TI_HANDLE hCb)
|
|
921 |
{
|
|
922 |
TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
|
|
923 |
|
|
924 |
DB_WLAN(hCmdBld).SlotTime = eSlotTime;
|
|
925 |
|
|
926 |
TRACE1(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, "cmdBld_CfgSlotTime: Slot time = %d\n", eSlotTime);
|
|
927 |
|
|
928 |
/* Configure the new Slot-Time value to the FW. */
|
|
929 |
return cmdBld_CfgIeSlotTime (hCmdBld, (TI_UINT8)eSlotTime, fCb, hCb);
|
|
930 |
}
|
|
931 |
|
|
932 |
|
|
933 |
TI_STATUS cmdBld_CfgEventMask (TI_HANDLE hCmdBld, TI_UINT32 uEventMask, void *fCb, TI_HANDLE hCb)
|
|
934 |
{
|
|
935 |
return cmdBld_CfgIeEventMask (hCmdBld, uEventMask, fCb, hCb);
|
|
936 |
}
|
|
937 |
|
|
938 |
|
|
939 |
/*
|
|
940 |
* ----------------------------------------------------------------------------
|
|
941 |
* Function : cmdBld_CfgHwEncEnable
|
|
942 |
*
|
|
943 |
* Input :
|
|
944 |
* Output :
|
|
945 |
* Process :
|
|
946 |
* Note(s) :
|
|
947 |
* -----------------------------------------------------------------------------
|
|
948 |
*/
|
|
949 |
TI_STATUS cmdBld_CfgHwEncEnable (TI_HANDLE hCmdBld, TI_BOOL bHwEncEnable, TI_BOOL bHwDecEnable, void *fCb, TI_HANDLE hCb)
|
|
950 |
{
|
|
951 |
TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
|
|
952 |
TWlanParams *pWlanParams = &DB_WLAN(hCmdBld);
|
|
953 |
|
|
954 |
/* Store the HW encryption Enable flag for reconfigure time (FW reload)*/
|
|
955 |
DB_KEYS(pCmdBld).bReconfHwEncEnable = bHwEncEnable;
|
|
956 |
DB_KEYS(pCmdBld).bHwEncDecrEnableValid = TI_TRUE;
|
|
957 |
|
|
958 |
if (bHwEncEnable)
|
|
959 |
{
|
|
960 |
pWlanParams->FeatureDataFlowOptions &= ~DF_ENCRYPTION_DISABLE;
|
|
961 |
}
|
|
962 |
else
|
|
963 |
{
|
|
964 |
pWlanParams->FeatureDataFlowOptions |= DF_ENCRYPTION_DISABLE;
|
|
965 |
}
|
|
966 |
|
|
967 |
/* Set bit DF_SNIFF_MODE_ENABLE to enable or prevent decryption in fw */
|
|
968 |
/* WARNING: Have to check how to control the decryption (which bit) and then set/reset
|
|
969 |
the appropriate bit*/
|
|
970 |
if (bHwDecEnable)
|
|
971 |
{
|
|
972 |
pWlanParams->FeatureDataFlowOptions &= ~DF_SNIFF_MODE_ENABLE;
|
|
973 |
}
|
|
974 |
else
|
|
975 |
{
|
|
976 |
pWlanParams->FeatureDataFlowOptions |= DF_SNIFF_MODE_ENABLE;
|
|
977 |
}
|
|
978 |
|
|
979 |
return cmdBld_CfgIeFeatureConfig (hCmdBld,
|
|
980 |
pWlanParams->FeatureOptions,
|
|
981 |
pWlanParams->FeatureDataFlowOptions,
|
|
982 |
fCb,
|
|
983 |
hCb);
|
|
984 |
}
|
|
985 |
|
|
986 |
|
|
987 |
TI_STATUS cmdBld_CfgHwEncDecEnable (TI_HANDLE hCmdBld, TI_BOOL bHwEncEnable, void *fCb, TI_HANDLE hCb)
|
|
988 |
{
|
|
989 |
return cmdBld_CfgHwEncEnable (hCmdBld, bHwEncEnable, bHwEncEnable, fCb, hCb);
|
|
990 |
}
|
|
991 |
|
|
992 |
|
|
993 |
/*
|
|
994 |
* ----------------------------------------------------------------------------
|
|
995 |
* Function : cmdBld_CfgSecureMode
|
|
996 |
*
|
|
997 |
* Input :
|
|
998 |
* Output :
|
|
999 |
* Process :
|
|
1000 |
* Note(s) :
|
|
1001 |
* -----------------------------------------------------------------------------
|
|
1002 |
*/
|
|
1003 |
TI_STATUS cmdBld_CfgSecureMode (TI_HANDLE hCmdBld, ECipherSuite eSecurMode, void *fCb, TI_HANDLE hCb)
|
|
1004 |
{
|
|
1005 |
TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
|
|
1006 |
TI_UINT32 index;
|
|
1007 |
|
|
1008 |
if (eSecurMode < TWD_CIPHER_MAX)
|
|
1009 |
{
|
|
1010 |
TRACE2(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "cmdBld_CfgSecureMode: change tSecurity mode from %d --> %d\n", pCmdBld->tSecurity.eSecurityMode, eSecurMode);
|
|
1011 |
/* check if tSecurity mode is equal to previous one*/
|
|
1012 |
if (pCmdBld->tSecurity.eSecurityMode == eSecurMode)
|
|
1013 |
{
|
|
1014 |
return TI_OK;
|
|
1015 |
}
|
|
1016 |
|
|
1017 |
/* Reset all reconfig valid fields*/
|
|
1018 |
DB_KEYS(pCmdBld).bHwEncDecrEnableValid = TI_FALSE;
|
|
1019 |
DB_KEYS(pCmdBld).bDefaultKeyIdValid = TI_FALSE;
|
|
1020 |
for (index = 0;
|
|
1021 |
index < pCmdBld->tSecurity.uNumOfStations * NO_OF_RECONF_SECUR_KEYS_PER_STATION + NO_OF_EXTRA_RECONF_SECUR_KEYS;
|
|
1022 |
index++)
|
|
1023 |
{
|
|
1024 |
(DB_KEYS(pCmdBld).pReconfKeys + index)->keyType = KEY_NULL;
|
|
1025 |
}
|
|
1026 |
|
|
1027 |
/* set the new tSecurity mode*/
|
|
1028 |
pCmdBld->tSecurity.eSecurityMode = eSecurMode;
|
|
1029 |
|
|
1030 |
/* disable defrag, duplicate detection on TNETW+XCC on chip level*/
|
|
1031 |
/* YV- to add fragmentation control (if there is- artur ?)*/
|
|
1032 |
return cmdBld_CfgRxMsduFormat (hCmdBld,
|
|
1033 |
pCmdBld->tSecurity.eSecurityMode != TWD_CIPHER_CKIP,
|
|
1034 |
fCb,
|
|
1035 |
hCb);
|
|
1036 |
}
|
|
1037 |
else
|
|
1038 |
{
|
|
1039 |
return TI_NOK;
|
|
1040 |
}
|
|
1041 |
}
|
|
1042 |
|
|
1043 |
|
|
1044 |
TI_STATUS cmdBld_CfgConnMonitParams (TI_HANDLE hCmdBld,
|
|
1045 |
TRroamingTriggerParams *pRoamingTriggerCmd,
|
|
1046 |
void *fCb,
|
|
1047 |
TI_HANDLE hCb)
|
|
1048 |
{
|
|
1049 |
TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
|
|
1050 |
|
|
1051 |
TRACE2(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "SetBssLossTsfThresholdParamsCmd :\n BssLossTimeout = %d\n TsfMissThreshold = %d \n ", pRoamingTriggerCmd->BssLossTimeout, pRoamingTriggerCmd->TsfMissThreshold);
|
|
1052 |
|
|
1053 |
DB_WLAN(hCmdBld).roamTriggers.BssLossTimeout = pRoamingTriggerCmd->BssLossTimeout;
|
|
1054 |
DB_WLAN(hCmdBld).roamTriggers.TsfMissThreshold = pRoamingTriggerCmd->TsfMissThreshold;
|
|
1055 |
|
|
1056 |
return cmdBld_CfgIeConnMonitParams (hCmdBld, pRoamingTriggerCmd, fCb, hCb);
|
|
1057 |
}
|
|
1058 |
|
|
1059 |
|
|
1060 |
/****************************************************************************
|
|
1061 |
* cmdBld_CfgEnableRxDataFilter()
|
|
1062 |
****************************************************************************
|
|
1063 |
* DESCRIPTION: Enables or disables Rx data filtering.
|
|
1064 |
*
|
|
1065 |
* INPUTS: enabled - 0 to disable data filtering, any other value to enable.
|
|
1066 |
* defaultAction - The default action to take on non-matching packets.
|
|
1067 |
*
|
|
1068 |
* OUTPUT: None
|
|
1069 |
*
|
|
1070 |
* RETURNS: TI_OK or TI_NOK
|
|
1071 |
****************************************************************************/
|
|
1072 |
TI_STATUS cmdBld_CfgEnableRxDataFilter (TI_HANDLE hCmdBld,
|
|
1073 |
TI_BOOL bEnabled,
|
|
1074 |
filter_e eDefaultAction,
|
|
1075 |
void *fCb,
|
|
1076 |
TI_HANDLE hCb)
|
|
1077 |
{
|
|
1078 |
/* Save parameters for reconfig phase */
|
|
1079 |
DB_RX_DATA_FLTR(hCmdBld).bEnabled = bEnabled;
|
|
1080 |
DB_RX_DATA_FLTR(hCmdBld).eDefaultAction = eDefaultAction;
|
|
1081 |
|
|
1082 |
return cmdBld_CfgIeEnableRxDataFilter (hCmdBld, bEnabled, eDefaultAction, fCb, hCb);
|
|
1083 |
}
|
|
1084 |
|
|
1085 |
|
|
1086 |
/****************************************************************************
|
|
1087 |
* cmdBld_CfgRxDataFilter()
|
|
1088 |
*****************************************************************************
|
|
1089 |
* DESCRIPTION: Add/remove Rx Data filter information element.
|
|
1090 |
*
|
|
1091 |
* INPUTS: index - Index of the Rx Data filter
|
|
1092 |
* command - Add or remove the filter
|
|
1093 |
* action - Action to take on packets matching the pattern
|
|
1094 |
* numFieldPatterns - Number of field patterns in the filter
|
|
1095 |
* lenFieldPatterns - Length of the field pattern series
|
|
1096 |
* fieldPatterns - Series of field patterns
|
|
1097 |
*
|
|
1098 |
* OUTPUT: None
|
|
1099 |
*
|
|
1100 |
* RETURNS: TI_OK or TI_NOK
|
|
1101 |
****************************************************************************/
|
|
1102 |
TI_STATUS cmdBld_CfgRxDataFilter (TI_HANDLE hCmdBld,
|
|
1103 |
TI_UINT8 index,
|
|
1104 |
TI_UINT8 command,
|
|
1105 |
filter_e eAction,
|
|
1106 |
TI_UINT8 uNumFieldPatterns,
|
|
1107 |
TI_UINT8 uLenFieldPatterns,
|
|
1108 |
TI_UINT8 *pFieldPatterns,
|
|
1109 |
void *fCb,
|
|
1110 |
TI_HANDLE hCb)
|
|
1111 |
{
|
|
1112 |
TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
|
|
1113 |
TRxDataFilter *pFilters = &(DB_RX_DATA_FLTR(hCmdBld).aRxDataFilter[index]);
|
|
1114 |
|
|
1115 |
/* Save parameters for reconfig phase */
|
|
1116 |
pFilters->uIndex = index;
|
|
1117 |
pFilters->uCommand = command;
|
|
1118 |
pFilters->eAction = eAction;
|
|
1119 |
pFilters->uNumFieldPatterns = uNumFieldPatterns;
|
|
1120 |
pFilters->uLenFieldPatterns = uLenFieldPatterns;
|
|
1121 |
os_memoryCopy(pCmdBld->hOs, pFilters->aFieldPattern, pFieldPatterns, uLenFieldPatterns);
|
|
1122 |
|
|
1123 |
return cmdBld_CfgIeRxDataFilter (hCmdBld,
|
|
1124 |
index,
|
|
1125 |
command,
|
|
1126 |
eAction,
|
|
1127 |
uNumFieldPatterns,
|
|
1128 |
uLenFieldPatterns,
|
|
1129 |
pFieldPatterns,
|
|
1130 |
fCb,
|
|
1131 |
hCb);
|
|
1132 |
}
|
|
1133 |
|
|
1134 |
|
|
1135 |
TI_STATUS cmdBld_CfgCtsProtection (TI_HANDLE hCmdBld, TI_UINT8 uCtsProtection, void *fCb, TI_HANDLE hCb)
|
|
1136 |
{
|
|
1137 |
DB_WLAN(hCmdBld).CtsToSelf = uCtsProtection;
|
|
1138 |
|
|
1139 |
return cmdBld_CfgIeCtsProtection (hCmdBld, uCtsProtection, fCb, hCb);
|
|
1140 |
}
|
|
1141 |
|
|
1142 |
|
|
1143 |
TI_STATUS cmdBld_CfgServicePeriodTimeout (TI_HANDLE hCmdBld, TRxTimeOut *pRxTimeOut, void *fCb, TI_HANDLE hCb)
|
|
1144 |
{
|
|
1145 |
return cmdBld_CfgIeServicePeriodTimeout (hCmdBld, pRxTimeOut, fCb, hCb);
|
|
1146 |
}
|
|
1147 |
|
|
1148 |
|
|
1149 |
TI_STATUS cmdBld_CfgRxMsduLifeTime (TI_HANDLE hCmdBld, TI_UINT32 uRxMsduLifeTime, void *fCb, TI_HANDLE hCb)
|
|
1150 |
{
|
|
1151 |
DB_WLAN(hCmdBld).MaxRxMsduLifetime = uRxMsduLifeTime;
|
|
1152 |
|
|
1153 |
return cmdBld_CfgIeRxMsduLifeTime (hCmdBld, uRxMsduLifeTime, fCb, hCb);
|
|
1154 |
}
|
|
1155 |
|
|
1156 |
|
|
1157 |
TI_STATUS cmdBld_CfgStatisitics (TI_HANDLE hCmdBld, void *fCb, TI_HANDLE hCb)
|
|
1158 |
{
|
|
1159 |
return cmdBld_CfgIeStatisitics (hCmdBld, fCb, hCb);
|
|
1160 |
}
|
|
1161 |
|
|
1162 |
|
|
1163 |
TI_STATUS cmdBld_CfgTxPowerDbm (TI_HANDLE hCmdBld, TI_UINT8 uTxPowerDbm, void *fCb, TI_HANDLE hCb)
|
|
1164 |
{
|
|
1165 |
return cmdBld_CfgIeTxPowerDbm (hCmdBld, uTxPowerDbm, fCb, hCb);
|
|
1166 |
}
|
|
1167 |
|
|
1168 |
/*
|
|
1169 |
* ----------------------------------------------------------------------------
|
|
1170 |
* Function : cmdBld_CfgBet
|
|
1171 |
*
|
|
1172 |
* Input : enabled - 0 to disable BET, 0 to disable BET
|
|
1173 |
* MaximumConsecutiveET - Max number of consecutive beacons
|
|
1174 |
* that may be early terminated.
|
|
1175 |
* Output : TI_STATUS
|
|
1176 |
* Process : Configures Beacon Early Termination information element.
|
|
1177 |
* Note(s) : None
|
|
1178 |
* -----------------------------------------------------------------------------
|
|
1179 |
*/
|
|
1180 |
TI_STATUS cmdBld_CfgBet (TI_HANDLE hCmdBld, TI_UINT8 Enable, TI_UINT8 MaximumConsecutiveET, void *fCb, TI_HANDLE hCb)
|
|
1181 |
{
|
|
1182 |
DB_WLAN(hCmdBld).BetEnable = Enable;
|
|
1183 |
DB_WLAN(hCmdBld).MaximumConsecutiveET = MaximumConsecutiveET;
|
|
1184 |
|
|
1185 |
return cmdBld_CfgIeBet (hCmdBld, Enable, MaximumConsecutiveET, fCb, hCb);
|
|
1186 |
}
|
|
1187 |
|
|
1188 |
/****************************************************************************
|
|
1189 |
* cmdBld_CfgKeepAlive()
|
|
1190 |
****************************************************************************
|
|
1191 |
* DESCRIPTION: Set keep-alive paramters for a single index
|
|
1192 |
*
|
|
1193 |
* INPUTS: Paramters and CB
|
|
1194 |
*
|
|
1195 |
* OUTPUT: None
|
|
1196 |
*
|
|
1197 |
* RETURNS: TI_OK or TI_NOK
|
|
1198 |
****************************************************************************/
|
|
1199 |
TI_STATUS cmdBld_CfgKeepAlive (TI_HANDLE hCmdBld, TKeepAliveParams *pKeepAliveParams, void *fCb, TI_HANDLE hCb)
|
|
1200 |
{
|
|
1201 |
TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
|
|
1202 |
|
|
1203 |
TRACE4(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "CmdBld: Seeting keep-alive params, index=%d, interval=%d msec, trigType=%d, enaFlag=%d\n", pKeepAliveParams->index, pKeepAliveParams->interval, pKeepAliveParams->trigType, pKeepAliveParams->enaDisFlag);
|
|
1204 |
|
|
1205 |
os_memoryCopy (pCmdBld->hOs,
|
|
1206 |
(void *)&DB_KLV(hCmdBld).keepAliveParams[ pKeepAliveParams->index ],
|
|
1207 |
(void *)pKeepAliveParams,
|
|
1208 |
sizeof (TKeepAliveParams));
|
|
1209 |
|
|
1210 |
return cmdBld_CmdIeConfigureKeepAliveParams (hCmdBld,
|
|
1211 |
pKeepAliveParams->index,
|
|
1212 |
pKeepAliveParams->enaDisFlag,
|
|
1213 |
(TI_UINT8)pKeepAliveParams->trigType,
|
|
1214 |
pKeepAliveParams->interval,
|
|
1215 |
fCb,
|
|
1216 |
hCb);
|
|
1217 |
}
|
|
1218 |
|
|
1219 |
/****************************************************************************
|
|
1220 |
* cmdBld_CfgKeepAliveEnaDis()
|
|
1221 |
****************************************************************************
|
|
1222 |
* DESCRIPTION: Set global keep-alive enable / disable flag
|
|
1223 |
*
|
|
1224 |
* INPUTS: Paramters and CB
|
|
1225 |
*
|
|
1226 |
* OUTPUT: None
|
|
1227 |
*
|
|
1228 |
* RETURNS: TI_OK or TI_NOK
|
|
1229 |
****************************************************************************/
|
|
1230 |
TI_STATUS cmdBld_CfgKeepAliveEnaDis(TI_HANDLE hCmdBld, TI_UINT8 enaDisFlag, void *fCb, TI_HANDLE hCb)
|
|
1231 |
{
|
|
1232 |
TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
|
|
1233 |
|
|
1234 |
TRACE1(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "CmdBld: Seeting keep-alive Global ena / dis flag to %d\n", (TI_UINT32)enaDisFlag);
|
|
1235 |
|
|
1236 |
DB_KLV(hCmdBld).enaDisFlag = enaDisFlag;
|
|
1237 |
|
|
1238 |
return cmdBld_CmdIeConfigureKeepAliveEnaDis (hCmdBld, enaDisFlag, fCb, hCb);
|
|
1239 |
}
|
|
1240 |
|
|
1241 |
/**
|
|
1242 |
* \fn cmdBld_CfgSetFwHtCapabilities
|
|
1243 |
* \brief set the current AP HT Capabilities to the FW.
|
|
1244 |
*
|
|
1245 |
* \note
|
|
1246 |
* \return TI_OK on success or TI_NOK on failure
|
|
1247 |
* \sa
|
|
1248 |
*/
|
|
1249 |
TI_STATUS cmdBld_CfgSetFwHtCapabilities (TI_HANDLE hCmdBld,
|
|
1250 |
TI_UINT32 uHtCapabilites,
|
|
1251 |
TMacAddr tMacAddress,
|
|
1252 |
TI_UINT8 uAmpduMaxLeng,
|
|
1253 |
TI_UINT8 uAmpduMinSpac,
|
|
1254 |
void *fCb,
|
|
1255 |
TI_HANDLE hCb)
|
|
1256 |
{
|
|
1257 |
|
|
1258 |
DB_BSS(hCmdBld).bHtCap = TI_TRUE;
|
|
1259 |
DB_BSS(hCmdBld).uHtCapabilites = uHtCapabilites;
|
|
1260 |
MAC_COPY ((DB_BSS(hCmdBld).tMacAddress), tMacAddress);
|
|
1261 |
DB_BSS(hCmdBld).uAmpduMaxLeng = uAmpduMaxLeng;
|
|
1262 |
DB_BSS(hCmdBld).uAmpduMinSpac = uAmpduMinSpac;
|
|
1263 |
|
|
1264 |
return cmdBld_CfgIeSetFwHtCapabilities (hCmdBld,
|
|
1265 |
uHtCapabilites,
|
|
1266 |
tMacAddress,
|
|
1267 |
uAmpduMaxLeng,
|
|
1268 |
uAmpduMinSpac,
|
|
1269 |
fCb,
|
|
1270 |
hCb);
|
|
1271 |
}
|
|
1272 |
|
|
1273 |
/**
|
|
1274 |
* \fn cmdBld_CfgSetFwHtInformation
|
|
1275 |
* \brief set the current AP HT Information to the FW.
|
|
1276 |
*
|
|
1277 |
* \note
|
|
1278 |
* \return TI_OK on success or TI_NOK on failure
|
|
1279 |
* \sa
|
|
1280 |
*/
|
|
1281 |
TI_STATUS cmdBld_CfgSetFwHtInformation (TI_HANDLE hCmdBld,
|
|
1282 |
TI_UINT8 uRifsMode,
|
|
1283 |
TI_UINT8 uHtProtection,
|
|
1284 |
TI_UINT8 uGfProtection,
|
|
1285 |
TI_UINT8 uHtTxBurstLimit,
|
|
1286 |
TI_UINT8 uDualCtsProtection,
|
|
1287 |
void *fCb,
|
|
1288 |
TI_HANDLE hCb)
|
|
1289 |
{
|
|
1290 |
|
|
1291 |
DB_BSS(hCmdBld).bHtInf = TI_TRUE;
|
|
1292 |
DB_BSS(hCmdBld).uRifsMode = uRifsMode;
|
|
1293 |
DB_BSS(hCmdBld).uHtProtection = uHtProtection;
|
|
1294 |
DB_BSS(hCmdBld).uGfProtection = uGfProtection;
|
|
1295 |
DB_BSS(hCmdBld).uHtTxBurstLimit = uHtTxBurstLimit;
|
|
1296 |
DB_BSS(hCmdBld).uDualCtsProtection = uDualCtsProtection;
|
|
1297 |
|
|
1298 |
return cmdBld_CfgIeSetFwHtInformation (hCmdBld,
|
|
1299 |
uRifsMode,
|
|
1300 |
uHtProtection,
|
|
1301 |
uGfProtection,
|
|
1302 |
uHtTxBurstLimit,
|
|
1303 |
uDualCtsProtection,
|
|
1304 |
fCb,
|
|
1305 |
hCb);
|
|
1306 |
}
|
|
1307 |
|
|
1308 |
/**
|
|
1309 |
* \fn cmdBld_CfgSetBaInitiator
|
|
1310 |
* \brief configure BA session initiator\receiver parameters setting in the FW.
|
|
1311 |
*
|
|
1312 |
* \note
|
|
1313 |
* \return TI_OK on success or TI_NOK on failure
|
|
1314 |
* \sa
|
|
1315 |
*/
|
|
1316 |
TI_STATUS cmdBld_CfgSetBaSession (TI_HANDLE hCmdBld,
|
|
1317 |
InfoElement_e eBaType,
|
|
1318 |
TI_UINT8 uTid,
|
|
1319 |
TI_UINT8 uState,
|
|
1320 |
TMacAddr tRa,
|
|
1321 |
TI_UINT16 uWinSize,
|
|
1322 |
TI_UINT16 uInactivityTimeout,
|
|
1323 |
void *fCb,
|
|
1324 |
TI_HANDLE hCb)
|
|
1325 |
{
|
|
1326 |
if (ACX_BA_SESSION_INITIATOR_POLICY == eBaType)
|
|
1327 |
{
|
|
1328 |
DB_BSS(hCmdBld).bBaInitiator[uTid] = TI_TRUE;
|
|
1329 |
DB_BSS(hCmdBld).tBaSessionInitiatorPolicy[uTid].uTid = uTid;
|
|
1330 |
DB_BSS(hCmdBld).tBaSessionInitiatorPolicy[uTid].uPolicy = uState;
|
|
1331 |
MAC_COPY ((DB_BSS(hCmdBld).tBaSessionInitiatorPolicy[uTid].aMacAddress),tRa);
|
|
1332 |
DB_BSS(hCmdBld).tBaSessionInitiatorPolicy[uTid].uWinSize = uWinSize;
|
|
1333 |
DB_BSS(hCmdBld).tBaSessionInitiatorPolicy[uTid].uInactivityTimeout = uInactivityTimeout;
|
|
1334 |
}
|
|
1335 |
else
|
|
1336 |
{
|
|
1337 |
DB_BSS(hCmdBld).bBaResponder[uTid] = TI_TRUE;
|
|
1338 |
DB_BSS(hCmdBld).tBaSessionResponderPolicy[uTid].uTid = uTid;
|
|
1339 |
DB_BSS(hCmdBld).tBaSessionResponderPolicy[uTid].uPolicy = uState;
|
|
1340 |
MAC_COPY ((DB_BSS(hCmdBld).tBaSessionResponderPolicy[uTid].aMacAddress),tRa);
|
|
1341 |
DB_BSS(hCmdBld).tBaSessionResponderPolicy[uTid].uWinSize = uWinSize;
|
|
1342 |
DB_BSS(hCmdBld).tBaSessionResponderPolicy[uTid].uInactivityTimeout = uInactivityTimeout;
|
|
1343 |
}
|
|
1344 |
|
|
1345 |
return cmdBld_CfgIeSetBaSession (hCmdBld,
|
|
1346 |
eBaType,
|
|
1347 |
uTid,
|
|
1348 |
uState,
|
|
1349 |
tRa,
|
|
1350 |
uWinSize,
|
|
1351 |
uInactivityTimeout,
|
|
1352 |
fCb,
|
|
1353 |
hCb);
|
|
1354 |
}
|
|
1355 |
|
|
1356 |
|
|
1357 |
TI_STATUS cmdBld_CfgBurstMode (TI_HANDLE hCmdBld, TI_BOOL bEnabled, void *fCb, TI_HANDLE hCb)
|
|
1358 |
{
|
|
1359 |
DB_AC(hCmdBld).isBurstModeEnabled = bEnabled;
|
|
1360 |
return cmdBld_CfgIeBurstMode (hCmdBld, bEnabled, fCb, hCb);
|
|
1361 |
}
|
|
1362 |
|