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