Home | History | Annotate | Download | only in hl_ctrl
      1 /****************************************************************************
      2 **+-----------------------------------------------------------------------+**
      3 **|                                                                       |**
      4 **| Copyright(c) 1998 - 2008 Texas Instruments. All rights reserved.      |**
      5 **| All rights reserved.                                                  |**
      6 **|                                                                       |**
      7 **| Redistribution and use in source and binary forms, with or without    |**
      8 **| modification, are permitted provided that the following conditions    |**
      9 **| are met:                                                              |**
     10 **|                                                                       |**
     11 **|  * Redistributions of source code must retain the above copyright     |**
     12 **|    notice, this list of conditions and the following disclaimer.      |**
     13 **|  * Redistributions in binary form must reproduce the above copyright  |**
     14 **|    notice, this list of conditions and the following disclaimer in    |**
     15 **|    the documentation and/or other materials provided with the         |**
     16 **|    distribution.                                                      |**
     17 **|  * Neither the name Texas Instruments nor the names of its            |**
     18 **|    contributors may be used to endorse or promote products derived    |**
     19 **|    from this software without specific prior written permission.      |**
     20 **|                                                                       |**
     21 **| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   |**
     22 **| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     |**
     23 **| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |**
     24 **| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  |**
     25 **| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |**
     26 **| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      |**
     27 **| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |**
     28 **| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |**
     29 **| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   |**
     30 **| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |**
     31 **| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  |**
     32 **|                                                                       |**
     33 **+-----------------------------------------------------------------------+**
     34 ****************************************************************************/
     35 
     36 /****************************************************************************
     37  *
     38  *   MODULE:  whalParams.c
     39  *   PURPOSE: Holds all the whal parameters
     40  *
     41  ****************************************************************************/
     42 
     43 #include "whalCommon.h"
     44 #include "whalHwDefs.h"
     45 #include "802_11Defs.h"
     46 #include "whalParams.h"
     47 #include "whalBus_Api.h"
     48 
     49 /******************************* definitions ********************************/
     50 #define HW_MODULATION_PBCC	0x80
     51 #define HW_MODULATION_OFDM	0x40
     52 
     53 /*
     54  * Internals
     55  */
     56 void whal_ParamsInitDmaParams	 (WhalParams_T *pWhalParams);
     57 int  whal_ParamsInitWlanParams	 (WhalParams_T *pWhalParams);
     58 int  whal_ParamsInitBssInfoParams(WhalParams_T *pWhalParams, BOOL TxFlashEnable);
     59 int  whal_ParamsInitGenParams	 (WhalParams_T *pWhalParams);
     60 int  whal_ParamsInitHwInfoParams (WhalParams_T *pWhalParams);
     61 int  whal_ParamsInitGenCounters	 (WhalParams_T *pWhalParams);
     62 void whal_ParamsSetQidToAcTable  (WhalParams_T *pWhalParams,UINT8 Qid,UINT8 AcId);
     63 
     64 /****************************************************************************
     65  *                      whal_params_Create()
     66  ****************************************************************************
     67  * DESCRIPTION:	Create the whal parameters(data base) object
     68  *
     69  * INPUTS:
     70  *
     71  * OUTPUT:	None
     72  *
     73  * RETURNS:	The Created object
     74  ****************************************************************************/
     75 WhalParams_T *whal_params_Create(TI_HANDLE hOs, BOOL TxFlashEnable)
     76 {
     77 	WhalParams_T *pObj;
     78 
     79 	pObj = os_memoryAlloc(hOs, sizeof(WhalParams_T));
     80 	if (pObj == NULL)
     81 		return NULL;
     82 
     83 	os_memoryZero(hOs, (void *)pObj, sizeof(WhalParams_T));
     84 
     85 	pObj->hOs = hOs;
     86 
     87 	whal_ParamsInitDmaParams(pObj);
     88 	whal_ParamsInitGenParams(pObj);
     89 	whal_ParamsInitBssInfoParams(pObj,TxFlashEnable);
     90 	whal_ParamsInitWlanParams(pObj);
     91 	whal_ParamsInitGenCounters(pObj);
     92 
     93 	return(pObj);
     94 }
     95 
     96 /****************************************************************************
     97  *                      whal_params_Destroy()
     98  ****************************************************************************
     99  * DESCRIPTION:	Destroy the object
    100  *
    101  * INPUTS:
    102  *		WhalParams_T		The object to free
    103  *
    104  * OUTPUT:	None
    105  *
    106  * RETURNS:	OK or NOK
    107  ****************************************************************************/
    108 int whal_params_Destroy(WhalParams_T *pWhalParams)
    109 {
    110 	if (pWhalParams)
    111 		os_memoryFree(pWhalParams->hOs, pWhalParams, sizeof(WhalParams_T));
    112 	return OK;
    113 }
    114 
    115 /****************************************************************************
    116  *                      whal_params_Config()
    117  ****************************************************************************
    118  * DESCRIPTION:	Config the object
    119  *
    120  * INPUTS:
    121  *		pWhalParams		The object
    122  *		hReport			The reports objects
    123  *
    124  * OUTPUT:	None
    125  *
    126  * RETURNS:	OK or NOK
    127  ****************************************************************************/
    128 int whal_params_Config(WhalParams_T *pWhalParams, TI_HANDLE hReport)
    129 {
    130 	pWhalParams->hReport = hReport;
    131 	return OK;
    132 }
    133 
    134 /*
    135  * --------------------------------------------------------------------------
    136  *			DmaParams_T - Rx/Tx Queues and Bufs params
    137  * --------------------------------------------------------------------------
    138  */
    139 /* defaults for large queue size */
    140 #define DEFAULT_UCAST_PRIORITY		0
    141 #define DEFAULT_RX_Q_PRIORITY		0
    142 
    143 #define DEFAULT_NUM_STATIONS		1
    144 #define DEFAULT_RXQ_PRIORITY		0		/* low 0 .. 15 high  */
    145 #define DEFAULT_RXQ_TYPE			0x07	/* All frames, Data/Ctrl/Mgmt -- not documented well */
    146 
    147 /* only for AP */
    148 #define DEFAULT_NUM_BCAST_TX_DESC		16  /*  8 increase number of BC frames */
    149 #define DEFAULT_BCAST_PRIORITY		0x81
    150 
    151 /****************************************************************************
    152  *                      whal_ParamsInitDmaParams()
    153  ****************************************************************************
    154  * DESCRIPTION:	Initiate DmaParams to the default values
    155  *
    156  * INPUTS:
    157  *
    158  * OUTPUT:	None
    159  *
    160  * RETURNS:	OK or NOK
    161  ****************************************************************************/
    162 void whal_ParamsInitDmaParams(WhalParams_T *pWhalParams)
    163 {
    164 }
    165 
    166 /****************************************************************************
    167  *                      whal_ParamsGetDmaParams()
    168  ****************************************************************************
    169  * DESCRIPTION:	return DmaParams pointer
    170  ****************************************************************************/
    171 DmaParams_T *whal_ParamsGetDmaParams(WhalParams_T *pWhalParams)
    172 {
    173 	return (&pWhalParams->DmaParams);
    174 }
    175 
    176 /****************************************************************************
    177  *                      whal_ParamsSetDmaParams()
    178  ****************************************************************************
    179  * DESCRIPTION:	set new DmaParams
    180  ****************************************************************************/
    181 int whal_ParamsSetDmaParams(WhalParams_T *pWhalParams)
    182 {
    183 	DmaParams_T *pDmaParams = whal_ParamsGetDmaParams(pWhalParams);
    184 	int i;
    185 
    186 	/* Initialize the Params object database fields*/
    187 	pDmaParams->rxMemBlkNumber		= 35;							/*pInitParams->rxMemBlkNumber;*/
    188 	pDmaParams->txMinMemBlkNumber	= 64;							/*pInitParams->txMinMemBlkNumber;*/
    189 	pDmaParams->BlockSize			= HAL_CTRL_ACX_BLOCK_SIZE_DEF;	/*pInitParams->blockSize;*/
    190 	pDmaParams->NumRxQueues			= 1;
    191 	pDmaParams->NumTxQueues			= MAX_NUM_OF_TX_QUEUES;			/*pInitParams->numTxQueues;*/
    192 	pDmaParams->RxNumDesc			= HAL_CTRL_ACX_RX_DESC_DEF;		/*pInitParams->rxDescNum;*/
    193 	/* TRACE_BUFFER_MAX_SIZE is UINT32 so multiply by 4 to have the actual length */
    194 	pDmaParams->TraceBufferSize		= (TRACE_BUFFER_MAX_SIZE * 4);	/*pInitParams->TraceBufferSize;*/
    195     pDmaParams->TraceBufferDoPrint	= FALSE;						/*pInitParams->bDoPrint;*/
    196 
    197 	if ((pDmaParams->NumTxQueues > MAX_NUM_OF_TX_QUEUES) || (pDmaParams->NumTxQueues < 1) )
    198 	{
    199 		WLAN_REPORT_REPLY(pWhalParams->hReport, HAL_HW_CTRL_MODULE_LOG,
    200 			("\nwhal_ParamsSetDmaParams: numTxQueues is invalid, setting it to 1. numTxQueues=%d\n",pDmaParams->NumTxQueues ));
    201 		pDmaParams->NumTxQueues = 1;
    202 	}
    203 
    204 	for (i=0;i<pDmaParams->NumTxQueues;i++)
    205 	{
    206 		pDmaParams->TxNumDesc[i]	= HAL_CTRL_ACX_TX_DESC_DEF;		/*pInitParams->tx_attrib_queue[i].numDesc;*/
    207 		pDmaParams->TxQPriority[i]	= i;							/*pInitParams->tx_attrib_queue[i].priority;		*/
    208 	}
    209 
    210 	/* default values */
    211 	pDmaParams->RxQPriority			= DEFAULT_RX_Q_PRIORITY;
    212 	pDmaParams->NumStations			= DEFAULT_NUM_STATIONS;
    213 	pDmaParams->RxQueue_Priority	= DEFAULT_RXQ_PRIORITY;
    214 	pDmaParams->RxQueue_Type		= DEFAULT_RXQ_TYPE;
    215 
    216 	/* only for AP */
    217 #ifdef CONFIGURE_BSS_TYPE_AP
    218 	pDmaParams->NumTxQueues			= 2;
    219 	pDmaParams->TxNumDesc[1]		= DEFAULT_NUM_BCAST_TX_DESC;
    220 	pDmaParams->TxQPriority[1]		= DEFAULT_BCAST_PRIORITY;
    221 #endif
    222 
    223 	return OK;
    224 }
    225 
    226 /****************************************************************************
    227  *                      whal_ParamsSetRoamingParams()
    228  ****************************************************************************
    229  * DESCRIPTION:	set new DmaParams
    230  ****************************************************************************/
    231 int whal_ParamsSetRoamingParams(WhalParams_T *pWhalParams)
    232 {
    233 
    234 	pWhalParams->WlanParams.roamTriggers.rssiThreshold 		=  RSSI_DEFAULT_THRESHOLD;
    235 	pWhalParams->WlanParams.roamTriggers.rssiFilterWeight 		=  RSSI_DEFAULT_WEIGHT;
    236 	pWhalParams->WlanParams.roamTriggers.rssiFilterDepth 		=  RSSI_DEFAULT_DEPTH;
    237 	pWhalParams->WlanParams.roamTriggers.lowRSSIEventType 	= LOW_RSSI_EVENT_LEVEL;
    238 
    239 	pWhalParams->WlanParams.roamTriggers.snrThreshold 		= SNR_DEFAULT_THRESHOLD;
    240 	pWhalParams->WlanParams.roamTriggers.snrFilterWeight 		= SNR_DEFAULT_WEIGHT;
    241 	pWhalParams->WlanParams.roamTriggers.snrFilterDepth 		= SNR_DEFAULT_DEPTH;
    242 	pWhalParams->WlanParams.roamTriggers.lowSNREventType 	= LOW_SNR_EVENT_LEVEL;
    243 
    244 	pWhalParams->WlanParams.roamTriggers.BssLossTimeout = NO_BEACON_DEFAULT_TIMEOUT;
    245 	pWhalParams->WlanParams.roamTriggers.TsfMissThreshold = OUT_OF_SYNC_DEFAULT_THRESHOLD;
    246 
    247 	return OK;
    248 }
    249 
    250 
    251 /****************************************************************************
    252  *                      whal_ParamsSetQueueParams()
    253  ****************************************************************************
    254  * DESCRIPTION:	set new QueueParams
    255  ****************************************************************************/
    256 int whal_ParamsSetQueueParams(WhalParams_T *pWhalParams,queueTrafficParams_t *pQtrafficParams)
    257 {
    258 	pWhalParams->QueuesParams.isQueueConfigured[pQtrafficParams->queueID] = TRUE;
    259 	os_memoryCopy(pWhalParams->hOs,(void *)&(pWhalParams->QueuesParams.queues[pQtrafficParams->queueID]),(void *)pQtrafficParams,sizeof(queueTrafficParams_t));
    260 
    261 	return OK;
    262 }
    263 /****************************************************************************
    264  *                      whal_ParamsSetAcParams()
    265  ****************************************************************************
    266  * DESCRIPTION:	set new QueueParams
    267  ****************************************************************************/
    268 
    269 void whal_ParamsSetAcParams(WhalParams_T *pWhalParams,acQosParams_t *pAcQosParams)
    270 {
    271 	pWhalParams->AcParams.isAcConfigured[pAcQosParams->ac] = TRUE;
    272 	os_memoryCopy(pWhalParams->hOs,(void *)&(pWhalParams->AcParams.ac[pAcQosParams->ac]),(void *)pAcQosParams,sizeof(acQosParams_t));
    273 }
    274 
    275 /****************************************************************************
    276  *                      whal_ParamsGetTxParams()
    277  ****************************************************************************
    278  * DESCRIPTION:	set new DmaParams
    279  ****************************************************************************/
    280 TxParam_t *whal_ParamsGetTxParams (WhalParams_T *pWhalParams)
    281 {
    282 	return (&pWhalParams->TxParams);
    283 }
    284 
    285 /****************************************************************************
    286  *                      whal_ParamsSetTrafficParams()
    287  ****************************************************************************
    288  * DESCRIPTION: 	Traffic Parameters :(IE ACX_TID_CFG)
    289  ****************************************************************************/
    290 int whal_ParamsSetTrafficParams(WhalParams_T *pWhalParams,whaCtrl_acTrafficParams_t* pTconfParams)
    291 {
    292 	os_memoryCopy(pWhalParams->hOs,
    293 				  (void *)&(pWhalParams->TxParams.halTrafficParams[pTconfParams->acId]),
    294 				  (void *)pTconfParams,sizeof(whaCtrl_acTrafficParams_t));
    295 
    296 	return OK;
    297 }
    298 
    299 /****************************************************************************
    300  *                      whal_ParamsSetTxRateClassParams()
    301  ****************************************************************************
    302  * DESCRIPTION:	set new TxRateParams
    303  ****************************************************************************/
    304 void whal_ParamsSetTxRateClassParams(WhalParams_T *pWhalParams,txRatePolicy_t *pTxRatePolicy)
    305 {
    306 	UINT8 i;
    307 	txRateClass_t *pTxRateClass;
    308 
    309 	for(i = 0; i < pTxRatePolicy->numOfRateClasses; i++)
    310 	{
    311 		pTxRateClass = &pTxRatePolicy->rateClass[i];
    312 		os_memoryCopy(pWhalParams->hOs,(void *)&(pWhalParams->BssInfoParams.TxRateClassParams.rateClass[i]),(void *)pTxRateClass,sizeof(txRateClass_t));
    313 	}
    314 
    315 	pWhalParams->BssInfoParams.TxRateClassParams.numOfRateClasses = pTxRatePolicy->numOfRateClasses;
    316 
    317 }
    318 
    319 /****************************************************************************
    320  *                      whal_ParamsSetTxRateClassParams()
    321  ****************************************************************************
    322  * DESCRIPTION:	set new TxRateParams
    323  ****************************************************************************/
    324 txRatePolicy_t* whal_ParamsGetTxRateClassParams(WhalParams_T *pWhalParams)
    325 {
    326     return &pWhalParams->BssInfoParams.TxRateClassParams;
    327 }
    328 /****************************************************************************
    329  *                      whal_ParamsGetTxParams()
    330  ****************************************************************************
    331  *	Traffic Parameters :(IE ACX_TID_CFG)
    332  ****************************************************************************/
    333 whaCtrl_acTrafficParams_t* whal_ParamsGetTrafficParams(WhalParams_T *pWhalParams,UINT8 AcID)
    334 {
    335 	return (&pWhalParams->TxParams.halTrafficParams[AcID]);
    336 }
    337 
    338 /****************************************************************************
    339  *                      whal_ParamsSetAccessCategoryParams()
    340  ****************************************************************************
    341  * DESCRIPTION:	Access Category Parameters :(IE ACX_AC_CFG)
    342  ****************************************************************************/
    343 int whal_ParamsSetAccessCategoryParams(WhalParams_T *pWhalParams,acQueuesParams_t* pAcQueuesParams)
    344 {
    345 
    346 	/* Calculate the Qid from the Ac and save in a local table */
    347 	whal_ParamsSetQidToAcTable(pWhalParams, pAcQueuesParams->qId, pAcQueuesParams->acId);
    348 
    349 	os_memoryCopy(pWhalParams->hOs,
    350 				  (void *)&(pWhalParams->TxParams.halAcQueueParams[pAcQueuesParams->qId]),
    351 				  (void *)pAcQueuesParams, sizeof(acQueuesParams_t));
    352 
    353 	return OK;
    354 }
    355 
    356 
    357 /****************************************************************************
    358  *                      whal_ParamsSetAccessCategoryAckPolicy()
    359  ****************************************************************************
    360  * DESCRIPTION:	set Ac Ack Policy according to Ac ID , No Ack = 0, Ack = 1
    361  ****************************************************************************/
    362 int whal_ParamsSetAccessCategoryAckPolicy(WhalParams_T *pWhalParams, BOOL AckPolicy,UINT8 AcID)
    363 {
    364 	WLAN_REPORT_INFORMATION(pWhalParams->hReport, HAL_HW_CTRL_MODULE_LOG,
    365 	("\n whal_ParamsSetAccessCategoryAckPolicy: Set Access Category =%d  to Ack Policy = %d \n", AcID, AckPolicy));
    366 
    367 	pWhalParams->TxParams.AckPolicy[AcID] = AckPolicy;
    368 
    369 	return OK;
    370 }
    371 
    372 
    373 /****************************************************************************
    374  *                      whal_ParamsSetQidToAcTable()
    375  ****************************************************************************
    376  * DESCRIPTION:	set Qid according to Queue ID
    377  ****************************************************************************/
    378 void whal_ParamsSetQidToAcTable(WhalParams_T *pWhalParams,UINT8 Qid,UINT8 AcId)
    379 {
    380 
    381 	pWhalParams->TxParams.QidToAcTable[Qid] = AcId;
    382 
    383 }
    384 
    385 /****************************************************************************
    386  *                      whal_ParamsGetAcIdFromQid()
    387  ****************************************************************************
    388  * DESCRIPTION:	Get the Ac Id according to the Queue id
    389  ****************************************************************************/
    390 UINT8 whal_ParamsGetAcIdFromQid(WhalParams_T *pWhalParams,UINT8 Qid)
    391 {
    392 	return (pWhalParams->TxParams.QidToAcTable[Qid]);
    393 }
    394 
    395 /****************************************************************************
    396  *                      whal_ParamsGetAtimWindow()
    397  ****************************************************************************
    398  * DESCRIPTION:	return the ATim Window
    399  ****************************************************************************/
    400 UINT16 whal_ParamsGetAtimWindow		(WhalParams_T *pWhalParams)
    401 {
    402 	return (pWhalParams->BssInfoParams.ATimWindow);
    403 }
    404 
    405 /****************************************************************************
    406  *                      whal_ParamsSetAtimWindow()
    407  ****************************************************************************
    408  * DESCRIPTION:	set the ATim Window
    409  ****************************************************************************/
    410 void whal_ParamsSetAtimWindow(WhalParams_T *pWhalParams, UINT16 ATimWindow)
    411 {
    412 	pWhalParams->BssInfoParams.ATimWindow = ATimWindow;
    413 }
    414 
    415 /*
    416  * --------------------------------------------------------------------------
    417  *							Bss Info params
    418  * --------------------------------------------------------------------------
    419  */
    420 
    421 #define DEFAULT_HW_GEN_PREAMBLE_TYPE	CCK_LONG	/* Long Preamble */
    422 #define DEFAULT_HW_GEN_TX_RATE			RATE_2MBPS
    423 #define DEFAULT_HW_GEN_TX_RATE_DRIVER_FORMAT   DRV_RATE_2M
    424 
    425 int genMacCopy(char *Mac2, char *Mac1)
    426 {
    427 	register int MacSize=6;
    428 
    429 	while(MacSize--)
    430 		*Mac2++ = *Mac1++;
    431 	return OK;
    432 }
    433 
    434 /****************************************************************************
    435  *                      whal_ParamsInitBssInfoParams()
    436  ****************************************************************************
    437  * DESCRIPTION:	Initiate BssInfo to the default values
    438  *
    439  * INPUTS:
    440  *
    441  * OUTPUT:	None
    442  *
    443  * RETURNS:
    444  ****************************************************************************/
    445 int whal_ParamsInitBssInfoParams(WhalParams_T *pWhalParams, BOOL TxFlashEnable)
    446 {
    447 	BssInfoParams_T *pBssInfoParams = &pWhalParams->BssInfoParams;
    448 
    449 
    450 	pBssInfoParams->txCtrlFrmRateDriverFormat = DEFAULT_HW_GEN_TX_RATE_DRIVER_FORMAT;
    451 	pBssInfoParams->txCtrlFrmModulation = DEFAULT_HW_GEN_PREAMBLE_TYPE;
    452 	pBssInfoParams->txCtrlFrmRate 		= DEFAULT_HW_GEN_TX_RATE;
    453 
    454 	pBssInfoParams->txMgmtFrmModulation = DEFAULT_HW_GEN_PREAMBLE_TYPE;
    455 	pBssInfoParams->txMgmtFrmRate 		= DEFAULT_HW_GEN_TX_RATE;
    456 
    457 	pBssInfoParams->RadioChannel = DEFAULT_HW_RADIO_CHANNEL;
    458 	pBssInfoParams->Ctrl = 0;
    459 
    460 	/* Intilaize the ctrl field in the BSS join structure */
    461 	/* Only bit_7 in the ctrl field is vurrently in use.
    462 	  If bit_7 is on => Doing Tx flash before joining new AP */
    463 	if(TxFlashEnable)
    464 		pBssInfoParams->Ctrl |= JOIN_CMD_CTRL_TX_FLUSH;
    465 
    466 	return OK;
    467 }
    468 
    469 /****************************************************************************
    470  *                      whal_ParamsGetBssInfoParams()
    471  ****************************************************************************
    472  * DESCRIPTION:	return pointer to the BssInfo params
    473  ****************************************************************************/
    474 BssInfoParams_T *whal_ParamsGetBssInfoParams(WhalParams_T *pWhalParams)
    475 {
    476 	return (&pWhalParams->BssInfoParams);
    477 }
    478 
    479 /****************************************************************************
    480  *                      whal_ParamsGetRadioChannel()
    481  ****************************************************************************
    482  * DESCRIPTION:	return the radio channel
    483  ****************************************************************************/
    484 UINT8 whal_ParamsGetRadioChannel(WhalParams_T *pWhalParams)
    485 {
    486 	return (pWhalParams->BssInfoParams.RadioChannel);
    487 }
    488 
    489 /****************************************************************************
    490  *                      whal_ParamsSetRadioChannel()
    491  ****************************************************************************
    492  * DESCRIPTION:	set the radio channel
    493  ****************************************************************************/
    494 void whal_ParamsSetRadioChannel(WhalParams_T *pWhalParams, int Channel)
    495 {
    496 	pWhalParams->BssInfoParams.RadioChannel = (UINT8)Channel;
    497 }
    498 
    499 /****************************************************************************
    500  *                      whal_ParamsGetDefaultChannel()
    501  ****************************************************************************
    502  * DESCRIPTION:	return the default channel to start from
    503  ****************************************************************************/
    504 UINT8 whal_ParamsGetDefaultChannel(WhalParams_T *pWhalParams)
    505 {
    506 	WlanParams_T *pWlanParams = &pWhalParams->WlanParams;
    507 
    508 	if (RADIO_BAND_5_0_GHZ == pWlanParams->RadioBand)
    509 	{
    510 		return pWlanParams->calibrationChannel5_0;
    511 	}
    512 	else
    513 	{
    514 		return pWlanParams->calibrationChannel2_4;
    515 	}
    516 }
    517 
    518 /****************************************************************************
    519  *                      whal_ParamsSetReqBssType()
    520  ****************************************************************************
    521  * DESCRIPTION:	set the bss type (driver enum)
    522  ****************************************************************************/
    523 void whal_ParamsSetReqBssType(WhalParams_T *pWhalParams, int Val)
    524 {
    525 	pWhalParams->BssInfoParams.ReqBssType = Val;
    526 }
    527 
    528 /****************************************************************************
    529  *                      whal_ParamsGetReqBssType()
    530  ****************************************************************************
    531  * DESCRIPTION:	get the bss type (driver enum)
    532  ****************************************************************************/
    533 UINT8 whal_ParamsGetReqBssType(WhalParams_T *pWhalParams)
    534 {
    535 	return pWhalParams->BssInfoParams.ReqBssType;
    536 }
    537 
    538 /****************************************************************************
    539  *                      whal_ParamsSetBssType()
    540  ****************************************************************************
    541  * DESCRIPTION:	set the bss type (public enum)
    542  ****************************************************************************/
    543 void whal_ParamsSetBssType(WhalParams_T *pWhalParams, int Val)
    544 {
    545 	pWhalParams->BssInfoParams.BssType = Val;
    546 }
    547 /****************************************************************************
    548  *                      whal_ParamsSetRadioBand()
    549  ****************************************************************************
    550  * DESCRIPTION:	set the radio band
    551  ****************************************************************************/
    552 void whal_ParamsSetRadioBand(WhalParams_T *pWhalParams, int RadioBand)
    553 {
    554 	pWhalParams->WlanParams.RadioBand = (UINT8)RadioBand;
    555 }
    556 
    557 /****************************************************************************
    558  *                      whal_ParamsGetRadioBand()
    559  ****************************************************************************
    560  * DESCRIPTION:	get the radio band
    561  ****************************************************************************/
    562 UINT8  whal_ParamsGetRadioBand(WhalParams_T *pWhalParams)
    563 {
    564 		return (pWhalParams->WlanParams.RadioBand);
    565 }
    566 
    567  /****************************************************************************
    568  *                      whal_ParamsSetPowerSaveState()
    569  ****************************************************************************
    570  * DESCRIPTION:	set the power save state
    571  ****************************************************************************/
    572 void whal_ParamsSetPowerSaveState(WhalParams_T *pWhalParams, UINT8 CurrPowerSaveState)
    573 {
    574 	pWhalParams->WlanParams.CurrPowerSaveState = (UINT8)CurrPowerSaveState;
    575 }
    576 
    577 /****************************************************************************
    578  *                      whal_ParamsGetPowerSaveState()
    579  ****************************************************************************
    580  * DESCRIPTION:	get the power save state
    581  ****************************************************************************/
    582 UINT8  whal_ParamsGetPowerSaveState(WhalParams_T *pWhalParams)
    583 {
    584 		return (pWhalParams->WlanParams.CurrPowerSaveState);
    585 }
    586 
    587 
    588 /****************************************************************************
    589  *                      whal_ParamsGetBssType()
    590  ****************************************************************************
    591  * DESCRIPTION:	return the bss type
    592  ****************************************************************************/
    593 UINT8 whal_ParamsGetBssType(WhalParams_T *pWhalParams)
    594 {
    595 	return (pWhalParams->BssInfoParams.BssType);
    596 }
    597 
    598 /****************************************************************************
    599  *                      whal_ParamsSetBeaconInterval()
    600  ****************************************************************************
    601  * DESCRIPTION:	set the beacon interval
    602  ****************************************************************************/
    603 void whal_ParamsSetBeaconInterval(WhalParams_T *pWhalParams, UINT16 Val)
    604 {
    605 	pWhalParams->BssInfoParams.BeaconInterval = Val;
    606 }
    607 
    608 /****************************************************************************
    609  *                      whal_ParamsGetBeaconInterval()
    610  ****************************************************************************
    611  * DESCRIPTION:	return the beacon interval
    612  ****************************************************************************/
    613 UINT16 whal_ParamsGetBeaconInterval(WhalParams_T *pWhalParams)
    614 {
    615 	return (pWhalParams->BssInfoParams.BeaconInterval);
    616 }
    617 
    618 /****************************************************************************
    619  *                      whal_ParamsSetDtimCount()
    620  ****************************************************************************
    621  * DESCRIPTION:	set the dtim count interval
    622  ****************************************************************************/
    623 void whal_ParamsSetDtimCount(WhalParams_T *pWhalParams, UINT8 Val)
    624 {
    625 	pWhalParams->BssInfoParams.DtimInterval = Val;
    626 }
    627 
    628 /****************************************************************************
    629  *                      whal_ParamsGetDtimCount()
    630  ****************************************************************************
    631  * DESCRIPTION:	return the Dtim count interval
    632  ****************************************************************************/
    633 UINT8 whal_ParamsGetDtimCount(WhalParams_T *pWhalParams)
    634 {
    635 	return (pWhalParams->BssInfoParams.DtimInterval);
    636 }
    637 
    638 /****************************************************************************
    639  *                      whal_ParamsGetBssId()
    640  ****************************************************************************
    641  * DESCRIPTION:	return the Bss Id
    642  ****************************************************************************/
    643 UINT8 *whal_ParamsGetBssId(WhalParams_T *pWhalParams)
    644 {
    645 	return (pWhalParams->BssInfoParams.BssId);
    646 }
    647 
    648 /****************************************************************************
    649  *                      whal_ParamsSetBssId()
    650  ****************************************************************************
    651  * DESCRIPTION:	set the Bss Id
    652  ****************************************************************************/
    653 void whal_ParamsSetBssId(WhalParams_T *pWhalParams, char *BssId)
    654 {
    655     genMacCopy((char *)pWhalParams->BssInfoParams.BssId, BssId);
    656 }
    657 
    658 /****************************************************************************
    659  *                      whal_ParamsGetElm_Ssid()
    660  ****************************************************************************
    661  * DESCRIPTION:	return the SSID info element
    662  ****************************************************************************/
    663 dot11_SSID_t  *whal_ParamsGetElm_Ssid(WhalParams_T *pWhalParams)
    664 {
    665 	return (&pWhalParams->BssInfoParams.WlanElm_Ssid);
    666 }
    667 
    668 /****************************************************************************
    669  *                      whal_ParamsSetSsid()
    670  ****************************************************************************
    671  * DESCRIPTION:	set the SSID
    672  ****************************************************************************/
    673 void whal_ParamsSetSsid(WhalParams_T *pWhalParams, char *InputSsid, UINT8 SsidLength)
    674 {
    675 	BssInfoParams_T *pBssInfoParams = &pWhalParams->BssInfoParams;
    676 
    677 	pBssInfoParams->WlanElm_Ssid.hdr.eleLen = SsidLength;
    678 	os_memoryZero(pWhalParams->hOs, (void *)pBssInfoParams->WlanElm_Ssid.serviceSetId,
    679 				  sizeof(pBssInfoParams->WlanElm_Ssid.serviceSetId));
    680 	os_memoryCopy(pWhalParams->hOs, (void *)pBssInfoParams->WlanElm_Ssid.serviceSetId, (void *)InputSsid, SsidLength);
    681 }
    682 
    683 /****************************************************************************
    684  *                      whal_ParamsSetBasicRates()
    685  ****************************************************************************
    686  * DESCRIPTION:	set the basic rate set
    687  ****************************************************************************/
    688 void whal_ParamsSetBasicRatesSet(WhalParams_T *pWhalParams, UINT16 BasicRateSet)
    689 {
    690 	pWhalParams->BssInfoParams.BasicRateSet = BasicRateSet;
    691 }
    692 
    693 /****************************************************************************
    694  *                      whal_ParamsSetHwGenTxParams()
    695  ****************************************************************************
    696  * DESCRIPTION:	set the hardware and firmware generated Tx rate (convert to HW coding).
    697  *
    698  ****************************************************************************/
    699 void whal_ParamsSetHwGenTxParams(WhalParams_T *pWhalParams, rate_e TxRate, BOOL bCtrlFrame)
    700 {
    701 	/* Set The Rate & modulation for CTS, RTS, and PS-Poll frames (not including CTS-protection). */
    702 	if (bCtrlFrame)
    703 	{
    704 	    pWhalParams->BssInfoParams.txCtrlFrmRateDriverFormat = TxRate;
    705 	    whalUtils_ConvertAppRate(TxRate,  &pWhalParams->BssInfoParams.txCtrlFrmRate);
    706 	    whalUtils_FindHwModulationByDrvRate(TxRate, &pWhalParams->BssInfoParams.txCtrlFrmModulation, pWhalParams->WlanParams.preamble);
    707 	}
    708 	/* Set The Rate & modulation for Beacon and Probe-Response frames (IBSS). */
    709 	else
    710 	{
    711 		whalUtils_ConvertAppRate(TxRate, &pWhalParams->BssInfoParams.txMgmtFrmRate);
    712 		whalUtils_FindHwModulationByDrvRate(TxRate, &pWhalParams->BssInfoParams.txMgmtFrmModulation, pWhalParams->WlanParams.preamble);
    713 	}
    714 }
    715 
    716 /****************************************************************************
    717  *                      whal_ParamsSetBasicRates()
    718  ****************************************************************************
    719  * DESCRIPTION:	set the basic rate set
    720  ****************************************************************************/
    721 void whal_ParamsSetSupportedRatesSet(WhalParams_T *pWhalParams, UINT16 SupportedRateSet)
    722 {
    723 	pWhalParams->BssInfoParams.SupportedRateSet = SupportedRateSet;
    724 }
    725 
    726 
    727 /****************************************************************************
    728  *                      whal_ParamsGetMacPreambleParams()
    729  ****************************************************************************
    730  * DESCRIPTION:	return pointer to the Mac Preamble Params
    731  ****************************************************************************/
    732 void   whal_ParamsGetMacPreambleParams(WhalParams_T *pWhalParams, UINT8* earlyWakeUp)
    733 {
    734     *earlyWakeUp = pWhalParams->WlanParams.earlyWakeUp;
    735 }
    736 
    737 
    738 /*
    739  * --------------------------------------------------------------------------
    740  *							wlan params
    741  * --------------------------------------------------------------------------
    742  */
    743 
    744 #define DEFAULT_CW_MIN	15
    745 #define DEFAULT_USE_DEVICE_ERROR_INTERRUPT	1
    746 
    747 /****************************************************************************
    748  *                      whal_ParamsInitWlanParams()
    749  ****************************************************************************
    750  * DESCRIPTION:	Initiate GenParams to the default values
    751  *
    752  * INPUTS:
    753  *
    754  * OUTPUT:	None
    755  *
    756  * RETURNS:
    757  ****************************************************************************/
    758 int whal_ParamsInitWlanParams(WhalParams_T *pWhalParams)
    759 {
    760 	WlanParams_T *pWlanParams = &pWhalParams->WlanParams;
    761 
    762 	/*
    763 	 * init filters as station (start/join with BssType will overwrite the values)
    764 	 */
    765 	whal_ParamsSetRxFilter(pWhalParams, RX_CONFIG_OPTION_MY_DST_MY_BSS, RX_FILTER_OPTION_FILTER_ALL);
    766 
    767 	pWlanParams->UseDeviceErrorInterrupt = DEFAULT_USE_DEVICE_ERROR_INTERRUPT;
    768 
    769 	/*
    770 	 * All other params are zero and will be set externally on the Create/Config phase
    771 	 */
    772 
    773 	return OK;
    774 }
    775 
    776 /****************************************************************************
    777  *                      whal_ParamsGetWlanParams()
    778  ****************************************************************************
    779  * DESCRIPTION:	return pointer to the GenParams
    780  ****************************************************************************/
    781 WlanParams_T *whal_ParamsGetWlanParams(WhalParams_T *pWhalParams)
    782 {
    783 	return (&pWhalParams->WlanParams);
    784 }
    785 
    786 /****************************************************************************
    787  *                      whal_ParamsSetFragmentThreshold()
    788  ****************************************************************************
    789  * DESCRIPTION:	set the fragmentation threshold
    790  ****************************************************************************/
    791 void whal_ParamsSetFragmentThreshold(WhalParams_T *pWhalParams, int FragSize)
    792 {
    793 	pWhalParams->WlanParams.FragmentThreshold = FragSize;
    794 }
    795 
    796 /****************************************************************************
    797  *                      whal_ParamsPrintFragmentThreshold()
    798  ****************************************************************************
    799  * DESCRIPTION:	print the fragmentation threshold
    800  ****************************************************************************/
    801 void whal_ParamsPrintFragmentThreshold(WhalParams_T *pWhalParams)
    802 {
    803 	WLAN_REPORT_REPLY(pWhalParams->hReport, HAL_HW_CTRL_MODULE_LOG,
    804 		("\n FragmentThreshold = %d\n", pWhalParams->WlanParams.FragmentThreshold));
    805 }
    806 
    807 /****************************************************************************
    808  *                      whal_ParamsPrintFragmentThreshold()
    809  ****************************************************************************
    810  * DESCRIPTION:	print the fragmentation threshold
    811  ****************************************************************************/
    812 UINT8 whal_ParamsIsFragmentOnHal(WhalParams_T *pWhalParams)
    813 {
    814 	return (pWhalParams->WlanParams.FragmentationOnHal);
    815 }
    816 /****************************************************************************
    817  *                      whal_ParamsGetFragmentThreshold()
    818  ****************************************************************************
    819  * DESCRIPTION:	return the fragmentation threshold
    820  ****************************************************************************/
    821 UINT32 whal_ParamsGetFragmentThreshold(WhalParams_T *pWhalParams)
    822 {
    823 	return (pWhalParams->WlanParams.FragmentThreshold);
    824 }
    825 
    826 /****************************************************************************
    827  *                      whal_ParamsGetFragmentThreshold()
    828  ****************************************************************************
    829  * DESCRIPTION:	return the fragmentation threshold
    830  ****************************************************************************/
    831 UINT8 whal_ParamsGetMaxSitesFragCollect(WhalParams_T *pWhalParams)
    832 {
    833 	return (pWhalParams->WlanParams.maxSitesFragCollect);
    834 }
    835 
    836 /****************************************************************************
    837  *                      whal_ParamsSetRtsThreshold()
    838  ****************************************************************************
    839  * DESCRIPTION:	set the rts threshold
    840  ****************************************************************************/
    841 void whal_ParamsSetRtsThreshold(WhalParams_T *pWhalParams, int RtsSize)
    842 {
    843 	pWhalParams->WlanParams.RtsThreshold = RtsSize;
    844 }
    845 
    846 /****************************************************************************
    847  *                      whal_ParamsSetListenInterval()
    848  ****************************************************************************
    849  * DESCRIPTION:	set the Listen Interval
    850  ****************************************************************************/
    851 void whal_ParamsSetListenInterval(WhalParams_T *pWhalParams, UINT8 Val)
    852 {
    853 	pWhalParams->WlanParams.ListenInterval = Val;
    854 }
    855 
    856 /****************************************************************************
    857  *                      whal_ParamsGetListenInterval()
    858  ****************************************************************************
    859  * DESCRIPTION:	get the Listen Interval
    860  ****************************************************************************/
    861 UINT8 whal_ParamsGetListenInterval(WhalParams_T *pWhalParams)
    862 {
    863 	return (pWhalParams->WlanParams.ListenInterval);
    864 }
    865 
    866 /****************************************************************************
    867  *                      whal_ParamsSetRxFilter()
    868  ****************************************************************************
    869  * DESCRIPTION:	set the wlan hardware filters
    870  ****************************************************************************/
    871 void whal_ParamsSetRxFilter(WhalParams_T *pWhalParams, UINT32 RxConfigOption, UINT32 RxFilterOption)
    872 {
    873 	pWhalParams->WlanParams.RxConfigOption = RxConfigOption;
    874 	pWhalParams->WlanParams.RxFilterOption = RxFilterOption;
    875 
    876 	pWhalParams->WlanParams.RxConfigOption |= RX_CFG_ENABLE_PHY_HEADER_PLCP;
    877 
    878 #if defined (TNETW_MASTER_MODE) || defined (TNETW_USB_MODE)
    879 	pWhalParams->WlanParams.RxConfigOption |= RX_CFG_COPY_RX_STATUS;
    880 #endif
    881 
    882 	if(pWhalParams->WlanParams.RxDisableBroadcast)
    883 		pWhalParams->WlanParams.RxConfigOption |= RX_CFG_DISABLE_BCAST;
    884 }
    885 
    886 /****************************************************************************
    887  *                      whal_ParamsGetRxFilter()
    888  ****************************************************************************
    889  * DESCRIPTION:	Get the wlan hardware filters
    890  ****************************************************************************/
    891 void whal_ParamsGetRxFilter(WhalParams_T *pWhalParams, UINT32* pRxConfigOption, UINT32* pRxFilterOption)
    892 {
    893 	*pRxConfigOption = pWhalParams->WlanParams.RxConfigOption;
    894 	*pRxFilterOption = pWhalParams->WlanParams.RxFilterOption;
    895 }
    896 
    897 
    898 /****************************************************************************
    899 *                      whal_ParamsSetarpIpAddressesTable()
    900 ****************************************************************************
    901 * DESCRIPTION:	set the wlan hardware filters
    902 ****************************************************************************/
    903 void whal_ParamsSetarpIpAddressesTable(WhalParams_T * pWhalParams, IpAddress_t * IP_addr, IPver_e IP_ver)
    904 {
    905     pWhalParams->WlanParams.arp_IP_ver = IP_ver;
    906 
    907     if (IP_ver == IP_VER_4)
    908     {
    909         os_memoryCopy(pWhalParams->hOs,  (PVOID)pWhalParams->WlanParams.arp_IP_addr.addr,  (PVOID)IP_addr, IP_V4_ADDR_LEN);
    910     }
    911     else /* IP_VER_6*/
    912     {
    913         os_memoryCopy(pWhalParams->hOs,  (PVOID)pWhalParams->WlanParams.arp_IP_addr.addr,  (PVOID)IP_addr, IP_V6_ADDR_LEN);
    914     }
    915 }
    916 
    917 /****************************************************************************
    918 *                      whal_ParamsGetarpIpAddressesTable()
    919 ****************************************************************************
    920 * DESCRIPTION:	get the wlan hardware filters
    921 ****************************************************************************/
    922 void whal_ParamsGetarpIpAddressesTable(WhalParams_T * pWhalParams, IpAddress_t * IP_addr, IPver_e* pIP_ver)
    923 {
    924 
    925     *pIP_ver = (IPver_e)pWhalParams->WlanParams.arp_IP_ver;
    926 
    927     if (*pIP_ver == IP_VER_4)
    928     {
    929         os_memoryCopy(pWhalParams->hOs,  (PVOID)IP_addr,  (PVOID)pWhalParams->WlanParams.arp_IP_addr.addr, IP_V4_ADDR_LEN);
    930     }
    931     else /* IP_VER_6*/
    932     {
    933         os_memoryCopy(pWhalParams->hOs,  (PVOID)IP_addr,  (PVOID)pWhalParams->WlanParams.arp_IP_addr.addr, IP_V6_ADDR_LEN);
    934     }
    935 }
    936 
    937 
    938 /****************************************************************************
    939  *                      whal_ParamsSetarpIpFilterEnabled()
    940  ****************************************************************************
    941  * DESCRIPTION:	set the wlan hardware filters
    942  ****************************************************************************/
    943 void whal_ParamsSetarpIpFilterEnabled(WhalParams_T * pWhalParams, UINT8 isEnabled)
    944 {
    945 	if ( NULL != pWhalParams )
    946 	{
    947 		pWhalParams->WlanParams.isArpIpFilteringEnabled = isEnabled;
    948 	}
    949 
    950 }
    951 
    952 /****************************************************************************
    953  *                      whal_ParamsGetarpIpFilterEnabled()
    954  ****************************************************************************
    955  * DESCRIPTION:	set the wlan hardware filters
    956  ****************************************************************************/
    957 void whal_ParamsGetarpIpFilterEnabled(WhalParams_T * pWhalParams, UINT8* pisEnabled)
    958 {
    959 	if ( NULL != pWhalParams )
    960 	{
    961 		*pisEnabled = pWhalParams->WlanParams.isArpIpFilteringEnabled;
    962 	}
    963 }
    964 
    965 /****************************************************************************
    966 *                      whal_ParamsSetGroupAddressesTable()
    967 ****************************************************************************
    968 * DESCRIPTION:	set the Group addr table
    969 ****************************************************************************/
    970 void whal_ParamsSetGroupAddressesTable(WhalParams_T *pWhalParams, UINT8 isEnabled, UINT8 numGroupAddrs, macAddress_t *Group_addr)
    971 {
    972 	int i;
    973 
    974 	pWhalParams->WlanParams.numGroupAddrs = numGroupAddrs;
    975     pWhalParams->WlanParams.isMacAddrFilteringnabled = isEnabled;
    976 
    977 	for ( i=0 ; i < numGroupAddrs; i++)
    978 	{
    979 		os_memoryCopy(pWhalParams->hOs, (PVOID)&(pWhalParams->WlanParams.Group_addr[i]), (PVOID)&(Group_addr->addr[MAC_ADDR_SIZE*i]), MAC_ADDR_SIZE);
    980 	}
    981 
    982 }
    983 
    984 /****************************************************************************
    985 *                      whal_ParamsGetGroupAddressesTable()
    986 ****************************************************************************
    987 * DESCRIPTION:	get the Group addr table
    988 ****************************************************************************/
    989 void   whal_ParamsGetGroupAddressesTable(WhalParams_T *pWhalParams, UINT8* pisEnabled, UINT8* pnumGroupAddrs, macAddress_t *Group_addr)
    990 {
    991 	int i;
    992 
    993 	*pnumGroupAddrs = pWhalParams->WlanParams.numGroupAddrs;
    994     *pisEnabled = pWhalParams->WlanParams.isMacAddrFilteringnabled;
    995 
    996 	os_memoryZero(pWhalParams->hOs, Group_addr, sizeof(Group_addr));
    997 	for (i=0 ; i < *pnumGroupAddrs; i++)
    998 	{
    999 		os_memoryCopy(pWhalParams->hOs, (void *)&(Group_addr->addr[MAC_ADDR_SIZE*i]), &pWhalParams->WlanParams.Group_addr[i], MAC_ADDR_SIZE);
   1000 	}
   1001 
   1002 }
   1003 
   1004 
   1005 /****************************************************************************
   1006  *                      whal_ParamsGetCurrAntenna()
   1007  ****************************************************************************
   1008  * DESCRIPTION:	get the current antenna setting
   1009  ****************************************************************************/
   1010 UINT8 whal_ParamsGetCurrAntenna(WhalParams_T *pWhalParams)
   1011 {
   1012 	return (pWhalParams->WlanParams.CurrAntenna);
   1013 }
   1014 
   1015 /*
   1016  * --------------------------------------------------------------------------
   1017  *							General params
   1018  * --------------------------------------------------------------------------
   1019  */
   1020 
   1021 #define DEFAULT_TRACE_ENABLE			0
   1022 #define DEFAULT_TRACE_OUT				0
   1023 
   1024 #define DEFAULT_PBCC_DYNAMIC_ENABLE_VAL		0
   1025 #define DEFAULT_PBCC_DYNAMIC_INTERVAL		500	/* ticks */
   1026 #define DEFAULT_PBCC_DYNAMIC_IGNORE_MCAST	0
   1027 
   1028 /****************************************************************************
   1029  *                      whal_ParamsInitGenParams()
   1030  ****************************************************************************
   1031  * DESCRIPTION:	Initiate GenParams to the default values
   1032  *
   1033  * INPUTS:
   1034  *
   1035  * OUTPUT:	None
   1036  *
   1037  * RETURNS:
   1038  ****************************************************************************/
   1039 int whal_ParamsInitGenParams(WhalParams_T *pWhalParams)
   1040 {
   1041 	GenParams_T *pGenParams = &pWhalParams->GenParams;
   1042 
   1043 	whal_ParamsSetPbccDynamicEnableVal(pWhalParams, DEFAULT_PBCC_DYNAMIC_ENABLE_VAL);
   1044 	pGenParams->PbccDynamicInterval	= DEFAULT_PBCC_DYNAMIC_INTERVAL;
   1045 	pGenParams->PbccDynamicIgnoreMcast	= DEFAULT_PBCC_DYNAMIC_IGNORE_MCAST;
   1046 
   1047 
   1048 	pGenParams->TraceEnable			= DEFAULT_TRACE_ENABLE;
   1049 	pGenParams->TraceOut			= DEFAULT_TRACE_OUT;
   1050 
   1051 	return OK;
   1052 }
   1053 
   1054 /****************************************************************************
   1055  *                      whal_ParamsInitGenCounters()
   1056  ****************************************************************************
   1057  * DESCRIPTION:	Initiate GenCounters to the default values
   1058  *
   1059  * INPUTS:
   1060  *
   1061  * OUTPUT:	None
   1062  *
   1063  * RETURNS:
   1064  ****************************************************************************/
   1065 int whal_ParamsInitGenCounters(WhalParams_T *pWhalParams)
   1066 {
   1067 	GenCounters_T *pGenCounters = &pWhalParams->GenCounters;
   1068 
   1069 	pGenCounters->FcsErrCnt = 0;
   1070 
   1071 	return OK;
   1072 }
   1073 
   1074 /****************************************************************************
   1075  *                      whal_ParamsGetGenParams()
   1076  ****************************************************************************
   1077  * DESCRIPTION:	return pointer to the GenParams
   1078  ****************************************************************************/
   1079 GenParams_T *whal_ParamsGetGenParams(WhalParams_T *pWhalParams)
   1080 {
   1081 	return (&pWhalParams->GenParams);
   1082 }
   1083 
   1084 /****************************************************************************
   1085  *                      whal_ParamsGetPbccDynamicEnableVal()
   1086  ****************************************************************************
   1087  * DESCRIPTION:	return the use of Dynamic pbcc enable
   1088  ****************************************************************************/
   1089 UINT32 whal_ParamsGetPbccDynamicEnableVal(WhalParams_T *pWhalParams)
   1090 {
   1091 	return (pWhalParams->GenParams.PbccDynamicEnable);
   1092 }
   1093 
   1094 /****************************************************************************
   1095  *                      whal_ParamsSetPbccDynamic()
   1096  ****************************************************************************
   1097  * DESCRIPTION:	set the use of Dynamic pbcc enable
   1098  ****************************************************************************/
   1099 void whal_ParamsSetPbccDynamicEnableVal(WhalParams_T *pWhalParams, int EnableVal)
   1100 {
   1101 	pWhalParams->GenParams.PbccDynamicEnable = EnableVal;
   1102 
   1103 	if (EnableVal)
   1104 		whal_ParamsSetRxFilter(pWhalParams, (UINT16)RX_CONFIG_OPTION_ANY_DST_ANY_BSS, (UINT16)RX_FILTER_OPTION_DEF);
   1105 	else
   1106 		whal_ParamsSetRxFilter(pWhalParams, (UINT16)RX_CONFIG_OPTION_ANY_DST_MY_BSS, (UINT16)RX_FILTER_OPTION_DEF);
   1107 }
   1108 
   1109 /*
   1110  * --------------------------------------------------------------------------
   1111  *							Wlan hardware Info params
   1112  * --------------------------------------------------------------------------
   1113  */
   1114 
   1115 /****************************************************************************
   1116  *                      whal_ParamsInitHwInfoParams()
   1117  ****************************************************************************
   1118  * DESCRIPTION:	Initiate Hw info params
   1119  *
   1120  * INPUTS:
   1121  *
   1122  * OUTPUT:	None
   1123  *
   1124  * RETURNS:
   1125  ****************************************************************************/
   1126 int whal_ParamsInitHwInfoParams(WhalParams_T *pWhalParams)
   1127 {
   1128 	return OK;
   1129 }
   1130 
   1131 /****************************************************************************
   1132  *                      whal_ParamsGetSrcMac()
   1133  ****************************************************************************
   1134  * DESCRIPTION:	return the AP mac address
   1135  ****************************************************************************/
   1136 UINT8 *whal_ParamsGetSrcMac(WhalParams_T *pWhalParams)
   1137 {
   1138 	return (pWhalParams->HwInfoParams.SrcMacAddr);
   1139 }
   1140 
   1141 /****************************************************************************
   1142  *                      whal_ParamsSetSrcMac()
   1143  ****************************************************************************
   1144  * DESCRIPTION:	set the SrcMac
   1145  ****************************************************************************/
   1146 void whal_ParamsSetSrcMac(WhalParams_T *pWhalParams, char *SrcMac)
   1147 {
   1148 	genMacCopy((char *)pWhalParams->HwInfoParams.SrcMacAddr, SrcMac);
   1149 }
   1150 
   1151 /****************************************************************************
   1152  *                      whal_ParamsGetRadioType()
   1153  ****************************************************************************
   1154  * DESCRIPTION:	return the Radio type from the ConfigOptions
   1155  ****************************************************************************/
   1156 char whal_ParamsGetRadioType(WhalParams_T *pWhalParams)
   1157 {
   1158 	return (pWhalParams->WlanParams.radioType);
   1159 }
   1160 
   1161 /****************************************************************************
   1162  *                      whal_ParamsHwNvramPrint()
   1163  ****************************************************************************
   1164  * DESCRIPTION:	Print ConfigOptions
   1165  ****************************************************************************/
   1166 void whal_ParamsHwNvramPrint(WhalParams_T *pWhalParams)
   1167 {
   1168  /* for future use */
   1169 }
   1170 
   1171 /****************************************************************************
   1172  *                      whal_ParamsGetAcxVersion()
   1173  ****************************************************************************
   1174  * DESCRIPTION:	return wlan hardware/software version
   1175  ****************************************************************************/
   1176 ACXRevision_t *whal_ParamsGetAcxVersion(WhalParams_T *pWhalParams)
   1177 {
   1178 	return (&pWhalParams->HwInfoParams.AcxVersion);
   1179 }
   1180 
   1181 /****************************************************************************
   1182  *                      whal_ParamsGetFwVersion()
   1183  ****************************************************************************
   1184  * DESCRIPTION:	return wlan firmware version
   1185  ****************************************************************************/
   1186 UINT8 *whal_ParamsGetFwVersion(WhalParams_T *pWhalParams)
   1187 {
   1188     return (UINT8 *)(pWhalParams->HwInfoParams.AcxVersion.FWVersion);
   1189 }
   1190 
   1191 /****************************************************************************
   1192  *                      whal_ParamsPrintFwVersion()
   1193  ****************************************************************************
   1194  * DESCRIPTION:	print the fw version
   1195  ****************************************************************************/
   1196 void whal_ParamsPrintFwVersion(WhalParams_T *pWhalParams)
   1197 {
   1198 #ifdef TI_DBG
   1199 	UINT8 *StaId = whal_ParamsGetSrcMac(pWhalParams);
   1200 
   1201     WLAN_REPORT_INIT (pWhalParams->hReport,
   1202                       HAL_HW_CTRL_MODULE_LOG,
   1203                       ("Firmware version: %s\n",
   1204                       pWhalParams->HwInfoParams.AcxVersion.FWVersion));
   1205     WLAN_REPORT_INIT (pWhalParams->hReport,
   1206                       HAL_HW_CTRL_MODULE_LOG,
   1207                       ("Station Id: %02X-%02X-%02X-%02X-%02X-%02X\n",
   1208                       StaId[0], StaId[1], StaId[2], StaId[3], StaId[4], StaId[5]));
   1209 #endif /* TI_DBG */
   1210 }
   1211 
   1212 /****************************************************************************
   1213  *                      whal_ParamsGetTraceBufferSize()
   1214  ****************************************************************************
   1215  * DESCRIPTION:	get trace buffer size
   1216  ****************************************************************************/
   1217 UINT32 whal_ParamsGetTraceBufferSize(WhalParams_T *pWhalParams)
   1218 {
   1219 	return pWhalParams->DmaParams.TraceBufferSize;
   1220 }
   1221 /*
   1222  * --------------------------------------------------------------------------
   1223  *							Convert functions
   1224  * --------------------------------------------------------------------------
   1225  */
   1226 
   1227 int whalUtils_ConvertHwRate(UINT8 HwRate, UINT8 HwModulation, rate_e *AppRate, modulationType_e *AppModulation)
   1228 {
   1229 	rate_e Rate = DRV_RATE_AUTO;
   1230 	modulationType_e Modulation = DRV_MODULATION_NONE;
   1231 	int Stt = OK;
   1232 
   1233 	switch (HwRate)
   1234 	{
   1235 		case RATE_1MBPS:		Rate = DRV_RATE_1M;		Modulation = DRV_MODULATION_QPSK;	break;
   1236 		case RATE_2MBPS:		Rate = DRV_RATE_2M;		Modulation = DRV_MODULATION_QPSK;	break;
   1237 		case RATE_5_5MBPS:		Rate = DRV_RATE_5_5M;	Modulation = DRV_MODULATION_CCK;	break;
   1238 		case RATE_11MBPS:		Rate = DRV_RATE_11M;	Modulation = DRV_MODULATION_CCK;	break;
   1239 		case RATE_22MBPS:	    Rate = DRV_RATE_22M;	Modulation = DRV_MODULATION_PBCC;	break;
   1240 		case RATE_6MBPS:		Rate = DRV_RATE_6M;		Modulation = DRV_MODULATION_OFDM;	break;
   1241 		case RATE_9MBPS:		Rate = DRV_RATE_9M;		Modulation = DRV_MODULATION_OFDM;	break;
   1242 		case RATE_18MBPS:		Rate = DRV_RATE_18M;	Modulation = DRV_MODULATION_OFDM;	break;
   1243 		case RATE_24MBPS:		Rate = DRV_RATE_24M;	Modulation = DRV_MODULATION_OFDM;	break;
   1244 		case RATE_36MBPS:		Rate = DRV_RATE_36M;	Modulation = DRV_MODULATION_OFDM;	break;
   1245 		case RATE_48MBPS:		Rate = DRV_RATE_48M;	Modulation = DRV_MODULATION_OFDM;	break;
   1246 		case RATE_54MBPS:		Rate = DRV_RATE_54M;	Modulation = DRV_MODULATION_OFDM;	break;
   1247 		default:				Rate = DRV_RATE_1M;		Modulation = DRV_MODULATION_NONE;
   1248 			Stt = NOK;
   1249 			break;
   1250 	}
   1251 
   1252 	/* patch for 12M (same code as 1M) */
   1253 	if ((HwRate == RATE_12MBPS) && (HwModulation == HW_MODULATION_OFDM))
   1254 	{
   1255 		Rate = DRV_RATE_12M;	Modulation = DRV_MODULATION_OFDM;
   1256 	}
   1257 
   1258 	if (Stt == OK)
   1259 	{
   1260 		*AppRate = Rate;
   1261 		*AppModulation = Modulation;
   1262 	}
   1263 
   1264 	return Stt;
   1265 }
   1266 
   1267 
   1268 int  whalUtils_ConvertAppRate (rate_e AppRate, UINT8 *HwRate)
   1269 {
   1270 	UINT8 Rate = 0;
   1271 	int Stt = OK;
   1272 
   1273 	switch (AppRate)
   1274 	{
   1275 		/*
   1276 		 *	The handle for 5.5/11/22 PBCC was removed !!!
   1277 		 */
   1278 
   1279 		case DRV_RATE_1M:			Rate = RATE_1MBPS;			break;
   1280 		case DRV_RATE_2M:			Rate = RATE_2MBPS;			break;
   1281 		case DRV_RATE_5_5M:   		Rate = RATE_5_5MBPS;		break;
   1282 		case DRV_RATE_11M:			Rate = RATE_11MBPS;			break;
   1283 		case DRV_RATE_22M:			Rate = RATE_22MBPS;			break;
   1284 		case DRV_RATE_6M:			Rate = RATE_6MBPS;			break;
   1285 		case DRV_RATE_9M:			Rate = RATE_9MBPS;			break;
   1286 		case DRV_RATE_12M:			Rate = RATE_12MBPS;			break;
   1287 		case DRV_RATE_18M:			Rate = RATE_18MBPS;			break;
   1288 		case DRV_RATE_24M:			Rate = RATE_24MBPS;			break;
   1289 		case DRV_RATE_36M:			Rate = RATE_36MBPS;			break;
   1290 		case DRV_RATE_48M:			Rate = RATE_48MBPS;			break;
   1291 		case DRV_RATE_54M:			Rate = RATE_54MBPS;			break;
   1292 
   1293 		default:
   1294             WLAN_OS_REPORT(("%s wrong app rate = %d\n",__FUNCTION__,AppRate));
   1295 			Stt = NOK;
   1296 			break;
   1297 	}
   1298 
   1299 	if (Stt == OK)
   1300 		*HwRate = Rate;
   1301 	else
   1302 		*HwRate = RATE_1MBPS;
   1303 
   1304 	return (Stt);
   1305 }
   1306 
   1307 int  whalUtils_FindHwModulationByDrvRate (rate_e AppRate, UINT8 *HwModu, UINT8 preamble)
   1308 {
   1309 	int Stt = OK;
   1310 
   1311 
   1312 	switch (AppRate)
   1313 	{
   1314 		/*
   1315 		 *	The handle for 5.5/11/22 PBCC was removed !!!
   1316 		 */
   1317 
   1318 		case DRV_RATE_1M:
   1319             *HwModu = CCK_LONG;
   1320             break;
   1321 
   1322 		case DRV_RATE_2M:
   1323 		case DRV_RATE_5_5M:
   1324 		case DRV_RATE_11M:
   1325             if (preamble == 0) /* PREAMBLE_LONG*/
   1326                 *HwModu = CCK_LONG;
   1327             else
   1328                 *HwModu = CCK_SHORT;
   1329             break;
   1330 
   1331         case DRV_RATE_22M:
   1332             if (preamble == 0) /* PREAMBLE_LONG*/
   1333                 *HwModu = PBCC_LONG;
   1334             else
   1335                 *HwModu = PBCC_SHORT;
   1336             break;
   1337 
   1338 		case DRV_RATE_6M:
   1339 		case DRV_RATE_9M:
   1340 		case DRV_RATE_12M:
   1341 		case DRV_RATE_18M:
   1342 		case DRV_RATE_24M:
   1343 		case DRV_RATE_36M:
   1344 		case DRV_RATE_48M:
   1345 		case DRV_RATE_54M:
   1346             *HwModu = OFDM;
   1347             break;
   1348 	default:
   1349             WLAN_OS_REPORT(("%s wrong rate = %d\n",__FUNCTION__,AppRate));
   1350 			*HwModu = CCK_LONG;
   1351 			Stt = NOK;
   1352 			break;
   1353 	}
   1354 
   1355 	return (Stt);
   1356 }
   1357 
   1358 
   1359 
   1360 int whalUtils_ConvertAppRatesBitmap(UINT32 AppRatesBitmap, UINT32 AppModulation, UINT16 *HwRatesBitmap)
   1361 {
   1362 	UINT16 RatesBitmap = 0;
   1363 
   1364 	if (AppRatesBitmap & DRV_RATE_MASK_1_BARKER)	RatesBitmap |= HW_BIT_RATE_1MBPS;
   1365 	if (AppRatesBitmap & DRV_RATE_MASK_2_BARKER)	RatesBitmap |= HW_BIT_RATE_2MBPS;
   1366 	if (AppRatesBitmap & DRV_RATE_MASK_5_5_CCK)		RatesBitmap |= HW_BIT_RATE_5_5MBPS;
   1367 	if (AppRatesBitmap & DRV_RATE_MASK_11_CCK)		RatesBitmap |= HW_BIT_RATE_11MBPS;
   1368 	if (AppRatesBitmap & DRV_RATE_MASK_22_PBCC)		RatesBitmap |= HW_BIT_RATE_22MBPS;
   1369 	if (AppRatesBitmap & DRV_RATE_MASK_6_OFDM)		RatesBitmap |= HW_BIT_RATE_6MBPS;
   1370 	if (AppRatesBitmap & DRV_RATE_MASK_9_OFDM)		RatesBitmap |= HW_BIT_RATE_9MBPS;
   1371 	if (AppRatesBitmap & DRV_RATE_MASK_12_OFDM)		RatesBitmap |= HW_BIT_RATE_12MBPS;
   1372 	if (AppRatesBitmap & DRV_RATE_MASK_18_OFDM)		RatesBitmap |= HW_BIT_RATE_18MBPS;
   1373 	if (AppRatesBitmap & DRV_RATE_MASK_24_OFDM)		RatesBitmap |= HW_BIT_RATE_24MBPS;
   1374 	if (AppRatesBitmap & DRV_RATE_MASK_36_OFDM)		RatesBitmap |= HW_BIT_RATE_36MBPS;
   1375 	if (AppRatesBitmap & DRV_RATE_MASK_48_OFDM)		RatesBitmap |= HW_BIT_RATE_48MBPS;
   1376 	if (AppRatesBitmap & DRV_RATE_MASK_54_OFDM)		RatesBitmap |= HW_BIT_RATE_54MBPS;
   1377 
   1378 	*HwRatesBitmap = RatesBitmap;
   1379 
   1380 	return (OK);
   1381 }
   1382 
   1383 int whalUtils_ConvertHwRatesBitmap(UINT8 HwRatesBitmap, UINT8 HwModulation, UINT32 *AppRate, UINT32 *AppModulation)
   1384 {
   1385 	UINT16 RatesBitmap = 0;
   1386 
   1387 	if (HwRatesBitmap & HW_BIT_RATE_1MBPS)			RatesBitmap |= DRV_RATE_MASK_1_BARKER;
   1388 	if (HwRatesBitmap & HW_BIT_RATE_2MBPS)			RatesBitmap |= DRV_RATE_MASK_2_BARKER;
   1389 	if (HwRatesBitmap & HW_BIT_RATE_5_5MBPS)		RatesBitmap |= DRV_RATE_MASK_5_5_CCK;
   1390 	if (HwRatesBitmap & HW_BIT_RATE_11MBPS)			RatesBitmap |= DRV_RATE_MASK_11_CCK;
   1391 	if (HwRatesBitmap & HW_BIT_RATE_22MBPS)			RatesBitmap |= DRV_RATE_MASK_22_PBCC;
   1392 	if (HwRatesBitmap & HW_BIT_RATE_6MBPS)			RatesBitmap |= DRV_RATE_MASK_6_OFDM;
   1393 	if (HwRatesBitmap & HW_BIT_RATE_9MBPS)			RatesBitmap |= DRV_RATE_MASK_9_OFDM;
   1394 	if (HwRatesBitmap & HW_BIT_RATE_12MBPS)			RatesBitmap |= DRV_RATE_MASK_12_OFDM;
   1395 	if (HwRatesBitmap & HW_BIT_RATE_18MBPS)			RatesBitmap |= DRV_RATE_MASK_18_OFDM;
   1396 	if (HwRatesBitmap & HW_BIT_RATE_24MBPS)			RatesBitmap |= DRV_RATE_MASK_24_OFDM;
   1397 	if (HwRatesBitmap & HW_BIT_RATE_36MBPS)			RatesBitmap |= DRV_RATE_MASK_36_OFDM;
   1398 	if (HwRatesBitmap & HW_BIT_RATE_48MBPS)			RatesBitmap |= DRV_RATE_MASK_48_OFDM;
   1399 	if (HwRatesBitmap & HW_BIT_RATE_54MBPS)			RatesBitmap |= DRV_RATE_MASK_54_OFDM;
   1400 
   1401 	*AppRate = RatesBitmap;
   1402 
   1403 	return (OK);
   1404 }
   1405 
   1406 void whalUtils_ConvertBitmapToMaxRate(UINT16 HwRatesBitmap, UINT8 *HwModulation, UINT8 *HwRate)
   1407 {
   1408 	/*
   1409 	* !!!!!! MUST KEEP THE ORDER
   1410 	*/
   1411 	if (HwRatesBitmap & HW_BIT_RATE_54MBPS)
   1412 	{
   1413 		*HwRate = RATE_54MBPS;
   1414 		*HwModulation = HW_MODULATION_OFDM;
   1415 	}
   1416 	else if (HwRatesBitmap & HW_BIT_RATE_48MBPS)
   1417 	{
   1418 		*HwRate = RATE_48MBPS;
   1419 		*HwModulation = HW_MODULATION_OFDM;
   1420 	}
   1421 	else if (HwRatesBitmap & HW_BIT_RATE_36MBPS)
   1422 	{
   1423 		*HwRate = RATE_36MBPS;
   1424 		*HwModulation = HW_MODULATION_OFDM;
   1425 	}
   1426 	else if (HwRatesBitmap & HW_BIT_RATE_24MBPS)
   1427 	{
   1428 		*HwRate = RATE_24MBPS;
   1429 		*HwModulation = HW_MODULATION_OFDM;
   1430 	}
   1431 	else if (HwRatesBitmap & HW_BIT_RATE_22MBPS)
   1432 	{
   1433 		*HwRate = RATE_22MBPS;
   1434 		*HwModulation = HW_MODULATION_PBCC;
   1435 	}
   1436 	else if (HwRatesBitmap & HW_BIT_RATE_18MBPS)
   1437 	{
   1438 		*HwRate = RATE_18MBPS;
   1439 		*HwModulation = HW_MODULATION_OFDM;
   1440 	}
   1441 	else if (HwRatesBitmap & HW_BIT_RATE_12MBPS)
   1442 	{
   1443 		*HwRate = RATE_12MBPS;
   1444 		*HwModulation = HW_MODULATION_OFDM;
   1445 	}
   1446 	else if (HwRatesBitmap & HW_BIT_RATE_11MBPS)
   1447 	{
   1448 		*HwRate = RATE_11MBPS;
   1449 		*HwModulation = HW_MODULATION_PBCC;
   1450 	}
   1451 	else if (HwRatesBitmap & HW_BIT_RATE_9MBPS)
   1452 	{
   1453 		*HwRate = RATE_9MBPS;
   1454 		*HwModulation = HW_MODULATION_OFDM;
   1455 	}
   1456 	else if (HwRatesBitmap & HW_BIT_RATE_6MBPS)
   1457 	{
   1458 		*HwRate = RATE_6MBPS;
   1459 		*HwModulation = HW_MODULATION_OFDM;
   1460 	}
   1461 	else if (HwRatesBitmap & HW_BIT_RATE_5_5MBPS)
   1462 	{
   1463 		*HwRate = RATE_5_5MBPS;
   1464 		*HwModulation = HW_MODULATION_PBCC;
   1465 	}
   1466 	else if (HwRatesBitmap & HW_BIT_RATE_2MBPS)
   1467 	{
   1468 		*HwRate = RATE_2MBPS;
   1469 		*HwModulation = HW_MODULATION_PBCC;
   1470 	}
   1471 	else
   1472 	{
   1473 		*HwRate = RATE_1MBPS;
   1474 		*HwModulation = HW_MODULATION_PBCC;
   1475 	}
   1476 }
   1477 
   1478 /* Note the difference between this function and the next one */
   1479 UINT32  whalUtils_GwsiRate2DRV_RATE (UINT32 gwsiRate)
   1480 {
   1481 	switch (gwsiRate)
   1482 	{
   1483 		/*
   1484 		 *	The handle for 33 removed !!!
   1485 		 */
   1486 
   1487 		case GWSI_1Mbits:	return   	DRV_RATE_1M; /*	break; */
   1488 		case GWSI_2Mbits:	return 	DRV_RATE_2M;	/*break; */
   1489 		case GWSI_5_5Mbits:	return 	DRV_RATE_5_5M;  /*break; */
   1490 		case GWSI_6Mbits	:	return 	DRV_RATE_6M; /* break; */
   1491 		case GWSI_9Mbits	:	return 	DRV_RATE_9M; /*	break; */
   1492 		case GWSI_11Mbits:	return 	DRV_RATE_11M; /*	break; */
   1493 		case GWSI_12Mbits:	return 	DRV_RATE_12M; /*	break; */
   1494 		case GWSI_18Mbits:	return 	DRV_RATE_18M; /*	break; */
   1495 		case GWSI_22Mbits:	return 	DRV_RATE_22M; /*	break; */
   1496 		case GWSI_24Mbits:	return 	DRV_RATE_24M; /*	break; */
   1497 		case GWSI_36Mbits:	return 	DRV_RATE_36M; /*	break; */
   1498 		case GWSI_48Mbits:	return 	DRV_RATE_48M; /*	break; */
   1499 		case GWSI_54Mbits:	return 	DRV_RATE_54M; /*	break; */
   1500 
   1501 		default:
   1502 
   1503 			return   	DRV_RATE_1M;
   1504 		/*	break; */
   1505 	}
   1506 }
   1507 
   1508 rateMask_e  whalUtils_GwsiRate2DRV_RATE_MASK (UINT32 gwsiRate)
   1509 {
   1510 	switch (gwsiRate)
   1511 	{
   1512 		case GWSI_1Mbits:	return  DRV_RATE_MASK_1_BARKER;
   1513 		case GWSI_2Mbits:	return 	DRV_RATE_MASK_2_BARKER;
   1514 		case GWSI_5_5Mbits:	return 	DRV_RATE_MASK_5_5_CCK;
   1515 		case GWSI_6Mbits:	return 	DRV_RATE_MASK_6_OFDM;
   1516 		case GWSI_9Mbits:	return 	DRV_RATE_MASK_9_OFDM;
   1517 		case GWSI_11Mbits:	return 	DRV_RATE_MASK_11_CCK;
   1518 		case GWSI_12Mbits:	return 	DRV_RATE_MASK_12_OFDM;
   1519 		case GWSI_18Mbits:	return 	DRV_RATE_MASK_18_OFDM;
   1520 		case GWSI_22Mbits:	return 	DRV_RATE_MASK_22_PBCC;
   1521 		case GWSI_24Mbits:	return 	DRV_RATE_MASK_24_OFDM;
   1522 		case GWSI_36Mbits:	return 	DRV_RATE_MASK_36_OFDM;
   1523 		case GWSI_48Mbits:	return 	DRV_RATE_MASK_48_OFDM;
   1524 		case GWSI_54Mbits:	return 	DRV_RATE_MASK_54_OFDM;
   1525 
   1526 		default:			return  DRV_RATE_MASK_1_BARKER;
   1527 	}
   1528 }
   1529 
   1530 UINT32  whalUtils_DRV_RATE2GwsiRate (UINT32 Rate)
   1531 {
   1532 	switch (Rate)
   1533 	{
   1534 		/*
   1535 		 *	The handle for 33 removed !!!
   1536 		 */
   1537 
   1538 		case DRV_RATE_1M:	return   GWSI_1Mbits; /*	break;*/
   1539 		case DRV_RATE_2M:	return 	GWSI_2Mbits;  /*	break;*/
   1540 		case DRV_RATE_5_5M:	return 	GWSI_5_5Mbits;/*   break;*/
   1541 		case DRV_RATE_6M:	return 	GWSI_6Mbits	; /*	break;*/
   1542 		case DRV_RATE_9M:	return 	GWSI_9Mbits	; /*	break;*/
   1543 		case DRV_RATE_11M:	return 	GWSI_11Mbits; /*	break;*/
   1544 		case DRV_RATE_12M:	return 	GWSI_12Mbits; /*	break;*/
   1545 		case DRV_RATE_18M:	return 	GWSI_18Mbits; /*	break;*/
   1546 		case DRV_RATE_22M:	return 	GWSI_22Mbits; /*	break;*/
   1547 		case DRV_RATE_24M:	return 	GWSI_24Mbits; /*	break;*/
   1548 		case DRV_RATE_36M:	return 	GWSI_36Mbits; /*	break;*/
   1549 		case DRV_RATE_48M:	return 	GWSI_48Mbits; /*	break;*/
   1550 		case DRV_RATE_54M:	return 	GWSI_54Mbits; /*	break;*/
   1551 
   1552 		default:
   1553 			return   	GWSI_1Mbits;
   1554 	/*		break; */
   1555 	}
   1556 }
   1557 
   1558 UINT32  whalUtils_DRV_RATE_MASK2GwsiRate (rateMask_e rateMask)
   1559 {
   1560 	switch (rateMask)
   1561 	{
   1562 		case DRV_RATE_MASK_1_BARKER:	return  GWSI_1Mbits;
   1563 		case DRV_RATE_MASK_2_BARKER:	return 	GWSI_2Mbits;
   1564 		case DRV_RATE_MASK_5_5_CCK:	return 	GWSI_5_5Mbits;
   1565 		case DRV_RATE_MASK_6_OFDM:	return 	GWSI_6Mbits;
   1566 		case DRV_RATE_MASK_9_OFDM:	return 	GWSI_9Mbits;
   1567 		case DRV_RATE_MASK_11_CCK:	return 	GWSI_11Mbits;
   1568 		case DRV_RATE_MASK_12_OFDM:	return 	GWSI_12Mbits;
   1569 		case DRV_RATE_MASK_18_OFDM:	return 	GWSI_18Mbits;
   1570 		case DRV_RATE_MASK_22_PBCC:	return 	GWSI_22Mbits;
   1571 		case DRV_RATE_MASK_24_OFDM:	return 	GWSI_24Mbits;
   1572 		case DRV_RATE_MASK_36_OFDM:	return 	GWSI_36Mbits;
   1573 		case DRV_RATE_MASK_48_OFDM:	return 	GWSI_48Mbits;
   1574 		case DRV_RATE_MASK_54_OFDM:	return 	GWSI_54Mbits;
   1575 
   1576 		default:			return  GWSI_1Mbits;
   1577 	}
   1578 }
   1579 
   1580