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 #ifndef _WHAL_CTRL_API_H 37 #define _WHAL_CTRL_API_H 38 39 #include "whalCtrl_prm.h" 40 #include "public_infoele.h" 41 #include "whalBus_Defs.h" 42 #include "MacServices_api.h" 43 44 45 #define MEASUREMENT_NOISE_HISTOGRAM_NUM_OF_RANGES 8 46 #define MAX_CHANNELS_IN_REG_DOMAIN 40 47 48 #define CTS_TO_SELF_DISABLE 0 49 #define CTS_TO_SELF_ENABLE 1 50 51 #define MAX_TEMPLATE_SIZE 256 52 typedef struct 53 { 54 UINT32 Size; 55 UINT8 Buffer[MAX_TEMPLATE_SIZE]; 56 } TemplateParams_T; 57 58 typedef enum 59 { 60 NULL_DATA_TEMPLATE = 0, 61 BEACON_TEMPLATE, 62 PROBE_REQUEST_TEMPLATE, 63 PROBE_RESPONSE_TEMPLATE, 64 QOS_NULL_DATA_TEMPLATE, 65 PS_POLL_TEMPLATE, 66 } whalCtrl_templateType_e; 67 68 typedef enum{ 69 WHAL_WME = 0, 70 WHAL_NONE_QOS, 71 }whalCtrl_qosProtocols_e; 72 73 /* Do not change the order */ 74 typedef enum 75 { 76 PS_DISABLE = 0, 77 PS_ENABLE = 1, 78 } whalCtrl_psState_e; 79 80 typedef enum 81 { 82 PS_POLL_ACCESS_MNGR_GEN= 0, 83 PS_POLL_HOST_ECPU_GEN, 84 } whalCtrl_psPollGen_e; 85 86 typedef enum 87 { 88 ENTER_PS_FAIL, 89 ENTER_PS_SUCCESS, 90 EXIT_PS_FAIL, 91 EXIT_PS_SUCCESS, 92 }Hw_Event_PS_Status; 93 94 /** Available cipher suites for admission control */ 95 typedef enum 96 { 97 HAL_CTRL_CIPHER_NONE = 0, /**< no chpiher suite */ 98 HAL_CTRL_CIPHER_WEP = 1, /**< WEP-40 chpiher suite */ 99 HAL_CTRL_CIPHER_TKIP = 2, /**< TKIP chpiher suite */ 100 HAL_CTRL_CIPHER_AES_WRAP = 3, /**< AES WRAP chpiher suite */ 101 HAL_CTRL_CIPHER_AES_CCMP = 4, /**< AES CCMP chpiher suite */ 102 HAL_CTRL_CIPHER_WEP104 = 5, /**< WEP-104 chpiher suite */ 103 HAL_CTRL_CIPHER_CKIP = 6, /**< CKIP chpiher suite */ 104 HAL_CTRL_CIPHER_UNKNOWN = 255 /**< UNKNOWN chpiher suite */ 105 } halCtrl_CipherSuite_e; 106 107 108 /* 109 * The Event Mail Box ID : Clients That expected an event should 110 * register,Mask/UnMask Events with this ID 111 */ 112 113 typedef enum 114 { 115 /*Regular events*/ 116 HAL_EVENT_MEASUREMENT_START, /*0*/ 117 HAL_EVENT_SCAN_CMPLT, /*1*/ 118 HAL_EVENT_CALIB_CMPLT, /*2*/ 119 HAL_EVENT_RSSI_LEVEL, /*3*/ 120 HAL_EVENT_PS_REPORT, /*4*/ 121 HAL_EVENT_SYNCHRONIZATION_TIMEOUT, /*5*/ 122 HAL_EVENT_HEALTH_REPORT, /*6*/ 123 HAL_EVENT_ACI, /*7*/ 124 HAL_EVENT_DEBUG_MESSAGE, /*8*/ 125 HAL_EVENT_MAC_STATUS, /*9*/ 126 HAL_EVENT_DISCONNECT_COMPLETE, /*10*/ 127 HAL_EVENT_JOIN_CMPLT, /*11*/ 128 HAL_EVENT_SWITCH_CHANNEL_CMPLT, /*12*/ 129 HAL_EVENT_BSS_LOSE, /*13*/ 130 HAL_EVENT_MAX_TX_RETRY, /*14*/ 131 HAL_EVENT_MEASUREMENT_COMPLETE, /*15*/ 132 HAL_EVENT_AP_DISCOVERY_COMPLETE, /*16*/ 133 HAL_EVENT_SPS_SCAN_CMPLT, /*17*/ 134 HAL_EVENT_BSS_REGAIN, /*18*/ 135 HAL_EVENT_RSSI_LEVEL_REGAIN, /*19*/ 136 HAL_EVENT_LOW_SNR, /*20*/ 137 HAL_EVENT_SOFT_GEMINI_SENSE, /*21*/ 138 HAL_EVENT_SOFT_GEMINI_PREDICTION, /*22*/ 139 HAL_EVENT_SOFT_GEMINI_AVALANCHE, /*23*/ 140 HAL_EVENT_PLT_RX_CALIBRATION_COMPLETE, /*24*/ 141 HAL_EVENT_PSPOLL_DELIVERY_FAILURE, /*25*/ 142 HAL_EVENT_BSS_RESET, /*26*/ 143 HAL_EVENT_ALL, /* 27 */ 144 MAX_NUM_OF_EVENT, /* 28 */ 145 }Hw_Event_ID; 146 147 148 typedef struct 149 { 150 macAddress_t macAddress; 151 preamble_e preamble; 152 radioType_e radioType; 153 radioBand_e radioBand; 154 UINT8 fwVer[FW_VERSION_LEN]; /* Firmware version - null terminated string*/ 155 e2Version_t e2Ver; /* EEPROM version*/ 156 } whalCtrl_chip_t; 157 158 typedef struct 159 { 160 TI_HANDLE hRxXfer; 161 TI_HANDLE hTxXfer; 162 TI_HANDLE hTxResult; 163 TI_HANDLE hTxHwQueue; 164 TI_HANDLE hReport; 165 TI_HANDLE hMemMgr; 166 TI_HANDLE hEventMbox; 167 TI_HANDLE hFwEvent; 168 TI_HANDLE hCmdQueue; 169 #ifdef TI_DBG 170 TI_HANDLE hDebugTrace; 171 #endif /* TI_DBG */ 172 } whalCtrl_config_t; 173 174 175 176 typedef struct 177 { 178 bssType_e bssType; 179 UINT16 beaconInterval; 180 UINT16 dtimInterval; 181 UINT8 channel; 182 UINT8* pBSSID; 183 UINT8* pSSID; 184 UINT8 ssidLength; 185 rate_e hwGenCtrlTxRate; 186 rate_e hwGenMgmtTxRate; /* Beacon and Probe-Response Tx rate (in IBSS). */ 187 UINT16 basicRateSet; 188 UINT16 supportedRateSet; 189 radioBand_e radioBand; 190 preamble_e preamble; 191 } whalCtrl_joinBss_t; 192 193 typedef struct 194 { 195 whalCtrl_templateType_e templateType; 196 UINT8* pTemplate; 197 UINT32 templateLen; 198 } whalCtrl_setTemplate_t; 199 200 PACKED_STRUCT( whalCtrl_antennaDiversityOptions_t, 201 202 uint8 enableRxDiversity; 203 uint8 rxSelectedAntenna; 204 uint8 enableTxDiversity; 205 uint8 txSelectedAntenna; 206 uint8 rxTxSharedAnts; 207 ); 208 209 typedef enum 210 { 211 STOP_NOISE_HIST = 0, 212 START_NOISE_HIST = 1 213 } NoiseHistogramCmd_e; 214 215 typedef struct 216 { 217 NoiseHistogramCmd_e cmd; 218 UINT16 sampleInterval; 219 UINT8 ranges[MEASUREMENT_NOISE_HISTOGRAM_NUM_OF_RANGES]; 220 } whalCtrl_noiseHistogram_t; 221 222 /* use this struct when expecting a CB after a CONFIGURE_ACTION */ 223 PACKED_STRUCT( acxStatisitcs_t, 224 225 UINT32 FWpacketReceived; 226 UINT32 HALpacketReceived; 227 ); 228 229 PACKED_STRUCT( mediumOccupancy_t, 230 231 interogateCmdHdr_t mediumOccupCmdHdr; 232 UINT32 MediumUsage; 233 UINT32 Period; 234 ); 235 236 PACKED_STRUCT( tsf_dtim_mib_t, 237 238 interogateCmdHdr_t tsf_dtim_mibCmdHdr; 239 uint32 CurrentTSFHigh; 240 uint32 CurrentTSFLow; 241 uint32 lastTBTTHigh; 242 uint32 lastTBTTLow; 243 uint8 LastDTIMCount; 244 uint8 Reserved[3]; 245 ); 246 247 248 typedef struct 249 { 250 UINT16 BeaconRxTimeout; 251 UINT16 BroadcastRxTimeout; 252 UINT8 RxBroadcastInPs; 253 } BcnBrcOptions_t; 254 255 typedef struct 256 { 257 UINT8 numberOfIEs; 258 UINT8 IETable[BEACON_FILTER_TABLE_MAX_SIZE]; 259 UINT8 IETableSize; 260 } beaconFilterIETable_t; 261 262 263 typedef struct 264 { 265 UINT8 beaconListenInterval; 266 UINT8 beaconFiltering; 267 UINT8 DTIMListenInterval; 268 UINT8 NConsecutiveBeaconMiss; 269 UINT8 hangoverPeriod; 270 UINT8 HwPsPollResponseTimeout; 271 UINT32 BaseBandWakeUpTime; 272 UINT32 beaconReceiveTime; 273 BOOLEAN beaconMissInterruptEnable; 274 BOOLEAN rxBroadcast; 275 BOOLEAN hwPsPoll; 276 277 278 /* powerMgmtConfig IE */ 279 BOOLEAN ps802_11Enable; 280 UINT8 needToSendNullData; 281 UINT8 numNullPktRetries; 282 UINT8 hangOverPeriod; 283 UINT16 NullPktRateModulation; 284 285 /* PMConfigStruct */ 286 BOOLEAN ELPEnable; 287 UINT32 BBWakeUpTime; 288 UINT32 PLLlockTime; 289 290 /* AcxBcnBrcOptions */ 291 BcnBrcOptions_t BcnBrcOptions; 292 293 /* ACXWakeUpCondition */ 294 PowerMgr_TnetWakeOn_e tnetWakeupOn; 295 UINT8 listenInterval; 296 297 /* No answer after Ps-Poll work-around */ 298 UINT8 ConsecutivePsPollDeliveryFailureThreshold; 299 } whalCtrl_powerMgmtConfig_t; 300 301 typedef struct 302 { 303 304 /* powerMgmtConfig IE */ 305 BOOLEAN ps802_11Enable; 306 UINT8 needToSendNullData; 307 UINT8 numNullPktRetries; 308 UINT8 hangOverPeriod; 309 UINT16 NullPktRateModulation; 310 void * powerSaveCBObject; 311 MacServices_powerSaveCmdResponseCB_t powerSavecmdResponseCB; 312 313 314 } whalCtrl_powerSaveParams_t; 315 316 /*MULTIPLE QUEUES STRUCTURE */ 317 318 typedef struct 319 { 320 UINT16 txopLimit; 321 UINT16 rxTimeout; 322 UINT8 aifsn; 323 UINT8 cwMin; 324 UINT16 cwMax; 325 UINT8 acId; 326 UINT8 shortRetryLimit; 327 UINT8 longRetryLimit; 328 UINT8 retryPreemption; 329 UINT8 txopContinuation; 330 UINT8 PsParameters; 331 } whaCtrl_acTrafficParams_t; 332 333 334 typedef struct 335 { 336 UINT8 acId; 337 UINT8 qId; 338 UINT16 percentOfBlockHighThreshold; /* Sum of ACs > numTxMemBlks in ~10% */ 339 UINT16 percentOfBlockLowThreshold; /* Sum of ACs < numTxMemBlks */ 340 } acQueuesParams_t; 341 342 343 typedef enum{ 344 HAL_CTRL_AC_NOT_ADMITTED, 345 HAL_CTRL_AC_WAIT_ADMISSION, 346 HAL_CTRL_AC_ADMITTED 347 } whalCtrl_trafficAdmState_e; 348 349 typedef enum{ 350 HAL_CTRL_UNIDIRECTION, 351 HAL_CTRL_BIDIRECTION, 352 } whalCtrl_streamDirection_e; 353 354 typedef enum{ 355 HAL_CTRL_ADDTS_RESPONSE_ACCEPT = 0, 356 /* HAL_CTRL_ADDTS_RESPONSE_REJECT, - according to the standard*/ 357 HAL_CTRL_ADDTS_RESPONSE_AP_PARAM_INVALID = 253, 358 HAL_CTRL_ADDTS_RESPONSE_TIMEOUT = 254, 359 HAL_CTRL_TSPEC_DELETED_BY_AP = 255, 360 } whalCtrl_addtsRaeasonCode_e; 361 362 typedef enum{ 363 HAL_CTRL_HIGH_THRESHOLD_CROSS, 364 HAL_CTRL_LOW_THRESHOLD_CROSS, 365 } whalCtrl_thresholdCross_e; 366 367 typedef enum{ 368 HAL_CTRL_CROSS_ABOVE, 369 HAL_CTRL_CROSS_BELOW, 370 } whalCtrl_thresholdCrossDirection_e; 371 372 typedef struct{ 373 UINT32 acID; 374 thresholdCross_e thresholdCross; 375 } tspecRateCross_t; 376 377 typedef struct{ 378 UINT32 acID; 379 UINT32 thresholdCross; 380 UINT32 thresholdCrossDirection; 381 } mediumTimeCross_t; 382 383 /************************************/ 384 /* QOS edcf params */ 385 /************************************/ 386 387 /*=================== Mesurement =====================*/ 388 389 typedef struct 390 391 { 392 uint32 ConfigOptions; 393 uint32 FilterOptions; 394 uint32 duration; 395 Channel_e channel; 396 RadioBand_e band; 397 } whalCtrl_MeasurementParameters_t; 398 399 typedef struct 400 401 { 402 uint32 ConfigOptions; 403 uint32 FilterOptions; 404 uint32 scanDuration; 405 uint16 scanOptions; 406 uint8 numOfProbRqst; 407 TxdRateSet_t txdRateSet; 408 uint8 txPowerDbm; 409 } whalCtrl_ApDiscoveryParameters_t; 410 411 /*=======================================================*/ 412 413 414 typedef struct 415 { 416 /* ACXLowRSSITriggerParameters */ 417 INT8 rssiThreshold; 418 UINT8 rssiFilterWeight; 419 UINT8 rssiFilterDepth; 420 UINT8 lowRSSIEventType; 421 422 /* ACXLowSNRTriggerParameters */ 423 UINT8 snrThreshold; 424 UINT8 snrFilterWeight; 425 UINT8 snrFilterDepth; 426 UINT8 lowSNREventType; 427 428 /* ACXConsNackTriggerParameters */ 429 UINT8 maxTxRetry; 430 431 /* ACXBssLossTsfSynchronize */ 432 UINT16 TsfMissThreshold; 433 UINT16 BssLossTimeout; 434 } whalCtrl_roamingTriggerCmd_t; 435 436 437 typedef struct 438 { 439 UINT8 channelNumber; 440 UINT8 switchTime; 441 UINT8 txFlag; 442 UINT8 flush; 443 } whalCtrl_switchChannelCmd_t; 444 445 typedef scan_Params_t whalCtrl_scan_t; 446 447 448 PACKED_STRUCT( whalCtrl_counters_t, 449 450 UINT32 RecvError; /* the number of frames that a NIC receives but does not indicate to the protocols due to errors*/ 451 UINT32 RecvNoBuffer; /* the number of frames that the NIC cannot receive due to lack of NIC receive buffer space */ 452 UINT32 FragmentsRecv; 453 UINT32 FrameDuplicates; 454 UINT32 FcsErrors; 455 ); 456 457 /* 458 PACKED_STRUCT(whalCtrl_PLT_TX_Continues_t, 459 UINT8 rate; 460 UINT8 chID; 461 UINT8 preamble; 462 UINT8 bandID; 463 UINT8 Modulation; 464 UINT8 TestMode; 465 ); 466 467 PACKED_STRUCT(whalCtrl_PLT_TX_CW_t, 468 UINT8 chID; 469 UINT8 bandID; 470 ); 471 */ 472 473 PACKED_STRUCT(whalCtrl_WriteRegister_t, 474 UINT32 RegAdress; 475 UINT32 RegData; 476 ); 477 478 479 typedef struct 480 { 481 uint8 channel; 482 int8 maxRegPower; 483 } whalCtrl_RegulatoryChannelPowerConstraint_t; 484 485 typedef struct 486 { 487 uint8 numberOfChannels; 488 RadioBand_e band; 489 whalCtrl_RegulatoryChannelPowerConstraint_t channelListConstraint[MAX_CHANNELS_IN_REG_DOMAIN]; 490 } whalCtrl_RegulatoryPowerConstraint_t; 491 492 typedef struct 493 { 494 INFO_ELE_HDR 495 int8 powerConstraintOnBss; /* The attenuation from the regulatory */ 496 /* power constraint as declared by the AP */ 497 /* Units: dBm*/ 498 /* Range: -20 - 30*/ 499 } whalCtrl_ApPowerConstraint_t; 500 501 typedef struct 502 { 503 INFO_ELE_HDR 504 uint8 attenuation; /* Attenuation from the maximum radio transmit */ 505 /* power as declared by the driver/application*/ 506 /* Units: dB*/ 507 /* Range: 0 - 20*/ 508 } whalCtrl_PowerAttenuation_t; 509 510 typedef struct 511 { 512 INFO_ELE_HDR 513 int8 currentTransmitPower; /* Current transmit power of the radio.*/ 514 /* Units: dBm*/ 515 } whalCtrl_GetCurrentTxPower_t; 516 517 /* 518 * TX Ack Policy 519 */ 520 typedef struct 521 { 522 AckPolicy_e AckPolicy; 523 UINT8 AcId; 524 }AcAckPolicy_t; 525 526 typedef union 527 { 528 529 530 /* HAL Control section */ 531 UINT16 halCtrlRtsThreshold; 532 UINT8 halCtrlCtsToSelf; 533 rxTimeOut_t halCtrlRxTimeOut; 534 UINT16 halCtrlFragThreshold; 535 UINT16 halCtrlListenInterval; 536 UINT16 halCtrlCurrentBeaconInterval; 537 UINT8 halCtrlTxPowerDbm; 538 txAntenna_e halCtrlTxAntenna; 539 rxAntenna_e halCtrlRxAntenna; 540 UINT8 halCtrlAifs; 541 BOOL halCtrlTxMemPoolQosAlgo; 542 BOOL halCtrlClkRunEnable; 543 whalCtrl_counters_t halCtrlCounters; 544 545 PltTxContinues_t PltTxContinues; 546 TestCmdChannelBand_t PltCW; 547 PLT_MIB_t PltMib; 548 549 550 UINT8 halCtrlCurrentChannel; 551 552 UINT8 earlyWakeup; 553 554 /* tx data qos related parameters */ 555 txDataQosParams_t txDataQosParams; 556 557 /* 558 * WME Tx Parameters 559 */ 560 561 /* ac queues parameters */ 562 acQueuesParams_t acQueuesParams; 563 564 /* Access Category Ack Policy */ 565 AcAckPolicy_t AcAckPolicy; 566 /* Qos Type For Tx Descriptor */ 567 qosProtocols_e halCtrlTxQosType; 568 /* ac traffic parameters */ 569 whaCtrl_acTrafficParams_t acTrafficParams; 570 /* queue params */ 571 acQueuesParams_t acQueuesParam; 572 573 /* ac Qos parameters */ 574 queueTrafficParams_t *pQueueTrafficParams; 575 576 /* Security related parameters */ 577 #ifdef EXC_MODULE_INCLUDED 578 BOOL rsnExcSwEncFlag; 579 BOOL rsnExcMicFieldFlag; 580 #endif 581 halCtrl_CipherSuite_e rsnEncryptionStatus; 582 UINT8 rsnHwEncDecrEnable; /* 0- disable, 1- enable*/ 583 securityKeys_t *pRsnKey; 584 UINT8 rsnDefaultKeyID; 585 586 /* 587 Power Control 588 */ 589 590 powerAutho_PowerPolicy_e minPowerPolicy; 591 592 /* Measurements section */ 593 acxStatisitcs_t acxStatisitics; 594 mediumOccupancy_t mediumOccupancy; 595 BOOLEAN halTxOpContinuation; 596 597 tsf_dtim_mib_t fwTsfDtimInfo; 598 599 interogateCmdCBParams_t interogateCmdCBParams; 600 configureCmdCBParams_t configureCmdCBParams; 601 602 txRatePolicy_t *pTxRatePlicy; 603 604 /* Antenna diversity options */ 605 whalCtrl_antennaDiversityOptions_t antennaDiversityOptions; 606 UINT8 antennaNum; 607 608 /* WARNING!!! This section is used to set/get internal params only. */ 609 UINT16 halCtrlAid; 610 611 612 SoftGeminiEnableModes_e SoftGeminiEnable; 613 SoftGeminiParam_t SoftGeminiParam; 614 615 UINT32 halCtrlMaxRxMsduLifetime; 616 617 /* Utils section */ 618 UINT8 SeverityTable[WLAN_MAX_SEVERITIES]; 619 UINT8 ModuleTable[WLAN_MAX_LOG_MODULES]; 620 UINT32 reportPPMode; 621 UINT32 osDbgState; 622 623 /* Beacon Broadcast options */ 624 BcnBrcOptions_t BcnBrcOptions; 625 626 /* PLT tests */ 627 TI_STATUS PltRxCalibrationStatus; 628 629 }whalParamContents; 630 631 632 typedef struct{ 633 634 UINT32 paramType; 635 UINT32 paramLength; 636 whalParamContents content; 637 }whalParamInfo_t; 638 639 typedef enum 640 { 641 GWSI_TX_CB_MODULE_OWNER = 0x0100, /* WHAL TX MODULE */ 642 GWSI_RX_CB_MODULE_OWNER = 0x0200, /* WHAL RX MODULE */ 643 GWSI_EVENT_IND_CB_MODULE_OWNER = 0x0400, /* WHAL HW EVENT MBOX */ 644 645 /* 646 Last CB module owner- DO NOT TOUCH! 647 */ 648 GWSI_CB_LAST_MODULE_OWNER = 0x0500 649 650 } GwsiCB_ModuleOwner_e; 651 652 typedef enum 653 { 654 PLT_RX_PER_START, 655 PLT_RX_PER_STOP, 656 PLT_RX_PER_CLEAR, 657 PLT_RX_PER_GETRESULTS, 658 PLT_RX_PER_START_PH2, 659 PLT_RX_PER_MAX /* Must be last*/ 660 }PLT_RxPerCmd_e; 661 662 663 typedef enum 664 { 665 /* Tx Data Path Callbacks */ 666 GWSI_TX_SEND_PACKET_TRANSFER_CB = GWSI_TX_CB_MODULE_OWNER | 0x01, /* WHAL TX MODULE */ 667 GWSI_TX_SEND_PACKET_COMPLETE_CB = GWSI_TX_CB_MODULE_OWNER | 0x02, /* WHAL TX MODULE */ 668 GWSI_TX_QUEUE_FREE_EVENT_CB = GWSI_TX_CB_MODULE_OWNER | 0x03, /* WHAL TX MODULE */ 669 670 /* Rx Data Path Callbacks */ 671 GWSI_RX_REQUEST_FOR_BUFFER_CB = GWSI_RX_CB_MODULE_OWNER | 0x01, /* WHAL RX MODULE */ 672 GWSI_RX_RECEIVE_PACKET_CB = GWSI_RX_CB_MODULE_OWNER | 0x02, /* WHAL RX MODULE */ 673 674 }GwsiCB_Type_e; 675 676 typedef enum 677 { 678 /* Tx Data Path Callbacks */ 679 HAL_INT_SEND_PACKET_TRANSFER = 0x00 , /* WHAL TX MODULE */ 680 HAL_INT_SEND_PACKET_COMPLETE , /* WHAL TX MODULE */ 681 HAL_INT_QUEUE_FREE_EVENT , /* WHAL TX MODULE */ 682 683 /* Rx Data Path Callbacks */ 684 HAL_INT_RECEIVE_PACKET = 0x10 , /* WHAL RX MODULE */ 685 HAL_INT_REQUEST_FOR_BUFFER , /* WHAL RX MODULE */ 686 687 /* Ctrl Callbacks */ 688 HAL_INT_COMMAND_COMPLETE = 0x20 , 689 690 HAL_INTERNAL_EVENT_FAILURE 691 692 }Hw_RegisterID_e; 693 694 /* 695 * WHAL CTRL Class API 696 */ 697 TI_HANDLE whalCtrl_Create (TI_HANDLE hOs); 698 int whalCtrl_Stop (TI_HANDLE hWhalCtrl); 699 TI_STATUS whalCtrl_Config (TI_HANDLE hWhalCtrl, TI_HANDLE hTNETW_Driver, whalCtrl_config_t* pWhalCtrlCfg,UINT32 *pFWImage); 700 TI_HANDLE whalCtrl_GetTnetwifHandle (TI_HANDLE hWhalCtrl); 701 TI_HANDLE whalCtrl_GetWhalParams (TI_HANDLE hWhalCtrl); 702 int whalCtrl_ConfigHw (TI_HANDLE hWhalCtrl, TnetwDrv_InitParams_t* pInitParams, void *fCb, TI_HANDLE hCb); 703 int whalCtrl_ReConfig (TI_HANDLE hWhalCtrl, int DoReJoin); 704 void whalCtrl_RecoveryEnded (TI_HANDLE hWhalCtrl); 705 int whalCtrl_Destroy (TI_HANDLE pWhalCtrl); 706 void whalCtrl_Register_CB (TI_HANDLE pWhalCtrl,tiUINT32 CallBackID,void *CBFunc,TI_HANDLE CBObj); 707 void whalCtrl_PreRecoveryProcess(TI_HANDLE hWhalCtrl); 708 TI_STATUS whalCtrl_FinalizeDownload (TI_HANDLE hWhalCtrl); 709 TI_STATUS whalCtrl_FinalizeOnFailure (TI_HANDLE hWhalCtrl); 710 711 /* 712 * Set/Get API 713 */ 714 int whalCtrl_setRxFilters (TI_HANDLE hWhalCtrl, UINT32 RxConfigOption, UINT32 RxFilterOption); 715 int whalCtrl_GetRxFilters (TI_HANDLE hWhalCtrl, UINT32* pRxConfigOption, UINT32* pRxFilterOption); 716 int whalCtrl_setRxDataFiltersParams(TI_HANDLE hWhalCtrl, BOOL enabled, filter_e defaultAction); 717 int whalCtrl_setRxDataFilter (TI_HANDLE hWhalCtrl, UINT8 index, UINT8 command, filter_e action, UINT8 numFieldPatterns, UINT8 lenFieldPatterns, UINT8 * fieldPatterns); 718 int whalCtrl_getRxDataFiltersStatistics(TI_HANDLE hWhalCtrl, void * CB_Func, TI_HANDLE CB_handle, void * CB_Buf); 719 int whalCtrl_SetMacAddress (TI_HANDLE hWhalCtrl, macAddress_t *macAddr); 720 int whalCtrl_SetTemplate (TI_HANDLE pWhalCtrl, whalCtrl_setTemplate_t* pTemplateParams); 721 int whalCtrl_SetTemplateWithCB (TI_HANDLE hWhalCtrl, whalCtrl_setTemplate_t* pTemplateParams,void *CBFunc,TI_HANDLE CBObj); 722 TemplateParams_T * whalCtrl_GetTemplate(TI_HANDLE hWhalCtrl, whalCtrl_templateType_e templateType); 723 int whalCtrl_SetSlotTime (TI_HANDLE hWhalCtrl, slotTime_e SlotTimeVal); 724 int whalCtrl_SetPreamble (TI_HANDLE hWhalCtrl, preamble_e preambleVal); 725 int whalCtrl_SetFrameRate (TI_HANDLE hWhalCtrl, rate_e txFrmRate, BOOL bCtrlFrame); 726 int whalCtrl_SetBeaconFiltering (TI_HANDLE hWhalCtrl, UINT8 beaconFilteringStatus, UINT8 numOfBeaconsToBuffer); 727 int whalCtrl_GetBeaconFiltering (TI_HANDLE hWhalCtrl); 728 729 int whalCtrl_SetBeaconFilterIETable(TI_HANDLE hWhalCtrl, UINT8* numberOfIEs, UINT8 * IETable, UINT8* IETableSize); 730 int whalCtrl_GetBeaconFilterIETable(TI_HANDLE hWhalCtrl, UINT8* numberOfIEs, UINT8 * IETable, UINT8* IETableSize); 731 int whalCtrl_SetarpIpAddressesTable(TI_HANDLE hWhalCtrl, IpAddress_t * IP_addr, UINT8 isEnabled , IPver_e IP_ver); 732 int whalCtrl_SetarpIpFilterEnabled(TI_HANDLE hWhalCtrl,UINT8 isEnabled ); 733 int whalCtrl_SetGroupAddressesTable(TI_HANDLE hWhalCtrl, UINT8 numGroupAddrs, macAddress_t *Group_addr,UINT8 isEnabled); 734 int whalCtrl_GetGroupAddressesTable(TI_HANDLE hWhalCtrl, UINT8* pisEnabled, UINT8* pnumGroupAddrs, macAddress_t *Group_addr); 735 736 int whalCtrl_SetCwMin (TI_HANDLE hWhalCtrl, UINT8 CwMin); 737 int whalCtrl_getSend4xWackInfo (TI_HANDLE hWhalCtrl, UINT8 *Send4xWackInfo); 738 int whalCtrl_setSend4xWackInfo (TI_HANDLE hWhalCtrl, UINT8 Send4xWackInfo); 739 void whalCtrl_SetBeaconInterval (TI_HANDLE hWhalCtrl , UINT16 Val); 740 UINT16 whalCtrl_GetBeaconInterval (TI_HANDLE hWhalCtrl); 741 void whalCtrl_SetInfoElemEventMask(TI_HANDLE hWhalCtrl,UINT32 eventMask); 742 743 int whalCtrl_getTsf (TI_HANDLE hwHalCtrl, UINT32 *pTsf); 744 int whalCtrl_setDtimPeriod (TI_HANDLE hWhalCtrl, UINT8 dtimPeriod, UINT16 TBTT); 745 UINT8 whalCtrl_GetDtimCount (TI_HANDLE hWhalCtrl); 746 747 TI_STATUS whalCtrl_SetParam (TI_HANDLE pWhalCtrl, whalParamInfo_t* pParamInfo); 748 TI_STATUS whalCtrl_GetParam (TI_HANDLE pWhalCtrl, whalParamInfo_t* pParamInfo); 749 750 int whalCtrl_ElpCtrl_SetMode(TI_HANDLE hWhalCtrl, elpCtrl_Mode_e mode); 751 int whalCtrl_setBetParams(TI_HANDLE hWhalCtrl, UINT8 Enable, UINT8 MaximumConsecutiveET); 752 753 /* 754 * Read/Write Reg API 755 */ 756 UINT32 whalCtrlReadMacReg (TI_HANDLE hWhalCtrl, UINT32 addr); 757 void whalCtrlWriteMacReg (TI_HANDLE hWhalCtrl, UINT32 addr, UINT32 val); 758 UINT32 whalCtrlReadPhyReg (TI_HANDLE hWhalCtrl, UINT32 addr); 759 void whalCtrlWritePhyReg (TI_HANDLE hWhalCtrl, UINT32 addr, UINT32 val); 760 int whalCtrl_GetRadioStandByState(TI_HANDLE hWhalCtrl); 761 TI_STATUS whalCtrl_GetFWInfo (TI_HANDLE hWhalCtrl, whalCtrl_chip_t *pChip_Version); 762 763 764 /* 765 * Rx API 766 */ 767 int whalCtrl_resetMacRx (TI_HANDLE hWhalCtrl); 768 769 /* 770 * Tx API 771 */ 772 773 int whalCtrl_DisableTx (TI_HANDLE hWhalCtrl); 774 int whalCtrl_EnableTx (TI_HANDLE hWhalCtrl); 775 UINT32 whalCtrl_GetTime (TI_HANDLE hWhalCtrl); 776 void whalCtrl_resetTxCounters (TI_HANDLE hWhalCtrl); 777 void whalCtrl_updateSecuritySeqNum(TI_HANDLE hWhalCtrl, UINT8 securitySeqNumLsByte); 778 /* 779 * Radio Handle API 780 */ 781 int whalCtrl_SetRadioBand (TI_HANDLE hWhalCtrl, radioBand_e RadioBand); 782 int whalCtrl_SwitchChannel (TI_HANDLE hWhalCtrl , UINT8 channel); 783 784 /* 785 * Recovery API 786 */ 787 int whalCtrl_CheckMailboxCb (TI_HANDLE hWhalCtrl,UINT16 MboxStatus,char *InterrogateParamsBuf); 788 int whalCtrl_SetPacketDetectionThreshold (TI_HANDLE hWhalCtrl, UINT8 PDThreshold); 789 int whalCtrl_SetEnergyDetection (TI_HANDLE hWhalCtrl, BOOL energyDetection); 790 int whalCtrl_CheckHwStatus (TI_HANDLE hWhalCtrl); 791 int whalCtrl_InitHwStatus (TI_HANDLE hWhalCtrl); 792 int whalCtrl_PrintHwStatus (TI_HANDLE hWhalCtrl); 793 int whalCtrl_PeriodicCheckMailboxCb(TI_HANDLE hWhalCtrl,UINT16 MboxStatus,char *InterrogateParamsBuf); 794 void whalCtrl_ResetBusAfterHardBoot(TI_HANDLE hWhalCtrl); 795 796 /* 797 * Event Mail Box API 798 */ 799 int whalCtrl_EventMbox_RegisterForEvent(TI_HANDLE hWhalCtrl, int EventBit, void *CbFunc, void *CbObj); 800 int whalCtrl_EventMbox_Disable (TI_HANDLE hWhalCtrl, int EventBit); 801 int whalCtrl_EventMbox_Enable (TI_HANDLE hWhalCtrl, int EventBit); 802 803 /* 804 * LNA API 805 */ 806 int whalCtrl_LNAControl (TI_HANDLE hWhalCtrl, UINT8 LNAControlField); 807 808 /* 809 * HW Interrupt API 810 */ 811 void whalCtrl_HandleBusTxn_Complete(TI_HANDLE hWhalCtrl); 812 int whalCtrl_HandleInterrupts (TI_HANDLE pWhalCtrl); 813 void whalCtrl_EnableInterrupts (TI_HANDLE pWhalCtrl); 814 void whalCtrl_DisableInterrupts (TI_HANDLE pWhalCtrl); 815 UINT32 whalCtrl_CheckInterrupts (TI_HANDLE pWhalCtrl); 816 void whalCtr_SlaveAckMaskNotification (TI_HANDLE hWhalCtrl); 817 818 819 820 /* 821 * Power Ctrl API 822 */ 823 TI_STATUS whalCtrl_powerMgmtConfig(TI_HANDLE theWhalCtrlHandle, 824 whalCtrl_powerSaveParams_t* powerSaveParams); 825 /* whalCtrl_powerMgmtConfig_t thePowerMgmtConfig);*/ 826 TI_STATUS whalCtrl_wakeUpCondition(TI_HANDLE theWhalCtrlHandle, 827 whalCtrl_powerMgmtConfig_t thePowerMgmtConfig); 828 TI_STATUS whalCtrl_PMConfig(TI_HANDLE theWhalCtrlHandle, 829 whalCtrl_powerMgmtConfig_t thePowerMgmtConfig); 830 TI_STATUS whalCtrl_BcnBrcOptions(TI_HANDLE theWhalCtrlHandle, 831 whalCtrl_powerMgmtConfig_t thePowerMgmtConfig); 832 TI_STATUS whalCtrl_SetMinPowerLevel(TI_HANDLE theWhalCtrlHandle, 833 powerAutho_PowerPolicy_e minPowerPolicy); 834 TI_STATUS whalCtrl_GetMinPowerLevel(TI_HANDLE theWhalCtrlHandle, 835 powerAutho_PowerPolicy_e* minPowerPolicy); 836 837 838 /* 839 * Measurement API 840 */ 841 int whalCtrl_NoiseHistogramCmd (TI_HANDLE hWhalCtrl, whalCtrl_noiseHistogram_t* pNoiseHistParams); 842 INT8 whalCtrl_convertRSSIToRxLevel(TI_HANDLE hWhalCtrl, INT32 rssiVal); 843 int whalCtrl_getMaxNumberOfCommandsInQueue (TI_HANDLE hWhalCtrl); 844 int whalCtrl_InterrogateGwsiStatisitics(TI_HANDLE hWhalCtrl, void * CB_Func, TI_HANDLE CB_handle, void * CB_Buf); 845 int whalCtrl_InterrogateGwsiCounters(TI_HANDLE hWhalCtrl, void * CB_Func, TI_HANDLE CB_handle, void * CB_Buf); 846 int whalCtrl_InterrogateMbox(TI_HANDLE hWhalCtrl , void *CB_Func, TI_HANDLE CB_handle, void *CB_Buf); 847 int whalCtrl_JoinBss (TI_HANDLE pWhalCtrl, whalCtrl_joinBss_t* pJoinBssParams); 848 int whalCtrl_ReJoin (TI_HANDLE hWhalCtrl); 849 BOOL whalCtrl_isCardIn (TI_HANDLE hWhalCtrl); 850 int whalCtrl_SendGenCmd (TI_HANDLE hWhalCtrl, char* pBuf, UINT32 Length); 851 void whalCtrl_exitFromInitMode(TI_HANDLE hWhalCtrl); 852 void whalCtrl_exitFromInitModePart1(TI_HANDLE hWhalCtrl); 853 void whalCtrl_exitFromInitModePart2(TI_HANDLE hWhalCtrl); 854 int whalCtrl_IsCardInstalled (TI_HANDLE hWhalCtrl) ; 855 856 /* ---------------------------------------------------------------------------------- 857 Scan Functions 858 ----------------------------------------------------------------------------------*/ 859 int whalCtrl_StartScan (TI_HANDLE hWhalCtrl, whalCtrl_scan_t* pScanVals, BOOLEAN bHighPriority , void* ScanCommandResponseCB, TI_HANDLE CB_handle); 860 int whalCtrl_StartSPSScan (TI_HANDLE hWhalCtrl, whalCtrl_scan_t* pScanVals , void* ScanCommandResponseCB, TI_HANDLE CB_handle); 861 int whalCtrl_StopScan (TI_HANDLE pWhalCtrl ,void* ScanCommandResponseCB, TI_HANDLE CB_handle); 862 int whalCtrl_StopSPSScan (TI_HANDLE hWhalCtrl , void* ScanCommandResponseCB, TI_HANDLE CB_handle); 863 864 TI_STATUS whalCtrl_SetSplitScanTimeOut (TI_HANDLE hWhalCtrl, UINT32 uTimeOut); 865 866 int whalCtrl_SwitchChannelCmd (TI_HANDLE hWhalCtrl, whalCtrl_switchChannelCmd_t* pSwitchChannelCmd); 867 int whalCtrl_SwitchChannelCancelCmd (TI_HANDLE hWhalCtrl, UINT8 channel); 868 869 /* ---------------------------------------------------------------------------------- 870 Roaming Trigger Functions 871 ----------------------------------------------------------------------------------*/ 872 int whalCtrl_SetSNRParamsCmd (TI_HANDLE hWhalCtrl, whalCtrl_roamingTriggerCmd_t* pRoamingTriggerCmd); 873 int whalCtrl_SetRSSIParamsCmd (TI_HANDLE hWhalCtrl, whalCtrl_roamingTriggerCmd_t* pRoamingTriggerCmd); 874 int whalCtrl_SetMaxTxRetryParamsCmd (TI_HANDLE hWhalCtrl, whalCtrl_roamingTriggerCmd_t* pRoamingTriggerCmd); 875 int whalCtrl_SetBssLossTsfThresholdParamsCmd (TI_HANDLE hWhalCtrl, whalCtrl_roamingTriggerCmd_t* pRoamingTriggerCmd); 876 int whalCtrl_GetAverageRSSI (TI_HANDLE hWhalCtrl, INT8* averageRSSI); 877 int whalCtrl_FwDisconnect(TI_HANDLE hWhalCtrl, UINT32 ConfigOptions, UINT32 FilterOptions); 878 int whalCtrl_GetAsynRSSI (TI_HANDLE hWhalCtrl,void *CB_Func, TI_HANDLE CB_handle, PUINT8 CB_Buf); 879 880 /* ---------------------------------------------------------------------------------- 881 Measurement Functions 882 ----------------------------------------------------------------------------------*/ 883 int whalCtrl_measurementCmd (TI_HANDLE hWhalCtrl, whalCtrl_MeasurementParameters_t* pMeasurementParams, 884 void* CommandResponseCB, TI_HANDLE CB_handle); 885 int whalCtrl_measurementStop (TI_HANDLE hWhalCtrl, void* CommandResponseCB, TI_HANDLE CB_handle); 886 int whalCtrl_ApDiscoveryCmd (TI_HANDLE hWhalCtrl, whalCtrl_ApDiscoveryParameters_t* pMeasurementParams); 887 int whalCtrl_ApDiscoveryStop (TI_HANDLE hWhalCtrl); 888 889 /* ---------------------------------------------------------------------------------- 890 PLT Functions 891 ----------------------------------------------------------------------------------*/ 892 int whalCtrl_RxPER(TI_HANDLE hWhalCtrl, PLT_RxPerCmd_e eRxPerCmd, TI_HANDLE CB_Handle, void *CB_Func); 893 int whalCtrl_TxCW(TI_HANDLE hWhalCtrl, TestCmdChannelBand_t* PltTxCarrier, void * CB_Func, TI_HANDLE CB_handle, void * CB_Buf); 894 int whalCtrl_TxContinues(TI_HANDLE hWhalCtrl, PltTxContinues_t* pPLT_TX_Continues, void * CB_Func, TI_HANDLE CB_handle, void * CB_Buf); 895 int whalCtrl_WriteRegister(TI_HANDLE hWhalCtrl, TI_HANDLE CB_Handle, void* CB_Func, void* CB_Buf); 896 int whalCtrl_ReadRegister(TI_HANDLE hWhalCtrl, TI_HANDLE CB_Handle, void* CB_Func, void* CB_Buf); 897 int whalCtrl_ReadMib(TI_HANDLE hWhalCtrl, TI_HANDLE CB_Handle, void* CB_Func, void* CB_Buf); 898 int whalCtrl_WriteMib(TI_HANDLE hWhalCtrl, PLT_MIB_t* pMib); 899 900 #endif /* _WHAL_CTRL_API_H*/ 901