• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * TWDriverCtrl.c
3  *
4  * Copyright(c) 1998 - 2010 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         case TWD_DCO_ITRIM_PARAMS_ID:
237             cmdBld_CfgDcoItrimParams (pTWD->hCmdBld, pParamInfo->content.tDcoItrimParams.enable,
238                                       pParamInfo->content.tDcoItrimParams.moderationTimeoutUsec, NULL, NULL);
239             break;
240 
241         default:
242             TRACE1(pTWD->hReport, REPORT_SEVERITY_ERROR, "TWD_SetParam - ERROR - Param is not supported, 0x%x\n", pParamInfo->paramType);
243             return PARAM_NOT_SUPPORTED;
244     }
245 
246     return TI_OK;
247 }
248 
TWD_GetParam(TI_HANDLE hTWD,TTwdParamInfo * pParamInfo)249 TI_STATUS TWD_GetParam (TI_HANDLE hTWD, TTwdParamInfo *pParamInfo)
250 {
251     TTwd *pTWD = (TTwd *)hTWD;
252 
253     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_GetParam: called\n");
254 
255     return cmdBld_GetParam (pTWD->hCmdBld, pParamInfo);
256 }
257 
TWD_CfgRx(TI_HANDLE hTWD,TI_UINT32 uRxConfigOption,TI_UINT32 uRxFilterOption)258 TI_STATUS TWD_CfgRx (TI_HANDLE hTWD, TI_UINT32 uRxConfigOption, TI_UINT32 uRxFilterOption)
259 {
260     TTwd     *pTWD = (TTwd *)hTWD;
261 
262     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgRx: called\n");
263 
264     return cmdBld_CfgRx (pTWD->hCmdBld, uRxConfigOption, uRxFilterOption, NULL, NULL);
265 }
266 
TWD_CfgArpIpAddrTable(TI_HANDLE hTWD,TIpAddr tIpAddr,EArpFilterType filterType,EIpVer eIpVer)267 TI_STATUS TWD_CfgArpIpAddrTable (TI_HANDLE hTWD, TIpAddr tIpAddr, EArpFilterType filterType, EIpVer eIpVer)
268 {
269     TTwd *pTWD = (TTwd *)hTWD;
270 
271     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgArpIpAddrTable: called\n");
272 
273     return cmdBld_CfgArpIpAddrTable (pTWD->hCmdBld, tIpAddr, (TI_UINT8)filterType, eIpVer, NULL, NULL);
274 }
275 
276 /** @ingroup Misc
277  * \brief  Configure ARP IP Filter
278  *
279  * \param hTWD 			- TWD module object handle
280  * \param  bEnabled   	- Indicates if ARP filtering is Enabled (1) or Disabled (0)
281  * \return TI_OK on success or TI_NOK on failure
282  *
283  * \par Description
284  *
285  * \sa
286  */
TWD_CfgArpIpFilter(TI_HANDLE hTWD,TIpAddr staIp)287 TI_STATUS TWD_CfgArpIpFilter (TI_HANDLE hTWD, TIpAddr staIp)
288 {
289     TTwd *pTWD = (TTwd *)hTWD;
290 
291     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgArpIpFilter: called\n");
292 
293     return cmdBld_CfgArpIpFilter (pTWD->hCmdBld, staIp, NULL, NULL);
294 }
295 
TWD_CmdSetSplitScanTimeOut(TI_HANDLE hTWD,TI_UINT32 uTimeOut)296 TI_STATUS TWD_CmdSetSplitScanTimeOut  ( TI_HANDLE hTWD, TI_UINT32 uTimeOut )
297 {
298     TTwd *pTWD = (TTwd *)hTWD;
299 
300     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CmdSetSplitScanTimeOut: called\n");
301 
302     return cmdBld_CmdSetSplitScanTimeOut (pTWD->hCmdBld, uTimeOut);
303 }
304 
TWD_CmdJoinBss(TI_HANDLE hTWD,TJoinBss * pJoinBssParams)305 TI_STATUS TWD_CmdJoinBss (TI_HANDLE hTWD, TJoinBss *pJoinBssParams)
306 {
307     TTwd      *pTWD = (TTwd *)hTWD;
308 
309     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CmdJoinBss: called\n");
310 
311     return cmdBld_CmdJoinBss (pTWD->hCmdBld, pJoinBssParams, NULL, NULL);
312 }
313 
TWD_CfgKeepAlive(TI_HANDLE hTWD,TKeepAliveParams * pKeepAliveParams)314 TI_STATUS TWD_CfgKeepAlive (TI_HANDLE hTWD, TKeepAliveParams *pKeepAliveParams)
315 {
316     TTwd      *pTWD = (TTwd *)hTWD;
317 
318     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgKeepAlive: called\n");
319 
320     return cmdBld_CfgKeepAlive (pTWD->hCmdBld, pKeepAliveParams, NULL, NULL);
321 }
322 
TWD_CfgKeepAliveEnaDis(TI_HANDLE hTWD,TI_UINT8 enaDisFlag)323 TI_STATUS TWD_CfgKeepAliveEnaDis(TI_HANDLE hTWD, TI_UINT8 enaDisFlag)
324 {
325     TTwd      *pTWD = (TTwd *)hTWD;
326 
327     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgKeepAliveEnaDis: called\n");
328 
329     return cmdBld_CfgKeepAliveEnaDis (pTWD->hCmdBld, enaDisFlag, NULL, NULL);
330 }
331 
TWD_CmdTemplate(TI_HANDLE hTWD,TSetTemplate * pTemplateParams,void * fCb,TI_HANDLE hCb)332 TI_STATUS TWD_CmdTemplate (TI_HANDLE hTWD, TSetTemplate *pTemplateParams, void *fCb, TI_HANDLE hCb)
333 {
334     TTwd *pTWD = (TTwd *)hTWD;
335 
336     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CmdTemplate: called\n");
337 
338     return cmdBld_CmdTemplate (pTWD->hCmdBld, pTemplateParams, fCb, hCb);
339 }
340 
TWD_CfgSlotTime(TI_HANDLE hTWD,ESlotTime eSlotTimeVal)341 TI_STATUS TWD_CfgSlotTime (TI_HANDLE hTWD, ESlotTime eSlotTimeVal)
342 {
343     TTwd   *pTWD = (TTwd *)hTWD;
344 
345     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgSlotTime: called\n");
346 
347     return cmdBld_CfgSlotTime (pTWD->hCmdBld, eSlotTimeVal, NULL, NULL);
348 }
349 
TWD_CfgPreamble(TI_HANDLE hTWD,EPreamble ePreamble)350 TI_STATUS TWD_CfgPreamble (TI_HANDLE hTWD, EPreamble ePreamble)
351 {
352     TTwd   *pTWD = (TTwd *)hTWD;
353 
354     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgPreamble: called\n");
355 
356     return cmdBld_CfgPreamble (pTWD->hCmdBld, (Preamble_e)ePreamble, NULL, NULL);
357 }
358 
TWD_CfgPacketDetectionThreshold(TI_HANDLE hTWD,TI_UINT32 threshold)359 TI_STATUS TWD_CfgPacketDetectionThreshold (TI_HANDLE hTWD, TI_UINT32 threshold)
360 {
361     TTwd   *pTWD = (TTwd *)hTWD;
362 
363     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgPacketDetectionThreshold: called\n");
364 
365     return cmdBld_CfgPacketDetectionThreshold (pTWD->hCmdBld, threshold, NULL, NULL);
366 }
367 
TWD_CmdDisableTx(TI_HANDLE hTWD)368 TI_STATUS TWD_CmdDisableTx (TI_HANDLE hTWD)
369 {
370     TTwd   *pTWD = (TTwd *)hTWD;
371 
372     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CmdDisableTx: called\n");
373 
374     return cmdBld_CmdDisableTx (pTWD->hCmdBld, NULL, NULL);
375 }
376 
TWD_CmdEnableTx(TI_HANDLE hTWD,TI_UINT8 channel)377 TI_STATUS TWD_CmdEnableTx (TI_HANDLE hTWD, TI_UINT8 channel)
378 {
379     TTwd   *pTWD = (TTwd *)hTWD;
380 
381     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CmdEnableTx: called\n");
382 
383     return cmdBld_CmdEnableTx (pTWD->hCmdBld, channel, NULL, NULL);
384 }
385 
TWD_CmdSetStaState(TI_HANDLE hTWD,TI_UINT8 staState,void * fCb,TI_HANDLE hCb)386 TI_STATUS TWD_CmdSetStaState (TI_HANDLE hTWD, TI_UINT8 staState, void *fCb, TI_HANDLE hCb)
387 {
388     TTwd *pTWD = (TTwd *)hTWD;
389 
390     TRACE1(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_SetStaState: %d\n", staState);
391 
392     return cmdBld_CmdSetStaState (pTWD->hCmdBld, staState, fCb, hCb);
393 }
394 
TWD_ItrRoammingStatisitics(TI_HANDLE hTWD,void * fCb,TI_HANDLE hCb,void * pCb)395 TI_STATUS TWD_ItrRoammingStatisitics (TI_HANDLE hTWD, void *fCb, TI_HANDLE hCb, void * pCb)
396 {
397     TTwd   *pTWD = (TTwd *)hTWD;
398 
399     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_ItrRoammingStatisitics: called\n");
400 
401     return cmdBld_ItrRoamimgStatisitics (pTWD->hCmdBld, fCb, hCb, pCb);
402 }
403 
404 /** @ingroup UnKnown
405  * \brief	Interrogate Error Count
406  *
407  * \param  hTWD     	- TWD module object handle
408  * \param  fCb          - Pointer to Command CB Function
409  * \param  hCb          - Handle to Command CB Function Obj Parameters
410  * \param  pCb          - Pointer to read parameters
411  * \return TI_OK on success or TI_NOK on failure
412  *
413  * \par Description
414  * Interrogate ACX Error counter
415  *
416  * \sa
417  */
TWD_ItrErrorCnt(TI_HANDLE hTWD,void * fCb,TI_HANDLE hCb,void * pCb)418 TI_STATUS TWD_ItrErrorCnt (TI_HANDLE hTWD, void *fCb, TI_HANDLE hCb, void *pCb)
419 {
420     TTwd   *pTWD = (TTwd *)hTWD;
421 
422     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_ItrErrorCnt: called\n");
423 
424     return cmdBld_ItrErrorCnt (pTWD->hCmdBld, fCb, hCb, pCb);
425 }
426 
TWD_CmdNoiseHistogram(TI_HANDLE hTWD,TNoiseHistogram * pNoiseHistParams)427 TI_STATUS TWD_CmdNoiseHistogram (TI_HANDLE hTWD, TNoiseHistogram *pNoiseHistParams)
428 {
429     TTwd *pTWD = (TTwd *)hTWD;
430 
431     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CmdNoiseHistogram: called\n");
432 
433     return cmdBld_CmdNoiseHistogram (pTWD->hCmdBld, pNoiseHistParams, NULL, NULL);
434 }
435 
TWD_CfgBeaconFilterOpt(TI_HANDLE hTWD,TI_UINT8 uBeaconFilteringStatus,TI_UINT8 uNumOfBeaconsToBuffer)436 TI_STATUS TWD_CfgBeaconFilterOpt (TI_HANDLE hTWD, TI_UINT8 uBeaconFilteringStatus, TI_UINT8 uNumOfBeaconsToBuffer)
437 {
438     TTwd   *pTWD = (TTwd *)hTWD;
439 
440     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgBeaconFilterOpt: called\n");
441 
442     return cmdBld_CfgBeaconFilterOpt (pTWD->hCmdBld, uBeaconFilteringStatus, uNumOfBeaconsToBuffer, NULL, NULL);
443 }
444 
TWD_SetRateMngDebug(TI_HANDLE hTWD,RateMangeParams_t * pRateMngParams)445 TI_STATUS TWD_SetRateMngDebug(TI_HANDLE hTWD, RateMangeParams_t *pRateMngParams)
446 {
447   TTwd   *pTWD = (TTwd *)hTWD;
448 
449    TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_SetRateMngDebug: called\n");
450 
451    return cmdBld_CfgRateMngDbg (pTWD->hCmdBld, pRateMngParams, NULL, NULL);
452 }
453 
TWD_CfgBeaconFilterTable(TI_HANDLE hTWD,TI_UINT8 uNumOfIe,TI_UINT8 * pIeTable,TI_UINT8 uIeTableSize)454 TI_STATUS TWD_CfgBeaconFilterTable (TI_HANDLE hTWD, TI_UINT8 uNumOfIe, TI_UINT8 *pIeTable, TI_UINT8 uIeTableSize)
455 {
456     TTwd   *pTWD = (TTwd *)hTWD;
457 
458     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgBeaconFilterTable: called\n");
459 
460     return cmdBld_CfgBeaconFilterTable (pTWD->hCmdBld, uNumOfIe, pIeTable, uIeTableSize, NULL, NULL);
461 }
462 
TWD_CfgWakeUpCondition(TI_HANDLE hTWD,TPowerMgmtConfig * pPowerMgmtConfig)463 TI_STATUS TWD_CfgWakeUpCondition (TI_HANDLE hTWD, TPowerMgmtConfig *pPowerMgmtConfig)
464 {
465     TTwd *pTWD = (TTwd *)hTWD;
466 
467     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgWakeUpCondition: called\n");
468 
469     return cmdBld_CfgWakeUpCondition (pTWD->hCmdBld, pPowerMgmtConfig, NULL, NULL);
470 }
471 
TWD_CfgBcnBrcOptions(TI_HANDLE hTWD,TPowerMgmtConfig * pPowerMgmtConfig)472 TI_STATUS TWD_CfgBcnBrcOptions (TI_HANDLE hTWD, TPowerMgmtConfig *pPowerMgmtConfig)
473 {
474     TTwd *pTWD = (TTwd *)hTWD;
475 
476     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgBcnBrcOptions: called\n");
477 
478     return cmdBld_CfgBcnBrcOptions (pTWD->hCmdBld, pPowerMgmtConfig, NULL, NULL);
479 }
480 
TWD_GetFWInfo(TI_HANDLE hTWD)481 TFwInfo * TWD_GetFWInfo (TI_HANDLE hTWD)
482 {
483     TTwd *pTWD = (TTwd *)hTWD;
484 
485     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_GetFWInfo: called\n");
486 
487     return cmdBld_GetFWInfo (pTWD->hCmdBld);
488 }
489 
TWD_CmdSwitchChannel(TI_HANDLE hTWD,TSwitchChannelParams * pSwitchChannelCmd)490 TI_STATUS TWD_CmdSwitchChannel (TI_HANDLE hTWD, TSwitchChannelParams *pSwitchChannelCmd)
491 {
492     TTwd   *pTWD = (TTwd *)hTWD;
493 
494     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CmdSwitchChannel: called\n");
495 
496     return cmdBld_CmdSwitchChannel (pTWD->hCmdBld, pSwitchChannelCmd, NULL, NULL);
497 }
498 
TWD_CmdSwitchChannelCancel(TI_HANDLE hTWD,TI_UINT8 channel)499 TI_STATUS TWD_CmdSwitchChannelCancel (TI_HANDLE hTWD, TI_UINT8 channel)
500 {
501     TTwd   *pTWD = (TTwd *)hTWD;
502 
503     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CmdSwitchChannelCancel: called\n");
504 
505     return cmdBld_CmdSwitchChannelCancel (pTWD->hCmdBld, channel, NULL, NULL);
506 }
507 
TWD_CfgMaxTxRetry(TI_HANDLE hTWD,TRroamingTriggerParams * pRoamingTriggerCmd)508 TI_STATUS TWD_CfgMaxTxRetry (TI_HANDLE hTWD, TRroamingTriggerParams *pRoamingTriggerCmd)
509 {
510     TTwd   *pTWD = (TTwd *)hTWD;
511 
512     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgMaxTxRetry: called\n");
513 
514     return cmdBld_CfgMaxTxRetry (pTWD->hCmdBld, pRoamingTriggerCmd, NULL, NULL);
515 }
516 
TWD_CfgConnMonitParams(TI_HANDLE hTWD,TRroamingTriggerParams * pRoamingTriggerCmd)517 TI_STATUS TWD_CfgConnMonitParams (TI_HANDLE hTWD, TRroamingTriggerParams *pRoamingTriggerCmd)
518 {
519     TTwd   *pTWD = (TTwd *)hTWD;
520 
521     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgConnMonitParams: called\n");
522 
523     return cmdBld_CfgConnMonitParams (pTWD->hCmdBld, pRoamingTriggerCmd, NULL, NULL);
524 }
525 
TWD_ItrRSSI(TI_HANDLE hTWD,void * fCb,TI_HANDLE hCb,void * pCb)526 TI_STATUS TWD_ItrRSSI (TI_HANDLE hTWD, void *fCb, TI_HANDLE hCb, void *pCb)
527 {
528     TTwd   *pTWD = (TTwd *)hTWD;
529 
530     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_ItrRSSI: called\n");
531 
532     return cmdBld_ItrRSSI (pTWD->hCmdBld, fCb, hCb, pCb);
533 }
534 
TWD_CmdFwDisconnect(TI_HANDLE hTWD,DisconnectType_e uDisconType,TI_UINT16 uDisconReason)535 TI_STATUS TWD_CmdFwDisconnect (TI_HANDLE hTWD, DisconnectType_e uDisconType, TI_UINT16 uDisconReason)
536 {
537     TTwd   *pTWD = (TTwd *)hTWD;
538 
539     return cmdBld_CmdFwDisconnect (pTWD->hCmdBld,
540                                    RX_CONFIG_OPTION_MY_DST_MY_BSS,
541                                    RX_FILTER_OPTION_FILTER_ALL,
542                                    uDisconType,
543                                    uDisconReason,
544                                    NULL,
545                                    NULL);
546 }
547 
TWD_CmdMeasurement(TI_HANDLE hTWD,TMeasurementParams * pMeasurementParams,void * fCommandResponseCb,TI_HANDLE hCb)548 TI_STATUS TWD_CmdMeasurement (TI_HANDLE           hTWD,
549                               TMeasurementParams *pMeasurementParams,
550                               void               *fCommandResponseCb,
551                               TI_HANDLE           hCb)
552 {
553     TTwd   *pTWD = (TTwd *)hTWD;
554 
555     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CmdMeasurement: called\n");
556 
557     return cmdBld_CmdMeasurement (pTWD->hCmdBld, pMeasurementParams, fCommandResponseCb, hCb);
558 }
559 
TWD_CmdMeasurementStop(TI_HANDLE hTWD,void * fCb,TI_HANDLE hCb)560 TI_STATUS TWD_CmdMeasurementStop (TI_HANDLE hTWD, void* fCb, TI_HANDLE hCb)
561 {
562     TTwd   *pTWD = (TTwd *)hTWD;
563 
564     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CmdMeasurementStop: called\n");
565 
566     return cmdBld_CmdMeasurementStop (pTWD->hCmdBld, fCb, hCb);
567 }
568 
TWD_CmdApDiscovery(TI_HANDLE hTWD,TApDiscoveryParams * pApDiscoveryParams)569 TI_STATUS TWD_CmdApDiscovery (TI_HANDLE hTWD, TApDiscoveryParams *pApDiscoveryParams)
570 {
571     TTwd *pTWD = (TTwd *)hTWD;
572 
573     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CmdApDiscovery: called\n");
574 
575     return cmdBld_CmdApDiscovery (pTWD->hCmdBld, pApDiscoveryParams, NULL, NULL);
576 }
577 
TWD_CmdApDiscoveryStop(TI_HANDLE hTWD)578 TI_STATUS TWD_CmdApDiscoveryStop (TI_HANDLE hTWD)
579 {
580     TTwd   *pTWD = (TTwd *)hTWD;
581 
582     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CmdApDiscoveryStop: called\n");
583 
584     return cmdBld_CmdApDiscoveryStop (pTWD->hCmdBld, NULL, NULL);
585 }
586 
TWD_CfgGroupAddressTable(TI_HANDLE hTWD,TI_UINT8 uNumGroupAddrs,TMacAddr * pGroupAddr,TI_BOOL bEnabled)587 TI_STATUS TWD_CfgGroupAddressTable (TI_HANDLE     hTWD,
588                                     TI_UINT8      uNumGroupAddrs,
589                                     TMacAddr      *pGroupAddr,
590                                     TI_BOOL       bEnabled)
591 {
592     TTwd *pTWD = (TTwd *)hTWD;
593 
594     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgGroupAddressTable: called\n");
595 
596     return cmdBld_CfgGroupAddressTable (pTWD->hCmdBld, uNumGroupAddrs, pGroupAddr, bEnabled, NULL, NULL);
597 }
598 
TWD_GetGroupAddressTable(TI_HANDLE hTWD,TI_UINT8 * pEnabled,TI_UINT8 * pNumGroupAddrs,TMacAddr * pGroupAddr)599 TI_STATUS TWD_GetGroupAddressTable (TI_HANDLE hTWD, TI_UINT8* pEnabled, TI_UINT8* pNumGroupAddrs, TMacAddr *pGroupAddr)
600 {
601     TTwd   *pTWD = (TTwd *)hTWD;
602 
603     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_GetGroupAddressTable: called\n");
604 
605     return cmdBld_GetGroupAddressTable (pTWD->hCmdBld, pEnabled, pNumGroupAddrs, pGroupAddr);
606 }
607 
TWD_SetRadioBand(TI_HANDLE hTWD,ERadioBand eRadioBand)608 TI_STATUS TWD_SetRadioBand (TI_HANDLE hTWD, ERadioBand eRadioBand)
609 {
610     TTwd   *pTWD = (TTwd *)hTWD;
611 
612     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_SetRadioBand: called\n");
613 
614     return cmdBld_SetRadioBand (pTWD->hCmdBld, eRadioBand);
615 }
616 
TWD_CfgSleepAuth(TI_HANDLE hTWD,EPowerPolicy eMinPowerPolicy)617 TI_STATUS TWD_CfgSleepAuth (TI_HANDLE hTWD, EPowerPolicy eMinPowerPolicy)
618 {
619     TTwd *pTWD = (TTwd *)hTWD;
620 
621     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgSleepAuth: called\n");
622 
623     /* Configure the new power policy to the FW */
624     cmdBld_CfgSleepAuth (pTWD->hCmdBld, eMinPowerPolicy, NULL, NULL);
625 
626     return TI_OK;
627 }
628 
TWD_CfgBurstMode(TI_HANDLE hTWD,TI_BOOL bEnabled)629 TI_STATUS TWD_CfgBurstMode (TI_HANDLE hTWD, TI_BOOL bEnabled)
630 {
631     TTwd *pTWD = (TTwd *)hTWD;
632 
633     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "cmdBld_CfgBurstMode: called\n");
634 
635     /* Configure the burst mode to the FW */
636     cmdBld_CfgBurstMode (pTWD->hCmdBld, bEnabled, NULL, NULL);
637 
638     return TI_OK;
639 }
640 
641 
642 
TWD_CmdHealthCheck(TI_HANDLE hTWD)643 TI_STATUS TWD_CmdHealthCheck (TI_HANDLE hTWD)
644 {
645     TTwd   *pTWD = (TTwd *)hTWD;
646 
647     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CmdHealthCheck: called\n");
648 
649     return cmdBld_CmdHealthCheck (pTWD->hCmdBld, NULL, NULL);
650 }
651 
TWD_CfgMacClock(TI_HANDLE hTWD,TI_UINT32 uMacClock)652 TI_STATUS TWD_CfgMacClock (TI_HANDLE hTWD, TI_UINT32 uMacClock)
653 {
654     TTwd *pTWD = (TTwd *)hTWD;
655 
656     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgMacClock: called\n");
657 
658     return cmdBld_CfgMacClock (pTWD->hCmdBld, uMacClock, NULL, NULL);
659 }
660 
TWD_CfgArmClock(TI_HANDLE hTWD,TI_UINT32 uArmClock)661 TI_STATUS TWD_CfgArmClock (TI_HANDLE hTWD, TI_UINT32 uArmClock)
662 {
663     TTwd *pTWD = (TTwd *)hTWD;
664 
665     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgArmClock: called\n");
666 
667     return cmdBld_CfgArmClock (pTWD->hCmdBld, uArmClock, NULL, NULL);
668 }
669 
TWD_ItrMemoryMap(TI_HANDLE hTWD,MemoryMap_t * pMap,void * fCb,TI_HANDLE hCb)670 TI_STATUS TWD_ItrMemoryMap (TI_HANDLE hTWD, MemoryMap_t *pMap, void *fCb, TI_HANDLE hCb)
671 {
672     TTwd *pTWD = (TTwd *)hTWD;
673 
674     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_ItrMemoryMap: called\n");
675 
676     return cmdBld_ItrMemoryMap (pTWD->hCmdBld, pMap, fCb, hCb);
677 }
678 
TWD_ItrStatistics(TI_HANDLE hTWD,void * fCb,TI_HANDLE hCb,void * pCb)679 TI_STATUS TWD_ItrStatistics (TI_HANDLE hTWD, void *fCb, TI_HANDLE hCb, void *pCb)
680 {
681     TTwd *pTWD = (TTwd *)hTWD;
682 
683     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_ItrStatistics: called\n");
684 
685     return cmdBld_ItrStatistics (pTWD->hCmdBld, fCb, hCb, pCb);
686 }
687 
TWD_ItrDataFilterStatistics(TI_HANDLE hTWD,void * fCb,TI_HANDLE hCb,void * pCb)688 TI_STATUS TWD_ItrDataFilterStatistics (TI_HANDLE hTWD, void *fCb, TI_HANDLE hCb, void *pCb)
689 {
690     TTwd *pTWD = (TTwd *)hTWD;
691 
692     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_ItrDataFilterStatistics: called\n");
693 
694     return cmdBld_ItrDataFilterStatistics (pTWD->hCmdBld, fCb, hCb, pCb);
695 }
696 
TWD_CfgEnableRxDataFilter(TI_HANDLE hTWD,TI_BOOL bEnabled,filter_e eDefaultAction)697 TI_STATUS TWD_CfgEnableRxDataFilter (TI_HANDLE hTWD, TI_BOOL bEnabled, filter_e eDefaultAction)
698 {
699     TTwd *pTWD = (TTwd *)hTWD;
700 
701     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgEnableRxDataFilter: called\n");
702 
703     return cmdBld_CfgEnableRxDataFilter (pTWD->hCmdBld, bEnabled, eDefaultAction, NULL, NULL);
704 }
705 
TWD_CfgRxDataFilter(TI_HANDLE hTWD,TI_UINT8 index,TI_UINT8 command,filter_e eAction,TI_UINT8 uNumFieldPatterns,TI_UINT8 uLenFieldPatterns,TI_UINT8 * pFieldPatterns)706 TI_STATUS TWD_CfgRxDataFilter (TI_HANDLE    hTWD,
707                                TI_UINT8     index,
708                                TI_UINT8     command,
709                                filter_e     eAction,
710                                TI_UINT8     uNumFieldPatterns,
711                                TI_UINT8     uLenFieldPatterns,
712                                TI_UINT8     *pFieldPatterns)
713 {
714     TTwd *pTWD = (TTwd *)hTWD;
715 
716     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgRxDataFilter: called\n");
717 
718     return cmdBld_CfgRxDataFilter (pTWD->hCmdBld,
719                                    index,
720                                    command,
721                                    eAction,
722                                    uNumFieldPatterns,
723                                    uLenFieldPatterns,
724                                    pFieldPatterns,
725                                    NULL,
726                                    NULL);
727 }
728 
TWD_CfgRssiSnrTrigger(TI_HANDLE hTWD,RssiSnrTriggerCfg_t * pRssiSnrTrigger)729 TI_STATUS TWD_CfgRssiSnrTrigger (TI_HANDLE hTWD, RssiSnrTriggerCfg_t* pRssiSnrTrigger)
730 {
731     TTwd *pTWD = (TTwd *)hTWD;
732 
733     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgRssiSnrTrigger: called\n");
734 
735     return cmdBld_CfgRssiSnrTrigger (pTWD->hCmdBld, pRssiSnrTrigger, NULL, NULL);
736 }
737 
TWD_CfgAcParams(TI_HANDLE hTWD,TAcQosParams * pAcQosParams,void * fCb,TI_HANDLE hCb)738 TI_STATUS TWD_CfgAcParams (TI_HANDLE hTWD, TAcQosParams *pAcQosParams, void *fCb, TI_HANDLE hCb)
739 {
740     TTwd *pTWD = (TTwd *)hTWD;
741 
742     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgAcParams: called\n");
743 
744     return cmdBld_CfgAcParams (pTWD->hCmdBld, pAcQosParams, fCb, hCb);
745 }
746 
TWD_CfgPsRxStreaming(TI_HANDLE hTWD,TPsRxStreaming * pPsRxStreaming,void * fCb,TI_HANDLE hCb)747 TI_STATUS TWD_CfgPsRxStreaming (TI_HANDLE hTWD, TPsRxStreaming *pPsRxStreaming, void *fCb, TI_HANDLE hCb)
748 {
749     TTwd *pTWD = (TTwd *)hTWD;
750 
751     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgPsRxStreaming: called\n");
752 
753     return cmdBld_CfgPsRxStreaming (pTWD->hCmdBld, pPsRxStreaming, fCb, hCb);
754 }
755 
TWD_CfgBet(TI_HANDLE hTWD,TI_UINT8 Enable,TI_UINT8 MaximumConsecutiveET)756 TI_STATUS TWD_CfgBet (TI_HANDLE hTWD, TI_UINT8 Enable, TI_UINT8 MaximumConsecutiveET)
757 {
758     TTwd *pTWD = (TTwd *)hTWD;
759 
760     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgBet: called\n");
761 
762     return cmdBld_CfgBet (pTWD->hCmdBld, Enable, MaximumConsecutiveET, NULL, NULL);
763 }
764 
TWD_SetSecuritySeqNum(TI_HANDLE hTWD,TI_UINT8 securitySeqNumLsByte)765 TI_STATUS TWD_SetSecuritySeqNum (TI_HANDLE hTWD, TI_UINT8 securitySeqNumLsByte)
766 {
767     TTwd *pTWD = (TTwd *)hTWD;
768 
769     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_SetSecuritySeqNum: called\n");
770 
771     return cmdBld_SetSecuritySeqNum (pTWD->hCmdBld, securitySeqNumLsByte);
772 }
773 
TWD_CfgSetFwHtCapabilities(TI_HANDLE hTWD,Tdot11HtCapabilitiesUnparse * pHtCapabilitiesIe,TI_BOOL bAllowHtOperation)774 TI_STATUS TWD_CfgSetFwHtCapabilities (TI_HANDLE hTWD,
775 									  Tdot11HtCapabilitiesUnparse *pHtCapabilitiesIe,
776 									  TI_BOOL bAllowHtOperation)
777 {
778     TTwd        *pTWD           = (TTwd *)hTWD;
779     TI_UINT32   uHtCapabilites;
780     TI_UINT8    uAmpduMaxLeng = 0;
781     TI_UINT8    uAmpduMinSpac = 0;
782     TI_UINT16   uHtCapabilitesField;
783 
784     /* Note, currently this value will be set to FFFFFFFFFFFF to indicate it is relevant for all peers
785        since we only support HT in infrastructure mode. Later on this field will be relevant to IBSS/DLS operation */
786     TMacAddr    tMacAddress = {0xff,0xff,0xff,0xff,0xff,0xff};
787 
788     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgSetFwHtCapabilities: called\n");
789 
790     /* Allow HT Operation ? */
791     if (bAllowHtOperation == TI_TRUE)
792     {
793        /* get date from HT capabilities field */
794        /* Handle endian for the field */
795        COPY_WLAN_WORD(&uHtCapabilitesField, pHtCapabilitiesIe->aHtCapabilitiesIe);
796        uHtCapabilites = FW_CAP_BIT_MASK_HT_OPERATION |
797                         ((uHtCapabilitesField & HT_CAP_GREENFIELD_FRAME_FORMAT_BITMASK)    ? FW_CAP_BIT_MASK_GREENFIELD_FRAME_FORMAT       : 0) |
798                         ((uHtCapabilitesField & HT_CAP_SHORT_GI_FOR_20MHZ_BITMASK)         ? FW_CAP_BIT_MASK_SHORT_GI_FOR_20MHZ_PACKETS    : 0) |
799                         ((uHtCapabilitesField & HT_CAP_LSIG_TXOP_PROTECTION_BITMASK)       ? FW_CAP_BIT_MASK_LSIG_TXOP_PROTECTION          : 0);
800 
801        /* get date from HT capabilities field */
802        uHtCapabilites |= ((uHtCapabilitesField & HT_EXT_HT_CONTROL_FIELDS_BITMASK) ? FW_CAP_BIT_MASK_HT_CONTROL_FIELDS : 0) |
803                          ((uHtCapabilitesField & HT_EXT_RD_INITIATION_BITMASK)     ? FW_CAP_BIT_MASK_RD_INITIATION     : 0);
804 
805        /* get date from A-MPDU parameters field */
806        uAmpduMaxLeng = pHtCapabilitiesIe->aHtCapabilitiesIe[HT_CAP_AMPDU_PARAMETERS_FIELD_OFFSET] & HT_CAP_AMPDU_MAX_RX_FACTOR_BITMASK;
807        uAmpduMinSpac = (pHtCapabilitiesIe->aHtCapabilitiesIe[HT_CAP_AMPDU_PARAMETERS_FIELD_OFFSET] >> 2) & HT_CAP_AMPDU_MIN_START_SPACING_BITMASK;
808     }
809     /* not Allow HT Operation */
810     else
811     {
812         uHtCapabilites = 0;
813     }
814 
815     return cmdBld_CfgSetFwHtCapabilities (pTWD->hCmdBld,
816                                           uHtCapabilites,
817                                           tMacAddress,
818                                           uAmpduMaxLeng,
819                                           uAmpduMinSpac,
820                                           NULL,
821                                           NULL);
822 }
823 
TWD_CfgSetFwHtInformation(TI_HANDLE hTWD,Tdot11HtInformationUnparse * pHtInformationIe)824 TI_STATUS TWD_CfgSetFwHtInformation (TI_HANDLE hTWD, Tdot11HtInformationUnparse *pHtInformationIe)
825 {
826     TTwd        *pTWD           = (TTwd *)hTWD;
827     TI_UINT8    uRifsMode;
828     TI_UINT8    uHtProtection;
829     TI_UINT8    uGfProtection;
830     TI_UINT8    uHtTxBurstLimit;
831     TI_UINT8    uDualCtsProtection;
832 
833     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgSetFwHtInformation: called\n");
834 
835     uRifsMode = (pHtInformationIe->aHtInformationIe[1] & HT_INF_RIFS_MOD_BITMASK) >> 3;
836 
837     uHtProtection = (pHtInformationIe->aHtInformationIe[2] & HT_INF_OPERATION_MOD_BITMASK);
838 
839     uGfProtection = (pHtInformationIe->aHtInformationIe[2] & HT_INF_NON_GF_PRES_BITMASK) >> 2;
840 
841     uHtTxBurstLimit = 0; /* not in use */
842 
843     uDualCtsProtection = (pHtInformationIe->aHtInformationIe[4] & HT_INF_DUAL_CTS_PROTECTION_BITMASK) >> 7;
844 
845     return cmdBld_CfgSetFwHtInformation (pTWD->hCmdBld,
846                                          uRifsMode,
847                                          uHtProtection,
848                                          uGfProtection,
849                                          uHtTxBurstLimit,
850                                          uDualCtsProtection,
851                                          NULL,
852                                          NULL);
853 }
854 
TWD_CfgSetBaInitiator(TI_HANDLE hTWD,TI_UINT8 uTid,TI_UINT8 uState,TMacAddr tRa,TI_UINT16 uWinSize,TI_UINT16 uInactivityTimeout)855 TI_STATUS TWD_CfgSetBaInitiator (TI_HANDLE hTWD,
856                                  TI_UINT8 uTid,
857                                  TI_UINT8 uState,
858                                  TMacAddr tRa,
859                                  TI_UINT16 uWinSize,
860                                  TI_UINT16 uInactivityTimeout)
861 
862 {
863 	TTwd *pTWD = (TTwd *)hTWD;
864 
865     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgSetBaInitiator: called\n");
866 
867     return cmdBld_CfgSetBaSession (pTWD->hCmdBld,
868                                    ACX_BA_SESSION_INITIATOR_POLICY,
869                                    uTid,
870                                    uState,
871                                    tRa,
872                                    uWinSize,
873                                    uInactivityTimeout,
874                                    NULL,
875                                    NULL);
876 }
877 
TWD_CfgSetBaReceiver(TI_HANDLE hTWD,TI_UINT8 uTid,TI_UINT8 uState,TMacAddr tRa,TI_UINT16 uWinSize)878 TI_STATUS TWD_CfgSetBaReceiver (TI_HANDLE hTWD,
879                                 TI_UINT8 uTid,
880                                 TI_UINT8 uState,
881                                 TMacAddr tRa,
882                                 TI_UINT16 uWinSize)
883 {
884     TTwd *pTWD = (TTwd *)hTWD;
885 
886     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CfgSetBaReceiver: called\n");
887 
888     return cmdBld_CfgSetBaSession (pTWD->hCmdBld,
889                                    ACX_BA_SESSION_RESPONDER_POLICY,
890                                    uTid,
891                                    uState,
892                                    tRa,
893                                    uWinSize,
894                                    0,
895                                    (void *)NULL,
896                                    (TI_HANDLE)NULL);
897 }
898 
TWD_CloseAllBaSessions(TI_HANDLE hTWD)899 void TWD_CloseAllBaSessions(TI_HANDLE hTWD)
900 {
901     TTwd        *pTWD = (TTwd *)hTWD;
902     TI_UINT32    i;
903 
904     TRACE0(pTWD->hReport, REPORT_SEVERITY_INFORMATION , "TWD_CloseAllBaSessions: called\n");
905 
906     /* close all BA sessions */
907     for(i=0; i <MAX_NUM_OF_802_1d_TAGS; ++i)
908     {
909         RxQueue_CloseBaSession(pTWD->hRxQueue, i);
910     }
911 }
912 
TWD_WdExpireEvent(TI_HANDLE hTWD)913 ETxnStatus TWD_WdExpireEvent(TI_HANDLE hTWD)
914 {
915     TTwd *pTWD = (TTwd*)hTWD;
916 
917 	if ((pTWD->fFailureEventCb != NULL) && (pTWD->hFailureEventCb != NULL))
918 	{
919         pTWD->fFailureEventCb(pTWD->hFailureEventCb, HW_WD_EXPIRE);
920 	}
921 
922     return TXN_STATUS_COMPLETE;
923 }
924