1 /*
2 * TWDriverCtrl.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 /** \file TWDriver.c
36 * \brief TI WLAN Hardware Access Driver, Parameters control
37 *
38 * \see TWDriver.h
39 */
40
41 #define __FILE_ID__ FILE_ID_118
42 #include "TWDriver.h"
43 #include "tidef.h"
44 #include "report.h"
45 #include "txHwQueue_api.h"
46 #include "txXfer_api.h"
47 #include "txResult_api.h"
48 #include "eventMbox_api.h"
49 #include "TWDriver.h"
50 #include "TWDriverInternal.h"
51 #include "FwEvent_api.h"
52 #include "CmdBld.h"
53 #include "RxQueue_api.h"
54
55
TWD_SetParam(TI_HANDLE hTWD,TTwdParamInfo * pParamInfo)56 TI_STATUS TWD_SetParam (TI_HANDLE hTWD, TTwdParamInfo *pParamInfo)
57 {
58 TTwd *pTWD = (TTwd *)hTWD;
59 TWlanParams *pWlanParams = &DB_WLAN(pTWD->hCmdBld);
60
61 TRACE1(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_SetParam: paramType=0x%X\n", pParamInfo->paramType);
62
63 switch (pParamInfo->paramType)
64 {
65 case TWD_RTS_THRESHOLD_PARAM_ID:
66
67 if (pParamInfo->content.halCtrlRtsThreshold > TWD_RTS_THRESHOLD_MAX)
68 {
69 TRACE1(pTWD->hReport, REPORT_SEVERITY_ERROR, "TWD########TWD_RTS_THRESHOLD_PARAM: Value out of permitted range 0x%x\n", pParamInfo->content.halCtrlRtsThreshold);
70 return (PARAM_VALUE_NOT_VALID);
71 }
72
73 if (cmdBld_CfgRtsThreshold (pTWD->hCmdBld, pParamInfo->content.halCtrlRtsThreshold, NULL, NULL) == TI_OK)
74 {
75 TRACE1(pTWD->hReport, REPORT_SEVERITY_INFORMATION, "TWD########TWD_RTS_THRESHOLD_PARAM 0x%x\n", pParamInfo->content.halCtrlRtsThreshold);
76 pWlanParams->RtsThreshold = pParamInfo->content.halCtrlRtsThreshold;
77 }
78 break;
79
80 case TWD_CTS_TO_SELF_PARAM_ID:
81 return cmdBld_CfgCtsProtection (pTWD->hCmdBld, pParamInfo->content.halCtrlCtsToSelf, NULL, NULL);
82
83 case TWD_RX_TIME_OUT_PARAM_ID:
84 if (cmdBld_CfgServicePeriodTimeout (pTWD->hCmdBld, &pParamInfo->content.halCtrlRxTimeOut, NULL, NULL) == TI_OK)
85 {
86 pWlanParams->rxTimeOut.psPoll = pParamInfo->content.halCtrlRxTimeOut.psPoll;
87 pWlanParams->rxTimeOut.UPSD = pParamInfo->content.halCtrlRxTimeOut.UPSD;
88 }
89 break;
90
91 case TWD_FRAG_THRESHOLD_PARAM_ID:
92 if (pParamInfo->content.halCtrlFragThreshold < TWD_FRAG_THRESHOLD_MIN ||
93 pParamInfo->content.halCtrlFragThreshold > TWD_FRAG_THRESHOLD_MAX)
94 return PARAM_VALUE_NOT_VALID;
95
96 cmdBld_CfgFragmentThreshold (pTWD->hCmdBld, pParamInfo->content.halCtrlFragThreshold, NULL, NULL);
97 break;
98
99 case TWD_MAX_RX_MSDU_LIFE_TIME_PARAM_ID:
100 cmdBld_CfgRxMsduLifeTime (pTWD->hCmdBld, pParamInfo->content.halCtrlMaxRxMsduLifetime, NULL, NULL);
101 break;
102
103 case TWD_ACX_STATISTICS_PARAM_ID:
104 if (cmdBld_CfgStatisitics (pTWD->hCmdBld, NULL, NULL) != TI_OK)
105 return TI_NOK;
106 break;
107
108 case TWD_LISTEN_INTERVAL_PARAM_ID:
109 if (pParamInfo->content.halCtrlListenInterval < TWD_LISTEN_INTERVAL_MIN ||
110 pParamInfo->content.halCtrlListenInterval > TWD_LISTEN_INTERVAL_MAX)
111 return PARAM_VALUE_NOT_VALID;
112
113 pWlanParams->ListenInterval = (TI_UINT8)pParamInfo->content.halCtrlListenInterval;
114 break;
115
116 case TWD_AID_PARAM_ID:
117 pWlanParams->Aid = pParamInfo->content.halCtrlAid;
118
119 /* Configure the ACXAID info element*/
120 if (cmdBld_CfgAid (pTWD->hCmdBld, pParamInfo->content.halCtrlAid, NULL, NULL) != TI_OK)
121 return TI_NOK;
122 break;
123
124 case TWD_RSN_HW_ENC_DEC_ENABLE_PARAM_ID:
125 TRACE1(pTWD->hReport, REPORT_SEVERITY_INFORMATION, "TWD########HW_ENC_DEC_ENABLE %d\n", pParamInfo->content.rsnHwEncDecrEnable);
126
127 /* Set the Encryption/Decryption on the HW*/
128 if (cmdBld_CfgHwEncDecEnable (pTWD->hCmdBld, pParamInfo->content.rsnHwEncDecrEnable, NULL, NULL) != TI_OK)
129 return (TI_NOK);
130 break;
131
132 case TWD_RSN_KEY_ADD_PARAM_ID:
133 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION, "TWD########KEY_ADD\n");
134
135 if (cmdBld_CmdAddKey (pTWD->hCmdBld,
136 (TSecurityKeys *) pParamInfo->content.configureCmdCBParams.pCb,
137 TI_FALSE,
138 pParamInfo->content.configureCmdCBParams.fCb,
139 pParamInfo->content.configureCmdCBParams.hCb) != TI_OK)
140 return TI_NOK;
141 break;
142
143 case TWD_RSN_KEY_REMOVE_PARAM_ID:
144 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION, "TWD########KEY_REMOVE\n");
145
146 if (cmdBld_CmdRemoveKey (pTWD->hCmdBld,
147 (TSecurityKeys *) pParamInfo->content.configureCmdCBParams.pCb,
148 pParamInfo->content.configureCmdCBParams.fCb,
149 pParamInfo->content.configureCmdCBParams.hCb) != TI_OK)
150 return TI_NOK;
151 break;
152
153 case TWD_RSN_DEFAULT_KEY_ID_PARAM_ID:
154 if (*((TI_UINT8 *)pParamInfo->content.configureCmdCBParams.pCb) > MAX_DEFAULT_KEY_ID)
155 return PARAM_VALUE_NOT_VALID;
156
157 TRACE1(pTWD->hReport, REPORT_SEVERITY_INFORMATION, "TWD########DEFAULT_KEY_ID %d\n", (TI_UINT8)pParamInfo->content.rsnDefaultKeyID);
158
159 if (cmdBld_CmdSetWepDefaultKeyId (pTWD->hCmdBld,
160 *((TI_UINT8 *)pParamInfo->content.interogateCmdCBParams.pCb),
161 pParamInfo->content.interogateCmdCBParams.fCb,
162 pParamInfo->content.interogateCmdCBParams.hCb) != TI_OK)
163 return TI_NOK;
164
165 break;
166
167 case TWD_RSN_SECURITY_MODE_PARAM_ID:
168 TRACE1(pTWD->hReport, REPORT_SEVERITY_INFORMATION, "TWD########SECURITY_MODE_SET %d\n", pParamInfo->content.rsnEncryptionStatus);
169 if (cmdBld_CfgSecureMode (pTWD->hCmdBld, (ECipherSuite)pParamInfo->content.rsnEncryptionStatus, NULL, NULL) != TI_OK)
170 return TI_NOK;
171 break;
172
173 #ifdef XCC_MODULE_INCLUDED
174 case TWD_RSN_XCC_SW_ENC_ENABLE_PARAM_ID:
175
176 TRACE1(pTWD->hReport, REPORT_SEVERITY_INFORMATION, "TWD: XCC_SW_ENC_ENABLE %d\n", pParamInfo->content.rsnXCCSwEncFlag);
177
178 /* when SW encryption is ON, HW encryption should be turned OFF and vice versa */
179
180 TRACE1(pTWD->hReport, REPORT_SEVERITY_INFORMATION, "TWD: Set HwEncDecrEnable to %d\n", !pParamInfo->content.rsnXCCSwEncFlag);
181
182 /* Set the Encryption/Decryption on the HW*/
183 if (cmdBld_CfgHwEncDecEnable (pTWD->hCmdBld, !pParamInfo->content.rsnXCCSwEncFlag, NULL, NULL) != TI_OK)
184 return TI_NOK;
185 break;
186 /* not supported - CKIP*/
187 case TWD_RSN_XCC_MIC_FIELD_ENABLE_PARAM_ID:
188 break;
189 #endif /* XCC_MODULE_INCLUDED*/
190
191 case TWD_TX_POWER_PARAM_ID:
192
193 TRACE1(pTWD->hReport, REPORT_SEVERITY_INFORMATION, "TWD_TX_POWER_PARAM_ID %d\n", pParamInfo->content.halCtrlTxPowerDbm);
194
195 pWlanParams->TxPowerDbm = pParamInfo->content.halCtrlTxPowerDbm;
196
197 /* Configure the wlan hardware */
198 if (cmdBld_CfgTxPowerDbm (pTWD->hCmdBld, pWlanParams->TxPowerDbm, NULL, NULL) != TI_OK)
199 return TI_NOK;
200 break;
201
202 case TWD_SG_ENABLE_PARAM_ID:
203 return cmdBld_CfgSgEnable (pTWD->hCmdBld,
204 (ESoftGeminiEnableModes)pParamInfo->content.SoftGeminiEnable,
205 NULL,
206 NULL);
207
208 case TWD_SG_CONFIG_PARAM_ID:
209 return cmdBld_CfgSg (pTWD->hCmdBld, &pParamInfo->content.SoftGeminiParam, NULL, NULL);
210
211 case TWD_FM_COEX_PARAM_ID:
212 return cmdBld_CfgFmCoex (pTWD->hCmdBld, &pParamInfo->content.tFmCoexParams, NULL, NULL);
213
214 /*
215 * TX Parameters
216 */
217
218 case TWD_TX_RATE_CLASS_PARAM_ID:
219 return cmdBld_CfgTxRatePolicy (pTWD->hCmdBld, pParamInfo->content.pTxRatePlicy, NULL, NULL);
220
221 case TWD_QUEUES_PARAM_ID:
222 return cmdBld_CfgTid (pTWD->hCmdBld, pParamInfo->content.pQueueTrafficParams, NULL, NULL);
223
224 case TWD_CLK_RUN_ENABLE_PARAM_ID:
225 TRACE1(pTWD->hReport, REPORT_SEVERITY_INFORMATION, "TWD_SetParam: CLK_RUN_ENABLE %d\n", pParamInfo->content.halCtrlClkRunEnable);
226
227 /* Set the Encryption/Decryption on the HW*/
228 if (cmdBld_CfgClkRun (pTWD->hCmdBld, pParamInfo->content.halCtrlClkRunEnable, NULL, NULL) != TI_OK)
229 return TI_NOK;
230 break;
231
232 case TWD_COEX_ACTIVITY_PARAM_ID:
233 cmdBld_CfgCoexActivity (pTWD->hCmdBld, &pParamInfo->content.tTwdParamsCoexActivity, NULL, NULL);
234 break;
235
236 default:
237 TRACE1(pTWD->hReport, REPORT_SEVERITY_ERROR, "TWD_SetParam - ERROR - Param is not supported, 0x%x\n", pParamInfo->paramType);
238 return PARAM_NOT_SUPPORTED;
239 }
240
241 return TI_OK;
242 }
243
TWD_GetParam(TI_HANDLE hTWD,TTwdParamInfo * pParamInfo)244 TI_STATUS TWD_GetParam (TI_HANDLE hTWD, TTwdParamInfo *pParamInfo)
245 {
246 TTwd *pTWD = (TTwd *)hTWD;
247
248 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_GetParam: called\n");
249
250 return cmdBld_GetParam (pTWD->hCmdBld, pParamInfo);
251 }
252
TWD_CfgRx(TI_HANDLE hTWD,TI_UINT32 uRxConfigOption,TI_UINT32 uRxFilterOption)253 TI_STATUS TWD_CfgRx (TI_HANDLE hTWD, TI_UINT32 uRxConfigOption, TI_UINT32 uRxFilterOption)
254 {
255 TTwd *pTWD = (TTwd *)hTWD;
256
257 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgRx: called\n");
258
259 return cmdBld_CfgRx (pTWD->hCmdBld, uRxConfigOption, uRxFilterOption, NULL, NULL);
260 }
261
TWD_CfgArpIpAddrTable(TI_HANDLE hTWD,TIpAddr tIpAddr,TI_BOOL bEnabled,EIpVer eIpVer)262 TI_STATUS TWD_CfgArpIpAddrTable (TI_HANDLE hTWD, TIpAddr tIpAddr, TI_BOOL bEnabled, EIpVer eIpVer)
263 {
264 TTwd *pTWD = (TTwd *)hTWD;
265
266 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgArpIpAddrTable: called\n");
267
268 return cmdBld_CfgArpIpAddrTable (pTWD->hCmdBld, tIpAddr, bEnabled, eIpVer, NULL, NULL);
269 }
270
271 /** @ingroup Misc
272 * \brief Configure ARP IP Filter
273 *
274 * \param hTWD - TWD module object handle
275 * \param bEnabled - Indicates if ARP filtering is Enabled (1) or Disabled (0)
276 * \return TI_OK on success or TI_NOK on failure
277 *
278 * \par Description
279 *
280 * \sa
281 */
TWD_CfgArpIpFilter(TI_HANDLE hTWD,TI_BOOL bEnabled)282 TI_STATUS TWD_CfgArpIpFilter (TI_HANDLE hTWD, TI_BOOL bEnabled)
283 {
284 TTwd *pTWD = (TTwd *)hTWD;
285
286 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgArpIpFilter: called\n");
287
288 return cmdBld_CfgArpIpFilter (pTWD->hCmdBld, bEnabled, NULL, NULL);
289 }
290
TWD_CmdSetSplitScanTimeOut(TI_HANDLE hTWD,TI_UINT32 uTimeOut)291 TI_STATUS TWD_CmdSetSplitScanTimeOut ( TI_HANDLE hTWD, TI_UINT32 uTimeOut )
292 {
293 TTwd *pTWD = (TTwd *)hTWD;
294
295 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CmdSetSplitScanTimeOut: called\n");
296
297 return cmdBld_CmdSetSplitScanTimeOut (pTWD->hCmdBld, uTimeOut);
298 }
299
TWD_CmdJoinBss(TI_HANDLE hTWD,TJoinBss * pJoinBssParams)300 TI_STATUS TWD_CmdJoinBss (TI_HANDLE hTWD, TJoinBss *pJoinBssParams)
301 {
302 TTwd *pTWD = (TTwd *)hTWD;
303
304 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CmdJoinBss: called\n");
305
306 return cmdBld_CmdJoinBss (pTWD->hCmdBld, pJoinBssParams, NULL, NULL);
307 }
308
TWD_CfgKeepAlive(TI_HANDLE hTWD,TKeepAliveParams * pKeepAliveParams)309 TI_STATUS TWD_CfgKeepAlive (TI_HANDLE hTWD, TKeepAliveParams *pKeepAliveParams)
310 {
311 TTwd *pTWD = (TTwd *)hTWD;
312
313 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgKeepAlive: called\n");
314
315 return cmdBld_CfgKeepAlive (pTWD->hCmdBld, pKeepAliveParams, NULL, NULL);
316 }
317
TWD_CfgKeepAliveEnaDis(TI_HANDLE hTWD,TI_UINT8 enaDisFlag)318 TI_STATUS TWD_CfgKeepAliveEnaDis(TI_HANDLE hTWD, TI_UINT8 enaDisFlag)
319 {
320 TTwd *pTWD = (TTwd *)hTWD;
321
322 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgKeepAliveEnaDis: called\n");
323
324 return cmdBld_CfgKeepAliveEnaDis (pTWD->hCmdBld, enaDisFlag, NULL, NULL);
325 }
326
TWD_CmdTemplate(TI_HANDLE hTWD,TSetTemplate * pTemplateParams,void * fCb,TI_HANDLE hCb)327 TI_STATUS TWD_CmdTemplate (TI_HANDLE hTWD, TSetTemplate *pTemplateParams, void *fCb, TI_HANDLE hCb)
328 {
329 TTwd *pTWD = (TTwd *)hTWD;
330
331 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CmdTemplate: called\n");
332
333 return cmdBld_CmdTemplate (pTWD->hCmdBld, pTemplateParams, fCb, hCb);
334 }
335
TWD_CfgSlotTime(TI_HANDLE hTWD,ESlotTime eSlotTimeVal)336 TI_STATUS TWD_CfgSlotTime (TI_HANDLE hTWD, ESlotTime eSlotTimeVal)
337 {
338 TTwd *pTWD = (TTwd *)hTWD;
339
340 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgSlotTime: called\n");
341
342 return cmdBld_CfgSlotTime (pTWD->hCmdBld, eSlotTimeVal, NULL, NULL);
343 }
344
TWD_CfgPreamble(TI_HANDLE hTWD,EPreamble ePreamble)345 TI_STATUS TWD_CfgPreamble (TI_HANDLE hTWD, EPreamble ePreamble)
346 {
347 TTwd *pTWD = (TTwd *)hTWD;
348
349 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgPreamble: called\n");
350
351 return cmdBld_CfgPreamble (pTWD->hCmdBld, (Preamble_e)ePreamble, NULL, NULL);
352 }
353
TWD_CfgPacketDetectionThreshold(TI_HANDLE hTWD,TI_UINT32 threshold)354 TI_STATUS TWD_CfgPacketDetectionThreshold (TI_HANDLE hTWD, TI_UINT32 threshold)
355 {
356 TTwd *pTWD = (TTwd *)hTWD;
357
358 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgPacketDetectionThreshold: called\n");
359
360 return cmdBld_CfgPacketDetectionThreshold (pTWD->hCmdBld, threshold, NULL, NULL);
361 }
362
TWD_CmdDisableTx(TI_HANDLE hTWD)363 TI_STATUS TWD_CmdDisableTx (TI_HANDLE hTWD)
364 {
365 TTwd *pTWD = (TTwd *)hTWD;
366
367 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CmdDisableTx: called\n");
368
369 return cmdBld_CmdDisableTx (pTWD->hCmdBld, NULL, NULL);
370 }
371
TWD_CmdEnableTx(TI_HANDLE hTWD,TI_UINT8 channel)372 TI_STATUS TWD_CmdEnableTx (TI_HANDLE hTWD, TI_UINT8 channel)
373 {
374 TTwd *pTWD = (TTwd *)hTWD;
375
376 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CmdEnableTx: called\n");
377
378 return cmdBld_CmdEnableTx (pTWD->hCmdBld, channel, NULL, NULL);
379 }
380
TWD_CmdSetStaState(TI_HANDLE hTWD,TI_UINT8 staState,void * fCb,TI_HANDLE hCb)381 TI_STATUS TWD_CmdSetStaState (TI_HANDLE hTWD, TI_UINT8 staState, void *fCb, TI_HANDLE hCb)
382 {
383 TTwd *pTWD = (TTwd *)hTWD;
384
385 TRACE1(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_SetStaState: %d\n", staState);
386
387 return cmdBld_CmdSetStaState (pTWD->hCmdBld, staState, fCb, hCb);
388 }
389
TWD_ItrRoammingStatisitics(TI_HANDLE hTWD,void * fCb,TI_HANDLE hCb,void * pCb)390 TI_STATUS TWD_ItrRoammingStatisitics (TI_HANDLE hTWD, void *fCb, TI_HANDLE hCb, void * pCb)
391 {
392 TTwd *pTWD = (TTwd *)hTWD;
393
394 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_ItrRoammingStatisitics: called\n");
395
396 return cmdBld_ItrRoamimgStatisitics (pTWD->hCmdBld, fCb, hCb, pCb);
397 }
398
399 /** @ingroup UnKnown
400 * \brief Interrogate Error Count
401 *
402 * \param hTWD - TWD module object handle
403 * \param fCb - Pointer to Command CB Function
404 * \param hCb - Handle to Command CB Function Obj Parameters
405 * \param pCb - Pointer to read parameters
406 * \return TI_OK on success or TI_NOK on failure
407 *
408 * \par Description
409 * Interrogate ACX Error counter
410 *
411 * \sa
412 */
TWD_ItrErrorCnt(TI_HANDLE hTWD,void * fCb,TI_HANDLE hCb,void * pCb)413 TI_STATUS TWD_ItrErrorCnt (TI_HANDLE hTWD, void *fCb, TI_HANDLE hCb, void *pCb)
414 {
415 TTwd *pTWD = (TTwd *)hTWD;
416
417 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_ItrErrorCnt: called\n");
418
419 return cmdBld_ItrErrorCnt (pTWD->hCmdBld, fCb, hCb, pCb);
420 }
421
TWD_CmdNoiseHistogram(TI_HANDLE hTWD,TNoiseHistogram * pNoiseHistParams)422 TI_STATUS TWD_CmdNoiseHistogram (TI_HANDLE hTWD, TNoiseHistogram *pNoiseHistParams)
423 {
424 TTwd *pTWD = (TTwd *)hTWD;
425
426 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CmdNoiseHistogram: called\n");
427
428 return cmdBld_CmdNoiseHistogram (pTWD->hCmdBld, pNoiseHistParams, NULL, NULL);
429 }
430
TWD_CfgBeaconFilterOpt(TI_HANDLE hTWD,TI_UINT8 uBeaconFilteringStatus,TI_UINT8 uNumOfBeaconsToBuffer)431 TI_STATUS TWD_CfgBeaconFilterOpt (TI_HANDLE hTWD, TI_UINT8 uBeaconFilteringStatus, TI_UINT8 uNumOfBeaconsToBuffer)
432 {
433 TTwd *pTWD = (TTwd *)hTWD;
434
435 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgBeaconFilterOpt: called\n");
436
437 return cmdBld_CfgBeaconFilterOpt (pTWD->hCmdBld, uBeaconFilteringStatus, uNumOfBeaconsToBuffer, NULL, NULL);
438 }
439
TWD_SetRateMngDebug(TI_HANDLE hTWD,RateMangeParams_t * pRateMngParams)440 TI_STATUS TWD_SetRateMngDebug(TI_HANDLE hTWD, RateMangeParams_t *pRateMngParams)
441 {
442 TTwd *pTWD = (TTwd *)hTWD;
443
444 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_SetRateMngDebug: called\n");
445
446 return cmdBld_CfgRateMngDbg (pTWD->hCmdBld, pRateMngParams, NULL, NULL);
447 }
448
TWD_CfgBeaconFilterTable(TI_HANDLE hTWD,TI_UINT8 uNumOfIe,TI_UINT8 * pIeTable,TI_UINT8 uIeTableSize)449 TI_STATUS TWD_CfgBeaconFilterTable (TI_HANDLE hTWD, TI_UINT8 uNumOfIe, TI_UINT8 *pIeTable, TI_UINT8 uIeTableSize)
450 {
451 TTwd *pTWD = (TTwd *)hTWD;
452
453 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgBeaconFilterTable: called\n");
454
455 return cmdBld_CfgBeaconFilterTable (pTWD->hCmdBld, uNumOfIe, pIeTable, uIeTableSize, NULL, NULL);
456 }
457
TWD_CfgWakeUpCondition(TI_HANDLE hTWD,TPowerMgmtConfig * pPowerMgmtConfig)458 TI_STATUS TWD_CfgWakeUpCondition (TI_HANDLE hTWD, TPowerMgmtConfig *pPowerMgmtConfig)
459 {
460 TTwd *pTWD = (TTwd *)hTWD;
461
462 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgWakeUpCondition: called\n");
463
464 return cmdBld_CfgWakeUpCondition (pTWD->hCmdBld, pPowerMgmtConfig, NULL, NULL);
465 }
466
TWD_CfgBcnBrcOptions(TI_HANDLE hTWD,TPowerMgmtConfig * pPowerMgmtConfig)467 TI_STATUS TWD_CfgBcnBrcOptions (TI_HANDLE hTWD, TPowerMgmtConfig *pPowerMgmtConfig)
468 {
469 TTwd *pTWD = (TTwd *)hTWD;
470
471 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgBcnBrcOptions: called\n");
472
473 return cmdBld_CfgBcnBrcOptions (pTWD->hCmdBld, pPowerMgmtConfig, NULL, NULL);
474 }
475
TWD_GetFWInfo(TI_HANDLE hTWD)476 TFwInfo * TWD_GetFWInfo (TI_HANDLE hTWD)
477 {
478 TTwd *pTWD = (TTwd *)hTWD;
479
480 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_GetFWInfo: called\n");
481
482 return cmdBld_GetFWInfo (pTWD->hCmdBld);
483 }
484
TWD_CmdSwitchChannel(TI_HANDLE hTWD,TSwitchChannelParams * pSwitchChannelCmd)485 TI_STATUS TWD_CmdSwitchChannel (TI_HANDLE hTWD, TSwitchChannelParams *pSwitchChannelCmd)
486 {
487 TTwd *pTWD = (TTwd *)hTWD;
488
489 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CmdSwitchChannel: called\n");
490
491 return cmdBld_CmdSwitchChannel (pTWD->hCmdBld, pSwitchChannelCmd, NULL, NULL);
492 }
493
TWD_CmdSwitchChannelCancel(TI_HANDLE hTWD,TI_UINT8 channel)494 TI_STATUS TWD_CmdSwitchChannelCancel (TI_HANDLE hTWD, TI_UINT8 channel)
495 {
496 TTwd *pTWD = (TTwd *)hTWD;
497
498 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CmdSwitchChannelCancel: called\n");
499
500 return cmdBld_CmdSwitchChannelCancel (pTWD->hCmdBld, channel, NULL, NULL);
501 }
502
TWD_CfgMaxTxRetry(TI_HANDLE hTWD,TRroamingTriggerParams * pRoamingTriggerCmd)503 TI_STATUS TWD_CfgMaxTxRetry (TI_HANDLE hTWD, TRroamingTriggerParams *pRoamingTriggerCmd)
504 {
505 TTwd *pTWD = (TTwd *)hTWD;
506
507 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgMaxTxRetry: called\n");
508
509 return cmdBld_CfgMaxTxRetry (pTWD->hCmdBld, pRoamingTriggerCmd, NULL, NULL);
510 }
511
TWD_CfgConnMonitParams(TI_HANDLE hTWD,TRroamingTriggerParams * pRoamingTriggerCmd)512 TI_STATUS TWD_CfgConnMonitParams (TI_HANDLE hTWD, TRroamingTriggerParams *pRoamingTriggerCmd)
513 {
514 TTwd *pTWD = (TTwd *)hTWD;
515
516 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgConnMonitParams: called\n");
517
518 return cmdBld_CfgConnMonitParams (pTWD->hCmdBld, pRoamingTriggerCmd, NULL, NULL);
519 }
520
TWD_ItrRSSI(TI_HANDLE hTWD,void * fCb,TI_HANDLE hCb,void * pCb)521 TI_STATUS TWD_ItrRSSI (TI_HANDLE hTWD, void *fCb, TI_HANDLE hCb, void *pCb)
522 {
523 TTwd *pTWD = (TTwd *)hTWD;
524
525 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_ItrRSSI: called\n");
526
527 return cmdBld_ItrRSSI (pTWD->hCmdBld, fCb, hCb, pCb);
528 }
529
TWD_CmdFwDisconnect(TI_HANDLE hTWD,DisconnectType_e uDisconType,TI_UINT16 uDisconReason)530 TI_STATUS TWD_CmdFwDisconnect (TI_HANDLE hTWD, DisconnectType_e uDisconType, TI_UINT16 uDisconReason)
531 {
532 TTwd *pTWD = (TTwd *)hTWD;
533
534 return cmdBld_CmdFwDisconnect (pTWD->hCmdBld,
535 RX_CONFIG_OPTION_MY_DST_MY_BSS,
536 RX_FILTER_OPTION_FILTER_ALL,
537 uDisconType,
538 uDisconReason,
539 NULL,
540 NULL);
541 }
542
TWD_CmdMeasurement(TI_HANDLE hTWD,TMeasurementParams * pMeasurementParams,void * fCommandResponseCb,TI_HANDLE hCb)543 TI_STATUS TWD_CmdMeasurement (TI_HANDLE hTWD,
544 TMeasurementParams *pMeasurementParams,
545 void *fCommandResponseCb,
546 TI_HANDLE hCb)
547 {
548 TTwd *pTWD = (TTwd *)hTWD;
549
550 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CmdMeasurement: called\n");
551
552 return cmdBld_CmdMeasurement (pTWD->hCmdBld, pMeasurementParams, fCommandResponseCb, hCb);
553 }
554
TWD_CmdMeasurementStop(TI_HANDLE hTWD,void * fCb,TI_HANDLE hCb)555 TI_STATUS TWD_CmdMeasurementStop (TI_HANDLE hTWD, void* fCb, TI_HANDLE hCb)
556 {
557 TTwd *pTWD = (TTwd *)hTWD;
558
559 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CmdMeasurementStop: called\n");
560
561 return cmdBld_CmdMeasurementStop (pTWD->hCmdBld, fCb, hCb);
562 }
563
TWD_CmdApDiscovery(TI_HANDLE hTWD,TApDiscoveryParams * pApDiscoveryParams)564 TI_STATUS TWD_CmdApDiscovery (TI_HANDLE hTWD, TApDiscoveryParams *pApDiscoveryParams)
565 {
566 TTwd *pTWD = (TTwd *)hTWD;
567
568 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CmdApDiscovery: called\n");
569
570 return cmdBld_CmdApDiscovery (pTWD->hCmdBld, pApDiscoveryParams, NULL, NULL);
571 }
572
TWD_CmdApDiscoveryStop(TI_HANDLE hTWD)573 TI_STATUS TWD_CmdApDiscoveryStop (TI_HANDLE hTWD)
574 {
575 TTwd *pTWD = (TTwd *)hTWD;
576
577 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CmdApDiscoveryStop: called\n");
578
579 return cmdBld_CmdApDiscoveryStop (pTWD->hCmdBld, NULL, NULL);
580 }
581
TWD_CfgGroupAddressTable(TI_HANDLE hTWD,TI_UINT8 uNumGroupAddrs,TMacAddr * pGroupAddr,TI_BOOL bEnabled)582 TI_STATUS TWD_CfgGroupAddressTable (TI_HANDLE hTWD,
583 TI_UINT8 uNumGroupAddrs,
584 TMacAddr *pGroupAddr,
585 TI_BOOL bEnabled)
586 {
587 TTwd *pTWD = (TTwd *)hTWD;
588
589 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgGroupAddressTable: called\n");
590
591 return cmdBld_CfgGroupAddressTable (pTWD->hCmdBld, uNumGroupAddrs, pGroupAddr, bEnabled, NULL, NULL);
592 }
593
TWD_GetGroupAddressTable(TI_HANDLE hTWD,TI_UINT8 * pEnabled,TI_UINT8 * pNumGroupAddrs,TMacAddr * pGroupAddr)594 TI_STATUS TWD_GetGroupAddressTable (TI_HANDLE hTWD, TI_UINT8* pEnabled, TI_UINT8* pNumGroupAddrs, TMacAddr *pGroupAddr)
595 {
596 TTwd *pTWD = (TTwd *)hTWD;
597
598 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_GetGroupAddressTable: called\n");
599
600 return cmdBld_GetGroupAddressTable (pTWD->hCmdBld, pEnabled, pNumGroupAddrs, pGroupAddr);
601 }
602
TWD_SetRadioBand(TI_HANDLE hTWD,ERadioBand eRadioBand)603 TI_STATUS TWD_SetRadioBand (TI_HANDLE hTWD, ERadioBand eRadioBand)
604 {
605 TTwd *pTWD = (TTwd *)hTWD;
606
607 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_SetRadioBand: called\n");
608
609 return cmdBld_SetRadioBand (pTWD->hCmdBld, eRadioBand);
610 }
611
TWD_CfgSleepAuth(TI_HANDLE hTWD,EPowerPolicy eMinPowerPolicy)612 TI_STATUS TWD_CfgSleepAuth (TI_HANDLE hTWD, EPowerPolicy eMinPowerPolicy)
613 {
614 TTwd *pTWD = (TTwd *)hTWD;
615
616 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgSleepAuth: called\n");
617
618 /* Configure the new power policy to the FW */
619 cmdBld_CfgSleepAuth (pTWD->hCmdBld, eMinPowerPolicy, NULL, NULL);
620
621 return TI_OK;
622 }
623
TWD_CfgBurstMode(TI_HANDLE hTWD,TI_BOOL bEnabled)624 TI_STATUS TWD_CfgBurstMode (TI_HANDLE hTWD, TI_BOOL bEnabled)
625 {
626 TTwd *pTWD = (TTwd *)hTWD;
627
628 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "cmdBld_CfgBurstMode: called\n");
629
630 /* Configure the burst mode to the FW */
631 cmdBld_CfgBurstMode (pTWD->hCmdBld, bEnabled, NULL, NULL);
632
633 return TI_OK;
634 }
635
636
637
TWD_CmdHealthCheck(TI_HANDLE hTWD)638 TI_STATUS TWD_CmdHealthCheck (TI_HANDLE hTWD)
639 {
640 TTwd *pTWD = (TTwd *)hTWD;
641
642 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CmdHealthCheck: called\n");
643
644 return cmdBld_CmdHealthCheck (pTWD->hCmdBld, NULL, NULL);
645 }
646
TWD_CfgMacClock(TI_HANDLE hTWD,TI_UINT32 uMacClock)647 TI_STATUS TWD_CfgMacClock (TI_HANDLE hTWD, TI_UINT32 uMacClock)
648 {
649 TTwd *pTWD = (TTwd *)hTWD;
650
651 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgMacClock: called\n");
652
653 return cmdBld_CfgMacClock (pTWD->hCmdBld, uMacClock, NULL, NULL);
654 }
655
TWD_CfgArmClock(TI_HANDLE hTWD,TI_UINT32 uArmClock)656 TI_STATUS TWD_CfgArmClock (TI_HANDLE hTWD, TI_UINT32 uArmClock)
657 {
658 TTwd *pTWD = (TTwd *)hTWD;
659
660 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgArmClock: called\n");
661
662 return cmdBld_CfgArmClock (pTWD->hCmdBld, uArmClock, NULL, NULL);
663 }
664
TWD_ItrMemoryMap(TI_HANDLE hTWD,MemoryMap_t * pMap,void * fCb,TI_HANDLE hCb)665 TI_STATUS TWD_ItrMemoryMap (TI_HANDLE hTWD, MemoryMap_t *pMap, void *fCb, TI_HANDLE hCb)
666 {
667 TTwd *pTWD = (TTwd *)hTWD;
668
669 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_ItrMemoryMap: called\n");
670
671 return cmdBld_ItrMemoryMap (pTWD->hCmdBld, pMap, fCb, hCb);
672 }
673
TWD_ItrStatistics(TI_HANDLE hTWD,void * fCb,TI_HANDLE hCb,void * pCb)674 TI_STATUS TWD_ItrStatistics (TI_HANDLE hTWD, void *fCb, TI_HANDLE hCb, void *pCb)
675 {
676 TTwd *pTWD = (TTwd *)hTWD;
677
678 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_ItrStatistics: called\n");
679
680 return cmdBld_ItrStatistics (pTWD->hCmdBld, fCb, hCb, pCb);
681 }
682
TWD_ItrDataFilterStatistics(TI_HANDLE hTWD,void * fCb,TI_HANDLE hCb,void * pCb)683 TI_STATUS TWD_ItrDataFilterStatistics (TI_HANDLE hTWD, void *fCb, TI_HANDLE hCb, void *pCb)
684 {
685 TTwd *pTWD = (TTwd *)hTWD;
686
687 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_ItrDataFilterStatistics: called\n");
688
689 return cmdBld_ItrDataFilterStatistics (pTWD->hCmdBld, fCb, hCb, pCb);
690 }
691
TWD_CfgEnableRxDataFilter(TI_HANDLE hTWD,TI_BOOL bEnabled,filter_e eDefaultAction)692 TI_STATUS TWD_CfgEnableRxDataFilter (TI_HANDLE hTWD, TI_BOOL bEnabled, filter_e eDefaultAction)
693 {
694 TTwd *pTWD = (TTwd *)hTWD;
695
696 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgEnableRxDataFilter: called\n");
697
698 return cmdBld_CfgEnableRxDataFilter (pTWD->hCmdBld, bEnabled, eDefaultAction, NULL, NULL);
699 }
700
TWD_CfgRxDataFilter(TI_HANDLE hTWD,TI_UINT8 index,TI_UINT8 command,filter_e eAction,TI_UINT8 uNumFieldPatterns,TI_UINT8 uLenFieldPatterns,TI_UINT8 * pFieldPatterns)701 TI_STATUS TWD_CfgRxDataFilter (TI_HANDLE hTWD,
702 TI_UINT8 index,
703 TI_UINT8 command,
704 filter_e eAction,
705 TI_UINT8 uNumFieldPatterns,
706 TI_UINT8 uLenFieldPatterns,
707 TI_UINT8 *pFieldPatterns)
708 {
709 TTwd *pTWD = (TTwd *)hTWD;
710
711 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgRxDataFilter: called\n");
712
713 return cmdBld_CfgRxDataFilter (pTWD->hCmdBld,
714 index,
715 command,
716 eAction,
717 uNumFieldPatterns,
718 uLenFieldPatterns,
719 pFieldPatterns,
720 NULL,
721 NULL);
722 }
723
TWD_CfgRssiSnrTrigger(TI_HANDLE hTWD,RssiSnrTriggerCfg_t * pRssiSnrTrigger)724 TI_STATUS TWD_CfgRssiSnrTrigger (TI_HANDLE hTWD, RssiSnrTriggerCfg_t* pRssiSnrTrigger)
725 {
726 TTwd *pTWD = (TTwd *)hTWD;
727
728 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgRssiSnrTrigger: called\n");
729
730 return cmdBld_CfgRssiSnrTrigger (pTWD->hCmdBld, pRssiSnrTrigger, NULL, NULL);
731 }
732
TWD_CfgAcParams(TI_HANDLE hTWD,TAcQosParams * pAcQosParams,void * fCb,TI_HANDLE hCb)733 TI_STATUS TWD_CfgAcParams (TI_HANDLE hTWD, TAcQosParams *pAcQosParams, void *fCb, TI_HANDLE hCb)
734 {
735 TTwd *pTWD = (TTwd *)hTWD;
736
737 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgAcParams: called\n");
738
739 return cmdBld_CfgAcParams (pTWD->hCmdBld, pAcQosParams, fCb, hCb);
740 }
741
TWD_CfgPsRxStreaming(TI_HANDLE hTWD,TPsRxStreaming * pPsRxStreaming,void * fCb,TI_HANDLE hCb)742 TI_STATUS TWD_CfgPsRxStreaming (TI_HANDLE hTWD, TPsRxStreaming *pPsRxStreaming, void *fCb, TI_HANDLE hCb)
743 {
744 TTwd *pTWD = (TTwd *)hTWD;
745
746 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgPsRxStreaming: called\n");
747
748 return cmdBld_CfgPsRxStreaming (pTWD->hCmdBld, pPsRxStreaming, fCb, hCb);
749 }
750
TWD_CfgBet(TI_HANDLE hTWD,TI_UINT8 Enable,TI_UINT8 MaximumConsecutiveET)751 TI_STATUS TWD_CfgBet (TI_HANDLE hTWD, TI_UINT8 Enable, TI_UINT8 MaximumConsecutiveET)
752 {
753 TTwd *pTWD = (TTwd *)hTWD;
754
755 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgBet: called\n");
756
757 return cmdBld_CfgBet (pTWD->hCmdBld, Enable, MaximumConsecutiveET, NULL, NULL);
758 }
759
TWD_SetSecuritySeqNum(TI_HANDLE hTWD,TI_UINT8 securitySeqNumLsByte)760 TI_STATUS TWD_SetSecuritySeqNum (TI_HANDLE hTWD, TI_UINT8 securitySeqNumLsByte)
761 {
762 TTwd *pTWD = (TTwd *)hTWD;
763
764 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_SetSecuritySeqNum: called\n");
765
766 return cmdBld_SetSecuritySeqNum (pTWD->hCmdBld, securitySeqNumLsByte);
767 }
768
TWD_CfgSetFwHtCapabilities(TI_HANDLE hTWD,Tdot11HtCapabilitiesUnparse * pHtCapabilitiesIe,TI_BOOL bAllowHtOperation)769 TI_STATUS TWD_CfgSetFwHtCapabilities (TI_HANDLE hTWD,
770 Tdot11HtCapabilitiesUnparse *pHtCapabilitiesIe,
771 TI_BOOL bAllowHtOperation)
772 {
773 TTwd *pTWD = (TTwd *)hTWD;
774 TI_UINT32 uHtCapabilites;
775 TI_UINT8 uAmpduMaxLeng = 0;
776 TI_UINT8 uAmpduMinSpac = 0;
777 TI_UINT16 uHtCapabilitesField;
778
779 /* Note, currently this value will be set to FFFFFFFFFFFF to indicate it is relevant for all peers
780 since we only support HT in infrastructure mode. Later on this field will be relevant to IBSS/DLS operation */
781 TMacAddr tMacAddress = {0xff,0xff,0xff,0xff,0xff,0xff};
782
783 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgSetFwHtCapabilities: called\n");
784
785 /* Allow HT Operation ? */
786 if (bAllowHtOperation == TI_TRUE)
787 {
788 /* get date from HT capabilities field */
789 /* Handle endian for the field */
790 COPY_WLAN_WORD(&uHtCapabilitesField, pHtCapabilitiesIe->aHtCapabilitiesIe);
791 uHtCapabilites = FW_CAP_BIT_MASK_HT_OPERATION |
792 ((uHtCapabilitesField & HT_CAP_GREENFIELD_FRAME_FORMAT_BITMASK) ? FW_CAP_BIT_MASK_GREENFIELD_FRAME_FORMAT : 0) |
793 ((uHtCapabilitesField & HT_CAP_SHORT_GI_FOR_20MHZ_BITMASK) ? FW_CAP_BIT_MASK_SHORT_GI_FOR_20MHZ_PACKETS : 0) |
794 ((uHtCapabilitesField & HT_CAP_LSIG_TXOP_PROTECTION_BITMASK) ? FW_CAP_BIT_MASK_LSIG_TXOP_PROTECTION : 0);
795
796 /* get date from HT capabilities field */
797 uHtCapabilites |= ((uHtCapabilitesField & HT_EXT_HT_CONTROL_FIELDS_BITMASK) ? FW_CAP_BIT_MASK_HT_CONTROL_FIELDS : 0) |
798 ((uHtCapabilitesField & HT_EXT_RD_INITIATION_BITMASK) ? FW_CAP_BIT_MASK_RD_INITIATION : 0);
799
800 /* get date from A-MPDU parameters field */
801 uAmpduMaxLeng = pHtCapabilitiesIe->aHtCapabilitiesIe[HT_CAP_AMPDU_PARAMETERS_FIELD_OFFSET] & HT_CAP_AMPDU_MAX_RX_FACTOR_BITMASK;
802 uAmpduMinSpac = (pHtCapabilitiesIe->aHtCapabilitiesIe[HT_CAP_AMPDU_PARAMETERS_FIELD_OFFSET] >> 2) & HT_CAP_AMPDU_MIN_START_SPACING_BITMASK;
803 }
804 /* not Allow HT Operation */
805 else
806 {
807 uHtCapabilites = 0;
808 }
809
810 return cmdBld_CfgSetFwHtCapabilities (pTWD->hCmdBld,
811 uHtCapabilites,
812 tMacAddress,
813 uAmpduMaxLeng,
814 uAmpduMinSpac,
815 NULL,
816 NULL);
817 }
818
TWD_CfgSetFwHtInformation(TI_HANDLE hTWD,Tdot11HtInformationUnparse * pHtInformationIe)819 TI_STATUS TWD_CfgSetFwHtInformation (TI_HANDLE hTWD, Tdot11HtInformationUnparse *pHtInformationIe)
820 {
821 TTwd *pTWD = (TTwd *)hTWD;
822 TI_UINT8 uRifsMode;
823 TI_UINT8 uHtProtection;
824 TI_UINT8 uGfProtection;
825 TI_UINT8 uHtTxBurstLimit;
826 TI_UINT8 uDualCtsProtection;
827
828 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgSetFwHtInformation: called\n");
829
830 uRifsMode = (pHtInformationIe->aHtInformationIe[1] & HT_INF_RIFS_MOD_BITMASK) >> 3;
831
832 uHtProtection = (pHtInformationIe->aHtInformationIe[2] & HT_INF_OPERATION_MOD_BITMASK);
833
834 uGfProtection = (pHtInformationIe->aHtInformationIe[3] & HT_INF_NON_GF_PRES_BITMASK) >> 2;
835
836 uHtTxBurstLimit = (pHtInformationIe->aHtInformationIe[3] & HT_INF_TX_BURST_LIMIT_BITMASK) >> 3;
837
838 uDualCtsProtection = (pHtInformationIe->aHtInformationIe[4] & HT_INF_DUAL_BEACON_BITMASK) >> 6;
839
840 return cmdBld_CfgSetFwHtInformation (pTWD->hCmdBld,
841 uRifsMode,
842 uHtProtection,
843 uGfProtection,
844 uHtTxBurstLimit,
845 uDualCtsProtection,
846 NULL,
847 NULL);
848 }
849
TWD_CfgSetBaInitiator(TI_HANDLE hTWD,TI_UINT8 uTid,TI_UINT8 uState,TMacAddr tRa,TI_UINT16 uWinSize,TI_UINT16 uInactivityTimeout)850 TI_STATUS TWD_CfgSetBaInitiator (TI_HANDLE hTWD,
851 TI_UINT8 uTid,
852 TI_UINT8 uState,
853 TMacAddr tRa,
854 TI_UINT16 uWinSize,
855 TI_UINT16 uInactivityTimeout)
856
857 {
858 TTwd *pTWD = (TTwd *)hTWD;
859
860 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgSetBaInitiator: called\n");
861
862 return cmdBld_CfgSetBaSession (pTWD->hCmdBld,
863 ACX_BA_SESSION_INITIATOR_POLICY,
864 uTid,
865 uState,
866 tRa,
867 uWinSize,
868 uInactivityTimeout,
869 NULL,
870 NULL);
871 }
872
TWD_CfgSetBaReceiver(TI_HANDLE hTWD,TI_UINT8 uTid,TI_UINT8 uState,TMacAddr tRa,TI_UINT16 uWinSize)873 TI_STATUS TWD_CfgSetBaReceiver (TI_HANDLE hTWD,
874 TI_UINT8 uTid,
875 TI_UINT8 uState,
876 TMacAddr tRa,
877 TI_UINT16 uWinSize)
878 {
879 TTwd *pTWD = (TTwd *)hTWD;
880
881 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgSetBaReceiver: called\n");
882
883 return cmdBld_CfgSetBaSession (pTWD->hCmdBld,
884 ACX_BA_SESSION_RESPONDER_POLICY,
885 uTid,
886 uState,
887 tRa,
888 uWinSize,
889 0,
890 (void *)NULL,
891 (TI_HANDLE)NULL);
892 }
893
TWD_CloseAllBaSessions(TI_HANDLE hTWD)894 void TWD_CloseAllBaSessions(TI_HANDLE hTWD)
895 {
896 TTwd *pTWD = (TTwd *)hTWD;
897 TI_UINT32 i;
898
899 TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CloseAllBaSessions: called\n");
900
901 /* close all BA sessions */
902 for(i=0; i <MAX_NUM_OF_802_1d_TAGS; ++i)
903 {
904 RxQueue_CloseBaSession(pTWD->hRxQueue, i);
905 }
906 }
907
TWD_WdExpireEvent(TI_HANDLE hTWD)908 TI_STATUS TWD_WdExpireEvent(TI_HANDLE hTWD)
909 {
910 TTwd *pTWD = (TTwd*)hTWD;
911
912 if ( hTWD == NULL )
913 {
914 return(TI_NOK);
915 }
916
917 if (( pTWD->fFailureEventCb == NULL ) ||
918 ( pTWD->hFailureEventCb == NULL ))
919 {
920 return(TI_NOK);
921 }
922
923 pTWD->fFailureEventCb(pTWD->hFailureEventCb, HW_WD_EXPIRE);
924
925 return(TI_OK);
926 }
927
928