1 /** \file siteHash.h 2 * \brief Hash & site table internal header file 3 * 4 * \see siteHash.c 5 */ 6 /**************************************************************************** 7 **+-----------------------------------------------------------------------+** 8 **| |** 9 **| Copyright(c) 1998 - 2008 Texas Instruments. All rights reserved. |** 10 **| All rights reserved. |** 11 **| |** 12 **| Redistribution and use in source and binary forms, with or without |** 13 **| modification, are permitted provided that the following conditions |** 14 **| are met: |** 15 **| |** 16 **| * Redistributions of source code must retain the above copyright |** 17 **| notice, this list of conditions and the following disclaimer. |** 18 **| * Redistributions in binary form must reproduce the above copyright |** 19 **| notice, this list of conditions and the following disclaimer in |** 20 **| the documentation and/or other materials provided with the |** 21 **| distribution. |** 22 **| * Neither the name Texas Instruments nor the names of its |** 23 **| contributors may be used to endorse or promote products derived |** 24 **| from this software without specific prior written permission. |** 25 **| |** 26 **| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |** 27 **| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |** 28 **| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |** 29 **| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |** 30 **| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |** 31 **| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |** 32 **| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |** 33 **| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |** 34 **| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |** 35 **| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |** 36 **| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |** 37 **| |** 38 **+-----------------------------------------------------------------------+** 39 ****************************************************************************/ 40 41 /***************************************************************************/ 42 /* */ 43 /* MODULE: siteHash.h */ 44 /* PURPOSE: Hash & site table internal header file */ 45 /* */ 46 /***************************************************************************/ 47 #ifndef __SITE_MGR_H__ 48 #define __SITE_MGR_H__ 49 50 #include "osTIType.h" 51 #include "paramOut.h" 52 #include "paramIn.h" 53 #include "802_11Defs.h" 54 #include "DataCtrl_Api.h" 55 #include "whalCtrl_api.h" 56 57 #define MAX_RSN_IE 3 58 59 /* site types */ 60 typedef enum 61 { 62 SITE_PRIMARY = 0, 63 SITE_SELF = 1, 64 SITE_REGULAR = 2, 65 SITE_NULL = 3, 66 } siteType_e; 67 68 typedef struct 69 { 70 UINT8 hopPattern; 71 UINT8 hopSet; 72 UINT16 dwellTime; 73 } FHParams_t; 74 75 /* A site entry contains all the site attribute received in beacon and probes 76 and data used to manage the site table and hash table */ 77 typedef struct siteEntry_t siteEntry_t; 78 struct siteEntry_t 79 { 80 /* The following fields, in addition with the BSSID is used for entry management */ 81 UINT8 index; 82 siteType_e siteType; 83 UINT32 localTimeStamp; 84 UINT32 dtimTimeStamp; 85 UINT8 tsfTimeStamp[TIME_STAMP_LEN]; 86 UINT32 osTimeStamp; 87 88 89 90 /* The following fields are used for the selection */ 91 BOOL probeRecv; 92 BOOL beaconRecv; 93 BOOL beaconReceiveAfterJoin; 94 macAddress_t bssid; 95 ssid_t ssid; 96 bssType_e bssType; 97 rateMask_t rateMask; 98 rate_e maxBasicRate; 99 rate_e maxActiveRate; 100 modulationType_e beaconModulation; 101 modulationType_e probeModulation; 102 preamble_e currentPreambleType; 103 preamble_e preambleAssRspCap; 104 preamble_e barkerPreambleType; 105 slotTime_e currentSlotTime; 106 slotTime_e newSlotTime; 107 BOOL useProtection; 108 BOOL NonErpPresent; 109 UINT8 channel; 110 UINT8 attemptsNumber; 111 UINT8 Not_Received; 112 UINT32 matchingLevel; 113 114 BOOL privacy; 115 BOOL agility; 116 UINT16 capabilities; 117 UINT16 beaconInterval; 118 UINT8 dtimPeriod; 119 UINT8 snr; 120 rate_e rxRate; 121 INT32 rssi; 122 dot11_4X_t fourXParams; 123 BOOL fourXsupported; 124 125 /* Power Constraint */ 126 UINT8 powerConstraint; 127 128 /* AP Tx Power obtained from TPC Report */ 129 UINT8 APTxPower; 130 131 /* QOS */ 132 BOOL WMESupported; 133 ACParameters_t WMEParameters; 134 UINT8 lastWMEParameterCnt; 135 136 /* UPSD */ 137 BOOL APSDSupport; 138 139 /* The following fields are never updated */ 140 UINT16 atimWindow; 141 FHParams_t FHParams; 142 dot11_RSN_t pRsnIe[MAX_RSN_IE]; 143 UINT8 rsnIeLen; 144 145 mgmtStatus_e failStatus; 146 BOOL prioritySite; 147 UINT8 probeRespBuffer[MAX_BEACON_BODY_LENGTH]; 148 UINT16 probeRespLength; 149 UINT8 beaconBuffer[MAX_BEACON_BODY_LENGTH]; 150 UINT16 beaconLength; 151 152 BOOL detectedWhileMeasuring; 153 }; 154 155 typedef struct 156 { 157 UINT8 numOfSites; 158 UINT8 maxNumOfSites; 159 siteEntry_t siteTable[MAX_SITES_BG_BAND]; 160 }siteTablesParams_t; 161 162 /* This struct is seperated from the above struct (siteTablesParams_t) for memory optimizations */ 163 typedef struct 164 { 165 UINT8 numOfSites; 166 UINT8 maxNumOfSites; 167 siteEntry_t siteTable[MAX_SITES_A_BAND]; 168 }siteTablesParamsBandA_t; 169 170 /* Ths following structure is used to manage the sites */ 171 typedef struct 172 { 173 siteTablesParamsBandA_t dot11A_sitesTables; 174 siteTablesParams_t dot11BG_sitesTables; 175 siteTablesParams_t *pCurrentSiteTable; 176 siteEntry_t *pPrimarySite; 177 siteEntry_t *pPrevPrimarySite; 178 } sitesMgmtParams_t; 179 180 181 /* Site manager handle */ 182 typedef struct 183 { 184 siteMgrInitParams_t *pDesiredParams; 185 sitesMgmtParams_t *pSitesMgmtParams; 186 187 TI_HANDLE hConn; 188 TI_HANDLE hSmeSm; 189 TI_HANDLE hCtrlData; 190 TI_HANDLE hRxData; 191 TI_HANDLE hTxData; 192 TI_HANDLE hRsn; 193 TI_HANDLE hAuth; 194 TI_HANDLE hAssoc; 195 TI_HANDLE hRegulatoryDomain; 196 TI_HANDLE hMeasurementMgr; 197 TI_HANDLE hHalCtrl; 198 TI_HANDLE hMlmeSm; 199 TI_HANDLE hMemMgr; 200 TI_HANDLE hReport; 201 TI_HANDLE hOs; 202 TI_HANDLE hExcMngr; 203 TI_HANDLE hApConn; 204 TI_HANDLE hCurrBss; 205 TI_HANDLE hQosMngr; 206 TI_HANDLE hPowerMgr; 207 TI_HANDLE hEvHandler; 208 TI_HANDLE hMacServices; 209 TI_HANDLE hScr; 210 211 UINT32 beaconSentCount; 212 UINT32 rxPacketsCount; 213 UINT32 txPacketsCount; 214 215 modulationType_e chosenModulation; 216 modulationType_e currentDataModulation; 217 dot11mode_e siteMgrOperationalMode; 218 radioBand_e radioBand; 219 radioBand_e prevRadioBand; 220 221 macAddress_t ibssBssid; 222 BOOLEAN bPostponedDisconnectInProgress; 223 BOOL isAgingEnable; 224 225 /* TX Power Adjust */ 226 UINT32 siteMgrTxPowerCheckTime; 227 BOOL bTempTxPowerEnabled; 228 229 /* Scans procedures */ 230 UINT8 numOfBeaconFiltering; 231 BOOL keepAliveEnable; 232 /*UINT8 siteMgrDesiredBeaconFilterState;*/ 233 beaconFilterParams_t beaconFilterParams; /*contains the desired state*/ 234 235 236 /*HW Request from Power Ctrl */ 237 UINT32 DriverTestId; 238 239 BOOL powerSaveLdMode; 240 } siteMgr_t; 241 242 243 244 siteEntry_t *findAndInsertSiteEntry(siteMgr_t *pSiteMgr, 245 macAddress_t *bssid, 246 radioBand_e band); 247 248 siteEntry_t *findSiteEntry(siteMgr_t *pSiteMgr, 249 macAddress_t *bssid); 250 251 void removeSiteEntry(siteMgr_t *pSiteMgr, siteTablesParams_t *pCurrSiteTblParams, 252 siteEntry_t *hashPtr); 253 254 TI_STATUS removeEldestSite(siteMgr_t *pSiteMgr); 255 256 TI_STATUS buildProbeReqTemplate(siteMgr_t *pSiteMgr, whalCtrl_setTemplate_t *pTemplate, ssid_t *pSsid, 257 radioBand_e radioBand); 258 259 TI_STATUS buildProbeRspTemplate(siteMgr_t *pSiteMgr, whalCtrl_setTemplate_t *pTemplate); 260 261 TI_STATUS buildNullTemplate(siteMgr_t *pSiteMgr, whalCtrl_setTemplate_t *pTemplate); 262 263 TI_STATUS buildPsPollTemplate(siteMgr_t *pSiteMgr, whalCtrl_setTemplate_t *pTemplate); 264 265 TI_STATUS buildQosNullDataTemplate(siteMgr_t *pSiteMgr, whalCtrl_setTemplate_t *pTemplate, UINT8 userPriority); 266 267 #endif /* __SITE_MGR_H__ */ 268