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