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