1 /* 2 * STADExternalIf.h 3 * 4 * Copyright(c) 1998 - 2010 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 /* MODULE: TiWlnIf.h */ 38 /* PURPOSE: */ 39 /* */ 40 /****************************************************************************/ 41 #ifndef __TIWLNIF_NEW_H__ 42 #define __TIWLNIF_NEW_H__ 43 44 /** \file STADExternalIf.h 45 * \brief STAD External APIs 46 */ 47 48 #include "tidef.h" 49 #include "report.h" 50 #include "osDot11.h" 51 #include "TI_IPC_Api.h" 52 #include "bssTypes.h" 53 #include "roamingMngrTypes.h" 54 #include "version.h" 55 #include "privateCmd.h" 56 #include "CmdInterfaceCodes.h" 57 #include "coreDefaultParams.h" 58 #include "scanMngrTypes.h" 59 #include "TWDriver.h" 60 61 /***********/ 62 /* defines */ 63 /***********/ 64 65 #define NUM_OF_CONFIG_PARAMS_IN_SG 2 66 #define NUM_OF_STATUS_PARAMS_IN_SG 11 67 #define NUM_OF_COEX_ACTIVITY_PARAMS_IN_SG 6 68 #define NUM_OF_RATE_MNGT_PARAMS_MAX 14 69 #define SET_SSID_WITHOUT_SUPPL 0x8000 70 71 #define TX_RETRY_HISTOGRAM_SIZE 16 72 73 #define RX_DATA_FILTER_MAX_MASK_SIZE 8 74 #define RX_DATA_FILTER_MAX_PATTERN_SIZE 64 75 76 #define KEEP_ALIVE_TEMPLATE_MAX_LENGTH 64 77 78 #define KEEP_ALIVE_MAX_USER_MESSAGES 2 79 80 81 /*********************/ 82 /* enumeration types */ 83 /*********************/ 84 85 /** \enum TxDelayRanges_e 86 * \brief TX Delay Ranges 87 * 88 * \par Description 89 * The Tx path delay histogram (host + MAC)ranges in msec 90 * Used as indexes in tx Delay Histogram Ranges (including Start & End of ranges) Table 91 * 92 * \sa 93 */ 94 typedef enum 95 { 96 TX_DELAY_RANGE_MIN = 0, /**< */ 97 98 TX_DELAY_RANGE_0_TO_1 = 0, /**< */ 99 TX_DELAY_RANGE_1_TO_10 = 1, /**< */ 100 TX_DELAY_RANGE_10_TO_20 = 2, /**< */ 101 TX_DELAY_RANGE_20_TO_40 = 3, /**< */ 102 TX_DELAY_RANGE_40_TO_60 = 4, /**< */ 103 TX_DELAY_RANGE_60_TO_80 = 5, /**< */ 104 TX_DELAY_RANGE_80_TO_100 = 6, /**< */ 105 TX_DELAY_RANGE_100_TO_200 = 7, /**< */ 106 TX_DELAY_RANGE_ABOVE_200 = 8, /**< */ 107 108 TX_DELAY_RANGE_MAX = 8, /**< */ 109 TX_DELAY_RANGES_NUM = 9 /**< */ 110 } TxDelayRanges_e; 111 112 /** \enum TIWLN_SIMPLE_CONFIG_MODE 113 * \brief TI WLAN Simple Configuration Mode 114 * 115 * \par Description 116 * Used for indicating WiFi Simple Configuration mode 117 * 118 * \sa 119 */ 120 typedef enum 121 { 122 TIWLN_SIMPLE_CONFIG_OFF = 0, /**< Simple Configuration OFF */ 123 TIWLN_SIMPLE_CONFIG_PIN_METHOD, /**< Simple Configuration PIN Method */ 124 TIWLN_SIMPLE_CONFIG_PBC_METHOD /**< Simple Configuration PBC Method */ 125 } TIWLN_SIMPLE_CONFIG_MODE; 126 127 /** \enum EDraftNumber 128 * \brief Draft Number 129 * 130 * \par Description 131 * Site Manager / Exteranl Rate use draft number 132 * 133 * \sa 134 */ 135 typedef enum 136 { 137 DRAFT_5_AND_EARLIER = 5, /**< */ 138 DRAFT_6_AND_LATER = 6 /**< */ 139 140 } EDraftNumber; 141 142 /********************/ 143 /* Structures types */ 144 /********************/ 145 146 147 /** \struct TTxDataCounters 148 * \brief TX Data Counters 149 * 150 * \par Description 151 * Tx statistics per Tx-queue 152 * 153 * \sa 154 */ 155 typedef struct 156 { 157 TI_UINT32 XmitOk; /**< The number of frames that were transferred to TNET without errors */ 158 TI_UINT32 DirectedBytesXmit; /**< The number of bytes in directed packets that are transmitted without errors */ 159 TI_UINT32 DirectedFramesXmit; /**< The number of directed packets that are transmitted without errors */ 160 TI_UINT32 MulticastBytesXmit; /**< The number of bytes in multicast/functional packets that are transmitted without errors */ 161 TI_UINT32 MulticastFramesXmit; /**< The number of multicast/functional packets that are transmitted without errors */ 162 TI_UINT32 BroadcastBytesXmit; /**< The number of bytes in broadcast packets that are transmitted without errors */ 163 TI_UINT32 BroadcastFramesXmit; /**< The number of broadcast packets that are transmitted without errors */ 164 165 TI_UINT32 RetryHistogram[ TX_RETRY_HISTOGRAM_SIZE ]; /**< Histogram counting the number of packets xfered with any retry number */ 166 167 TI_UINT32 RetryFailCounter; /**< Number of packets that failed transmission due to retry number exceeded */ 168 TI_UINT32 TxTimeoutCounter; /**< Number of packets that failed transmission due to lifetime expiry */ 169 TI_UINT32 NoLinkCounter; /**< Number of packets that failed transmission due to link failure */ 170 TI_UINT32 OtherFailCounter; /**< Number of packets that failed transmission due to other reasons */ 171 TI_UINT32 MaxConsecutiveRetryFail;/**< Maximum consecutive packets that failed transmission due to retry limit exceeded */ 172 173 /* TX path delay statistics */ 174 TI_UINT32 txDelayHistogram[TX_DELAY_RANGES_NUM]; /**< Histogram of Tx path delay (host + MAC) */ 175 TI_UINT32 NumPackets; /**< For average calculation - Total packets counted */ 176 TI_UINT32 SumTotalDelayMs; /**< For average calculation - the sum of packets total delay */ 177 TI_UINT32 SumFWDelayUs; /**< For average calculation - The sum of packets FW delay */ 178 TI_UINT32 SumMacDelayUs; /**< For average calculation - the sum of packets MAC delay */ 179 } TTxDataCounters; 180 181 /** \struct TIWLN_TX_STATISTICS 182 * \brief TI WLAN TX Statistics 183 * 184 * \par Description 185 * All Tx statistics of all Tx Queues Tx-queue 186 * 187 * \sa 188 */ 189 typedef struct 190 { 191 TTxDataCounters txCounters[MAX_NUM_OF_AC]; /**< Table which holds Tx statistics of each Tx-queue */ 192 } TIWLN_TX_STATISTICS; 193 194 /** \struct TDfsChannelRange 195 * \brief DFS Channel Range 196 * 197 * \par Description 198 * Range of Dynamic Frequency Selection Channel 199 * 200 * \sa 201 */ 202 typedef struct 203 { 204 TI_UINT16 minDFS_channelNum; /**< Lower limit of DFS Channel Range */ 205 TI_UINT16 maxDFS_channelNum; /**< Higher limit of DFS Channel Range */ 206 } TDfsChannelRange; 207 208 /** \struct TDebugRegisterReq 209 * \brief Debug Register Request 210 * 211 * \par Description 212 * Used for reading HW register (for debug) 213 * 214 * \sa 215 */ 216 typedef struct 217 { 218 TI_UINT32 regSize; /**< Register Size */ 219 TI_UINT32 regAddr; /**< Register Address */ 220 TI_UINT32 regValue; /**< Register value read */ 221 } TDebugRegisterReq; 222 223 /** \struct TIWLN_REG_RW 224 * \brief TI WLAN Register R/W 225 * 226 * \par Description 227 * Used for writing HW register (for debug) 228 * 229 * \sa 230 */ 231 typedef struct 232 { 233 TI_UINT32 regSize; /**< Register Size */ 234 TI_UINT32 regAddr; /**< Register Address */ 235 TI_UINT32 regValue; /**< Register write value */ 236 } TIWLN_REG_RW; 237 238 /** \struct TCountry 239 * \brief Country Parameters 240 * 241 * \par Description 242 * Parameters of Country Informatino Element 243 * 244 * \sa 245 */ 246 typedef struct 247 { 248 TI_UINT8 elementId; /**< Country IE ID */ 249 TI_UINT8 len; /**< Country IE data length */ 250 dot11_countryIE_t countryIE; /**< Country IE (country string and tripple channel) */ 251 } TCountry; 252 253 /** \struct TRates 254 * \brief Rates Parameters 255 * 256 * \par Description 257 * Site Manager Supported rates parameters 258 * 259 * \sa 260 */ 261 typedef struct 262 { 263 TI_UINT8 len; /**< Number of entries in the rates list */ 264 TI_UINT8 ratesString[DOT11_MAX_SUPPORTED_RATES]; /**< Rates List. From each entry - a different bitrate (in bps) can be driven as followed: 265 ((ratesString[i] & 0x7F) * 500000). Bits 1-7 are used for the bitrate and bit 8 is MASK used 266 for indicating if NET Basic 267 */ 268 } TRates; 269 270 /** \struct TRxDataFilterRequest 271 * \brief RX Data Filter Request 272 * 273 * \par Description 274 * Use for handling RX Data Filter (Add, Remove, parse, usage) 275 * 276 * \sa 277 */ 278 typedef struct 279 { 280 TI_UINT8 offset; /**< Pattern Start Offset (0-255) */ 281 TI_UINT8 maskLength; /**< Byte-Mask Length, 1-8 bytes of mask, 0- match all packets */ 282 TI_UINT8 patternLength; /**< Should correspond to the number of asserted bits in the Byte-Mask */ 283 TI_UINT8 mask[RX_DATA_FILTER_MAX_MASK_SIZE]; /**< Byte-Mask */ 284 TI_UINT8 pattern[RX_DATA_FILTER_MAX_PATTERN_SIZE];/**< Data Filter PAttern */ 285 } TRxDataFilterRequest; 286 287 /** \struct TIWLN_COUNTERS 288 * \brief TI WLAN Counters 289 * 290 * \par Description 291 * Use for handling RX Data Filter (Add, Remove, parse, usage) 292 * 293 * \sa 294 */ 295 typedef struct 296 { 297 TI_UINT32 RecvOk; /**< Number of frames that the NIC receives without errors */ 298 TI_UINT32 RecvError; /**< Number of frames that a NIC receives but does not indicate to the protocols due to errors */ 299 TI_UINT32 RecvNoBuffer; /**< Number of frames that the NIC cannot receive due to lack of NIC receive buffer space */ 300 TI_UINT32 DirectedBytesRecv; /**< Number of bytes in directed packets that are received without errors */ 301 TI_UINT32 DirectedFramesRecv; /**< Number of directed packets that are received without errors */ 302 TI_UINT32 MulticastBytesRecv; /**< Number of bytes in multicast/functional packets that are received without errors */ 303 TI_UINT32 MulticastFramesRecv; /**< Number of multicast/functional packets that are received without errors */ 304 TI_UINT32 BroadcastBytesRecv; /**< Number of bytes in broadcast packets that are received without errors. */ 305 TI_UINT32 BroadcastFramesRecv; /**< Number of broadcast packets that are received without errors. */ 306 307 TI_UINT32 FragmentsRecv; /**< Number of Fragments Received */ 308 TI_UINT32 FrameDuplicates; /**< Number of Farme Duplicates */ 309 TI_UINT32 FcsErrors; /**< Number of frames that a NIC receives but does not indicate to the protocols due to errors */ 310 311 TI_UINT32 BeaconsXmit; /**< Number of Beacons Sent */ 312 TI_UINT32 BeaconsRecv; /**< Number of Beacons Reveived */ 313 TI_UINT32 AssocRejects; /**< Number of Rejected Assoc. */ 314 TI_UINT32 AssocTimeouts; /**< Number of Assoc. Time Outs */ 315 TI_UINT32 AuthRejects; /**< Number of Authentication rejects */ 316 TI_UINT32 AuthTimeouts; /**< Number of Authentication Time Outs */ 317 318 } TIWLN_COUNTERS; 319 320 /** \struct TPowerMgr_PowerMode 321 * \brief Power Mode Parameters 322 * 323 * \par Description 324 * 325 * \sa 326 */ 327 typedef struct 328 { 329 PowerMgr_PowerMode_e PowerMode; /**< Power Mode Type */ 330 PowerMgr_Priority_e PowerMngPriority; /**< Power Mode Priority */ 331 } TPowerMgr_PowerMode; 332 333 /** \struct TWscMode 334 * \brief WSC Mode 335 * 336 * \par Description 337 * This structure is used whenever the WiFi Simple Configuration Mode is modified between ON and OFF. 338 * Upon enabling the Simple Configuration, the user must fill the probeReqWSCIE fields 339 * 340 * \sa 341 */ 342 typedef struct 343 { 344 TIWLN_SIMPLE_CONFIG_MODE WSCMode; /**< WiFi Simple Configuration mode */ 345 TI_UINT32 uWscIeSize; /**< Simple Config IE actual size (the part after the OUI) */ 346 TI_UINT8 probeReqWSCIE[DOT11_WSC_PROBE_REQ_MAX_LENGTH]; /**< Buffer which holds the parameters of ProbeReq - WSC IE */ 347 } TWscMode; 348 349 /** \struct TKeepAliveTemplate 350 * \brief Keep Alive Template 351 * 352 * \par Description 353 * Used for Add/Remove to/from FW Keep Alive Configuration (Parameters & Template) 354 * 355 * \sa 356 */ 357 typedef struct 358 { 359 TKeepAliveParams keepAliveParams; /**< Keep Alive Parameters */ 360 TI_UINT8 msgBuffer[ KEEP_ALIVE_TEMPLATE_MAX_LENGTH ]; /**< Buffer which holds the Keep Alive Template */ 361 TI_UINT32 msgBufferLength; /**< Length of Keep Alive Template */ 362 363 } TKeepAliveTemplate; 364 365 /** \struct TKeepAliveConfig 366 * \brief Keep Alive Configuration 367 * 368 * \par Description 369 * Used for Get/Set Keep Alive Configuration (Parameters & Template) 370 * 371 * \sa 372 */ 373 typedef struct 374 { 375 TI_UINT8 enaDisFlag; /**< Indicates if Keep Alive is Enabled/Disabled */ 376 TKeepAliveTemplate templates[ KEEP_ALIVE_MAX_USER_MESSAGES ]; /**< Buffer which holds the maximum Keep Alive Template 377 * possible (according to maximum Keep Alive user messages 378 possible) 379 */ 380 } TKeepAliveConfig; 381 382 #endif /* __TIWLNIF_H__*/ 383