TWD/Ctrl/CmdBldCfgIE.c
changeset 0 10c42ec6c05f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TWD/Ctrl/CmdBldCfgIE.c	Tue Jun 29 12:34:26 2010 +0100
@@ -0,0 +1,2043 @@
+/*
+ * CmdBldCfgIE.c
+ *
+ * Copyright(c) 1998 - 2010 Texas Instruments. All rights reserved.      
+ * All rights reserved.      
+ * 
+ * This program and the accompanying materials are made available under the 
+ * terms of the Eclipse Public License v1.0 or BSD License which accompanies
+ * this distribution. The Eclipse Public License is available at
+ * http://www.eclipse.org/legal/epl-v10.html and the BSD License is as below.                                   
+ *                                                                       
+ * Redistribution and use in source and binary forms, with or without    
+ * modification, are permitted provided that the following conditions    
+ * are met:                                                              
+ *                                                                       
+ *  * Redistributions of source code must retain the above copyright     
+ *    notice, this list of conditions and the following disclaimer.      
+ *  * Redistributions in binary form must reproduce the above copyright  
+ *    notice, this list of conditions and the following disclaimer in    
+ *    the documentation and/or other materials provided with the         
+ *    distribution.                                                      
+ *  * Neither the name Texas Instruments nor the names of its            
+ *    contributors may be used to endorse or promote products derived    
+ *    from this software without specific prior written permission.      
+ *                                                                       
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+
+/** \file  CmdBldCfgIE.c 
+ *  \brief Command builder. Configuration commands information elements
+ *
+ *  \see   CmdBld.h 
+ */
+#define __FILE_ID__  FILE_ID_92
+#include "osApi.h"
+#include "report.h"
+#include "CmdBld.h"
+#include "CmdQueue_api.h"
+#include "rate.h"
+#include "TwIf.h"
+
+/****************************************************************************
+ *                      cmdBld_CfgIeConfigMemory()
+ ****************************************************************************
+ * DESCRIPTION: Configure wlan hardware memory
+ *
+ * INPUTS:
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIeConfigMemory (TI_HANDLE hCmdBld, TDmaParams *pDmaParams, void *fCb, TI_HANDLE hCb)
+{   
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    ACXConfigMemory_t AcxElm_ConfigMemory;
+    ACXConfigMemory_t *pCfg = &AcxElm_ConfigMemory;
+    
+    os_memoryZero(pCmdBld->hOs, (void *)pCfg, sizeof(*pCfg));
+
+    /*
+     * Set information element header
+     */
+    pCfg->EleHdr.id = ACX_MEM_CFG;
+    pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
+
+    /*
+     * Set configuration fields
+     */
+    pCfg->numStations             = pDmaParams->NumStations;
+    pCfg->rxMemblockNumber        = TWD_RX_MEM_BLKS_NUM;
+    pCfg->txMinimumMemblockNumber = TWD_TX_MIN_MEM_BLKS_NUM;
+    pCfg->numSsidProfiles         = 1;
+    pCfg->totalTxDescriptors      = ENDIAN_HANDLE_LONG(NUM_TX_DESCRIPTORS);
+
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+}
+
+
+/* WoneIndex value when running as station */
+#define STATION_WONE_INDEX                  0
+
+
+/****************************************************************************
+ *                      cmdBld_CfgIeSlotTime()
+ ****************************************************************************
+ * DESCRIPTION: Configure/Interrogate the Slot Time
+ *
+ * INPUTS:  None
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIeSlotTime (TI_HANDLE hCmdBld, TI_UINT8 apSlotTime, void *fCb, TI_HANDLE hCb)                                
+{
+    TCmdBld    *pCmdBld = (TCmdBld *)hCmdBld;
+    ACXSlot_t   AcxElm_SlotTime;
+    ACXSlot_t   *pCfg = &AcxElm_SlotTime;
+
+    /* Set information element header */
+    pCfg->EleHdr.id = ACX_SLOT;
+    pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
+
+    /* Set configuration fields */
+    /* woneIndex is not relevant to station implementation */
+    pCfg->woneIndex = STATION_WONE_INDEX;
+    pCfg->slotTime = apSlotTime;
+
+    TRACE1(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, ": Sending info elem to firmware, Slot Time = %d\n", (TI_UINT8)pCfg->slotTime);
+
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+}
+
+
+/****************************************************************************
+ *                      cmdBld_CfgIePreamble()
+ ****************************************************************************
+ * DESCRIPTION: Configure/Interrogate the Preamble
+ *
+ * INPUTS:  None
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIePreamble (TI_HANDLE hCmdBld, TI_UINT8 preamble, void *fCb, TI_HANDLE hCb)
+{
+    TCmdBld        *pCmdBld = (TCmdBld *)hCmdBld;
+    ACXPreamble_t   AcxElm_Preamble;
+    ACXPreamble_t   *pCfg = &AcxElm_Preamble;
+
+    /* Set information element header */
+    pCfg->EleHdr.id = ACX_PREAMBLE_TYPE;
+    pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
+
+    /* Set configuration fields */
+    /* woneIndex is not relevant to station implementation */
+    pCfg->preamble = preamble;
+
+    TRACE2(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, "ID=%u: preamble=%u\n", pCfg->EleHdr.id, preamble);
+
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+}
+
+
+/****************************************************************************
+ *                      cmdBld_CfgIeRx()
+ ****************************************************************************
+ * DESCRIPTION: Configure/Interrogate RxConfig information element
+ *
+ * INPUTS:  None
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIeRx (TI_HANDLE hCmdBld, TI_UINT32 apRxConfigOption, TI_UINT32 apRxFilterOption, void *fCb, TI_HANDLE hCb)
+{
+    TCmdBld       *pCmdBld = (TCmdBld *)hCmdBld;
+    ACXRxConfig_t   AcxElm_RxConfig;
+    ACXRxConfig_t  *pCfg = &AcxElm_RxConfig;
+
+    /* Set information element header */
+    pCfg->EleHdr.id = ACX_RX_CFG;
+    pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
+
+    /* Set configuration fields */
+    pCfg->ConfigOptions = ENDIAN_HANDLE_LONG(apRxConfigOption);
+    pCfg->FilterOptions = ENDIAN_HANDLE_LONG(apRxFilterOption);
+
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+}
+
+/****************************************************************************
+*                 cmdBld_CfgIeEnableRxDataFilter()
+*****************************************************************************
+* DESCRIPTION: Enables or disables Rx data filtering.
+*
+* INPUTS:  enabled             - 0 to disable data filtering, any other value to enable 
+*          defaultAction       - The default action to take on non-matching packets.
+*
+* OUTPUT:  None
+*
+* RETURNS: TI_OK or TI_NOK
+****************************************************************************/
+TI_STATUS cmdBld_CfgIeEnableRxDataFilter (TI_HANDLE hCmdBld, TI_BOOL enabled, filter_e defaultAction, void *fCb, TI_HANDLE hCb)
+{
+    TCmdBld       *pCmdBld = (TCmdBld *)hCmdBld;
+    DataFilterDefault_t dataFilterDefault;
+    DataFilterDefault_t * pCfg = &dataFilterDefault;
+
+    /* Set information element header */
+    pCfg->EleHdr.id = ACX_ENABLE_RX_DATA_FILTER;
+    pCfg->EleHdr.len = 0;
+
+    TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, ": Rx Data Filter configuration:\n");
+    TRACE2(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, ": enabled = %d, defaultAction = %d\n", enabled, defaultAction);
+
+    /* Set information element configuration fields */
+    pCfg->enable = enabled;
+    pCfg->action = defaultAction;
+    pCfg->EleHdr.len += sizeof(pCfg->enable) + sizeof(pCfg->action);
+
+    TRACE_INFO_HEX(pCmdBld->hReport, (TI_UINT8 *) pCfg, sizeof(dataFilterDefault));
+
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+}
+
+/****************************************************************************
+*                      cmdBld_CfgIeRxDataFilter()
+*****************************************************************************
+* DESCRIPTION: Add/remove Rx Data filter information element.
+*
+* INPUTS:  index               - Index of the Rx Data filter
+*          command             - Add or remove the filter
+*          action              - Action to take on packets matching the pattern
+*          numFieldPatterns    - Number of field patterns in the filter
+*          lenFieldPatterns    - Length of the field pattern series
+*          fieldPatterns       - Series of field patterns
+*
+* OUTPUT:  None
+*
+* RETURNS: TI_OK or TI_NOK
+****************************************************************************/
+TI_STATUS cmdBld_CfgIeRxDataFilter (TI_HANDLE hCmdBld, 
+                                    TI_UINT8 index, 
+                                    TI_UINT8 command, 
+                                    filter_e action, 
+                                    TI_UINT8 numFieldPatterns, 
+                                    TI_UINT8 lenFieldPatterns, 
+                                    TI_UINT8 *pFieldPatterns, 
+                                    void *fCb, 
+                                    TI_HANDLE hCb)
+{
+    TCmdBld       *pCmdBld = (TCmdBld *)hCmdBld;
+    TI_UINT8 dataFilterConfig[sizeof(DataFilterConfig_t) + MAX_DATA_FILTER_SIZE];
+    DataFilterConfig_t * pCfg = (DataFilterConfig_t *) &dataFilterConfig;
+
+    /* Set information element header */
+    pCfg->EleHdr.id = ACX_SET_RX_DATA_FILTER;
+    pCfg->EleHdr.len = 0;
+
+    TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, ": Rx Data Filter configuration:\n");
+    TRACE5(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, ": command = %d, index = %d, action = %d, numFieldPatterns = %d, lenFieldPatterns = %d\n", command, index, action, numFieldPatterns, lenFieldPatterns);
+
+    /* Set information element configuration fields */
+    pCfg->command = command;
+    pCfg->index = index;
+    pCfg->EleHdr.len += sizeof(pCfg->command) + sizeof(pCfg->index);
+
+    /* When removing a filter only the index and command are to be sent */
+    if (command == ADD_FILTER)
+    {
+        pCfg->action = action;
+        pCfg->numOfFields = numFieldPatterns;
+        pCfg->EleHdr.len += sizeof(pCfg->action) + sizeof(pCfg->numOfFields);
+
+        if (pFieldPatterns == NULL)
+        {
+            TRACE0(pCmdBld->hReport, REPORT_SEVERITY_ERROR, ": Null pattern table argument received!\n");
+
+            return PARAM_VALUE_NOT_VALID;
+        }
+
+        os_memoryCopy(pCmdBld->hOs, &pCfg->FPTable, pFieldPatterns, lenFieldPatterns);
+        pCfg->EleHdr.len += lenFieldPatterns;
+    }
+
+    TRACE_INFO_HEX(pCmdBld->hReport, (TI_UINT8 *) pCfg, sizeof(dataFilterConfig));
+
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(dataFilterConfig), fCb, hCb, NULL);
+}
+
+/****************************************************************************
+ *                      cmdBld_CfgIeArpIpFilter()
+ ****************************************************************************
+ * DESCRIPTION: Configure/Interrogate ARP addr table information element for
+ *              ipV4 only
+ *
+ * INPUTS:  None
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIeArpIpFilter (TI_HANDLE hCmdBld, 
+                                   TIpAddr   tIpAddr,
+                                   TI_BOOL   bFilteringEnabled, 
+                                   void      *fCb, 
+                                   TI_HANDLE hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    ACXConfigureIP_t AcxElm_CmdConfigureIP;
+    ACXConfigureIP_t *pCfg = &AcxElm_CmdConfigureIP;
+
+    /* Set information element header */
+    pCfg->EleHdr.id = ACX_ARP_IP_FILTER;
+    pCfg->EleHdr.len = sizeof(ACXConfigureIP_t) - sizeof(EleHdrStruct);
+
+    pCfg->arpFilterEnable = (TI_UINT32)bFilteringEnabled;
+        
+    /* IP address */
+    /* Note that in the case of IPv4 it is assumed that the extra two bytes are zero */
+    IP_COPY (pCfg->address, tIpAddr);
+
+    TRACE3(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, "ID=%u: ip=%x, enable=%u\n", pCfg->EleHdr.id, *((TI_UINT32*)pCfg->address), bFilteringEnabled);
+
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(ACXConfigureIP_t), fCb, hCb, NULL);
+}
+
+
+/****************************************************************************
+ *                      cmdBld_CfgIeGroupAdressTable()
+ ****************************************************************************
+ * DESCRIPTION: Configure/Interrogate Group addr table information element
+ *
+ * INPUTS:  None
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIeGroupAdressTable (TI_HANDLE       hCmdBld, 
+                                        TI_UINT8        numGroupAddrs, 
+                                        TMacAddr        *pGroupAddr, 
+                                        TI_BOOL         bEnabled, 
+                                        void            *fCb, 
+                                        TI_HANDLE       hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    TI_UINT32   i = 0;
+    TI_UINT8   *tmpLoc = NULL;
+    dot11MulticastGroupAddrStart_t  AcxElm_CmdConfigureMulticastIp;
+    dot11MulticastGroupAddrStart_t* pCfg = &AcxElm_CmdConfigureMulticastIp;
+      
+    os_memoryZero (pCmdBld->hOs, (void *)pCfg, sizeof(dot11MulticastGroupAddrStart_t));
+
+    /* Set information element header */
+    pCfg->EleHdr.id = DOT11_GROUP_ADDRESS_TBL;
+    pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
+     
+    pCfg->numOfGroups = numGroupAddrs;
+    pCfg->fltrState = bEnabled;
+    tmpLoc = pCfg->dataLocation;
+        
+    if (NULL != pGroupAddr)
+    {
+        for (i = 0; i < numGroupAddrs; i++) 
+        {
+            MAC_COPY (&tmpLoc[MAC_ADDR_LEN * i], *(pGroupAddr + i));
+
+            TRACE7(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, "cmdBld_CfgIeGroupAdressTable: MAC %x: %x:%x:%x:%x:%x:%x\n", i, tmpLoc[MAC_ADDR_LEN*i+0] , tmpLoc[MAC_ADDR_LEN*i+1] , tmpLoc[MAC_ADDR_LEN*i+2] , tmpLoc[MAC_ADDR_LEN*i+3] , tmpLoc[MAC_ADDR_LEN*i+4] , tmpLoc[MAC_ADDR_LEN*i+5]);
+        }
+    }
+
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(dot11MulticastGroupAddrStart_t), fCb, hCb, NULL);
+    
+}
+
+
+/****************************************************************************
+ *                      cmdBld_CfgIeSgEnable()
+ ****************************************************************************
+ * DESCRIPTION: Enable/Disable the BTH-WLAN  
+ *
+ * INPUTS:  Enable flag
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIeSgEnable (TI_HANDLE hCmdBld, ESoftGeminiEnableModes SoftGeminiEnableModes, void *fCb, TI_HANDLE hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    ACXBluetoothWlanCoEnableStruct  AcxElm_BluetoothWlanEnable;
+    ACXBluetoothWlanCoEnableStruct* pCfg = &AcxElm_BluetoothWlanEnable;
+
+    TRACE1(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, "cmdBld_CfgIeSgEnable: Enable flag = %d\n", SoftGeminiEnableModes);
+
+    /* Set information element header */
+    pCfg->EleHdr.id = ACX_SG_ENABLE;
+    pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
+
+    /* Set enable field */
+    pCfg->coexOperationMode = (TI_UINT8)SoftGeminiEnableModes;
+
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+}
+
+
+/****************************************************************************
+ *                      cmdBld_CfgIeSg()
+ ****************************************************************************
+ * DESCRIPTION: Configure the BTH-WLAN co-exsistance   
+ *
+ * INPUTS:  Configuration structure pointer 
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIeSg (TI_HANDLE hCmdBld, TSoftGeminiParams *pSoftGeminiParam, void *fCb, TI_HANDLE hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    ACXBluetoothWlanCoParamsStruct  AcxElm_BluetoothWlanEnable;
+    ACXBluetoothWlanCoParamsStruct *pCfg = &AcxElm_BluetoothWlanEnable;
+	int i=0;
+    
+    TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, "cmdBld_CfgIeSg. \n");
+
+    /* Set information element header */
+    pCfg->EleHdr.id      		= ACX_SG_CFG;
+    pCfg->EleHdr.len     		= sizeof(*pCfg) - sizeof(EleHdrStruct);
+
+	pCfg->softGeminiParams.paramIdx = pSoftGeminiParam->paramIdx;
+
+
+	for (i=0; i< SOFT_GEMINI_PARAMS_MAX ; i++)
+	{
+		pCfg->softGeminiParams.coexParams[i] = pSoftGeminiParam->coexParams[i];
+	}
+	
+    /* Rate conversion is done in the HAL */
+    pCfg->softGeminiParams.coexParams[SOFT_GEMINI_RATE_ADAPT_THRESH] = rateNumberToBitmap((TI_UINT8)pSoftGeminiParam->coexParams[SOFT_GEMINI_RATE_ADAPT_THRESH]);
+
+	if (pCfg->softGeminiParams.coexParams[SOFT_GEMINI_RATE_ADAPT_THRESH] == 0)
+    {
+        TRACE0(pCmdBld->hReport, REPORT_SEVERITY_ERROR, "coexAPRateAdapationThr is 0, convert to 1MBPS. \n");
+        pCfg->softGeminiParams.coexParams[SOFT_GEMINI_RATE_ADAPT_THRESH] = HW_BIT_RATE_1MBPS;
+    }
+
+     /* Send the configuration command */
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+}
+
+
+/****************************************************************************
+ *                      cmdBld_CfgIeFmCoex()
+ ****************************************************************************
+ * DESCRIPTION: Configure the FM-WLAN co-exsistance parameters  
+ *
+ * INPUTS:  Configuration structure pointer 
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIeFmCoex (TI_HANDLE hCmdBld, TFmCoexParams *pFmCoexParams, void *fCb, TI_HANDLE hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    ACXWlanFmCoexStruct  tFmWlanCoex;
+    ACXWlanFmCoexStruct *pCfg = &tFmWlanCoex;
+    
+    TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, "cmdBld_CfgIeFmCoex\n");
+
+    /* Set information element header */
+    pCfg->EleHdr.id  = ACX_FM_COEX_CFG;
+    pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
+
+    /* Set parameters with endianess handling */
+    pCfg->enable                   = pFmCoexParams->uEnable;                   
+    pCfg->swallowPeriod            = pFmCoexParams->uSwallowPeriod;            
+    pCfg->nDividerFrefSet1         = pFmCoexParams->uNDividerFrefSet1;         
+    pCfg->nDividerFrefSet2         = pFmCoexParams->uNDividerFrefSet2;         
+    pCfg->mDividerFrefSet1         = ENDIAN_HANDLE_WORD(pFmCoexParams->uMDividerFrefSet1);         
+    pCfg->mDividerFrefSet2         = ENDIAN_HANDLE_WORD(pFmCoexParams->uMDividerFrefSet2);         
+    pCfg->coexPllStabilizationTime = ENDIAN_HANDLE_LONG(pFmCoexParams->uCoexPllStabilizationTime); 
+    pCfg->ldoStabilizationTime     = ENDIAN_HANDLE_WORD(pFmCoexParams->uLdoStabilizationTime);     
+    pCfg->fmDisturbedBandMargin    = pFmCoexParams->uFmDisturbedBandMargin;    
+    pCfg->swallowClkDif            = pFmCoexParams->uSwallowClkDif;    
+
+	/* Send the configuration command */
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+}
+
+
+/****************************************************************************
+ *                      cmdBld_CfgIeMemoryMap ()
+ ****************************************************************************
+ * DESCRIPTION: Configure/Interrogate MemoryMap information element
+ *
+ * INPUTS:
+ *      AcxElm_MemoryMap_T *apMap   pointer to the memory map structure
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIeMemoryMap (TI_HANDLE hCmdBld, MemoryMap_t *apMap, void *fCb, TI_HANDLE hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    MemoryMap_t SwapMap;
+    TI_UINT32 *pSwap, *pOrig, i, uMemMapNumFields;
+
+    /* Set information element header */
+    SwapMap.EleHdr.id  = ACX_MEM_MAP;
+    SwapMap.EleHdr.len = sizeof(MemoryMap_t) - sizeof(EleHdrStruct);
+
+    /* Solve endian problem (all fields are 32 bit) */
+    pOrig = (TI_UINT32* )&apMap->codeStart;
+    pSwap = (TI_UINT32* )&SwapMap.codeStart;
+    uMemMapNumFields = (sizeof(MemoryMap_t) - sizeof(EleHdrStruct)) % 4;
+    for (i = 0; i < uMemMapNumFields; i++)
+        pSwap[i] = ENDIAN_HANDLE_LONG(pOrig[i]);
+
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, &SwapMap, sizeof(SwapMap), fCb, hCb, NULL);
+}
+
+
+/****************************************************************************
+ *                      cmdBld_CfgIeAid()
+ ****************************************************************************
+ * DESCRIPTION: Configure/Interrogate the AID info element
+ *
+ * INPUTS:
+ *      TI_UINT16* apAidVal     The AID value
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIeAid (TI_HANDLE hCmdBld, TI_UINT16 apAidVal, void *fCb, TI_HANDLE hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    ACXAid_t    WlanElm_AID;
+    ACXAid_t    *pCfg = &WlanElm_AID;
+
+    /* Set information element header */
+    pCfg->EleHdr.id = ACX_AID;
+    pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
+
+    pCfg->Aid = ENDIAN_HANDLE_WORD(apAidVal);
+
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+}
+
+
+/****************************************************************************
+ *                      cmdBld_CfgIeWakeUpCondition()
+ ****************************************************************************
+ * DESCRIPTION: Configure/Interrogate the power management option
+ *
+ * INPUTS:
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIeWakeUpCondition (TI_HANDLE hCmdBld, TPowerMgmtConfig *pPMConfig, void *fCb, TI_HANDLE hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    WakeUpCondition_t WakeUpCondition;
+    WakeUpCondition_t *pCfg = &WakeUpCondition;
+
+    TRACE1(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "WakeUpCondition :\n                             listenInterval = 0x%X\n", pPMConfig->listenInterval);
+
+    switch (pPMConfig->tnetWakeupOn)
+    {
+        case TNET_WAKE_ON_BEACON:
+            pCfg->wakeUpConditionBitmap = WAKE_UP_EVENT_BEACON_BITMAP;
+            break;
+        case TNET_WAKE_ON_DTIM:
+            pCfg->wakeUpConditionBitmap = WAKE_UP_EVENT_DTIM_BITMAP;
+            break;
+        case TNET_WAKE_ON_N_BEACON:
+            pCfg->wakeUpConditionBitmap = WAKE_UP_EVENT_N_BEACONS_BITMAP;
+            break;
+        case TNET_WAKE_ON_N_DTIM:
+            pCfg->wakeUpConditionBitmap = WAKE_UP_EVENT_N_DTIM_BITMAP;
+            break;
+        default:
+            pCfg->wakeUpConditionBitmap = WAKE_UP_EVENT_BEACON_BITMAP;
+            break;
+    }
+
+    pCfg->listenInterval = pPMConfig->listenInterval;
+
+    TRACE2(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, " cmdBld_wakeUpCondition  tnetWakeupOn=0x%x listenInterval=%d\n",pCfg->wakeUpConditionBitmap,pCfg->listenInterval);
+
+    /* Set information element header */
+    pCfg->EleHdr.id = ACX_WAKE_UP_CONDITIONS;
+    pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
+
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+}
+
+
+/****************************************************************************
+ *                      cmdBld_CfgIeSleepAuth()
+ ****************************************************************************
+ * DESCRIPTION: Configure/Interrogate the power management option
+ *
+ * INPUTS:
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIeSleepAuth (TI_HANDLE hCmdBld, EPowerPolicy eMinPowerLevel, void *fCb, TI_HANDLE hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    ACXSleepAuth_t ACXSleepAuth;
+    ACXSleepAuth_t *pCfg = &ACXSleepAuth;
+    EElpCtrlMode eElpCtrlMode;
+    TI_STATUS status;
+    TI_BOOL bSendSleep = TI_FALSE;
+
+    /* Set the ELP control according to the new power policy */
+    switch (eMinPowerLevel) 
+    {
+    case POWERAUTHO_POLICY_AWAKE:   eElpCtrlMode = ELPCTRL_MODE_KEEP_AWAKE;  break;
+    case POWERAUTHO_POLICY_PD:      eElpCtrlMode = ELPCTRL_MODE_KEEP_AWAKE;  break;
+    case POWERAUTHO_POLICY_ELP:     eElpCtrlMode = ELPCTRL_MODE_NORMAL;      break;
+    default:
+        TRACE1(pCmdBld->hReport, REPORT_SEVERITY_ERROR, " - Param value is not supported, %d\n", eMinPowerLevel);
+        return TI_NOK;
+
+    }
+
+    /* Set the ELP mode only if there is a change */
+    if (pCmdBld->uLastElpCtrlMode != eElpCtrlMode)
+    {
+        pCmdBld->uLastElpCtrlMode = eElpCtrlMode;
+		if (eElpCtrlMode == ELPCTRL_MODE_KEEP_AWAKE)
+		{
+			twIf_Awake(pCmdBld->hTwIf);
+		}
+		else
+		{
+            /* Remeber to change HW to sleep mode */
+            bSendSleep = TI_TRUE;
+		}
+    }
+
+    /* In the info element the enums are in reverse */
+    switch (eMinPowerLevel)
+    {
+        case POWERAUTHO_POLICY_ELP:
+            pCfg->sleepAuth = 2;
+            break;
+        case POWERAUTHO_POLICY_AWAKE:
+            pCfg->sleepAuth = 0;
+            break;
+        default:
+            pCfg->sleepAuth = eMinPowerLevel;
+    }
+
+    TRACE1(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, " cmdBld_MinPowerLevelSet  sleepAuth=%d\n", eMinPowerLevel);
+
+    /* Set information element header*/
+    pCfg->EleHdr.id = ACX_SLEEP_AUTH;
+    pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
+
+    status = cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+
+    if (bSendSleep) {
+        twIf_Sleep(pCmdBld->hTwIf);
+    }
+
+    return status;
+}
+
+
+/****************************************************************************
+ *                      cmdBld_CfgIeBcnBrcOptions()
+ ****************************************************************************
+ * DESCRIPTION: Configure/Interrogate the power management option
+ *
+ * INPUTS:
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIeBcnBrcOptions (TI_HANDLE hCmdBld, TPowerMgmtConfig *pPMConfig, void *fCb, TI_HANDLE hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    ACXBeaconAndBroadcastOptions_t ACXBeaconAndBroadcastOptions;
+    ACXBeaconAndBroadcastOptions_t *pCfg = &ACXBeaconAndBroadcastOptions;
+
+    pCfg->beaconRxTimeOut = pPMConfig->BcnBrcOptions.BeaconRxTimeout;
+    pCfg->broadcastTimeOut = pPMConfig->BcnBrcOptions.BroadcastRxTimeout;
+    pCfg->rxBroadcastInPS = pPMConfig->BcnBrcOptions.RxBroadcastInPs;
+	pCfg->consecutivePsPollDeliveryFailureThr = pPMConfig->ConsecutivePsPollDeliveryFailureThreshold;
+
+
+    TRACE4(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, " cmdBld_BcnBrcOptions  BeaconRxTimeout=%d BroadcastRxTimeout=%d RxBroadcastInPs=0x%x, consecutivePsPollDeliveryFailureThr=%d\n",							 pCfg->beaconRxTimeOut,pCfg->broadcastTimeOut,							 pCfg->rxBroadcastInPS, pCfg->consecutivePsPollDeliveryFailureThr);
+
+    /* Set information element header */
+    pCfg->EleHdr.id = ACX_BCN_DTIM_OPTIONS;
+    pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
+
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+}
+
+
+/****************************************************************************
+ *                      cmdBld_CfgIeFeatureConfig()
+                                    ACXBeaconAndBroadcastOptions_t* pWlanElm_BcnBrcOptions,
+ ****************************************************************************
+ * DESCRIPTION: Configure the feature config info element
+ *
+ * INPUTS:
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIeFeatureConfig (TI_HANDLE hCmdBld, TI_UINT32 options, TI_UINT32 uDataFlowOptions, void *fCb, TI_HANDLE hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    ACXFeatureConfig_t  WlanElm_FeatureConfig;
+    ACXFeatureConfig_t  *pCfg = &WlanElm_FeatureConfig;
+
+    /* Set information element header */
+    pCfg->EleHdr.id = ACX_FEATURE_CFG;
+    pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
+
+    /* Set fields */
+    pCfg->Options = ENDIAN_HANDLE_LONG(options);
+    pCfg->dataflowOptions = ENDIAN_HANDLE_LONG(uDataFlowOptions);
+
+    TRACE3(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, "ID=%u: option=0x%x, def.option=0x%x\n", pCfg->EleHdr.id, options, uDataFlowOptions);
+
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+}
+
+
+/****************************************************************************
+ *                      cmdBld_CfgIeTxPowerDbm ()
+ ****************************************************************************
+ * DESCRIPTION: Set the Tx power in Dbm units.
+ *
+ * INPUTS:
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIeTxPowerDbm (TI_HANDLE hCmdBld, TI_UINT8 uTxPowerDbm , void *fCb, TI_HANDLE hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    dot11CurrentTxPowerStruct dot11CurrentTxPower;
+    dot11CurrentTxPowerStruct *pCfg = &dot11CurrentTxPower;
+
+   TRACE1( pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, " uTxPowerDbm = %d\n", uTxPowerDbm);
+
+
+    /* Set information element header*/
+    pCfg->EleHdr.id = DOT11_CUR_TX_PWR;
+    pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
+
+    pCfg->dot11CurrentTxPower = uTxPowerDbm;
+
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+}
+
+
+/****************************************************************************
+ *                      cmdBld_CfgIeStatisitics ()
+ ****************************************************************************
+ * DESCRIPTION: Set the ACX statistics counters to zero.
+ *
+ * INPUTS:
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIeStatisitics (TI_HANDLE hCmdBld, void *fCb, TI_HANDLE hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    ACXStatistics_t  acx;
+    ACXStatistics_t  *pCfg = &acx;
+
+    /* Set information element header */
+    pCfg->EleHdr.id  = ACX_STATISTICS;
+    pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
+
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+}
+
+
+/****************************************************************************
+ *                      cmdBld_CfgIeTid()
+ ****************************************************************************
+ * DESCRIPTION: Write the Queue configuration (For Quality Of Service)
+ *
+ * INPUTS:
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIeTid (TI_HANDLE hCmdBld, TQueueTrafficParams* pQtrafficParams, void *fCb, TI_HANDLE hCb)
+                                          
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    ACXTIDConfig_t    TrafficCategoryCfg;
+    ACXTIDConfig_t   *pCfg = &TrafficCategoryCfg;
+
+    os_memoryZero (pCmdBld->hOs, (void *)pCfg, sizeof(*pCfg));
+
+    /*
+     * Set information element header
+     * ==============================
+     */
+    pCfg->EleHdr.id = ACX_TID_CFG;
+    pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
+
+    /*
+     * Set information element Data
+     * ==============================
+     */
+    pCfg->queueID       = pQtrafficParams->queueID;
+    pCfg->channelType   = pQtrafficParams->channelType;
+    pCfg->tsid          = pQtrafficParams->tsid;
+    pCfg->psScheme      = pQtrafficParams->psScheme; 
+    pCfg->APSDConf[0]   = pQtrafficParams->APSDConf[0];
+    pCfg->APSDConf[1]   = pQtrafficParams->APSDConf[1];
+
+    TRACE7(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "ID=%u: queue-id=%u, chan-type=%u, tsid=%u, ps-scheme=%u, apsd-1=0x%x, apsd-2=0x%x\n", pCfg->EleHdr.id, pCfg->queueID, pCfg->channelType, pCfg->tsid, pCfg->psScheme, pCfg->APSDConf[0], pCfg->APSDConf[1]);
+
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+}
+
+
+/****************************************************************************
+ *                      cmdBld_CfgIeAcParams()
+ ****************************************************************************
+ * DESCRIPTION: Write the AC configuration (For Quality Of Service)
+ *
+ * INPUTS:
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIeAcParams (TI_HANDLE hCmdBld, TAcQosParams *pAcQosParams, void *fCb, TI_HANDLE hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    ACXAcCfg_t     AcCfg;
+    ACXAcCfg_t    *pCfg  = &AcCfg;
+
+    os_memoryZero (pCmdBld->hOs, (void *)pCfg, sizeof(*pCfg));
+
+    /*
+     * Set information element header
+     * ==============================
+     */
+    pCfg->EleHdr.id = ACX_AC_CFG;
+    pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
+
+    /*
+     * Set information element Data
+     * ==============================
+     */
+
+    pCfg->ac        = pAcQosParams->ac;
+    pCfg->aifsn     = pAcQosParams->aifsn;
+    pCfg->cwMax     = ENDIAN_HANDLE_WORD(pAcQosParams->cwMax);
+    pCfg->cwMin     = pAcQosParams->cwMin;
+    pCfg->txopLimit = ENDIAN_HANDLE_WORD(pAcQosParams->txopLimit);
+
+    TRACE6(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, "ID=%u: ac= %u, aifsn=%u, cw-max=%u, cw-min=%u, txop=%u\n", pCfg->EleHdr.id, pAcQosParams->ac, pAcQosParams->aifsn, pAcQosParams->cwMax, pAcQosParams->cwMin, pAcQosParams->txopLimit);
+
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+}
+
+
+/****************************************************************************
+ *                      cmdBld_CfgIePsRxStreaming()
+ ****************************************************************************
+ * DESCRIPTION: Write the AC PS-Rx-Streaming
+ *
+ * INPUTS:
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIePsRxStreaming (TI_HANDLE hCmdBld, TPsRxStreaming *pPsRxStreaming, void *fCb, TI_HANDLE hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    ACXPsRxStreaming_t  tStreamingCfg;
+    ACXPsRxStreaming_t *pCfg  = &tStreamingCfg;
+
+    os_memoryZero (pCmdBld->hOs, (void *)pCfg, sizeof(*pCfg));
+
+    /*
+     * Set information element header
+     * ==============================
+     */
+    pCfg->EleHdr.id = ACX_PS_RX_STREAMING;
+    pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
+
+    /*
+     * Set information element Data
+     * ============================
+     */
+    pCfg->TID          = (TI_UINT8)pPsRxStreaming->uTid;
+    pCfg->rxPSDEnabled = (TI_UINT8)pPsRxStreaming->bEnabled;
+    pCfg->streamPeriod = (TI_UINT8)pPsRxStreaming->uStreamPeriod;
+    pCfg->txTimeout    = (TI_UINT8)pPsRxStreaming->uTxTimeout;
+
+    TRACE5(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, "ID=%u: tid= %u, enable=%u, streamPeriod=%u, txTimeout=%u\n", pCfg->EleHdr.id, pCfg->TID, pCfg->rxPSDEnabled, pCfg->streamPeriod, pCfg->txTimeout);
+
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+}
+
+
+/****************************************************************************
+ *                      cmdBld_CfgIePacketDetectionThreshold()
+ ****************************************************************************
+ * DESCRIPTION:  Set the PacketDetection threshold
+ *
+ * INPUTS:  
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIePacketDetectionThreshold (TI_HANDLE hCmdBld, TI_UINT32 pdThreshold, void *fCb, TI_HANDLE hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    ACXPacketDetection_t  PacketDetectionThresholdCfg;
+    ACXPacketDetection_t *pCfg = &PacketDetectionThresholdCfg;
+
+    /*
+     * Set information element header
+     * ==============================
+     */
+    pCfg->EleHdr.id = ACX_PD_THRESHOLD;
+    pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
+
+    /*
+     * Set information element Data
+     * ==============================
+     */
+    pCfg->pdThreshold = ENDIAN_HANDLE_LONG(pdThreshold);
+
+    TRACE2(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, ": pdThreshold = 0x%x , len = 0x%x \n",pCfg->pdThreshold,pCfg->EleHdr.len);
+
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+}
+
+
+
+
+/****************************************************************************
+ *                      cmdBld_CfgIeBeaconFilterOpt()
+ ****************************************************************************
+ * DESCRIPTION: Configure/Interrogate the beacon filtering option
+ *
+ * INPUTS:
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIeBeaconFilterOpt (TI_HANDLE hCmdBld, TI_UINT8 beaconFilteringStatus, TI_UINT8 numOfBeaconsToBuffer, void *fCb, TI_HANDLE hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    ACXBeaconFilterOptions_t  ACXBeaconFilterOptions;
+    ACXBeaconFilterOptions_t *pCfg = &ACXBeaconFilterOptions;
+    
+    pCfg->enable = beaconFilteringStatus;
+    pCfg->maxNumOfBeaconsStored = numOfBeaconsToBuffer;
+
+    /* Set information element header */
+    pCfg->EleHdr.id = ACX_BEACON_FILTER_OPT;
+    pCfg->EleHdr.len = sizeof(ACXBeaconFilterOptions_t) - sizeof(EleHdrStruct);
+
+    TRACE3(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "ID=%u: enable=%u, num-stored=%u\n", pCfg->EleHdr.id, beaconFilteringStatus, numOfBeaconsToBuffer);
+
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(ACXBeaconFilterOptions_t), fCb, hCb, NULL);
+}
+/****************************************************************************
+ *                      cmdBld_CfgIeRateMngDbg()
+ ****************************************************************************
+ * DESCRIPTION: Configure the rate managment params
+ * INPUTS:
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+
+TI_STATUS cmdBld_CfgIeRateMngDbg (TI_HANDLE hCmdBld, RateMangeParams_t *pRateMngParams, void *fCb, TI_HANDLE hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    AcxRateAdaptParams  RateMng;    
+    AcxRateAdaptParams *pCfg = &RateMng;
+	int i;
+
+    /* Set information element header */
+    pCfg->EleHdr.id = ACX_SET_RATE_MAMAGEMENT_PARAMS;
+    pCfg->EleHdr.len = sizeof(AcxRateMangeParams) - sizeof(EleHdrStruct);
+
+    
+    TRACE2(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "ID=%u, index=%d \n",pCfg->EleHdr.id,pRateMngParams->paramIndex);
+
+	pCfg->paramIndex = pRateMngParams->paramIndex;
+
+	pCfg->InverseCuriosityFactor[0] = pRateMngParams->InverseCuriosityFactor[0];
+    pCfg->InverseCuriosityFactor[1] = pRateMngParams->InverseCuriosityFactor[1];
+    pCfg->MaxPer = pRateMngParams->MaxPer;
+	pCfg->PerAdd = pRateMngParams->PerAdd;
+	pCfg->PerAddShift = pRateMngParams->PerAddShift;
+	pCfg->PerAlphaShift = pRateMngParams->PerAlphaShift;
+	pCfg->PerBeta1Shift = pRateMngParams->PerBeta1Shift;
+	pCfg->PerBeta2Shift = pRateMngParams->PerBeta2Shift;
+	pCfg->PerTh1 = pRateMngParams->PerTh1;
+	pCfg->PerTh2 = pRateMngParams->PerTh2;
+	pCfg->RateCheckDown = pRateMngParams->RateCheckDown;
+	pCfg->RateCheckUp = pRateMngParams->RateCheckUp;
+	pCfg->RateRetryScore = pRateMngParams->RateRetryScore;
+	pCfg->TxFailHighTh = pRateMngParams->TxFailHighTh;
+	pCfg->TxFailLowTh = pRateMngParams->TxFailLowTh;
+    pCfg->PerWeightShift[0] = pRateMngParams->PerWeightShift[0];
+    pCfg->PerWeightShift[1] = pRateMngParams->PerWeightShift[1];
+    pCfg->TpWeightShift[0] = pRateMngParams->TpWeightShift[0];
+    pCfg->TpWeightShift[1] = pRateMngParams->TpWeightShift[1];
+    
+	for (i=0 ; i< 13 ; i++)
+	{
+		pCfg->RateRetryPolicy[i] = pRateMngParams->RateRetryPolicy[i];
+	}
+   
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(AcxRateMangeParams), fCb, hCb, NULL);
+}
+
+
+
+/****************************************************************************
+ *                     cmdBld_CfgIeBeaconFilterTable
+ ****************************************************************************
+ * DESCRIPTION: Configure/Interrogate the beacon filter IE table
+ *
+ * INPUTS:
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIeBeaconFilterTable (TI_HANDLE hCmdBld,
+                                         TI_UINT8   uNumberOfIEs, 
+                                         TI_UINT8  *pIETable,
+                                         TI_UINT8   uIETableSize, 
+                                         void      *fCb, 
+                                         TI_HANDLE  hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    ACXBeaconFilterIETable_t beaconFilterIETableStruct;
+    ACXBeaconFilterIETable_t *pCfg = &beaconFilterIETableStruct;
+    TI_UINT32 counter;
+    
+    if (NULL == pIETable) 
+    {
+        return PARAM_VALUE_NOT_VALID;
+    }
+
+    pCfg->EleHdr.id = ACX_BEACON_FILTER_TABLE;
+    pCfg->EleHdr.len = uIETableSize + 1; 
+    pCfg->NumberOfIEs = uNumberOfIEs;
+        
+    os_memoryZero (pCmdBld->hOs, (void *)pCfg->IETable, BEACON_FILTER_TABLE_MAX_SIZE);
+    os_memoryCopy (pCmdBld->hOs, (void *)pCfg->IETable, (void *)pIETable, uIETableSize);
+        
+    TRACE3(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "ID=%u: num-ie=%u, table-size=%u\n", pCfg->EleHdr.id, uNumberOfIEs, uIETableSize);
+
+TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, "Beacon IE Table:\n");
+    for (counter = 0; counter < uIETableSize; counter++)
+    {
+TRACE1(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, "%2x ", pIETable[counter]);
+	}
+TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, "\n");
+        
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(ACXBeaconFilterIETable_t), fCb, hCb, NULL);
+}
+ 
+/****************************************************************************
+ *                     cmdBld_CfgCoexActivity
+ ****************************************************************************
+ * DESCRIPTION: Configure/Interrogate the Coex activity IE 
+ *
+ * INPUTS:
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIeCoexActivity (TI_HANDLE hCmdBld,
+                                         TCoexActivity  *pCoexActivity,
+                                         void      *fCb, 
+                                         TI_HANDLE  hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    ACXCoexActivityIE_t coexActivityIEStruct;
+    ACXCoexActivityIE_t *pCfg = &coexActivityIEStruct;
+    
+    if (NULL == pCoexActivity) 
+    {
+        return PARAM_VALUE_NOT_VALID;
+    }
+
+    pCfg->EleHdr.id = ACX_COEX_ACTIVITY;
+    pCfg->EleHdr.len = sizeof(ACXCoexActivityIE_t) - sizeof(EleHdrStruct);
+        
+    TRACE1(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, "CoexActivity: ID=0x%x\n", pCfg->EleHdr.id);
+
+    pCfg->coexIp          = pCoexActivity->coexIp;
+    pCfg->activityId      = pCoexActivity->activityId;
+    pCfg->defaultPriority = pCoexActivity->defaultPriority;
+    pCfg->raisedPriority  = pCoexActivity->raisedPriority;
+    pCfg->minService      = ENDIAN_HANDLE_WORD(pCoexActivity->minService);
+    pCfg->maxService      = ENDIAN_HANDLE_WORD(pCoexActivity->maxService);
+
+    TRACE6(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, "CoexActivity: 0x%02x 0x%02x - 0x%02x 0x%02x 0x%04x 0x%04x\n", 
+            pCfg->coexIp,
+            pCfg->activityId,
+            pCfg->defaultPriority,
+            pCfg->raisedPriority,
+            pCfg->minService,
+            pCfg->maxService);
+ 
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+}
+
+/****************************************************************************
+ *                      cmdBld_CfgIeCcaThreshold()
+ ****************************************************************************
+ * DESCRIPTION: Configure/Interrogate the Slot Time
+ *
+ * INPUTS:  None
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIeCcaThreshold (TI_HANDLE hCmdBld, TI_UINT16 ccaThreshold, void *fCb, TI_HANDLE hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    ACXEnergyDetection_t AcxElm_CcaThreshold;
+    ACXEnergyDetection_t *pCfg = &AcxElm_CcaThreshold;
+
+    /* Set information element header */
+    pCfg->EleHdr.id = ACX_CCA_THRESHOLD;
+    pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
+    
+    pCfg->rxCCAThreshold = ENDIAN_HANDLE_WORD(ccaThreshold);
+
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+}
+
+
+/****************************************************************************
+ *                      cmdBld_CfgIeEventMask()
+ ****************************************************************************
+ * DESCRIPTION: Change the Event Vector Mask in the FW
+ * 
+ * INPUTS: MaskVector   The Updated Vector Mask
+ * 
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIeEventMask (TI_HANDLE hCmdBld, TI_UINT32 mask, void *fCb, TI_HANDLE hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+
+    ACXEventMboxMask_t EventMboxData;
+    ACXEventMboxMask_t *pCfg = &EventMboxData;
+
+    /* Set information element header*/
+    pCfg->EleHdr.id = ACX_EVENT_MBOX_MASK; 
+    pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
+    pCfg->lowEventMask = ENDIAN_HANDLE_LONG(mask);
+    pCfg->highEventMask = ENDIAN_HANDLE_LONG(0xffffffff); /* Not in Use */
+
+    TRACE0(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "cmdBld_CfgIeEventMask:\n");
+
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+}
+
+
+/****************************************************************************
+ *                      cmdBld_CfgIeMaxTxRetry()
+ ****************************************************************************
+ * DESCRIPTION: Configure the Max Tx Retry parameters
+ *
+ * INPUTS:  None
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIeMaxTxRetry (TI_HANDLE hCmdBld,
+                                  TRroamingTriggerParams *pRoamingTriggerCmd,
+                                  void      *fCb, 
+                                  TI_HANDLE hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    ACXConsTxFailureTriggerParameters_t AcxElm_SetMaxTxRetry;
+    ACXConsTxFailureTriggerParameters_t* pCfg = &AcxElm_SetMaxTxRetry;
+
+    pCfg->maxTxRetry = pRoamingTriggerCmd->maxTxRetry;
+
+    /* Set information element header */
+    pCfg->EleHdr.id = ACX_CONS_TX_FAILURE;
+    pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
+    
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+}
+
+
+/****************************************************************************
+ *                      cmdBld_CfgIeConnMonitParams()
+ ****************************************************************************
+ * DESCRIPTION: Configure the Bss Lost Timeout & TSF miss threshold
+ *
+ * INPUTS:  None
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIeConnMonitParams (TI_HANDLE hCmdBld, TRroamingTriggerParams *pRoamingTriggerCmd, void *fCb, TI_HANDLE hCb)                                           
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    AcxConnectionMonitorOptions  AcxElm_SetBssLossTsfThreshold;
+    AcxConnectionMonitorOptions* pCfg = &AcxElm_SetBssLossTsfThreshold;
+
+    pCfg->BSSLossTimeout     = ENDIAN_HANDLE_LONG(pRoamingTriggerCmd->BssLossTimeout);
+    pCfg->TSFMissedThreshold = ENDIAN_HANDLE_LONG(pRoamingTriggerCmd->TsfMissThreshold);
+
+    /* Set information element header */
+    pCfg->EleHdr.id  = ACX_CONN_MONIT_PARAMS;
+    pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
+    
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+}
+
+
+/****************************************************************************
+ *                      cmdBld_CfgIeTxRatePolicy()
+ ****************************************************************************
+ * DESCRIPTION: Write the TxRateClass configuration 
+ *
+ * INPUTS:
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIeTxRatePolicy (TI_HANDLE hCmdBld, TTxRatePolicy *pTxRatePolicy, void *fCb, TI_HANDLE hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    ACXTxAttrClasses_t  TxClassCfg;
+    ACXTxAttrClasses_t *pCfg  = &TxClassCfg;
+    TI_UINT8 PolicyId;
+    
+    os_memoryZero (pCmdBld->hOs, (void *)pCfg, sizeof(*pCfg));
+
+    /*
+     * Set information element header
+     * ==============================
+     */
+    pCfg->EleHdr.id = ACX_RATE_POLICY;
+    pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
+    pCfg->numOfClasses = pTxRatePolicy->numOfRateClasses;
+
+    for (PolicyId = 0; PolicyId < pTxRatePolicy->numOfRateClasses; PolicyId++)
+    {
+        os_memoryCopy (pCmdBld->hOs,
+                       (void *)&(pCfg->rateClasses[PolicyId]),
+                       (void *)&(pTxRatePolicy->rateClass[PolicyId]),
+                       sizeof(TTxRateClass));
+    }
+    
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+}
+
+
+/****************************************************************************
+ *                      cmdBld_CfgIeRtsThreshold()
+ ****************************************************************************
+ * DESCRIPTION: Configure the RTS threshold
+ *
+ * INPUTS:  None
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIeRtsThreshold (TI_HANDLE hCmdBld, TI_UINT16 uRtsThreshold, void *fCb, TI_HANDLE hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    dot11RTSThreshold_t AcxElm_RtsThreshold;
+    dot11RTSThreshold_t *pCfg = &AcxElm_RtsThreshold;
+
+    /* Set information element header */
+    pCfg->EleHdr.id = DOT11_RTS_THRESHOLD;
+    pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
+
+    pCfg->RTSThreshold = ENDIAN_HANDLE_WORD(uRtsThreshold);
+
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+}
+
+
+/****************************************************************************
+ *                      cmdBld_CfgIeRtsThreshold()
+ ****************************************************************************
+ * DESCRIPTION: Configure the tx fragmentation threshold
+ *
+ * INPUTS:  None
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIeFragmentThreshold (TI_HANDLE hCmdBld, TI_UINT16 uFragmentThreshold, void *fCb, TI_HANDLE hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    ACXFRAGThreshold_t AcxElm_FragmentThreshold;
+    ACXFRAGThreshold_t *pCfg = &AcxElm_FragmentThreshold;
+
+    /* Set information element header */
+    pCfg->EleHdr.id = ACX_FRAG_CFG;
+    pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
+
+    pCfg->fragThreshold = ENDIAN_HANDLE_WORD(uFragmentThreshold);
+
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+}
+
+
+/****************************************************************************
+ *                      cmdBld_CfgIePmConfig()
+ ****************************************************************************
+ * DESCRIPTION: Configure PM parameters
+ *
+ * INPUTS:  None
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIePmConfig (TI_HANDLE   hCmdBld, 
+                                TI_UINT32   uHostClkSettlingTime,
+                                TI_UINT8    uHostFastWakeupSupport, 
+                                void *      fCb, 
+                                TI_HANDLE   hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    ACXPMConfig_t tPmConfig;
+    ACXPMConfig_t *pCfg = &tPmConfig;
+
+    /* Set information element header*/
+    pCfg->EleHdr.id  = ACX_PM_CONFIG;
+    pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
+
+    pCfg->hostClkSettlingTime   = uHostClkSettlingTime;
+    pCfg->hostFastWakeupSupport = uHostFastWakeupSupport;
+
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+}
+
+
+/****************************************************************************
+ *                      cmdBld_CfgIeTxCmpltPacing()
+ ****************************************************************************
+ * DESCRIPTION: Configure Tx-Complete interrupt pacing to FW
+ *
+ * INPUTS:  None
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIeTxCmpltPacing (TI_HANDLE  hCmdBld,
+                                     TI_UINT16  uTxCompletePacingThreshold,
+                                     TI_UINT16  uTxCompletePacingTimeout,
+                                     void *     fCb, 
+                                     TI_HANDLE  hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    ACXTxConfigOptions_t  tTxCmpltPacing;
+    ACXTxConfigOptions_t  *pCfg = &tTxCmpltPacing;
+
+    /* Set information element header */
+    pCfg->EleHdr.id  = ACX_TX_CONFIG_OPT;
+    pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
+
+    pCfg->txCompleteThreshold = ENDIAN_HANDLE_WORD(uTxCompletePacingThreshold);
+    pCfg->txCompleteTimeout   = ENDIAN_HANDLE_WORD(uTxCompletePacingTimeout);
+
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+}
+
+
+/****************************************************************************
+ *                      cmdBld_CfgIeRxIntrPacing()
+ ****************************************************************************
+ * DESCRIPTION: Configure Rx-Complete interrupt pacing to FW
+ *
+ * INPUTS:  None
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIeRxIntrPacing (TI_HANDLE  hCmdBld,
+                                    TI_UINT16  uRxIntrPacingThreshold,
+                                    TI_UINT16  uRxIntrPacingTimeout,
+                                    void *     fCb, 
+                                    TI_HANDLE  hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    ACXRxBufferingConfig_t  tRxIntrPacing;
+    ACXRxBufferingConfig_t  *pCfg = &tRxIntrPacing;
+
+    /* Set information element header */
+    pCfg->EleHdr.id  = ACX_RX_CONFIG_OPT;
+    pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
+
+    pCfg->rxPktThreshold    = ENDIAN_HANDLE_WORD(uRxIntrPacingThreshold);
+    pCfg->rxCompleteTimeout = ENDIAN_HANDLE_WORD(uRxIntrPacingTimeout);
+    pCfg->rxMblkThreshold   = ENDIAN_HANDLE_WORD(0xFFFF);    /* Set to maximum so it has no effect (only the PktThreshold is used) */
+    pCfg->rxQueueType       = RX_QUEUE_TYPE_RX_LOW_PRIORITY; /* Only low priority data packets are buffered */
+
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+}
+
+
+/****************************************************************************
+*                      cmdBld_CfgIeCtsProtection()
+ ****************************************************************************
+ * DESCRIPTION: Configure The Cts to self feature
+ *
+ * INPUTS:  None
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIeCtsProtection (TI_HANDLE hCmdBld, TI_UINT8 ctsProtection, void *fCb, TI_HANDLE hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    ACXCtsProtection_t AcxElm_CtsToSelf;
+    ACXCtsProtection_t *pCfg = &AcxElm_CtsToSelf;
+
+    /* Set information element header*/
+    pCfg->EleHdr.id = ACX_CTS_PROTECTION;
+    pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
+
+    pCfg->ctsProtectMode = ctsProtection;
+
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+}
+
+
+/****************************************************************************
+ *                      cmdBld_CfgIeRxMsduLifeTime()
+ ****************************************************************************
+ * DESCRIPTION: Configure The Cts to self feature
+ *
+ * INPUTS:  None
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIeRxMsduLifeTime (TI_HANDLE hCmdBld, TI_UINT32 RxMsduLifeTime, void *fCb, TI_HANDLE hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    dot11RxMsduLifeTime_t   AcxElm_RxMsduLifeTime;
+    dot11RxMsduLifeTime_t *pCfg = &AcxElm_RxMsduLifeTime;
+
+    /* Set information element header*/
+    pCfg->EleHdr.id = DOT11_RX_MSDU_LIFE_TIME;
+    pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
+    pCfg->RxMsduLifeTime = RxMsduLifeTime;
+
+    TRACE2(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, ": RxMsduLifeTime = 0x%x, len = 0x%x\n",pCfg->RxMsduLifeTime,pCfg->EleHdr.len);
+
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+}
+
+
+/****************************************************************************
+ *                      cmdBld_CfgIeServicePeriodTimeout()
+ ****************************************************************************
+ * DESCRIPTION: Configure The Rx Time Out
+ *
+ * INPUTS:  None
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIeServicePeriodTimeout (TI_HANDLE hCmdBld, TRxTimeOut* pRxTimeOut, void *fCb, TI_HANDLE hCb)                            
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    ACXRxTimeout_t AcxElm_rxTimeOut;
+    ACXRxTimeout_t *pCfg = &AcxElm_rxTimeOut;
+
+    /* Set information element header*/
+    pCfg->EleHdr.id = ACX_SERVICE_PERIOD_TIMEOUT;
+    pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
+
+    pCfg->PsPollTimeout = pRxTimeOut->psPoll;
+    pCfg->UpsdTimeout   = pRxTimeOut->UPSD;
+
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+}
+
+
+/****************************************************************************
+ *                      cmdBld_CfgIePsWmm()
+ ****************************************************************************
+ * DESCRIPTION: Configure The PS for WMM
+ *
+ * INPUTS:   TI_TRUE  - Configure PS to work on WMM mode - do not send the NULL/PS_POLL 
+ *                   packets even if TIM is set.
+ *           TI_FALSE - Configure PS to work on Non-WMM mode - work according to the 
+ *                   standard
+ *
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIePsWmm (TI_HANDLE hCmdBld, TI_BOOL enableWA, void *fCb, TI_HANDLE hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    ACXConfigPsWmm_t  ConfigPsWmm;
+    ACXConfigPsWmm_t *pCfg = &ConfigPsWmm;
+
+    /*
+     * Set information element header
+     */
+    pCfg->EleHdr.id = ACX_CONFIG_PS_WMM;
+    pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
+
+    pCfg->ConfigPsOnWmmMode = enableWA;
+
+    /* Report the meesage only if we are using the WiFi patch */
+    if (enableWA)
+    {
+        TRACE0(pCmdBld->hReport, REPORT_SEVERITY_CONSOLE, "cmdBld_CfgIePsWmm: PS is on WMM mode\n");
+        WLAN_OS_REPORT(("%s PS is on WMM mode\n",__FUNCTION__));
+    }
+    
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+}
+
+/****************************************************************************
+ *                      cmdBld_CfgIeRssiSnrTrigger()
+ ****************************************************************************
+ * DESCRIPTION: Configure the RSSI/SNR Trigger parameters
+ *
+ * INPUTS:  None
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: OK or NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIeRssiSnrTrigger (TI_HANDLE hCmdBld, RssiSnrTriggerCfg_t *pTriggerParam, void *fCb, TI_HANDLE hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    ACXRssiSnrTriggerCfg_t  tAcxTriggerParameters;
+    ACXRssiSnrTriggerCfg_t *pCfg = &tAcxTriggerParameters;
+
+    pCfg->param.index       = pTriggerParam->index    ;        
+    pCfg->param.threshold   = pTriggerParam->threshold;        
+    pCfg->param.pacing      = pTriggerParam->pacing   ;        
+    pCfg->param.metric      = pTriggerParam->metric   ;        
+    pCfg->param.type        = pTriggerParam->type     ;        
+    pCfg->param.direction   = pTriggerParam->direction;        
+    pCfg->param.hystersis   = pTriggerParam->hystersis;        
+    pCfg->param.enable      = pTriggerParam->enable   ;        
+
+    /* Set information element header */
+    pCfg->EleHdr.id = ACX_RSSI_SNR_TRIGGER;
+    pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
+
+    TRACE8(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "ID=%u: threshold=%u, pacing=%u, metric=%u, type=%u, dir=%u, hyst=%u, enable=%u\n", pTriggerParam->index, pTriggerParam->threshold, pTriggerParam->pacing, pTriggerParam->metric, pTriggerParam->type, pTriggerParam->direction, pTriggerParam->hystersis, pTriggerParam->enable);
+                                             
+    /* Send the configuration command */
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+}
+
+/****************************************************************************
+ *                      cmdBld_CfgIeRssiSnrWeights()
+ ****************************************************************************
+ * DESCRIPTION: Configure the RSSI/SNR Trigger parameters
+ *
+ * INPUTS:  None
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: OK or NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIeRssiSnrWeights (TI_HANDLE hCmdBld, RssiSnrAverageWeights_t *pWeightsParam, void *fCb, TI_HANDLE hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    ACXRssiSnrAverageWeights_t  tAcxAverageWeights;
+    ACXRssiSnrAverageWeights_t *pCfg = &tAcxAverageWeights;
+
+    pCfg->param.rssiBeaconAverageWeight = pWeightsParam->rssiBeaconAverageWeight;        
+    pCfg->param.rssiPacketAverageWeight = pWeightsParam->rssiPacketAverageWeight;        
+    pCfg->param.snrBeaconAverageWeight  = pWeightsParam->snrBeaconAverageWeight ;        
+    pCfg->param.snrPacketAverageWeight  = pWeightsParam->snrPacketAverageWeight ;        
+
+    /* Set information element header */
+    pCfg->EleHdr.id = ACX_RSSI_SNR_WEIGHTS;
+    pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
+
+    TRACE4(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "rssi-beacon-avg-weight=%u, rssi-packet-avg-weight=%u, snr-beacon-avg-weight=%u, snr-packet-avg-weight=%u", pWeightsParam->rssiBeaconAverageWeight, pWeightsParam->rssiPacketAverageWeight, pWeightsParam->snrBeaconAverageWeight, pWeightsParam->snrPacketAverageWeight);
+
+    /* Send the configuration command */
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+}
+
+
+ /*
+ * ----------------------------------------------------------------------------
+ * Function : cmdBld_CfgIeBet
+ *
+ * Input    :   enabled               - 0 to disable BET, 0 to disable BET
+ *              MaximumConsecutiveET  - Max number of consecutive beacons
+ *                                      that may be early terminated.
+ * Output   : TI_STATUS
+ * Process  :  Configures Beacon Early Termination information element.
+ * Note(s)  :  None
+ * -----------------------------------------------------------------------------
+ */
+TI_STATUS cmdBld_CfgIeBet (TI_HANDLE hCmdBld, TI_UINT8 Enable, TI_UINT8 MaximumConsecutiveET, void *fCb, TI_HANDLE hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+
+    ACXBet_Enable_t ACXBet_Enable;
+    ACXBet_Enable_t* pCfg = &ACXBet_Enable;
+
+    /* Set information element header */
+    pCfg->EleHdr.id = ACX_BET_ENABLE;
+    pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
+
+    /* Set configuration fields */
+    pCfg->Enable = Enable;
+    pCfg->MaximumConsecutiveET = MaximumConsecutiveET;
+
+    TRACE2(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, ": Sending info elem to firmware, Enable=%d, MaximumConsecutiveET=%d\n", (TI_UINT32)pCfg->Enable, (TI_UINT32)pCfg->MaximumConsecutiveET);
+
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+}
+
+/****************************************************************************
+ *                      cmdBld_CmdIeConfigureKeepAliveParams()
+ ****************************************************************************
+ * DESCRIPTION: Configure keep-alive parameters for a single template
+ *
+ * INPUTS:  hCmdBld     - handle to command builder object
+ *          uIndex      - keep-alive index
+ *          uEnaDisFlag - whether keep-alive is enabled or disables
+ *          trigType    - send keep alive when TX is idle or always
+ *          interval    - keep-alive interval
+ *          fCB         - callback function for command complete
+ *          hCb         - handle to be apssed to callback function    
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: OK or NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CmdIeConfigureKeepAliveParams (TI_HANDLE hCmdBld, TI_UINT8 uIndex,
+                                                TI_UINT8 uEnaDisFlag, TI_UINT8 trigType,
+                                                TI_UINT32 interval, void *fCb, TI_HANDLE hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    AcxSetKeepAliveConfig_t ACXKeepAlive;
+
+    /* set IE header */
+    ACXKeepAlive.EleHdr.id = ACX_SET_KEEP_ALIVE_CONFIG;
+    ACXKeepAlive.EleHdr.len = sizeof (AcxSetKeepAliveConfig_t) - sizeof (EleHdrStruct);
+
+    /* set Keep-Alive values */
+    ACXKeepAlive.index = uIndex;
+    ACXKeepAlive.period = interval;
+    ACXKeepAlive.trigger = trigType;
+    ACXKeepAlive.valid = uEnaDisFlag;
+
+    TRACE4(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, ": Sending info elem to firmware, index=%d, enaDis=%d, trigType=%d, interval=%d\n", (TI_UINT32)ACXKeepAlive.index, (TI_UINT32)ACXKeepAlive.valid, (TI_UINT32)ACXKeepAlive.trigger, (TI_UINT32)ACXKeepAlive.period);
+
+    /* send the command to the FW */
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, &ACXKeepAlive, sizeof(AcxSetKeepAliveConfig_t), fCb, hCb, NULL);
+}
+
+/****************************************************************************
+ *                      cmdBld_CmdIeConfigureKeepAliveParams()
+ ****************************************************************************
+ * DESCRIPTION: Configure keep-alive global enable / disable flag
+ *
+ * INPUTS:  enable / disable flag
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: OK or NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CmdIeConfigureKeepAliveEnaDis (TI_HANDLE hCmdBld, TI_UINT8 enaDisFlag, 
+                                                void *fCb, TI_HANDLE hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    AcxKeepAliveMode ACXKeepAliveMode;
+
+    /* set IE header */
+    ACXKeepAliveMode.EleHdr.id = ACX_KEEP_ALIVE_MODE;
+    ACXKeepAliveMode.EleHdr.len = sizeof (AcxKeepAliveMode) - sizeof (EleHdrStruct);
+
+    /* set Keep-Alive mode */
+    ACXKeepAliveMode.modeEnabled = enaDisFlag;
+
+    TRACE1(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, ": Sending info elem to firmware, enaDis=%d\n", (TI_UINT32)ACXKeepAliveMode.modeEnabled);
+
+    /* send the command to the FW */
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, &ACXKeepAliveMode, sizeof(AcxKeepAliveMode), fCb, hCb, NULL);
+}
+
+/** 
+ * \fn     cmdBld_CfgIeSetFwHtCapabilities 
+ * \brief  set the current AP HT Capabilities to the FW. 
+ *
+ * \note    
+ * \return TI_OK on success or TI_NOK on failure 
+ * \sa 
+ */ 
+TI_STATUS cmdBld_CfgIeSetFwHtCapabilities (TI_HANDLE hCmdBld,
+                                           TI_UINT32 uHtCapabilites,
+                                           TMacAddr  tMacAddress,
+                                           TI_UINT8  uAmpduMaxLeng,
+                                           TI_UINT8  uAmpduMinSpac,
+                                           void      *fCb, 
+                                           TI_HANDLE hCb)
+{
+    TCmdBld                         *pCmdBld = (TCmdBld *)hCmdBld;
+    TAxcHtCapabilitiesIeFwInterface tAcxFwHtCap;
+    TAxcHtCapabilitiesIeFwInterface *pCfg    = &tAcxFwHtCap;
+
+    /* Set information element header */
+    pCfg->EleHdr.id = ACX_PEER_HT_CAP;
+    pCfg->EleHdr.len = sizeof(tAcxFwHtCap) - sizeof(EleHdrStruct);
+
+    MAC_COPY (pCfg->aMacAddress, tMacAddress);
+    pCfg->uHtCapabilites = uHtCapabilites;
+    pCfg->uAmpduMaxLength = uAmpduMaxLeng;
+    pCfg->uAmpduMinSpacing = uAmpduMinSpac;
+ 
+    TRACE9(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, "cmdBld_CfgIeSetFwHtCapabilities: HtCapabilites=0x%x, AmpduMaxLength=%d, AmpduMinSpac=%d, MAC: %x:%x:%x:%x:%x:%x\n", uHtCapabilites, uAmpduMaxLeng, uAmpduMinSpac, pCfg->aMacAddress[0], pCfg->aMacAddress[1], pCfg->aMacAddress[2], pCfg->aMacAddress[3], pCfg->aMacAddress[4], pCfg->aMacAddress[5]);
+
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(TAxcHtCapabilitiesIeFwInterface), fCb, hCb, NULL);
+    
+}
+
+/** 
+ * \fn     cmdBld_CfgIeSetFwHtInformation 
+ * \brief  set the current AP HT Information to the FW. 
+ *
+ * \note    
+ * \return TI_OK on success or TI_NOK on failure 
+ * \sa 
+ */ 
+TI_STATUS cmdBld_CfgIeSetFwHtInformation (TI_HANDLE hCmdBld,
+                                          TI_UINT8  uRifsMode,           
+                                          TI_UINT8  uHtProtection,       
+                                          TI_UINT8  uGfProtection,       
+                                          TI_UINT8  uHtTxBurstLimit,     
+                                          TI_UINT8  uDualCtsProtection,  
+                                          void      *fCb, 
+                                          TI_HANDLE hCb)
+{
+    TCmdBld                        *pCmdBld = (TCmdBld *)hCmdBld;
+    TAxcHtInformationIeFwInterface tAcxFwHtInf;
+    TAxcHtInformationIeFwInterface *pCfg = &tAcxFwHtInf;
+
+    /* Set information element header */
+    pCfg->EleHdr.id = ACX_HT_BSS_OPERATION;
+    pCfg->EleHdr.len = sizeof(tAcxFwHtInf) - sizeof(EleHdrStruct);
+
+    pCfg->uRifsMode = uRifsMode;
+    pCfg->uHtProtection = uHtProtection;
+    pCfg->uGfProtection = uGfProtection;
+    pCfg->uHtTxBurstLimit = uHtTxBurstLimit;
+    pCfg->uDualCtsProtection = uDualCtsProtection;
+ 
+    TRACE5(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, "cmdBld_CfgIeSetFwHtInformation: RifsMode=0x%x, HtProtection=0x%x, GfProtection=0x%x, HtTxBurstLimit=0x%x, DualCtsProtection=0x%x\n", uRifsMode, uHtProtection, uGfProtection, uHtTxBurstLimit, uDualCtsProtection);
+
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(TAxcHtInformationIeFwInterface), fCb, hCb, NULL);
+}
+
+/** 
+ * \fn     cmdBld_CfgIeSetBaSession 
+ * \brief  configure BA session initiator\receiver parameters setting in the FW. 
+ *
+ * \note    
+ * \return TI_OK on success or TI_NOK on failure 
+ * \sa 
+ */ 
+TI_STATUS cmdBld_CfgIeSetBaSession (TI_HANDLE hCmdBld, 
+                                    InfoElement_e eBaType,
+                                    TI_UINT8 uTid,               
+                                    TI_UINT8 uState,             
+                                    TMacAddr tRa,                
+                                    TI_UINT16 uWinSize,          
+                                    TI_UINT16 uInactivityTimeout,
+                                    void *fCb, 
+                                    TI_HANDLE hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    TAxcBaSessionInitiatorResponderPolicy tAcxBaSessionPrm;
+    TAxcBaSessionInitiatorResponderPolicy *pCfg = &tAcxBaSessionPrm;
+
+    /* Set information element header */
+    pCfg->EleHdr.id = eBaType;
+    pCfg->EleHdr.len = sizeof(tAcxBaSessionPrm) - sizeof(EleHdrStruct);
+
+    MAC_COPY (pCfg->aMacAddress, tRa);
+    pCfg->uTid = uTid;
+    pCfg->uPolicy = uState;
+    pCfg->uWinSize = uWinSize;
+
+    if (eBaType == ACX_BA_SESSION_INITIATOR_POLICY)
+    {
+        pCfg->uInactivityTimeout = uInactivityTimeout;
+    }
+    else
+    {
+        if (eBaType == ACX_BA_SESSION_RESPONDER_POLICY)
+        {
+            pCfg->uInactivityTimeout = 0;
+        }
+        else
+        {
+            TRACE1(pCmdBld->hReport, REPORT_SEVERITY_ERROR, "cmdBld_CfgIeSetBaSession: error ID=%u\n", pCfg->EleHdr.id);
+            return TI_NOK;
+        }
+    }
+
+    TRACE10(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION, "cmdBld_CfgIeSetBaSession: ID=, TID=%u, Policy=%u, MAC: %x:%x:%x:%x:%x:%x, uWinSize=%u, Timeout=%u\n", pCfg->uTid, pCfg->uPolicy, pCfg->aMacAddress[0], pCfg->aMacAddress[1], pCfg->aMacAddress[2], pCfg->aMacAddress[3], pCfg->aMacAddress[4], pCfg->aMacAddress[5], pCfg->uWinSize, pCfg->uInactivityTimeout);
+
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(TAxcBaSessionInitiatorResponderPolicy), fCb, hCb, NULL);
+}
+
+/** 
+ * \fn     cmdBld_CfgIeRadioParams 
+ * \brief  configure radio parameters setting in the FW. 
+ *
+ * \note    
+ * \return TI_OK on success or TI_NOK on failure 
+ * \sa 
+ */ 
+TI_STATUS cmdBld_CfgIeRadioParams (TI_HANDLE hCmdBld, IniFileRadioParam *pIniFileRadioParams, void *fCb, TI_HANDLE hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    TTestCmd TestCmd;
+    TTestCmd *pTestCmd = &TestCmd;
+
+    pTestCmd->testCmdId = TEST_CMD_INI_FILE_RADIO_PARAM;
+    
+    os_memoryCopy(pCmdBld->hOs, &pTestCmd->testCmd_u.IniFileRadioParams, pIniFileRadioParams, sizeof(IniFileRadioParam));
+
+   
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, 
+                             CMD_TEST, 
+                             (void *)pTestCmd, 
+                             sizeof(IniFileRadioParam) + 4,
+                             fCb, 
+                             hCb, 
+                             (void*)pTestCmd);    
+}
+
+
+TI_STATUS cmdBld_CfgPlatformGenParams (TI_HANDLE hCmdBld, IniFileGeneralParam *pGenParams, void *fCb, TI_HANDLE hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    TTestCmd TestCmd;
+    TTestCmd *pTestCmd = &TestCmd;
+
+    pTestCmd->testCmdId = TEST_CMD_INI_FILE_GENERAL_PARAM;
+    
+    os_memoryCopy(pCmdBld->hOs, &pTestCmd->testCmd_u.IniFileGeneralParams, pGenParams, sizeof(IniFileGeneralParam));
+
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, 
+                             CMD_TEST, 
+                             (void *)pTestCmd, 
+                             sizeof(IniFileGeneralParam) + 4,
+                             fCb, 
+                             hCb, 
+                             (void*)pTestCmd);    
+
+}
+
+
+
+
+/****************************************************************************
+ *                      cmdBld_CfgIeBurstMode()
+ ****************************************************************************
+ * DESCRIPTION: Configure burst mode
+ *
+ * INPUTS:  hCmdBld     - handle to command builder object
+ *          bEnabled    - is enabled flag
+ *          fCB         - callback function for command complete
+ *          hCb         - handle to be apssed to callback function    
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: OK or NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIeBurstMode (TI_HANDLE hCmdBld, TI_BOOL bEnabled, void *fCb, TI_HANDLE hCb)
+{
+	TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+	AcxBurstMode tAcxBurstMode;
+	AcxBurstMode *pCfg = &tAcxBurstMode;
+
+	/* set IE header */
+    pCfg->EleHdr.id = ACX_BURST_MODE;
+	pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
+
+	/* set burst mode value */
+	pCfg->enable = (uint8)bEnabled;
+
+    /* send the command to the FW */
+	return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+}
+
+/****************************************************************************
+ *                      cmdBld_CfgIeSRstate()
+ ****************************************************************************
+ * DESCRIPTION: Configure sart reflex state
+ *
+ * INPUTS:  hCmdBld     - handle to command builder object
+ *          bEnabled    - is enabled flag
+ *          fCB         - callback function for command complete
+ *          hCb         - handle to be apssed to callback function    
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: OK or NOK
+ ****************************************************************************/
+
+TI_STATUS cmdBld_CfgIeSRState (TI_HANDLE hCmdBld, uint8 SRstate, void *fCb, TI_HANDLE hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    ACXSmartReflexState_t tSmartReflexState;
+    ACXSmartReflexState_t *pCfg = &tSmartReflexState;
+           
+    /* set IE header */
+    pCfg->EleHdr.id = ACX_SET_SMART_REFLEX_STATE;
+    pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
+
+    /* set smart refelx state */
+    pCfg->enable = SRstate;
+
+    /* send the command to the FW */
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+       
+}
+
+/****************************************************************************
+ *                      cmdBld_CfgIeSRDebug()
+ ****************************************************************************
+ * DESCRIPTION: Send debug param just if it's configured in ini file
+ * INPUTS:  hCmdBld     - handle to command builder object
+ *          bEnabled    - is enabled flag
+ *          fCB         - callback function for command complete
+ *          hCb         - handle to be apssed to callback function    
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: OK or NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIeSRDebug (TI_HANDLE hCmdBld, ACXSmartReflexDebugParams_t *pSRDebug, void *fCb, TI_HANDLE hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    ACXSmartReflexDebugParams_t tSmartReflexDebug;
+    ACXSmartReflexDebugParams_t *pCfg = &tSmartReflexDebug;
+    
+   /* send this command to FW just in case it's initialize in ini file */
+    if (pSRDebug->senNRN == 0) {
+        return TI_NOK;
+    }
+
+    /* copy smart reflex debug params*/
+    os_memoryCopy(pCmdBld->hOs, pCfg, pSRDebug, sizeof(ACXSmartReflexDebugParams_t));
+
+   /* set IE header */
+    pCfg->EleHdr.id = ACX_SET_SMART_REFLEX_DEBUG;
+    pCfg->EleHdr.len = sizeof(*pCfg) - sizeof(EleHdrStruct);
+
+    /* send the command to the FW */
+    return  cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(*pCfg), fCb, hCb, NULL);
+
+}
+
+/****************************************************************************
+ *                      cmdBld_CfgIeDcoItrimParams()
+ ****************************************************************************
+ * DESCRIPTION: Configure/Interrogate the DCO Itrim parameters
+ *
+ * INPUTS:
+ *
+ * OUTPUT:  None
+ *
+ * RETURNS: TI_OK or TI_NOK
+ ****************************************************************************/
+TI_STATUS cmdBld_CfgIeDcoItrimParams (TI_HANDLE hCmdBld, TI_BOOL enable, TI_UINT32 moderationTimeoutUsec, void *fCb, TI_HANDLE hCb)
+{
+    TCmdBld *pCmdBld = (TCmdBld *)hCmdBld;
+    ACXDCOItrimParams_t ACXBeaconFilterOptions;
+    ACXDCOItrimParams_t *pCfg = &ACXBeaconFilterOptions;
+   
+    pCfg->enable = enable;
+    pCfg->moderation_timeout_usec = moderationTimeoutUsec;
+
+    /* Set information element header */
+    pCfg->EleHdr.id = ACX_SET_DCO_ITRIM_PARAMS;
+    pCfg->EleHdr.len = sizeof(ACXDCOItrimParams_t) - sizeof(EleHdrStruct);
+
+    TRACE3(pCmdBld->hReport, REPORT_SEVERITY_INFORMATION , "ID=%u: enable=%u, moderation_timeout_usec=%u\n", pCfg->EleHdr.id, enable, moderationTimeoutUsec);
+
+    return cmdQueue_SendCommand (pCmdBld->hCmdQueue, CMD_CONFIGURE, pCfg, sizeof(ACXDCOItrimParams_t), fCb, hCb, NULL);
+}
+   
+
+