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.h 39 * PURPOSE: Holds all the whal parameters 40 * 41 ****************************************************************************/ 42 43 #ifndef _WHAL_PARAMS_H 44 #define _WHAL_PARAMS_H 45 46 #include "802_11Defs.h" 47 #include "whalHwDefs.h" 48 #include "whalCtrl_api.h" 49 #include "whalBus_Defs.h" 50 #include "commonTypes.h" 51 52 #define MAX_FRAGMENTATION_THRESHOLD 2312 53 #define MAX_SSID_SIZE 32 54 55 /* Trace Buffer Size (DebugTraceXfer Buffer) 56 Mote : The Trace Buffer Size are in UINT32 (1024 bytes,and 2048 for both buffers) */ 57 #define TRACE_BUFFER_MAX_SIZE 256 58 59 60 #define DEFAULT_HW_RADIO_CHANNEL 11 61 62 63 /* Constants */ 64 65 /* RSSI roaming trigger configuration */ 66 /* minimal amount of packets to count in average RSSI before actually reporting trigger */ 67 #define RSSI_DEFAULT_DEPTH (10) 68 /* the weight in % of the new packet relative to the previous average value of RSSI */ 69 #define RSSI_DEFAULT_WEIGHT (10) 70 #define RSSI_DEFAULT_THRESHOLD (-80) 71 72 /* SNR roaming trigger configuration */ 73 /* minimal amount of packets to count in average SNR before actually reporting trigger */ 74 #define SNR_DEFAULT_DEPTH (10) 75 /* the weight in % of the new packet relative to the previous average value of SNR */ 76 #define SNR_DEFAULT_WEIGHT (10) 77 #define SNR_DEFAULT_THRESHOLD (0) 78 79 /* 'No beacon' roaming trigger configuration */ 80 /* Number of consecutive beacons (or DTIM periods) missed before 81 'Out of Sync' event is raised */ 82 #define OUT_OF_SYNC_DEFAULT_THRESHOLD (10) 83 /* IBSS - Number of consecutive beacons (or DTIM periods) missed before 84 'Out of Sync' event is raised */ 85 #define OUT_OF_SYNC_IBSS_THRESHOLD (200) 86 /* period of time between 'Out of sync' and 'No beacon' events */ 87 #define NO_BEACON_DEFAULT_TIMEOUT (100) /* in tu-s*/ 88 89 /* Consecutive NACK roaming trigger configuration */ 90 #define NO_ACK_DEFAULT_THRESHOLD (20) 91 92 /* Low Rx rate roaming trigger configuration */ 93 #define LOW_RATE_DEFAULT_THRESHOLD (2) 94 95 typedef struct 96 { 97 UINT8 rxFilterCommand; 98 filter_e rxFilterAction; 99 UINT8 rxFilterNumFieldPatterns; 100 UINT8 rxFilterLenFieldPatterns; 101 UINT8 rxFilterFieldPatterns[MAX_DATA_FILTER_SIZE]; 102 103 }RxFilterConfig_t; 104 105 /* 106 * Dot11 params 107 * ------------ 108 */ 109 110 111 typedef struct 112 { 113 UINT16 RtsThreshold; 114 UINT8 CtsToSelf; 115 rxTimeOut_t rxTimeOut; 116 UINT16 FragmentThreshold; 117 UINT8 ListenInterval; 118 UINT16 Capabilities; 119 UINT32 MaxTxMsduLifetime; 120 UINT32 MaxRxMsduLifetime; 121 UINT8 calibrationChannel2_4; 122 UINT8 calibrationChannel5_0; 123 UINT16 Aid; 124 UINT8 CurrAntenna; 125 UINT8 TxAntenna; 126 UINT8 RxAntenna; 127 UINT8 Hw_TxAntenna; 128 UINT8 Hw_RxAntenna; 129 UINT16 CwMin; 130 131 UINT8 RateFallback; 132 UINT32 RxConfigOption; 133 UINT32 RxFilterOption; 134 UINT8 BetEnable; 135 UINT8 MaximumConsecutiveET; 136 UINT8 TxCompleteThreshold; 137 BOOL WiFiWmmPS; 138 139 /* ARP IP Addr table*/ 140 UINT32 arp_IP_ver; 141 UINT32 isArpIpFilteringEnabled ; 142 IpAddress_t arp_IP_addr; 143 144 /*mac addresses filter*/ 145 UINT8 isMacAddrFilteringnabled ; 146 UINT8 numGroupAddrs; 147 macAddress_t Group_addr[MAX_MULTICAST_GROUP_ADDRS]; 148 149 UINT32 FeatureOptions; 150 UINT32 FeatureDataFlowOptions; 151 UINT8 SlotTime; 152 UINT8 preamble; 153 UINT8 RadioBand; 154 UINT8 MacClock; 155 UINT8 ArmClock; 156 UINT8 Enable4x; 157 UINT8 CurrPowerSaveState; 158 SoftGeminiEnableModes_e SoftGeminiEnable; 159 SoftGeminiParam_t SoftGeminiParams; 160 161 UINT8 maxSitesFragCollect; 162 UINT8 hwAccessMethod; 163 164 UINT8 FragmentationOnHal; 165 166 UINT32 nullTemplateSize; 167 168 UINT32 beaconTemplateSize; 169 170 171 UINT32 probeRequestTemplateSize; 172 UINT32 probeResponseTemplateSize; 173 UINT32 PsPollTemplateSize; 174 UINT32 qosNullDataTemplateSize; 175 176 BOOL RxEnergyDetection; 177 BOOL TxEnergyDetection; 178 179 UINT8 PacketDetectionThreshold; 180 UINT8 FcsErrThrsh; 181 UINT8 UseDeviceErrorInterrupt; 182 BOOL RetryPreemption; 183 184 UINT32 radioType; 185 UINT32 minorE2Ver; 186 UINT32 majorE2Ver; 187 UINT32 bugfixE2Ver; 188 BOOL RxDisableBroadcast; /* this flag indicate if to discards all broadcast frames */ 189 BOOL RecoveryEnable; /* Indicate if the recovery process is enabled */ 190 BOOL bJoin; /* Indicate if the station is joined */ 191 /* hardware ACI parameters */ 192 UINT8 ACIMode; 193 UINT8 inputCCA; 194 UINT8 qualifiedCCA; 195 UINT8 stompForRx; 196 UINT8 stompForTx; 197 UINT8 txCCA; 198 199 UINT8 AntDiversity ; 200 201 acQueuesParams_t acQueuesParams[MAX_NUM_OF_AC]; 202 203 /* Parameters for roaming triggers configuration */ 204 whalCtrl_roamingTriggerCmd_t roamTriggers; 205 206 /* antenna diversity parameters */ 207 whalCtrl_antennaDiversityOptions_t antennaDiversityOptions; 208 209 /* power control param */ 210 powerAutho_PowerPolicy_e minPowerLevel; 211 212 BcnBrcOptions_t BcnBrcOptions; 213 214 UINT8 ConsecutivePsPollDeliveryFailureThreshold; 215 216 beaconFilterIETable_t beaconFilterIETable; 217 beaconFilterParams_t beaconFilterParams; 218 219 queueTrafficParams_t QtrafficParams; 220 acQosParams_t acQosParams; 221 222 /*mac preamble*/ 223 UINT8 earlyWakeUp; 224 225 /* Rx Data Filter */ 226 BOOL rxFilterDefaultAction; 227 filter_e rxFilterDefaultEnable; 228 RxFilterConfig_t rxFilterCgf[MAX_DATA_FILTERS]; 229 230 } WlanParams_T; 231 232 233 /* 234 * BssInfo params 235 * -------------- 236 */ 237 238 typedef struct 239 { 240 UINT8 ReqBssType; 241 UINT8 BssType; 242 UINT16 BeaconInterval; 243 UINT8 DtimInterval; 244 UINT8 RadioChannel; 245 246 UINT8 BssId[MAC_ADDR_SIZE]; 247 dot11_SSID_t WlanElm_Ssid; 248 249 txRatePolicy_t TxRateClassParams; /* Policy for recovery */ 250 UINT16 BasicRateSet; 251 UINT16 SupportedRateSet; 252 rate_e txCtrlFrmRateDriverFormat; 253 UINT8 txCtrlFrmRate; 254 UINT8 txCtrlFrmModulation; 255 UINT8 Ctrl; /* Only bit 7 is currently in use , bit 7 indicates if to flash the Tx queues */ 256 UINT8 txMgmtFrmRate; 257 UINT8 txMgmtFrmModulation; 258 UINT16 ATimWindow; /* ATIM window of IBSS*/ 259 /* Note that when ATIM window is zero the*/ 260 /* initiated IBSS does not support powersave*/ 261 UINT8 DefaultPreamble;/* Specifies the PLCP preamble type used*/ 262 /* 0 for long preamble*/ 263 /* 1 for short preamble*/ 264 265 266 267 } BssInfoParams_T; 268 269 /* 270 * General params 271 * -------------- 272 */ 273 274 typedef struct 275 { 276 int UseTxDataInterrupt; 277 278 UINT8 TraceEnable; 279 UINT8 TraceOut; 280 281 UINT32 PbccDynamicEnable; 282 UINT32 PbccDynamicInterval; 283 UINT32 PbccDynamicIgnoreMcast; 284 } GenParams_T; 285 286 287 /* 288 * General counters 289 * ---------------- 290 */ 291 292 typedef struct 293 { 294 UINT32 FcsErrCnt; 295 } GenCounters_T; 296 297 298 /* 299 * HwInfoParams_t - wlan hardware info 300 * ----------------------------------- 301 */ 302 typedef struct 303 { 304 UINT8 SrcMacAddr[MAC_ADDR_SIZE]; 305 UINT32 Pad0; 306 UINT32 Pad1; 307 ACXRevision_t AcxVersion; /* Fw version (read from the wlan hardware) */ 308 } HwInfo_T; 309 310 311 /* 312 * queuesParam_T - Queue params for Quality Of Service 313 * ------------------------------------------ 314 */ 315 typedef struct 316 { 317 queueTrafficParams_t queues[MAX_NUM_OF_TX_QUEUES]; 318 BOOL isQueueConfigured[MAX_NUM_OF_TX_QUEUES]; 319 } QueuesParam_t; 320 321 typedef struct 322 { 323 acQosParams_t ac[MAX_NUM_OF_AC]; 324 BOOL isAcConfigured[MAX_NUM_OF_AC]; 325 }AcConfParam_t; 326 327 typedef struct 328 { 329 /* Tx Parameters */ 330 UINT8 TxPowerDbm; 331 332 UINT16 txCompleteTimeout; 333 UINT8 txCompleteThreshold; 334 335 UINT8 QidToAcTable[MAX_NUM_OF_TX_QUEUES]; 336 BOOL AckPolicy[MAX_NUM_OF_AC]; 337 338 /* Information Elements */ 339 acQueuesParams_t halAcQueueParams[MAX_NUM_OF_AC]; 340 whaCtrl_acTrafficParams_t halTrafficParams[MAX_NUM_OF_AC]; 341 342 } TxParam_t; 343 344 345 /* 346 * Templates params 347 * ---------------- 348 */ 349 350 351 352 typedef struct 353 { 354 TemplateParams_T Beacon; 355 TemplateParams_T ProbeReq; 356 TemplateParams_T ProbeResp; 357 TemplateParams_T NullData; 358 TemplateParams_T PsPoll; 359 TemplateParams_T QosNullData; 360 } TemplateListParams_T; 361 362 /* 363 * ---------------------------------------------------------------- 364 * MAIN PARAMETERS STRUCTURE 365 * ---------------------------------------------------------------- 366 */ 367 typedef struct _WhalParams_T 368 { 369 DmaParams_T DmaParams; /* Rx/Tx queue parameters */ 370 QueuesParam_t QueuesParams; /* Queues params for QOS */ 371 AcConfParam_t AcParams; /* AC params for QoS */ 372 TxParam_t TxParams; /* Tx params for QOS */ 373 WlanParams_T WlanParams; /* Wlan parameters */ 374 BssInfoParams_T BssInfoParams; /* Bss information */ 375 GenParams_T GenParams; /* General parameters */ 376 HwInfo_T HwInfoParams; /* Hw eeprom, hw versions */ 377 GenCounters_T GenCounters; /* General counters */ 378 TemplateListParams_T TemplateList; /* templates for recovery */ 379 380 TI_HANDLE hOs; 381 TI_HANDLE hReport; 382 383 } WhalParams_T; 384 385 /* 386 * ---------------------------------------------------------------- 387 * WHAL pARAMS OBJECT API 388 * ---------------------------------------------------------------- 389 */ 390 WhalParams_T *whal_params_Create(TI_HANDLE hOs, BOOL TxFlashEnable); 391 int whal_params_Destroy(WhalParams_T *pWhalParams); 392 int whal_params_Config (WhalParams_T *pWhalParams, TI_HANDLE hReport); 393 394 /* 395 * DmaParams - Rx/Tx queue parameters 396 */ 397 DmaParams_T *whal_ParamsGetDmaParams(WhalParams_T *pWhalParams); 398 int whal_ParamsSetDmaParams(WhalParams_T *pWhalParams); 399 400 /* 401 * WlanParams api 402 */ 403 404 int whal_ParamsSetRoamingParams(WhalParams_T *pWhalParams) ; 405 WlanParams_T *whal_ParamsGetWlanParams(WhalParams_T *pWhalParams); 406 void whal_ParamsSetFragmentThreshold (WhalParams_T *pWhalParams, int FragSize); 407 UINT32 whal_ParamsGetFragmentThreshold (WhalParams_T *pWhalParams); 408 UINT8 whal_ParamsIsFragmentOnHal (WhalParams_T *pWhalParams); 409 void whal_ParamsPrintFragmentThreshold(WhalParams_T *pWhalParams); 410 UINT8 whal_ParamsGetMaxSitesFragCollect(WhalParams_T *pWhalParams); 411 void whal_ParamsSetRtsThreshold (WhalParams_T *pWhalParams, int RtsSize); 412 void whal_ParamsSetListenInterval (WhalParams_T *pWhalParams, UINT8 Val); 413 UINT8 whal_ParamsGetListenInterval (WhalParams_T *pWhalParams); 414 void whal_ParamsSetRxFilter (WhalParams_T *pWhalParams, UINT32 RxConfigOption, UINT32 RxFilterOption); 415 void whal_ParamsGetRxFilter (WhalParams_T *pWhalParams, UINT32* pRxConfigOption, UINT32* pRxFilterOption); 416 void whal_ParamsSetarpIpAddressesTable(WhalParams_T *pWhalParams, IpAddress_t * IP_addr, IPver_e IP_ver); 417 void whal_ParamsGetarpIpAddressesTable(WhalParams_T * pWhalParams, IpAddress_t * IP_addr, IPver_e* pIP_ver); 418 void whal_ParamsSetarpIpFilterEnabled(WhalParams_T *pWhalParams, UINT8 isEnabled); 419 void whal_ParamsGetarpIpFilterEnabled(WhalParams_T *pWhalParams, UINT8* pisEnabled); 420 void whal_ParamsSetGroupAddressesTable(WhalParams_T *pWhalParams, UINT8 isEnabled, UINT8 numGroupAddrs, macAddress_t *Group_addr); 421 void whal_ParamsGetGroupAddressesTable(WhalParams_T *pWhalParams, UINT8* pisEnabled, UINT8* pnumGroupAddrs, macAddress_t *Group_addr); 422 UINT8 whal_ParamsGetCurrAntenna (WhalParams_T *pWhalParams); 423 void whal_ParamsSetPowerSaveState(WhalParams_T *pWhalParams, UINT8 CurrPowerSaveState); 424 UINT8 whal_ParamsGetPowerSaveState(WhalParams_T *pWhalParams); 425 426 427 /* 428 * Bss Info Params api 429 */ 430 BssInfoParams_T *whal_ParamsGetBssInfoParams(WhalParams_T *pWhalParams); 431 UINT8 *whal_ParamsGetBssId (WhalParams_T *pWhalParams); 432 void whal_ParamsSetBssId (WhalParams_T *pWhalParams, char *BssId); 433 void whal_ParamsSetSsid (WhalParams_T *pWhalParams, char *Ssid, UINT8 SsidLength); 434 dot11_SSID_t *whal_ParamsGetElm_Ssid(WhalParams_T *pWhalParams); 435 void whal_ParamsSetReqBssType (WhalParams_T *pWhalParams, int Val); 436 UINT8 whal_ParamsGetReqBssType(WhalParams_T *pWhalParams); 437 void whal_ParamsSetBssType (WhalParams_T *pWhalParams, int Val); 438 void whal_ParamsSetRadioBand(WhalParams_T *pWhalParams, int RadioBand); 439 UINT8 whal_ParamsGetRadioBand(WhalParams_T *pWhalParams); 440 UINT8 whal_ParamsGetBssType (WhalParams_T *pWhalParams); 441 void whal_ParamsSetBeaconInterval (WhalParams_T *pWhalParams, UINT16 Val); 442 UINT16 whal_ParamsGetBeaconInterval (WhalParams_T *pWhalParams); 443 void whal_ParamsSetDtimCount (WhalParams_T *pWhalParams, UINT8 Val); 444 UINT8 whal_ParamsGetDtimCount (WhalParams_T *pWhalParams); 445 UINT8 whal_ParamsGetRadioChannel (WhalParams_T *pWhalParams); 446 void whal_ParamsSetRadioChannel (WhalParams_T *pWhalParams, int Channel); 447 void whal_ParamsSetBasicRatesSet (WhalParams_T *pWhalParams, UINT16 BasicRateSet); 448 void whal_ParamsSetSupportedRatesSet(WhalParams_T *pWhalParams, UINT16 SupportedRateSet); 449 void whal_ParamsSetHwGenTxParams (WhalParams_T *pWhalParams, rate_e TxRate, BOOL bCtrlFrame); 450 UINT8 whal_ParamsGetDefaultChannel (WhalParams_T *pWhalParams); 451 void whal_ParamsSetTxRateClassParams(WhalParams_T *pWhalParams,txRatePolicy_t *pTxRatePolicy); 452 txRatePolicy_t* whal_ParamsGetTxRateClassParams(WhalParams_T *pWhalParams); 453 void whal_ParamsSetAtimWindow (WhalParams_T *pWhalParams, UINT16 ATimWindow); 454 UINT16 whal_ParamsGetAtimWindow (WhalParams_T *pWhalParams); 455 void whal_ParamsSetDefaultPreamble(WhalParams_T *pWhalParams, UINT8 DefaultPreamble); 456 UINT8 whal_ParamsGetDefaultPreamble(WhalParams_T *pWhalParams); 457 UINT32 whal_ParamsGetTraceBufferSize(WhalParams_T *pWhalParams); 458 void whal_ParamsGetMacPreambleParams(WhalParams_T *pWhalParams, UINT8* earlyWakeUp); 459 460 461 /* 462 * general AP parameters 463 */ 464 GenParams_T *whal_ParamsGetGenParams (WhalParams_T *pWhalParams); 465 UINT32 whal_ParamsGetPbccDynamicEnableVal(WhalParams_T *pWhalParams); 466 void whal_ParamsSetPbccDynamicEnableVal(WhalParams_T *pWhalParams, int Val); 467 468 /* 469 * Wlan hardware info params 470 */ 471 UINT8 *whal_ParamsGetSrcMac (WhalParams_T *pWhalParams); 472 void whal_ParamsSetSrcMac (WhalParams_T *pWhalParams, char *SrcMac); 473 char whal_ParamsGetRadioType (WhalParams_T *pWhalParams); 474 void whal_ParamsHwNvramPrint (WhalParams_T *pWhalParams); 475 ACXRevision_t *whal_ParamsGetAcxVersion(WhalParams_T *pWhalParams); 476 void whal_ParamsPrintFwVersion (WhalParams_T *pWhalParams); 477 UINT8 *whal_ParamsGetFwVersion (WhalParams_T *pWhalParams); 478 UINT8 whal_ParamsGetE2MajorVersion (WhalParams_T *pWhalParams); 479 UINT8 whal_ParamsGetE2MinorVersion (WhalParams_T *pWhalParams); 480 UINT8 whal_ParamsGetE2LastVersion (WhalParams_T *pWhalParams); 481 UINT8 whal_ParamsGetTiInternalVer (WhalParams_T *pWhalParams); 482 483 /* 484 * ---------------------------------------------------------------- 485 * WME TX PARAMETERS 486 * ---------------------------------------------------------------- 487 */ 488 489 int whal_ParamsSetQueueParams(WhalParams_T *pWhalParams,queueTrafficParams_t *pQtrafficParams) ; 490 void whal_ParamsSetAcParams(WhalParams_T *pWhalParams,acQosParams_t *pAcQosParams); 491 492 493 TxParam_t* whal_ParamsGetTxParams (WhalParams_T *pWhalParams); 494 495 /* 496 * Traffic Parameters: (IE ACX_TID_CFG) 497 */ 498 int whal_ParamsSetTrafficParams(WhalParams_T *pWhalParams,whaCtrl_acTrafficParams_t* pTconfParams) ; 499 whaCtrl_acTrafficParams_t* whal_ParamsGetTrafficParams(WhalParams_T *pWhalParams, UINT8 AcID); 500 501 /* 502 * Access Category Parameters :(IE ACX_AC_CFG) 503 */ 504 int whal_ParamsSetAccessCategoryParams(WhalParams_T *pWhalParams,acQueuesParams_t* pTconfParams) ; 505 506 /* 507 * Qos Type : use in the Tx Descriptor 508 */ 509 BOOL whal_ParamsGetQosMode(WhalParams_T *pWhalParams); 510 int whal_ParamsSetQosMode(WhalParams_T *pWhalParams,qosProtocols_e QosType); 511 512 /* 513 * Ack Policy Parameters: use in the Tx Descriptor 514 */ 515 int whal_ParamsSetAccessCategoryAckPolicy(WhalParams_T *pWhalParams,BOOL AckPolicy, UINT8 Qid); 516 517 /* 518 * 519 */ 520 UINT8 whal_ParamsGetAcIdFromQid(WhalParams_T *pWhalParams,UINT8 Qid); 521 522 #endif /*_WHAL_PARAMS_H*/ 523