PageRenderTime 57ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/drivers/net/wireless/tiwlan1251/common/src/hal/FirmwareApi/public_infoele.h

https://bitbucket.org/cyanogenmod/cm-kernel
C Header | 2392 lines | 1035 code | 335 blank | 1022 comment | 0 complexity | a63c85d2bf2cb59a49b1967c5fab513a MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.0, AGPL-1.0

Large files files are truncated, but you can click here to view the full file

  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. /** \file public_infoele.h
  36. * \brief Contains information element defines/structures used by the FW and host.
  37. *
  38. */
  39. #ifndef PUBLIC_INFOELE_H
  40. #define PUBLIC_INFOELE_H
  41. #include "public_types.h"
  42. #include "public_commands.h"
  43. #include "public_radio.h"
  44. typedef enum
  45. {
  46. ACX_WAKE_UP_CONDITIONS = 0x0002,
  47. ACX_MEM_CFG = 0x0003,
  48. ACX_SLOT = 0x0004,
  49. ACX_QUEUE_HEAD = 0x0005, /* for MASTER mode only!!!*/
  50. ACX_AC_CFG = 0x0007,
  51. ACX_MEM_MAP = 0x0008,
  52. ACX_AID = 0x000A,
  53. ACX_RADIO_PARAM = 0x000B, /* Not in use !!! */
  54. ACX_CFG = 0x000C, /* Not in use !!!*/
  55. ACX_FW_REV = 0x000D,
  56. ACX_FCS_ERROR_CNT = 0x000E, /* OBSOLETE (replaced by ACX_ERROR_CNT) !!!*/
  57. ACX_MEDIUM_USAGE = 0x000F,
  58. ACX_RX_CFG = 0x0010,
  59. ACX_TX_QUEUE_CFG = 0x0011,
  60. ACX_BSS_IN_PS = 0x0012, /* for AP only (OBSOLETE???) */
  61. ACX_STATISTICS = 0x0013, /* Debug API*/
  62. ACX_PWR_CONSUMPTION_STATISTICS = 0x0014,
  63. ACX_FEATURE_CFG = 0x0015,
  64. ACX_MISC_CFG = 0x0017, /* Not in use !!!*/
  65. ACX_TID_CFG = 0x001A,
  66. ACX_CAL_ASSESSMENT = 0x001E, /* OBSOLETE !!!*/
  67. ACX_BEACON_FILTER_OPT = 0x001F,
  68. ACX_LOW_RSSI = 0x0020,
  69. ACX_NOISE_HIST = 0x0021,
  70. ACX_HDK_VERSION = 0x0022, /* ???*/
  71. ACX_PD_THRESHOLD = 0x0023,
  72. ACX_DATA_PATH_PARAMS = 0x0024, /* WO*/
  73. ACX_DATA_PATH_RESP_PARAMS = 0x0024, /* RO*/
  74. ACX_CCA_THRESHOLD = 0x0025,
  75. ACX_EVENT_MBOX_MASK = 0x0026,
  76. #ifdef FW_RUNNING_AS_AP
  77. ACX_DTIM_PERIOD = 0x0027, /* for AP only !!!*/
  78. #else
  79. ACX_WR_TBTT_AND_DTIM = 0x0027, /* STA only*/
  80. #endif
  81. ACX_ACI_OPTION_CFG = 0x0029, /* OBSOLETE !!! (for 1251)*/
  82. ACX_GPIO_CFG = 0x002A, /* Not in use !!!*/
  83. ACX_GPIO_SET = 0x002B, /* Not in use !!!*/
  84. ACX_PM_CFG = 0x002C, /* ??? (To Be Documented)*/
  85. ACX_CONN_MONIT_PARAMS = 0x002D,
  86. ACX_AVERAGE_RSSI = 0x002E, /* Not in use !!!*/
  87. ACX_CONS_TX_FAILURE = 0x002F,
  88. ACX_BCN_DTIM_OPTIONS = 0x0031,
  89. ACX_SG_ENABLE = 0x0032,
  90. ACX_SG_CFG = 0x0033,
  91. ACX_ANTENNA_DIVERSITY_CFG = 0x0035, /* ??? (To Be Documented)*/
  92. ACX_LOW_SNR = 0x0037, /* To Be Documented*/
  93. ACX_BEACON_FILTER_TABLE = 0x0038,
  94. ACX_ARP_IP_FILTER = 0x0039,
  95. ACX_ROAMING_STATISTICS_TBL = 0x003B,
  96. ACX_RATE_POLICY = 0x003D,
  97. ACX_CTS_PROTECTION = 0x003E,
  98. ACX_SLEEP_AUTH = 0x003F,
  99. ACX_PREAMBLE_TYPE = 0x0040,
  100. ACX_ERROR_CNT = 0x0041,
  101. ACX_FW_GEN_FRAME_RATES = 0x0042,
  102. ACX_IBSS_FILTER = 0x0044,
  103. ACX_SERVICE_PERIOD_TIMEOUT = 0x0045,
  104. ACX_TSF_INFO = 0x0046,
  105. ACX_CONFIG_PS_WMM = 0x0049,
  106. ACX_ENABLE_RX_DATA_FILTER = 0x004A,
  107. ACX_SET_RX_DATA_FILTER = 0x004B,
  108. ACX_GET_DATA_FILTER_STATISTICS = 0x004C,
  109. ACX_POWER_LEVEL_TABLE = 0x004D,
  110. ACX_BET_ENABLE = 0x0050,
  111. DOT11_STATION_ID = 0x1001,
  112. DOT11_RX_MSDU_LIFE_TIME = 0x1004,
  113. DOT11_CUR_TX_PWR = 0x100D,
  114. DOT11_DEFAULT_KEY = 0x1010,
  115. DOT11_RX_DOT11_MODE = 0x1012,
  116. DOT11_RTS_THRESHOLD = 0x1013,
  117. DOT11_GROUP_ADDRESS_TBL = 0x1014,
  118. MAX_DOT11_IE = DOT11_GROUP_ADDRESS_TBL,
  119. MAX_IE = 0xFFFF /*force enumeration to 16bits*/
  120. } InfoElement_enum;
  121. #ifdef HOST_COMPILE
  122. typedef uint16 InfoElement_e;
  123. #else
  124. typedef InfoElement_enum InfoElement_e;
  125. #endif
  126. typedef struct
  127. {
  128. InfoElement_e id;
  129. uint16 length;
  130. uint32 dataLoc; /*use this to point to for following variable-length data*/
  131. } InfoElement_t;
  132. typedef struct
  133. {
  134. uint16 id;
  135. uint16 len;
  136. } EleHdrStruct;
  137. #ifdef HOST_COMPILE
  138. #define INFO_ELE_HDR EleHdrStruct EleHdr;
  139. #else
  140. #define INFO_ELE_HDR
  141. #endif
  142. /******************************************************************************
  143. Name: ACX_WAKE_UP_CONDITIONS
  144. Type: Configuration
  145. Access: Write Only
  146. Length: 2
  147. ******************************************************************************/
  148. typedef enum
  149. {
  150. WAKE_UP_EVENT_BEACON_BITMAP = 0x01, /* Wake on every Beacon*/
  151. WAKE_UP_EVENT_DTIM_BITMAP = 0x02, /* Wake on every DTIM*/
  152. WAKE_UP_EVENT_N_DTIM_BITMAP = 0x04, /* Wake on every Nth DTIM (Listen interval)*/
  153. WAKE_UP_EVENT_N_BEACONS_BITMAP = 0x08, /* Wake on every Nth Beacon (Nx Beacon)*/
  154. WAKE_UP_EVENT_BITS_MASK = 0x0F
  155. } WakeUpEventBitMask_e;
  156. typedef struct
  157. {
  158. INFO_ELE_HDR
  159. uint8 wakeUpConditionBitmap; /* The host can set one bit only. */
  160. /* WakeUpEventBitMask_e describes the Possible */
  161. /* Wakeup configuration bits*/
  162. uint8 listenInterval; /* 0 for Beacon and Dtim, */
  163. /* xDtims (1-10) for Listen Interval and */
  164. /* xBeacons (1-255) for NxBeacon*/
  165. uint8 padding[2]; /* alignment to 32bits boundry */
  166. }WakeUpCondition_t;
  167. /******************************************************************************
  168. Name: ACX_MEM_CFG
  169. Type: Configuration
  170. Access: Write Only
  171. Length: 12
  172. ******************************************************************************/
  173. /* Host Bus/Memory Mode - The following table specifies the possible host bus modes and */
  174. /* memory organizations that the Wilink should use during operation. */
  175. typedef enum{
  176. HOSTIF_PCI_MASTER_HOST_INDIRECT,
  177. HOSTIF_PCI_MASTER_HOST_DIRECT,
  178. HOSTIF_SLAVE,
  179. HOSTIF_PKT_RING,
  180. HOSTIF_DONTCARE = 0xFF
  181. } HostIFConfig_enum;
  182. #ifdef HOST_COMPILE
  183. typedef uint8 HostIFConfig_e;
  184. #else
  185. typedef HostIFConfig_enum HostIFConfig_e;
  186. #endif
  187. typedef struct
  188. {
  189. INFO_ELE_HDR
  190. uint16 numStations; /* specifies the number of STAs to be supported. */
  191. /* The FW uses this field to allocate memory */
  192. /* for STA context data such as security keys*/
  193. uint16 reserved1;
  194. uint8 rxMemblockNumber; /* specifies the number of memory buffers that */
  195. /* is allocated to the Rx memory pool. The */
  196. /* actual number allocated may be less than*/
  197. /* this number if there are not enough memory */
  198. /* blocks left over for the Minimum Number of */
  199. /* Tx Blocks. Returns the actual number of RX */
  200. /* buffers allocated in the memory map*/
  201. uint8 Reserved2;
  202. uint8 numTxQueues; /* specifies the number of descriptor queues */
  203. /* that are to be used for transmit operations. */
  204. /* Valid values are 1 to 16*/
  205. HostIFConfig_e hostifOptions; /* specifies the memory configuration options */
  206. /* for the adaptor. The format of this field */
  207. /* is shown in HostIFConfig_enum.*/
  208. uint8 txMinimumMemblockNumber; /* specifies the minimum number of blocks that */
  209. /* must be allocated to the TX pool. Follows */
  210. /* this limit even if the Number of Rx Memory */
  211. /* Blocks parameter is ignored.*/
  212. uint8 numSsidProfiles; /* specifies the number of SSID profiles used */
  213. /* in the AP. Enables working with different */
  214. /* profiles for different stations.*/
  215. uint16 debugBufferSize; /* This field specifies the number of words */
  216. /* allocated for each debug buffer if the */
  217. /* FW trace is enabled.*/
  218. #ifndef HOST_COMPILE
  219. uint8 variableData; /* contents vary starting here - should be */
  220. uint8 pedding[3]; /* aligned to 32 bits boundry*/
  221. #endif
  222. } ACXConfigMemory_t;
  223. typedef struct
  224. {
  225. uint8 numDescs;
  226. uint8 Reserved;
  227. uint8 Type;
  228. uint8 Priority;
  229. uint32 dmaAddress;
  230. } ACXrxQueueConfig;
  231. typedef struct
  232. {
  233. uint8 numDescs;
  234. uint8 reserved1[2];
  235. uint8 attributes; /* QPriority_e qPriority;*/
  236. } ACXtxQueueConfig;
  237. #define QUEUE_CONFIG_MAX_TX_QUEUES 5
  238. typedef struct
  239. {
  240. ACXConfigMemory_t memConfig;
  241. ACXrxQueueConfig RxQueueConfig;
  242. ACXtxQueueConfig TxQueueConfig[QUEUE_CONFIG_MAX_TX_QUEUES];
  243. } ACXConfigMemoryStruct_t;
  244. /******************************************************************************
  245. Name: ACX_SLOT
  246. Type: Configuration
  247. Access: Write Only
  248. Length: 8
  249. ******************************************************************************/
  250. typedef enum
  251. {
  252. SLOT_TIME_LONG = 0, /* the WiLink uses long (20 us) slots*/
  253. SLOT_TIME_SHORT = 1, /* the WiLink uses short (9 us) slots*/
  254. DEFAULT_SLOT_TIME = SLOT_TIME_SHORT,
  255. MAX_SLOT_TIMES = 0xFF
  256. } SlotTime_enum;
  257. #ifdef HOST_COMPILE
  258. typedef uint8 SlotTime_e;
  259. #else
  260. typedef SlotTime_enum SlotTime_e;
  261. #endif
  262. typedef struct
  263. {
  264. INFO_ELE_HDR
  265. uint8 woneIndex; /* reserved*/
  266. SlotTime_e slotTime; /* The slot size to be used. refer to SlotTime_enum. */
  267. uint8 reserved[6];
  268. } ACXSlot_t;
  269. /******************************************************************************
  270. Name: ACX_QUEUE_HEAD
  271. Type: Configuration
  272. Access: Read Only
  273. Length: 56
  274. Note: for MASTER mode only!!!
  275. ******************************************************************************/
  276. typedef struct
  277. {
  278. uint32 addr;
  279. uint8 priority;
  280. uint8 padding[3];
  281. } ACXoneQueueHead;
  282. #define NUM_ACCESS_CATEGORIES_QUEUES 5 /* This takes into account the */
  283. /* broadcast AC queue*/
  284. typedef struct
  285. {
  286. INFO_ELE_HDR
  287. uint32 *txMemBlkQ;
  288. uint32 *rxMemBlkQ;
  289. ACXoneQueueHead rxQueueHead;
  290. ACXoneQueueHead txQueueHead[NUM_ACCESS_CATEGORIES_QUEUES];
  291. } ACXQosQueueHead_t;
  292. /******************************************************************************
  293. Name: ACX_AC_CFG
  294. Type: Configuration
  295. Access: Write Only
  296. Length: 8
  297. ******************************************************************************/
  298. typedef enum
  299. {
  300. AC_BE = 0, /* Best Effort/Legacy*/
  301. AC_BK = 1, /* Background*/
  302. AC_VI = 2, /* Video*/
  303. AC_VO = 3, /* Voice*/
  304. AC_BCAST = 4, /* Broadcast dummy access category*/
  305. NUM_ACCESS_CATEGORIES = 4
  306. } AccessCategory_enum;
  307. #define AC_FAST_TEMPLATE 4 /* Access Category for SG2.0 Fast CTS Tx */
  308. #define AC_REQUEST 0xfe /* Special access category type for */
  309. /* requests*/
  310. #define AC_INVALID 0xff /* Empty Access category in scheduler */
  311. /* Access Category DB*/
  312. #define AC_ANY_TID 0xFF /* Any TID/AC for the Split Scan */
  313. /* following are defult values for the IE fields*/
  314. #define CWMIN_BK 15
  315. #define CWMIN_BE 15
  316. #define CWMIN_VI 7
  317. #define CWMIN_VO 3
  318. #define CWMAX_BK 1023
  319. #define CWMAX_BE 63
  320. #define CWMAX_VI 15
  321. #define CWMAX_VO 7
  322. #define AIFS_PIFS 1 /* slot number setting to start transmission at PIFS interval */
  323. #define AIFS_DIFS 2 /* slot number setting to start transmission at DIFS interval - */
  324. /* normal DCF access */
  325. #define AIFSN_BK 7
  326. #define AIFSN_BE 3
  327. #define AIFSN_VI AIFS_PIFS
  328. #define AIFSN_VO AIFS_PIFS
  329. #define TXOP_BK 0
  330. #define TXOP_BE 0
  331. #define TXOP_VI 3008
  332. #define TXOP_VO 1504
  333. #define DEFAULT_AC_SHORT_RETRY_LIMIT 7
  334. #define DEFAULT_AC_LONG_RETRY_LIMIT 4
  335. /* rxTimeout values */
  336. #define NO_RX_TIMEOUT 0
  337. typedef struct
  338. {
  339. INFO_ELE_HDR
  340. uint8 ac; /* Access Category - The TX queue's access category */
  341. /* (refer to AccessCategory_enum)*/
  342. uint8 cwMin; /* The contention window minimum size (in slots) for */
  343. /* the access class.*/
  344. uint16 cwMax; /* The contention window maximum size (in slots) for */
  345. /* the access class.*/
  346. uint8 aifsn; /* The AIF value (in slots) for the access class.*/
  347. uint8 reserved;
  348. uint16 txopLimit; /* The TX Op Limit (in microseconds) for the access class.*/
  349. } ACXAcCfg_t;
  350. /******************************************************************************
  351. Name: ACX_MEM_MAP
  352. Type: Configuration
  353. Access: Read Only
  354. Length: 72
  355. Note: Except for the numTxMemBlks, numRxMemBlks fields, this is
  356. used in MASTER mode only!!!
  357. ******************************************************************************/
  358. #define MEM_MAP_NUM_FIELDS 18
  359. typedef struct
  360. {
  361. INFO_ELE_HDR
  362. void *codeStart;
  363. void *codeEnd;
  364. void *wepDefaultKeyStart;
  365. void *wepDefaultKeyEnd;
  366. void *staTableStart;
  367. void *staTableEnd;
  368. void *packetTemplateStart;
  369. void *packetTemplateEnd;
  370. void *queueMemoryStart;
  371. void *queueMemoryEnd;
  372. void *packetMemoryPoolStart;
  373. void *packetMemoryPoolEnd;
  374. void *debugBuffer1Start;
  375. void *debugBuffer1End;
  376. void *debugBuffer2Start;
  377. void *debugBuffer2End;
  378. uint32 numTxMemBlks; /* Number of blocks that FW allocated for TX packets.*/
  379. uint32 numRxMemBlks; /* Number of blocks that FW allocated for RX packets. */
  380. } MemoryMap_t;
  381. /******************************************************************************
  382. Name: ACX_AID
  383. Type: Configuration
  384. Access: Write Only
  385. Length: 2
  386. ******************************************************************************/
  387. typedef struct
  388. {
  389. INFO_ELE_HDR
  390. uint16 Aid; /* The Association ID to the WiLink. The WiLink uses this */
  391. /* field to determine when the STA's AID bit is set in a */
  392. /* received beacon and when a PS Poll frame should be */
  393. /* transmitted to the AP. The host configures this information */
  394. /* element after it has associated with an AP. This information */
  395. /* element does not need to be set in Ad Hoc mode.*/
  396. uint8 padding[2]; /* alignment to 32bits boundry */
  397. } ACXAid_t;
  398. /******************************************************************************
  399. Name: ACX_CFG
  400. Type: Configuration
  401. Access: Write Only
  402. Length: 25
  403. Note: Not in use !!!
  404. ******************************************************************************/
  405. typedef struct ACXConfig_variableEntry_t
  406. {
  407. uint8 dot11_ID;
  408. uint8 num_supported;
  409. uint8 dot11_Table; /*cast and deref this as array of Sizeof-dot11_ID-Type.*/
  410. uint8 padding; /* alignment to 32bits boundry */
  411. } ACXConfig_variableEntry_t;
  412. typedef struct ACXConfigOptionsStruct_t
  413. {
  414. INFO_ELE_HDR
  415. char nvsVer[8];
  416. uint32 endMemLoc;
  417. uint16 VendorSpecificArea;
  418. uint8 dot11CCAModeSupported;
  419. uint8 dot11DiversitySupport;
  420. uint8 dot11ShortPreambleOptionImplemented;
  421. uint8 dot11PBCCOptionImplemented;
  422. uint8 dot11ChanneAgilityPresent;
  423. uint8 dot11PHYType;
  424. uint8 dot11TempType;
  425. uint8 numVarEntries;
  426. uint8 padding[2]; /* alignment to 32bits boundry */
  427. ACXConfig_variableEntry_t vardata;
  428. /**/
  429. /*Begin variable portion of Config data...*/
  430. /**/
  431. } ACXConfigOptionsStruct_t;
  432. /******************************************************************************
  433. Name: ACX_FW_REV
  434. Type: Configuration
  435. Access: Write Only
  436. Length: 24
  437. ******************************************************************************/
  438. typedef struct
  439. {
  440. INFO_ELE_HDR
  441. char FWVersion[20]; /* The WiLink firmware version, an ASCII string x.x.x.x.x */
  442. /* that uniquely identifies the current firmware. */
  443. /* The left most digit is incremented each time a */
  444. /* significant change is made to the firmware, such as */
  445. /* WLAN new project.*/
  446. /* The second and third digit is incremented when major enhancements*/
  447. /* are added or major fixes are made.*/
  448. /* The fourth digit is incremented for each SP release */
  449. /* and it indicants the costumer private brench */
  450. /* The fifth digit is incremented for each build.*/
  451. uint32 HardWareVersion; /* This 4 byte field specifies the WiLink hardware version. */
  452. /* bits 0 - 15: Reserved.*/
  453. /* bits 16 - 23: Version ID - The WiLink version ID */
  454. /* (1 = first spin, 2 = second spin, and so on).*/
  455. /* bits 24 - 31: Chip ID - The WiLink chip ID. */
  456. } ACXRevision_t;
  457. /******************************************************************************
  458. Name: ACX_FCS_ERROR_CNT
  459. Type: Operation
  460. Access: Read Only
  461. Length: 4
  462. Note: OBSOLETE (replaced by ACX_ERROR_CNT) !!!
  463. ******************************************************************************/
  464. typedef struct
  465. {
  466. INFO_ELE_HDR
  467. uint32 FCSErrorCount;
  468. } ACXFCSErrorCount_t;
  469. /******************************************************************************
  470. Name: ACX_ERROR_CNT
  471. Type: Operation
  472. Access: Read Only
  473. Length: 12
  474. ******************************************************************************/
  475. typedef struct
  476. {
  477. INFO_ELE_HDR
  478. uint32 PLCPErrorCount; /* The number of PLCP errors since the last time this */
  479. /* information element was interrogated. This field is */
  480. /* automatically cleared when it is interrogated.*/
  481. uint32 FCSErrorCount; /* The number of FCS errors since the last time this */
  482. /* information element was interrogated. This field is */
  483. /* automatically cleared when it is interrogated.*/
  484. uint32 validFrameCount; /* The number of MPDU’s without PLCP header errors received*/
  485. /* since the last time this information element was interrogated. */
  486. /* This field is automatically cleared when it is interrogated.*/
  487. uint32 seqNumMissCount; /* the number of missed sequence numbers in the squentially */
  488. /* values of frames seq numbers */
  489. } ACXErrorCounters_t;
  490. /******************************************************************************
  491. Name: ACX_MEDIUM_USAGE
  492. Type: Configuration
  493. Access: Read Only
  494. Length: 8
  495. ******************************************************************************/
  496. typedef struct
  497. {
  498. INFO_ELE_HDR
  499. uint32 mediumUsage; /* report to the host the value of medium usage registers*/
  500. uint32 period; /* report to the host the value of medium period registers*/
  501. } ACXMediumUsage_t;
  502. /******************************************************************************
  503. Name: ACX_RX_CFG
  504. Type: Filtering Configuration
  505. Access: Write Only
  506. Length: 8
  507. ******************************************************************************/
  508. /*
  509. * Rx configuration (filter) information element
  510. * ---------------------------------------------
  511. */
  512. /*
  513. RX ConfigOptions Table
  514. Bit Definition
  515. === ==========
  516. 31:14 Reserved
  517. 13 Copy RX Status - when set, write three receive status words to top of
  518. rx'd MPDU.
  519. When clear, do not write three status words (added rev 1.5)
  520. 12 Reserved
  521. 11 RX Complete upon FCS error - when set, give rx complete interrupt for
  522. FCS errors, after the rx filtering, e.g. unicast frames not to us with
  523. FCS error will not generate an interrupt
  524. 10 SSID Filter Enable - When set, the WiLink discards all beacon,
  525. probe request, and probe response frames with an SSID that does not
  526. match the SSID specified by the host in the START/JOIN command.
  527. When clear, the WiLink receives frames with any SSID.
  528. 9 Broadcast Filter Enable - When set, the WiLink discards all broadcast
  529. frames. When clear, the WiLink receives all received broadcast frames.
  530. 8:6 Reserved
  531. 5 BSSID Filter Enable - When set, the WiLink discards any frames with a
  532. BSSID that does not match the BSSID specified by the host.
  533. When clear, the WiLink receives frames from any BSSID.
  534. 4 MAC Addr Filter - When set, the WiLink discards any frames with a
  535. destination address that does not match the MAC address of the adaptor.
  536. When clear, the WiLink receives frames destined to any MAC address.
  537. 3 Promiscuous - When set, the WiLink receives all valid frames
  538. (i.e., all frames that pass the FCS check).
  539. When clear, only frames that pass the other filters specified are received.
  540. 2 FCS - When set, the WiLink includes the FCS with the received frame.
  541. When clear, the FCS is discarded.
  542. 1 PLCP header - When set, write all data from baseband to frame buffer
  543. including PHY header.
  544. 0 Reserved - Always equal to 0.
  545. RX FilterOptions Table
  546. Bit Definition
  547. === ==========
  548. 31:12 Reserved - Always equal to 0.
  549. 11 Association - When set, the WiLink receives all association related frames
  550. (association request/response, reassocation request/response, and
  551. disassociation). When clear, these frames are discarded.
  552. 10 Auth/De auth - When set, the WiLink receives all authentication and
  553. de-authentication frames. When clear, these frames are discarded.
  554. 9 Beacon - When set, the WiLink receives all beacon frames. When clear,
  555. these frames are discarded.
  556. 8 Contention Free - When set, the WiLink receives all contention free frames.
  557. When clear, these frames are discarded.
  558. 7 Control - When set, the WiLink receives all control frames.
  559. When clear, these frames are discarded.
  560. 6 Data - When set, the WiLink receives all data frames.
  561. When clear, these frames are discarded.
  562. 5 FCS Error - When set, the WiLink receives frames that have FCS errors.
  563. When clear, these frames are discarded.
  564. 4 Management - When set, the WiLink receives all management frames.
  565. When clear, these frames are discarded.
  566. 3 Probe Request - When set, the WiLink receives all probe request frames.
  567. When clear, these frames are discarded.
  568. 2 Probe Response - When set, the WiLink receives all probe response frames.
  569. When clear, these frames are discarded.
  570. 1 RTS/CTS/ACK - When set, the WiLink receives all RTS, CTS and ACK frames.
  571. When clear, these frames are discarded.
  572. 0 Rsvd Type/Sub Type - When set, the WiLink receives all frames that
  573. have reserved frame types and sub types as defined by the 802.11
  574. specification.
  575. When clear, these frames are discarded.
  576. */
  577. typedef struct
  578. {
  579. INFO_ELE_HDR
  580. uint32 ConfigOptions; /* The configuration of the receiver in the WiLink. */
  581. /* "RX ConfigOptions Table" describes the format of */
  582. /* this field.*/
  583. uint32 FilterOptions; /* The types of frames that the WiLink can receive. */
  584. /* "RX FilterOptions Table" describes the format of */
  585. /* this field.*/
  586. } ACXRxConfig_t;
  587. /******************************************************************************
  588. Name: ACX_BEACON_FILTER_OPT
  589. Desc: This information element enables the host to activate beacon filtering.
  590. The filter can only be activated when the STA is in PS mode.
  591. When activated, either the host is not notified about beacons whose
  592. unicast TIM bit is not set, or these beacons are buffered first and
  593. the host is notified only after the buffer reaches a predetermined size.
  594. The host should not activate the filter if it configures the firmware
  595. to listen to broadcasts (see the VBM Options field in the
  596. ACXPowerMgmtOptions information element). The filter only affects beacons,
  597. and not other MSDUs - the firmware notifies the host immediately about
  598. their arrival.
  599. Type: Filtering Configuration
  600. Access: Write Only
  601. Length: 2
  602. ******************************************************************************/
  603. typedef struct
  604. {
  605. INFO_ELE_HDR
  606. uint8 enable; /* Indicates whether the filter is enabled. */
  607. /* 1 - enabled, 0 - disabled. */
  608. uint8 maxNumOfBeaconsStored; /* The number of beacons without the unicast TIM */
  609. /* bit set that the firmware buffers before */
  610. /* signaling the host about ready frames. */
  611. /* When set to 0 and the filter is enabled, beacons */
  612. /* without the unicast TIM bit set are dropped.*/
  613. uint8 padding[2]; /* alignment to 32bits boundry */
  614. } ACXBeaconFilterOptions_t;
  615. /******************************************************************************
  616. Name: ACX_BEACON_FILTER_TABLE
  617. Desc: This information element configures beacon filtering handling for the
  618. set of information elements. An information element in a beacon can be
  619. set to be: ignored (never compared, and changes will not cause beacon
  620. transfer), checked (compared, and transferred in case of a change), or
  621. transferred (transferred to the host for each appearance or disappearance).
  622. The table contains all information elements that are subject to monitoring
  623. for host transfer.
  624. All information elements that are not in the table should be ignored for
  625. monitoring.
  626. This functionality is only enabled when beacon filtering is enabled by
  627. ACX_BEACON_FILTER_OPT.
  628. Type: Filtering Configuration
  629. Access: Write Only
  630. Length: 101
  631. Notes: the field measuring the value of received beacons for which the device
  632. wakes up the host in ACX_BEACON_FILTER_OPT does not affect
  633. this information element.
  634. ******************************************************************************/
  635. /*
  636. ACXBeaconFilterEntry (not 221)
  637. Byte Offset Size (Bytes) Definition
  638. =========== ============ ==========
  639. 0 1 IE identifier
  640. 1 1 Treatment bit mask
  641. ACXBeaconFilterEntry (221)
  642. Byte Offset Size (Bytes) Definition
  643. =========== ============ ==========
  644. 0 1 IE identifier
  645. 1 1 Treatment bit mask
  646. 2 3 OUI
  647. 5 1 Type
  648. 6 2 Version
  649. Treatment bit mask - The information element handling:
  650. bit 0 - The information element is compared and transferred
  651. in case of change.
  652. bit 1 - The information element is transferred to the host
  653. with each appearance or disappearance.
  654. Note that both bits can be set at the same time.
  655. */
  656. #define BEACON_FILTER_TABLE_MAX_IE_NUM (32)
  657. #define BEACON_FILTER_TABLE_MAX_VENDOR_SPECIFIC_IE_NUM (6)
  658. #define BEACON_FILTER_TABLE_IE_ENTRY_SIZE (2)
  659. #define BEACON_FILTER_TABLE_EXTRA_VENDOR_SPECIFIC_IE_SIZE (6)
  660. #define BEACON_FILTER_TABLE_MAX_SIZE ((BEACON_FILTER_TABLE_MAX_IE_NUM * BEACON_FILTER_TABLE_IE_ENTRY_SIZE) + \
  661. (BEACON_FILTER_TABLE_MAX_VENDOR_SPECIFIC_IE_NUM * BEACON_FILTER_TABLE_EXTRA_VENDOR_SPECIFIC_IE_SIZE))
  662. typedef struct ACXBeaconFilterIETableStruct {
  663. INFO_ELE_HDR
  664. uint8 NumberOfIEs; /* The number of IE's in the table*/
  665. /* 0 - clears the table.*/
  666. uint8 padding[3]; /* alignment to 32bits boundry */
  667. uint8 IETable[BEACON_FILTER_TABLE_MAX_SIZE];
  668. } ACXBeaconFilterIETable_t;
  669. /******************************************************************************
  670. Name: ACX_ARP_IP_FILTER
  671. Type: Filtering Configuration
  672. Access: Write Only
  673. Length: 20
  674. ******************************************************************************/
  675. typedef struct
  676. {
  677. INFO_ELE_HDR
  678. uint8 ipVersion; /* The IP version of the IP address: 4 - IPv4, 6 - IPv6.*/
  679. uint8 arpFilterEnable; /* 1 - ARP filtering is enabled. */
  680. /* 0 - ARP filtering is disabled.*/
  681. uint8 padding[2]; /* alignment to 32bits boundry */
  682. uint8 address[16]; /* The IP address used to filter ARP packets. ARP packets */
  683. /* that do not match this address are dropped. */
  684. /* When the IP Version is 4, the last 12 bytes of */
  685. /* the address are ignored.*/
  686. } ACXConfigureIP_t;
  687. /******************************************************************************
  688. Name: ACX_IBSS_FILTER
  689. Type: Filtering Configuration
  690. Access: Write Only
  691. Length: 1
  692. ******************************************************************************/
  693. typedef struct
  694. {
  695. INFO_ELE_HDR
  696. uint8 enable; /* if set (i.e. IBSS mode), forward beacons from the same SSID*/
  697. /* (also from different BSSID), with bigger TSF then the this of */
  698. /* the current BSS.*/
  699. uint8 padding[3]; /* alignment to 32bits boundry */
  700. } ACXIBSSFilterOptions_t;
  701. /******************************************************************************
  702. Name: ACX_SERVICE_PERIOD_TIMEOUT
  703. Type: Configuration
  704. Access: Write Only
  705. Length: 1
  706. ******************************************************************************/
  707. typedef struct
  708. {
  709. INFO_ELE_HDR
  710. uint16 PsPollTimeout; /* the maximum time that the device will wait to receive */
  711. /* traffic from the AP after transmission of PS-poll.*/
  712. uint16 UpsdTimeout; /* the maximum time that the device will wait to receive */
  713. /* traffic from the AP after transmission from UPSD enabled*/
  714. /* queue.*/
  715. } ACXRxTimeout_t;
  716. /******************************************************************************
  717. Name: ACX_TX_QUEUE_CFG
  718. Type: Configuration
  719. Access: Write Only
  720. Length: 8
  721. ******************************************************************************/
  722. typedef struct
  723. {
  724. INFO_ELE_HDR
  725. uint8 qID; /* The TX queue ID number.*/
  726. uint8 padding[3]; /* alignment to 32bits boundry */
  727. uint16 numberOfBlockHighThreshold; /* The maximum memory blocks allowed in the */
  728. /* queue.*/
  729. uint16 numberOfBlockLowThreshold; /* The minimum memory blocks that are */
  730. /* guaranteed for this queue.*/
  731. } ACXTxQueueCfg_t;
  732. /******************************************************************************
  733. Name: ACX_BSS_IN_PS
  734. Type: Configuration
  735. Access: Write Only
  736. Length: 1
  737. Note: for AP only (OBSOLETE???)
  738. ******************************************************************************/
  739. typedef enum
  740. {
  741. AP_POWER_ACTIVE_MODE = FALSE,
  742. AP_POWER_SAVE_MODE = TRUE
  743. } APPowerMgmtMode_enum;
  744. #ifdef HOST_COMPILE
  745. typedef uint8 APPowerMgmtMode_e;
  746. #else
  747. typedef APPowerMgmtMode_enum APPowerMgmtMode_e;
  748. #endif
  749. typedef struct
  750. {
  751. INFO_ELE_HDR
  752. APPowerMgmtMode_e BSSinPowerSave;
  753. uint8 padding[3]; /* alignment to 32bits boundry */
  754. } ACXBSSPowerSave_t;
  755. /******************************************************************************
  756. Name: ACX_STATISTICS
  757. Type: Statistics
  758. Access: Write Only
  759. Length:
  760. Note: Debug API
  761. ******************************************************************************/
  762. typedef struct
  763. {
  764. uint32 TxInternalDescOverflow;
  765. } TxStatistics_t;
  766. typedef struct
  767. {
  768. uint32 RxOutOfMem;
  769. uint32 RxHdrOverflow;
  770. uint32 RxHWStuck;
  771. uint32 RxDroppedFrame;
  772. uint32 RxFcsErr;
  773. uint32 RxXfrHintTrig;
  774. uint32 RxPathReset;
  775. uint32 RxResetCounter;
  776. } RxStatistics_t;
  777. typedef struct
  778. {
  779. uint32 RxDMARequested;
  780. uint32 RxDMAErrors;
  781. uint32 TxDMARequested;
  782. uint32 TxDMAErrors;
  783. } DMAStatistics_t;
  784. typedef struct
  785. {
  786. uint32 Cmd_Cmplt; /* Host command complete */
  787. uint32 FIQs; /* fiqisr() */
  788. uint32 RxHeaders; /* (INT_STS_ND & INT_TRIG_RX_HEADER) */
  789. uint32 RxCompletes; /* (INT_STS_ND & INT_TRIG_RX_CMPLT) */
  790. uint32 RxMemOverflow; /* (INT_STS_ND & INT_TRIG_NO_RX_BUF) */
  791. uint32 RxRdys; /* (INT_STS_ND & INT_TRIG_S_RX_RDY) */
  792. uint32 IRQs; /* irqisr() */
  793. uint32 ACXTxProcs; /* (INT_STS_ND & INT_TRIG_TX_PROC) */
  794. uint32 DecryptDone; /* (INT_STS_ND & INT_TRIG_DECRYPT_DONE) */
  795. uint32 DMA0Done; /* (INT_STS_ND & INT_TRIG_DMA0) */
  796. uint32 DMA1Done; /* (INT_STS_ND & INT_TRIG_DMA1) */
  797. uint32 ACXTxExchComplete; /* (INT_STS_ND & INT_TRIG_TX_EXC_CMPLT) */
  798. uint32 ACXCommands; /* (INT_STS_ND & INT_TRIG_COMMAND) */
  799. uint32 ACXRxProcs; /* (INT_STS_ND & INT_TRIG_RX_PROC) */
  800. uint32 HwPMModeChanges; /* (INT_STS_ND & INT_TRIG_PM_802) */
  801. uint32 HostAcknowledges; /* (INT_STS_ND & INT_TRIG_ACKNOWLEDGE) */
  802. uint32 PCI_PM; /* (INT_STS_ND & INT_TRIG_PM_PCI) */
  803. uint32 ACMWakeups; /* (INT_STS_ND & INT_TRIG_ACM_WAKEUP) */
  804. uint32 LowRssi; /* (INT_STS_ND & INT_TRIG_LOW_RSSI) */
  805. } IsrStatistics_t;
  806. typedef struct WepStatistics_t
  807. {
  808. uint32 WepAddrKeyCount; /* Count of WEP address keys configured*/
  809. uint32 WepDefaultKeyCount; /* Count of default keys configured*/
  810. uint32 reserved;
  811. uint32 WepKeyNotFound; /* count of number of times that WEP key not found on lookup*/
  812. uint32 WepDecryptFail; /* count of number of times that WEP key decryption failed*/
  813. uint32 WepPackets; /* WEP Packets Decrypted*/
  814. uint32 WepInterrupt; /* WEP Decrypt Interrupts*/
  815. } WepStatistics_t;
  816. #define PWR_STAT_MAX_CONT_MISSED_BCNS_SPREAD 10
  817. typedef struct PwrStatistics_t
  818. {
  819. uint32 PSEnterCnt; /* Count the amount of enters into power save mode (both PD & ELP)*/
  820. uint32 ELPEnterCnt; /* Count the amount of enters into ELP mode.*/
  821. uint32 MissingBcnsCnt; /* Count the amount of missing beacon interrupts to the host.*/
  822. uint32 WakeOnHostCnt; /* Count the amount of wake on host-access times.*/
  823. uint32 WakeOnTimerExpCnt; /* Count the amount of wake on timer-expire.*/
  824. uint32 TxWithPSCnt; /* Count the number of packets that were transmitted with PS bit set*/
  825. uint32 TxWithoutPSCnt; /* Count the number of packets that were transmitted with PS bit clear*/
  826. uint32 RcvdBeaconsCnt; /* Count the number of received beacons.*/
  827. uint32 PowerSaveOffCnt; /* Count the number of entering into PowerOn (power save off).*/
  828. uint16 EnablePSCnt; /* Count the number of entries into power save mode.*/
  829. uint16 DisablePSCnt; /* Count the number of exits from power save (not including the PS_FAIL route.*/
  830. uint32 FixTsfPSCnt; /* Count the number of times the TSF counter was adjusted because of drift.*/
  831. uint32 ContMissBcnsSpread[PWR_STAT_MAX_CONT_MISSED_BCNS_SPREAD]; /* Gives statistics about the spread continuous missed beacons.*/
  832. /* The 16 LSB are dedicated for the PS mode.*/
  833. /* The 16 MSB are dedicated for the PS mode.*/
  834. /* ContMissBcnsSpread[0] - single missed beacon.*/
  835. /* ContMissBcnsSpread[1] - two continuous missed beacons.*/
  836. /* ContMissBcnsSpread[2] - three continuous missed beacons.*/
  837. /* ...*/
  838. /* ContMissBcnsSpread[9] - ten and more continuous missed beacons.*/
  839. uint32 RcvdAwakeBeaconsCnt; /* Count the number of beacons in awake mode.*/
  840. } PwrStatistics_t;
  841. typedef struct MicStatistics_t
  842. {
  843. uint32 MicRxPkts;
  844. uint32 MicCalcFailure;
  845. } MicStatistics_t;
  846. typedef struct AesStatisticsStruct
  847. {
  848. uint32 AesEncryptFail;
  849. uint32 AesDecryptFail;
  850. uint32 AesEncryptPackets;
  851. uint32 AesDecryptPackets;
  852. uint32 AesEncryptInterrupt;
  853. uint32 AesDecryptInterrupt;
  854. } AesStatistics_t;
  855. typedef struct EventStatistics_t
  856. {
  857. uint32 heartbeat;
  858. uint32 calibration;
  859. uint32 rxMismatch;
  860. uint32 rxMemEmpty;
  861. uint32 rxPool;
  862. uint32 oomLate;
  863. uint32 phyTransmitError;
  864. uint32 txStuck;
  865. } EventStatistics_t;
  866. typedef struct PsPollUpsdStatistics_t
  867. {
  868. uint32 psPollTimeOuts;
  869. uint32 upsdTimeOuts;
  870. uint32 upsdMaxSPTime;
  871. uint32 upsdMaxAPturn;
  872. uint32 psPollMaxAPturn;
  873. uint32 psPollUtilization;
  874. uint32 upsdUtilization;
  875. } PsPollUpsdStatistics_t;
  876. typedef struct
  877. {
  878. uint32 RxPrepBeaconDrop;
  879. uint32 DescrHostIntTrigRxData;
  880. uint32 BeaconBufferThresHostIntTrigRxData;
  881. uint32 MissedBeaconHostIntTrigRxData;
  882. uint32 TxXfrHostIntTrigRxData;
  883. } RxPipeStatistics_t;
  884. typedef struct ACXStatisticsStruct
  885. {
  886. INFO_ELE_HDR
  887. TxStatistics_t tx;
  888. RxStatistics_t rx;
  889. DMAStatistics_t dma;
  890. IsrStatistics_t isr;
  891. WepStatistics_t wep;
  892. PwrStatistics_t pwr;
  893. AesStatistics_t aes;
  894. MicStatistics_t mic;
  895. EventStatistics_t event;
  896. #ifdef FW_RUNNING_AS_STA
  897. PsPollUpsdStatistics_t ps;
  898. RxPipeStatistics_t rxp;
  899. #endif
  900. } ACXStatistics_t;
  901. /******************************************************************************
  902. Name: ACX_ROAMING_STATISTICS_TBL
  903. Desc: This information element reads the current roaming triggers
  904. counters/metrics.
  905. Type: Statistics
  906. Access: Read Only
  907. Length: 6
  908. ******************************************************************************/
  909. typedef struct
  910. {
  911. INFO_ELE_HDR
  912. uint32 MissedBeacons; /* The current number of consecutive lost beacons*/
  913. uint8 snr; /* The current average SNR in db*/
  914. int8 rssi; /* The current average RSSI*/
  915. uint8 padding[2]; /* alignment to 32bits boundry */
  916. }ACXRoamingStatisticsTable_t;
  917. /******************************************************************************
  918. Name: ACX_FEATURE_CFG
  919. Desc: Provides expandability for future features
  920. Type: Configuration
  921. Access: Write Only
  922. Length: 8
  923. ******************************************************************************/
  924. /* bit defines for Option: */
  925. #define FEAT_PCI_CLK_RUN_ENABLE 0x00000002 /* Enable CLK_RUN on PCI bus */
  926. /* bit defines for dataflowOptions: */
  927. #define DF_ENCRYPTION_DISABLE 0x00000001 /* When set, enable encription in FW.*/
  928. /* when clear, disable encription. */
  929. #define DF_SNIFF_MODE_ENABLE 0x00000080 /* When set, enable decryption in FW.*/
  930. /* when clear, disable decription. */
  931. typedef struct
  932. {
  933. INFO_ELE_HDR
  934. uint32 Options; /* Data flow options - refer to above definitions*/
  935. uint32 dataflowOptions; /* Data flow options - refer to above definitions*/
  936. } ACXFeatureConfig_t;
  937. /******************************************************************************
  938. Name: ACX_TID_CFG
  939. Type: Configuration
  940. Access: Write Only
  941. Length: 16
  942. ******************************************************************************/
  943. typedef enum
  944. {
  945. CHANNEL_TYPE_DCF = 0, /* DC/LEGACY*/
  946. CHANNEL_TYPE_EDCF = 1, /* EDCA*/
  947. CHANNEL_TYPE_HCCA = 2, /* HCCA*/
  948. MAX_CHANNEL_TYPE = CHANNEL_TYPE_HCCA
  949. } ChannelType_enum;
  950. typedef enum
  951. {
  952. PS_SCHEME_LEGACY = 0, /* Regular PS: simple sending of packets*/
  953. PS_SCHEME_UPSD_TRIGGER = 1, /* UPSD: sending a packet triggers a UPSD downstream*/
  954. PS_SCHEME_LEGACY_PSPOLL = 2, /* Legacy PSPOLL: a PSPOLL packet will be sent before */
  955. /* every data packet transmission in this queue.*/
  956. PS_SCHEME_SAPSD = 3, /* Scheduled APSD mode.*/
  957. MAX_PS_SCHEME = PS_SCHEME_SAPSD
  958. } PSScheme_enum;
  959. typedef enum
  960. {
  961. ACK_POLICY_LEGACY = 0, /* ACK immediate policy*/
  962. ACK_POLICY_NO_ACK = 1, /* no ACK policy*/
  963. ACK_POLICY_BLOCK = 2, /* block ack policy*/
  964. MAX_ACK_POLICY = ACK_POLICY_BLOCK
  965. } AckPolicy_enum;
  966. #ifdef HOST_COMPILE
  967. typedef uint8 ChannelType_e;
  968. typedef uint8 PSScheme_e;
  969. typedef uint8 AckPolicy_e;
  970. #else
  971. typedef ChannelType_enum ChannelType_e;
  972. typedef PSScheme_enum PSScheme_e;
  973. typedef AckPolicy_enum AckPolicy_e;
  974. #endif
  975. /* rxTimeout values */
  976. #define NO_RX_TIMEOUT 0
  977. typedef struct
  978. {
  979. INFO_ELE_HDR
  980. uint8 queueID; /* The TX queue ID number (0-7).*/
  981. uint8 channelType; /* Channel access type for the queue.*/
  982. /* Refer to ChannelType_enum.*/
  983. uint8 tsid; /* for EDCA - the AC Index (0-3, refer to*/
  984. /* AccessCategory_enum).*/
  985. /* For HCCA - HCCA Traffic Stream ID (TSID) of */
  986. /* the queue (8-15).*/
  987. PSScheme_e psScheme; /* The power save scheme of the specified queue.*/
  988. /* Refer to PSScheme_enum.*/
  989. AckPolicy_e ackPolicy; /* The TX queue ACK policy. */
  990. uint8 padding[3]; /* alignment to 32bits boundry */
  991. uint32 APSDConf[2]; /* Not supported in this version !!!*/
  992. }ACXTIDConfig_t;
  993. /******************************************************************************
  994. Name: ACX_LOW_RSSI
  995. Desc: This information element configures the Low and Regained RSSI interrupt
  996. indicators. Low RSSI calculates the average RSSI by giving higher weight
  997. to the old samples than to the current sample.
  998. The triggering of the Regained RSSI Event cannot be configured and
  999. is always an "Edge" indication.
  1000. The RSSI is reset on JoinBSS - the filter history CurrentRSSI is reset.
  1001. The average RSSI is calculated as follows:
  1002. averageRssi = ((int32)((100-roamingTriggerParameters.lowRssi.rssiFilterWeight) * averageRssi) +
  1003. (int32)(roamingTriggerParameters.lowRssi.rssiFilterWeight * (int8)rxInfo->rxLevel)) / 100;
  1004. Type: Configuration
  1005. Access: Write Only
  1006. Length: 4
  1007. ******************************************************************************/
  1008. typedef enum
  1009. {
  1010. LOW_RSSI_EVENT_LEVEL = 0, /* The event is a "Level" indication which keeps */
  1011. /* triggering as long as the average RSSI is below*/
  1012. /* the threshold.*/
  1013. LOW_RSSI_EVENT_EDGE = 1 /* The event is an "Edge" indication which triggers*/
  1014. /* only when the RSSI threshold is crossed from above.*/
  1015. } LowRSSIEventType_enum;
  1016. #ifdef HOST_COMPILE
  1017. typedef uint8 LowRSSIEventType_e;
  1018. #else
  1019. typedef LowRSSIEventType_enum LowRSSIEventType_e;
  1020. #endif
  1021. typedef struct
  1022. {
  1023. INFO_ELE_HDR
  1024. int8 rssiThreshold; /* The threshold (in dBm) below (or above */
  1025. /* after low rssi indication) which the */
  1026. /* firmware generates an interrupt to the host. */
  1027. /* This parameter is signed.*/
  1028. uint8 rssiFilterWeight; /* The weight of the current RSSI sample, */
  1029. /* before adding the new sample, that is used */
  1030. /* to calculate the average RSSI.*/
  1031. uint8 rssiFilterDepth; /* The number of Beacons/Probe response frames */
  1032. /* that will be received before issuing the */
  1033. /* Low or Regained RSSI event*/
  1034. LowRSSIEventType_e LowRSSIEventType; /* This parameter configures how the Low RSSI */
  1035. /* Event is triggered. */
  1036. /* Refer to LowRSSIEventType_enum.*/
  1037. } ACXLowRSSITriggerParameters_t;
  1038. /******************************************************************************
  1039. Name: ACX_AVERAGE_RSSI
  1040. Type: Configuration
  1041. Access: Read Only
  1042. Length: 8
  1043. Note: Not in use !!!
  1044. ******************************************************************************/
  1045. typedef struct
  1046. {
  1047. INFO_ELE_HDR
  1048. int8 avaregeRSSI; /* in DBM*/
  1049. uint8 padding[3]; /* alignment to 32bits boundry */
  1050. } ACXAvaregeRSSI_t;
  1051. /******************************************************************************
  1052. Name: ACX_NOISE_HIST
  1053. Desc: Noise Histogram activation is done by special command from host which
  1054. is responsible to read the results using this IE.
  1055. Type: Configuration
  1056. Access: Read Only
  1057. Length: 48 (NOISE_HIST_LEN=8)
  1058. ******************************************************************************/
  1059. typedef struct
  1060. {
  1061. INFO_ELE_HDR
  1062. uint32 counters[NOISE_HIST_LEN]; /* This array of eight 32 bit counters describes */
  1063. /* the histogram created by the FW noise */
  1064. /* histogram engine.*/
  1065. uint32 numOfLostCycles; /* This field indicates the number of measurement */
  1066. /* cycles with failure because Tx was active.*/
  1067. uint32 numOfTxHwGenLostCycles; /* This field indicates the number of measurement */
  1068. /* cycles with failure because Tx (FW Generated)*/
  1069. /* was active.*/
  1070. uint32 numOfRxLostCycles; /* This field indicates the number of measurement */
  1071. /* cycles because the Rx CCA was active. */
  1072. } NoiseHistResult_t;
  1073. /******************************************************************************
  1074. Name: ACX_PD_THRESHOLD
  1075. Type: Configuration
  1076. Access: Write Only
  1077. Length: 4
  1078. ******************************************************************************/
  1079. typedef struct
  1080. {
  1081. INFO_ELE_HDR
  1082. uint32 pdThreshold; /* The packet detection threshold in the PHY.*/
  1083. } ACXPacketDetection_t;
  1084. /******************************************************************************
  1085. Name: ACX_DATA_PATH_PARAMS
  1086. Desc: configure Data path and Tx complete parameters
  1087. Type: Configuration
  1088. Access: Write Only
  1089. Length: 12
  1090. ******************************************************************************/
  1091. typedef struct
  1092. {
  1093. INFO_ELE_HDR
  1094. uint16 rxPacketRingChunkSize; /* size in bytes of each buffer in a */
  1095. /* multi-buffers transfer mechanism (size of */
  1096. /* largest possible packet).*/
  1097. uint16 txPacketRingChunkSize; /* size in bytes of each buffer in a */
  1098. /* multi-buffers transfer mechanism (size of */
  1099. /* largest possible packet).*/
  1100. uint8 rxPacketRingChunkNum; /* number of buffers in a multi-buffers */
  1101. /* transfer mechanism (2 for double buffer).*/
  1102. uint8 txPacketRingChunkNum; /* number of buffers in a multi-buffers */
  1103. /* transfer mechanism (2 for double buffer).*/
  1104. uint8 txCompleteThreshold; /* maximum number of packets that can be */
  1105. /* gathered in the TX complete ring before */
  1106. /* interrupt is generated.*/
  1107. uint8 txCompleteRingDepth; /* number of pending (waiting to be read by*/
  1108. /* the Host) TX complete entries in cyclic ring.*/
  1109. uint32 txCompleteTimeOut; /* the maximum time in micro-seconds since a */
  1110. /* packet enters the TX complete ring until */
  1111. /* interrupt is generated.*/
  1112. } ACXDataPathParams_t;
  1113. /******************************************************************************
  1114. Name: ACX_DATA_PATH_RESP_PARAMS
  1115. Desc: Get data path specific parameters.
  1116. Type: Configuration
  1117. Access: Read Only
  1118. Length: 28
  1119. Note: The interrogation of this IE can be done only after the configuration
  1120. of the corresponding Data Path parameters IE.
  1121. ******************************************************************************/
  1122. typedef struct
  1123. {
  1124. INFO_ELE_HDR
  1125. uint16 rxPacketRingChunkSize; /* actual size in bytes of each buffer */
  1126. /* in a multi-buffers transfer mechanism.*/
  1127. uint16 txPacketRingChunkSize; /* actual size in bytes of each buffer */
  1128. /* in a multi-buffers transfer mechanism.*/

Large files files are truncated, but you can click here to view the full file