PageRenderTime 65ms CodeModel.GetById 27ms RepoModel.GetById 0ms app.codeStats 1ms

/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
  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.*/
  1129. uint8 rxPacketRingChunkNum; /* actual number of buffers in a */
  1130. /* multi-buffers transfer mechanism. */
  1131. uint8 txPacketRingChunkNum; /* actual number of buffers in a */
  1132. /* multi-buffers transfer mechanism.*/
  1133. uint8 padding[2]; /* alignment to 32bits boundry */
  1134. uint32 rxPacketRingAddr; /* base address of the the multi-buffer space.*/
  1135. uint32 txPacketRingAddr; /* base address of the the multi-buffer space.*/
  1136. uint32 rxControlAddr; /* address of Rx Control register.*/
  1137. uint32 txControlAddr; /* address of Rx Control register.*/
  1138. uint32 txCompleteAddr; /* base address of Tx Complete ring.*/
  1139. } ACXDataPathParamsResp_t;
  1140. /******************************************************************************
  1141. Name: ACX_RATE_POLICY
  1142. Type: Configuration
  1143. Access: Write Only
  1144. Length: 132
  1145. ******************************************************************************/
  1146. typedef enum
  1147. {
  1148. RATE_CLASS_54M,
  1149. RATE_CLASS_48M,
  1150. RATE_CLASS_36M,
  1151. RATE_CLASS_24M,
  1152. RATE_CLASS_22M,
  1153. RATE_CLASS_18M,
  1154. RATE_CLASS_12M,
  1155. RATE_CLASS_11M,
  1156. RATE_CLASS_9M,
  1157. RATE_CLASS_6M,
  1158. RATE_CLASS_5_5M,
  1159. RATE_CLASS_2M,
  1160. RATE_CLASS_1M,
  1161. RATE_CLASSES_SIZE
  1162. } RatePolicy_enum;
  1163. #define MAX_RATE_POLICIES (8)
  1164. /*
  1165. aflag definition
  1166. bit field description
  1167. ========= ===========
  1168. 7:3 Reserved
  1169. 2 Preamble Type - The type of the preamble to be used by the policy.
  1170. 0 - long preamble,
  1171. 1 - short preamble.
  1172. 1 Preamble Override - Indicates if the preamble type should be used in TX.
  1173. 0 Truncate - If set, then attempts to send a frame stop when the total
  1174. valid per-rate attempts have been exhausted;
  1175. otherwise transmissions will continue at the lowest available rate
  1176. until the appropriate one of the Short Retry Limit, Long Retry Limit,
  1177. dot11MaxTransmitMsduLifetime, or MAX TX Life Time (in ACXTIDConfig),
  1178. if supported and supplied, is exhausted.
  1179. */
  1180. /* definition of single rate policy*/
  1181. typedef struct
  1182. {
  1183. uint8 rateClass[RATE_CLASSES_SIZE]; /* The number of attempts for TX */
  1184. /* for each rate class. */
  1185. /* RatePolicy_enum describes the */
  1186. /* indices for the table.*/
  1187. uint8 shortRetryLimit; /* The dot11ShortRetryLimit used */
  1188. /* for Tx retries.*/
  1189. uint8 longRetryLimit; /* The dot11LongRetryLimit used */
  1190. /* for Tx retries. */
  1191. uint8 aflags; /* Flags controlling attributes */
  1192. /* of the transmission. */
  1193. /* see above description for the */
  1194. /* structure of this field.*/
  1195. }txAttrClass_t;
  1196. typedef struct
  1197. {
  1198. INFO_ELE_HDR
  1199. uint32 numOfClasses; /* The number of transmission rate */
  1200. /* fallback policy classes.*/
  1201. txAttrClass_t rateClasses[MAX_RATE_POLICIES]; /* Rate Policies table*/
  1202. }ACXTxAttrClasses_t;
  1203. /******************************************************************************
  1204. Name: ACX_FW_GEN_FRAME_RATES
  1205. Desc: FW generated (template) frames rates and modulation.
  1206. Type: Configuration
  1207. Access: Write Only
  1208. Length: 4
  1209. ******************************************************************************/
  1210. /*
  1211. Values for the Frame rate configuration
  1212. Value Transmit Rate
  1213. ===== =============
  1214. 0x0A 1 Mbps
  1215. 0x14 2 Mbps
  1216. 0x37 5.5 Mbps
  1217. 0x6E 11 Mbps (CCK)
  1218. 0xDC 22 Mbps
  1219. 0x0B 6 Mbps
  1220. 0x0F 9 Mbps
  1221. 0x0A 12 Mbps
  1222. 0x0E 18 Mbps
  1223. 0x09 24 Mbps
  1224. 0x0D 36 Mbps
  1225. 0x08 48 Mbps
  1226. 0x0C 54 Mbps
  1227. */
  1228. /*
  1229. Values for the modulation configuration
  1230. Value Modulation
  1231. ===== ==========
  1232. 0 CCK_LONG
  1233. 1 CCK_SHORT
  1234. 128 PBCC_LONG
  1235. 129 PBCC_SHORT
  1236. 64 OFDM
  1237. */
  1238. typedef struct
  1239. {
  1240. INFO_ELE_HDR
  1241. uint8 txCtrlFrmRate; /* This field indicates the rate at which the WiLink */
  1242. /* transmits RTS, CTS, PS Poll and QoS-Null frames. */
  1243. /* Valid values are listed in the above table.*/
  1244. uint8 txCtrlFrmMod; /* Modultion type for the above template frame. */
  1245. /* Valid values are listed in the above table.*/
  1246. uint8 txMgmtFrmRate; /* This field indicates the rate at which the WiLink */
  1247. /* transmits beacon, probe response frames. */
  1248. /* If the host is configuring the WiLink as an AP or Ad Hoc */
  1249. /* STA, you must configure the beacon template before the */
  1250. /* START/JOIN command is issued. */
  1251. /* Valid values are listed in the above table.*/
  1252. uint8 txMgmtFrmMod; /* Modultion type for the above template frame.*/
  1253. /* Valid values are listed in the above table.*/
  1254. }ACXFwGeneratedFrameRates_t;
  1255. /******************************************************************************
  1256. Name: ACX_CTS_PROTECTION
  1257. Type: Configuration
  1258. Access: Write Only
  1259. Length: 1
  1260. ******************************************************************************/
  1261. typedef struct
  1262. {
  1263. INFO_ELE_HDR
  1264. uint8 ctsProtectMode; /* This field is a flag enabling or disabling the*/
  1265. /* CTS-to-self protection mechanism:*/
  1266. /* 0 - disable, 1 - enable*/
  1267. uint8 padding[3]; /* alignment to 32bits boundry */
  1268. }ACXCtsProtection_t;
  1269. /******************************************************************************
  1270. Name: ACX_SLEEP_AUTH
  1271. Desc: configuration of sleep authorization level
  1272. Type: System Configuration
  1273. Access: Write Only
  1274. Length: 1
  1275. ******************************************************************************/
  1276. typedef struct
  1277. {
  1278. INFO_ELE_HDR
  1279. uint8 sleepAuth; /* The sleep level authorization of the device. */
  1280. /* 0 - Always active*/
  1281. /* 1 - Power down mode: light / fast sleep*/
  1282. /* 2 - ELP mode: Deep / Max sleep*/
  1283. uint8 padding[3]; /* alignment to 32bits boundry */
  1284. }ACXSleepAuth_t;
  1285. /******************************************************************************
  1286. Name: ACX_PREAMBLE_TYPE
  1287. Type: Configuration
  1288. Access: Write Only
  1289. Length: 1
  1290. ******************************************************************************/
  1291. typedef enum
  1292. {
  1293. ACX_PREAMBLE_LONG = 0,
  1294. ACX_PREAMBLE_SHORT = 1,
  1295. ACX_DEFAULT_PREAMBLE = ACX_PREAMBLE_LONG
  1296. } Preamble_enum;
  1297. #ifdef HOST_COMPILE
  1298. typedef uint8 Preamble_e;
  1299. #else
  1300. typedef Preamble_enum Preamble_e;
  1301. #endif
  1302. typedef struct
  1303. {
  1304. INFO_ELE_HDR
  1305. Preamble_e preamble; /* When set, the WiLink transmits beacon, probe response, */
  1306. /* RTS and PS Poll frames with a short preamble. */
  1307. /* When clear, the WiLink transmits the frame with a long */
  1308. /* preamble.*/
  1309. uint8 padding[3]; /* alignment to 32bits boundry */
  1310. } ACXPreamble_t;
  1311. /******************************************************************************
  1312. Name: ACX_CCA_THRESHOLD
  1313. Type: Configuration
  1314. Access: Write Only
  1315. Length: 2
  1316. ******************************************************************************/
  1317. typedef struct
  1318. {
  1319. INFO_ELE_HDR
  1320. uint16 rxCCAThreshold; /* The Rx Clear Channel Assessment threshold in the PHY*/
  1321. /* (the energy threshold).*/
  1322. Bool_e txEnergyDetection;
  1323. uint8 padding;
  1324. } ACXEnergyDetection_t;
  1325. /******************************************************************************
  1326. Name: ACX_EVENT_MBOX_MASK
  1327. Type: Operation
  1328. Access: Write Only
  1329. Length: 8
  1330. ******************************************************************************/
  1331. typedef struct
  1332. {
  1333. INFO_ELE_HDR
  1334. uint32 lowEventMask; /* Indicates which events are masked and which are not*/
  1335. /* Refer to EventMBoxId_enum in public_event_mbox.h.*/
  1336. uint32 highEventMask; /* Not in use (should always be set to 0xFFFFFFFF).*/
  1337. } ACXEventMboxMask_t;
  1338. /******************************************************************************
  1339. Name: ACX_WR_TBTT_AND_DTIM
  1340. Type: Configuration
  1341. Access: Write Only
  1342. Length: 3
  1343. Note: STA Only
  1344. ******************************************************************************/
  1345. #ifdef FW_RUNNING_AS_STA
  1346. typedef struct
  1347. {
  1348. INFO_ELE_HDR
  1349. uint16 tbtt; /* Time in TUs between two consecutive Beacons*/
  1350. uint8 dtimInterval; /* DTIM interval: */
  1351. /* For BSS: Number of TBTTs in a DTIM period (range: 1-10).*/
  1352. /* For IBSS: value shall be set to 1.*/
  1353. uint8 padding; /* alignment to 32bits boundry */
  1354. } ACXDtimPeriodCfg_t;
  1355. #endif
  1356. /******************************************************************************
  1357. Name: ACX_DTIM_PERIOD
  1358. Type: Configuration
  1359. Access: Write Only
  1360. Length: 2
  1361. Note: for AP only !!!
  1362. ******************************************************************************/
  1363. #ifdef FW_RUNNING_AS_AP
  1364. typedef struct
  1365. {
  1366. uint16 dtimPeriod;
  1367. uint8 padding[2]; /* alignment to 32bits boundry */
  1368. } ACXDtimPeriodCfg_t;
  1369. #endif
  1370. /******************************************************************************
  1371. Name: ACX_ACI_OPTION_CFG
  1372. Type: Configuration
  1373. Access: Write Only
  1374. Length: 6
  1375. Note: OBSOLETE !!! (for 1251)
  1376. ******************************************************************************/
  1377. typedef struct
  1378. {
  1379. INFO_ELE_HDR
  1380. uint8 ACIMode;
  1381. uint8 inputCCA;
  1382. uint8 txCCA;
  1383. uint8 qualifiedCCA;
  1384. uint8 stompForRx;
  1385. uint8 stompForTx;
  1386. uint8 padding[2]; /* alignment to 32bits boundry */
  1387. } ACXConfigACI_t;
  1388. /******************************************************************************
  1389. Name: ACX_PM_CFG
  1390. Desc: Configure the power managment option.
  1391. Type: Configuration
  1392. Access: Write Only
  1393. Length: 16
  1394. Note: ??? (To Be Documented)
  1395. ******************************************************************************/
  1396. typedef struct
  1397. {
  1398. INFO_ELE_HDR
  1399. Bool32 ELPEnable;
  1400. Bool32 WakeOnGPIOenable;
  1401. uint32 BBWakeUpTime;
  1402. uint32 PLLlockTime;
  1403. } ACXConfigPM_t;
  1404. /******************************************************************************
  1405. Name: ACX_CONN_MONIT_PARAMS
  1406. Desc: This information element configures the SYNCHRONIZATION_TIMEOUT
  1407. interrupt indicator. It configures the number of missed Beacons
  1408. before issuing the SYNCHRONIZATION_TIMEOUT event.
  1409. Type: Configuration
  1410. Access: Write Only
  1411. Length: 8
  1412. ******************************************************************************/
  1413. typedef struct
  1414. {
  1415. INFO_ELE_HDR
  1416. uint32 TSFMissedThreshold; /* The number of consecutive beacons that can be */
  1417. /* lost before the WiLink raises the */
  1418. /* SYNCHRONIZATION_TIMEOUT event.*/
  1419. uint32 BSSLossTimeout; /* The delay (in time units) between the time at */
  1420. /* which the device issues the SYNCHRONIZATION_TIMEOUT*/
  1421. /* event until, if no probe response or beacon is */
  1422. /* received a BSS_LOSS event is issued.*/
  1423. } AcxConnectionMonitorOptions;
  1424. /******************************************************************************
  1425. Name: ACX_CONS_TX_FAILURE
  1426. Desc: This information element configures the number of frames transmission
  1427. failures before issuing the "Max Tx Retry" event. The counter is
  1428. incremented only for unicast frames or frames that require Ack
  1429. Type: Configuration
  1430. Access: Write Only
  1431. Length: 1
  1432. ******************************************************************************/
  1433. typedef struct
  1434. {
  1435. INFO_ELE_HDR
  1436. uint8 maxTxRetry; /* the number of frames transmission failures before */
  1437. /* issuing the "Max Tx Retry" event*/
  1438. uint8 padding[3]; /* alignment to 32bits boundry */
  1439. } ACXConsTxFailureTriggerParameters_t;
  1440. /******************************************************************************
  1441. Name: ACX_LOW_SNR
  1442. Desc: This information element configures the Low/Regained SNR interrupt
  1443. indicator.
  1444. Type: Configuration
  1445. Access: Write Only
  1446. Length: 4
  1447. Note: To Be Documented
  1448. ******************************************************************************/
  1449. typedef enum
  1450. {
  1451. LOW_SNR_EVENT_LEVEL = 0,
  1452. LOW_SNR_EVENT_EDGE = 1
  1453. } LowSNREventType_enum;
  1454. #ifdef HOST_COMPILE
  1455. typedef uint8 LowSNREventType_e;
  1456. #else
  1457. typedef LowSNREventType_enum LowSNREventType_e;
  1458. #endif
  1459. typedef struct
  1460. {
  1461. INFO_ELE_HDR
  1462. uint8 SNRThreshold;
  1463. uint8 SNRFilterWeight;
  1464. uint8 SNRFilterDepth;
  1465. LowSNREventType_e LowSNREventType;
  1466. } ACXLowSNRTriggerParameters_t;
  1467. /******************************************************************************
  1468. Name: ACX_BCN_DTIM_OPTIONS
  1469. Type: Configuration
  1470. Access: Write Only
  1471. Length: 5
  1472. ******************************************************************************/
  1473. typedef struct
  1474. {
  1475. INFO_ELE_HDR
  1476. uint16 beaconRxTimeOut;
  1477. uint16 broadcastTimeOut;
  1478. uint8 rxBroadcastInPS; /* if set, enables receive of broadcast packets */
  1479. /* in Power-Save mode.*/
  1480. uint8 consecutivePsPollDeliveryFailureThr; /* Consecutive PS Poll Fail before updating the Driver */
  1481. uint8 padding[2]; /* alignment to 32bits boundry */
  1482. } ACXBeaconAndBroadcastOptions_t;
  1483. /******************************************************************************
  1484. Name: ACX_SG_ENABLE
  1485. Desc: This command instructs the WiLink to set the Soft Gemini (BT co-existence)
  1486. state to either enable/disable or sense mode.
  1487. Type: Configuration
  1488. Access: Write Only
  1489. Length: 1
  1490. ******************************************************************************/
  1491. typedef struct
  1492. {
  1493. INFO_ELE_HDR
  1494. uint8 Enable; /* specifies whether the SG feature will be enabled (0), */
  1495. /* disabled(1), in a "sense not active" (3) mode in which */
  1496. /* upon seeing BT activity a host interrupt will be sent or*/
  1497. /* in a "sense active" (4) mode which specifies the device */
  1498. /* should switch on the SG in response to the driver receiving */
  1499. /* the host interrupt. */
  1500. uint8 padding[3]; /* alignment to 32bits boundry */
  1501. } ACXBluetoothWlanCoEnableStruct;
  1502. /******************************************************************************
  1503. Name: ACX_ANTENNA_DIVERSITY_CFG
  1504. Desc: Set antenna diversity parameters
  1505. Type: Configuration
  1506. Access: Write Only
  1507. Length: 7
  1508. Note: ??? (To Be Documented)
  1509. ******************************************************************************/
  1510. /* Antenna Diversity Tx definitions*/
  1511. typedef enum
  1512. {
  1513. DIVS_TX_START_ANT1 = 0, /* Start TX antenna 1.*/
  1514. DIVS_TX_START_ANT2 = 1, /* Start TX antenna 2.*/
  1515. DIVS_TX_START_SWITCH = 2 /* Switch starting Tx Antenna. */
  1516. } TxAntDivsStartOption_enum;
  1517. /* Antenna Diversity Rx definitions*/
  1518. typedef enum
  1519. {
  1520. DIVS_RX_START_ANT1 = 0, /* Start RX antenna 1.*/
  1521. DIVS_RX_START_ANT2 = 1, /* Start RX antenna 2.*/
  1522. DIVS_RX_START_LAST_RX = 2, /* Start RX Last RX Antenna mode.*/
  1523. DIVS_RX_START_SWITCH = 3 /* Switch starting Rx Antenna. */
  1524. } RxAntDivsStartOption_enum;
  1525. #ifdef HOST_COMPILE
  1526. typedef uint8 RxAntDivsStartOption_e;
  1527. typedef uint8 TxAntDivsStartOption_e;
  1528. #else
  1529. typedef RxAntDivsStartOption_enum RxAntDivsStartOption_e;
  1530. typedef TxAntDivsStartOption_enum TxAntDivsStartOption_e;
  1531. #endif
  1532. typedef struct
  1533. {
  1534. INFO_ELE_HDR
  1535. uint8 enableRxDiversity;
  1536. RxAntDivsStartOption_e rxSelectedAntenna;
  1537. uint8 enableTxDiversity;
  1538. TxAntDivsStartOption_e txSelectedAntenna;
  1539. uint8 rxAntNum;
  1540. uint8 txAntNum;
  1541. uint8 rxTxSharedAnts;
  1542. uint8 padding; /* alignment to 32bits boundry */
  1543. } AcxSetAntennaDiversityOptions_t;
  1544. /******************************************************************************
  1545. Name: ACX_SG_CFG
  1546. Desc: This command instructs the WiLink to set the Soft Gemini (BT co-existence)
  1547. parameters to the desired values.
  1548. Type: Configuration
  1549. Access: Write Only
  1550. Length: 1
  1551. ******************************************************************************/
  1552. typedef struct
  1553. {
  1554. INFO_ELE_HDR
  1555. RateIndex_e wlanRxMinConvertedRateToRespectBtHp; /* Range: 802.11 b,g Rates*/
  1556. /* The minimum rate of a received WLAN packet in the STA, */
  1557. /* during protective mode, of which a new BT-HP request */
  1558. /* during this Rx will always be respected and gain the antenna*/
  1559. uint16 btHpMaxTime; /* the maximum length of time the BT HP */
  1560. /* will be respected (Limitation on BT */
  1561. /* HP time, afterwards will switch to LP).*/
  1562. uint16 wlanHpMaxTime; /* the maximum length of time the WLAN HP*/
  1563. /* will be respected (Limitation on WLAN */
  1564. /* HP time, afterwards will switch to LP).*/
  1565. uint16 senseDisableTimer; /* The time after the last BT activity */
  1566. /* when the sense mode will return the */
  1567. /* SG state to "SENSE_INACTIVE"*/
  1568. uint16 protectiveRxTimeBeforeBtHp; /* The time before the next BT HP */
  1569. /* instance in which to send the fast */
  1570. /* CTS.*/
  1571. uint16 protectiveTxTimeBeforeBtHp; /* The time before the next BT HP */
  1572. /* instance in which to suspend the */
  1573. /* WLAN TX*/
  1574. uint16 protectiveRxTimeBeforeBtHpFastAp; /* range: 10-20000 default: 1500*/
  1575. uint16 protectiveTxTimeBeforeBtHpFastAp; /* range: 10-20000 default: 3000*/
  1576. uint16 protectiveWlanCycleTimeForFastAp; /* range: 2000-65535 default: 8700*/
  1577. uint16 btAntiStarvationPeriod; /* range: 0 - 15000 (Msec) default: 1000 */
  1578. uint16 timeoutNextBtLpPacket; /* range 400-10000(Usec) default: 3000 */
  1579. uint16 wakeUpTimeBeforeBeacon; /* The default value is worse case of */
  1580. /* BT DH5 traffic */
  1581. uint16 hpdmMaxGuardTime; /* range: 0-50000(Usec) default: 1050*/
  1582. uint16 timeoutNextWlanPacket; /* Range: 100-50000(Usec) default:2550*/
  1583. /* This timeout purpose is to prevent both BT & WLAN */
  1584. /* antenna starvation. */
  1585. uint8 sgAntennaType; /* "0" - shared antenna ; */
  1586. /* "1" - dual antenna.*/
  1587. uint8 signalingType; /* "0" - TI legacy signaling ; */
  1588. /* "1" - Palau signaling */
  1589. uint8 afhLeverageOn; /* How to receive information regarding */
  1590. /* the AFH status of the BT. */
  1591. /* "0" - no AFH;*/
  1592. /* "1" - from dedicated GPIO.*/
  1593. /* "2" - AFH on (from host).*/
  1594. uint8 numberQuietCycle; /* the number of cycles during which no*/
  1595. /* TX will be sent after 1 cycle of RX */
  1596. /* transaction in protective mode*/
  1597. uint8 maxNumCts; /* The maximum number of CTSs that will*/
  1598. /* be sent for receiving RX packet in */
  1599. /* protective mode*/
  1600. uint8 numberOfWlanPackets; /* The number of WLAN packets */
  1601. /* transferred in common mode before */
  1602. /* switching to the BT.*/
  1603. uint8 numberOfBtPackets; /* The number of BT packets transferred*/
  1604. /* in common mode before switching to */
  1605. /* the WLAN.*/
  1606. uint8 numberOfMissedRxForAvalancheTrigger; /* range: 1-255 default: 5*/
  1607. uint8 wlanElpHpSupport; /* range: 0-1 default: 1*/
  1608. uint8 btAntiStarvationNumberOfCyclesWithinThePeriod; /* range: 0 - 15 default: 4 */
  1609. uint8 ackModeDuringBtLpInDualAnt; /* 0 or 1 */
  1610. Bool_e allowPaSdToggleDuringBtActivityEnable; /* Allow PA_SD assertion/de-assertion */
  1611. /* during enabled BT activity */
  1612. Bool_e sgAutoModeNoCts; /* Enable/Disable SG2.0 in auto mode: */
  1613. /* Support Both Active & P.S modes */
  1614. uint8 numOfBtHpRespectedReq; /*range: 0 - 20 default: 1*/
  1615. } ACXBluetoothWlanCoParamsStruct;
  1616. /******************************************************************************
  1617. Name: ACX_TSF_INFO
  1618. Type: Operation
  1619. Access: Read Only
  1620. Length: 20
  1621. ******************************************************************************/
  1622. typedef struct ACX_fwTSFInformation
  1623. {
  1624. INFO_ELE_HDR
  1625. uint32 CurrentTSFHigh;
  1626. uint32 CurrentTSFLow;
  1627. uint32 lastTBTTHigh;
  1628. uint32 lastTBTTLow;
  1629. uint8 LastDTIMCount;
  1630. uint8 padding[3]; /* alignment to 32bits boundry */
  1631. }ACX_fwTSFInformation_t;
  1632. /******************************************************************************
  1633. Name: ACX_GPIO_CFG
  1634. Type: Board Configuration
  1635. Access: Write Only
  1636. Length: 2
  1637. Note: Not in use !!!
  1638. ******************************************************************************/
  1639. #ifndef _WINDOWS
  1640. #define GPIO_DIR_OUTPUT 0
  1641. #define GPIO_DIR_INPUT 1
  1642. #endif /* ifndef _WINDOWS */
  1643. typedef struct
  1644. {
  1645. INFO_ELE_HDR
  1646. uint8 number;
  1647. uint8 direction;
  1648. uint8 padding[2]; /* alignment to 32bits boundry */
  1649. } ACXConfigGPIO_t;
  1650. /******************************************************************************
  1651. Name: ACX_GPIO_SET
  1652. Type: Board Configuration
  1653. Access: Write Only
  1654. Length: 2
  1655. Note: Not in use !!!
  1656. ******************************************************************************/
  1657. typedef struct
  1658. {
  1659. INFO_ELE_HDR
  1660. uint8 number;
  1661. uint8 value;
  1662. uint8 padding[2]; /* alignment to 32bits boundry */
  1663. } ACXSetGPIO_t;
  1664. /******************************************************************************
  1665. Name: ACX_MISC_CFG
  1666. Type: Board Configuration
  1667. Access: Read/Write
  1668. Length: 8
  1669. Note: GPIO_OUT bits to be used for LEDs are defined in the
  1670. NVS Miscellaneous table. An API to NVS is used by the
  1671. LED-Init routine to fill this table with the LED bit values.
  1672. Not in use !!!
  1673. ******************************************************************************/
  1674. typedef struct
  1675. {
  1676. INFO_ELE_HDR
  1677. uint16 txActivityLed; /* GPIO_OUT bit for this LED*/
  1678. uint16 fwInitLed; /* GPIO_OUT bit for this LED*/
  1679. uint16 diagnosticLed; /* GPIO_OUT bit for this LED*/
  1680. uint16 faaRadioOffGpio; /* GPIO_OUT bit for the FAA Radio Off feature*/
  1681. } ACXMisc_t;
  1682. /******************************************************************************
  1683. Name: ACX_BET_ENABLE
  1684. Desc: Enable or Disable the Beacon Early Termination module. In addition initialized the
  1685. Max Dropped beacons parameter
  1686. Type: Configuration
  1687. Access: Write
  1688. Length: 6
  1689. Note:
  1690. ******************************************************************************/
  1691. typedef struct
  1692. {
  1693. INFO_ELE_HDR
  1694. uint8 Enable; /* specifies if beacon early termination procedure is enabled or disabled: 0 – disabled, 1 – enabled */
  1695. uint8 MaximumConsecutiveET; /* specifies the maximum number of consecutive beacons that may be early terminated. After this number is reached
  1696. at least one full beacon must be correctly received in FW before beacon ET resumes. Legal range: 0 – 255 */
  1697. uint8 padding[2];
  1698. }ACXBet_Enable_t;
  1699. /******************************************************************************
  1700. Name: DOT11_STATION_ID
  1701. Desc: This information element specifies the MAC Address assigned to the STA.
  1702. This default value is the permanent MAC address that is stored in the
  1703. adaptor's non volatile memory. The host can change the MAC address;
  1704. however, the WiLink always reverts to the default value after power up
  1705. or reset.
  1706. Type: Configuration
  1707. Access: Read / Write
  1708. Length: 6
  1709. Note: The byte order of the MAC address must be reversed in this field.
  1710. For example, if the MAC address is 00 7E 99 11 22 33, this field must
  1711. read 33 22 11 99 7E 00.
  1712. ******************************************************************************/
  1713. typedef struct
  1714. {
  1715. INFO_ELE_HDR
  1716. uint8 dot11StationID[6]; /* The MAC address for the STA.*/
  1717. uint8 padding[2]; /* alignment to 32bits boundry */
  1718. } dot11StationIDStruct;
  1719. /******************************************************************************
  1720. Name: DOT11_RX_MSDU_LIFE_TIME
  1721. Type: Operation
  1722. Access: Write Only
  1723. Length: 4
  1724. ******************************************************************************/
  1725. typedef struct
  1726. {
  1727. INFO_ELE_HDR
  1728. uint32 RxMsduLifeTime; /* The maximum amount of time, in TU, that the WiLink */
  1729. /* should attempt to collect fragments of an MSDU before */
  1730. /* discarding them. */
  1731. /* The default value for this field is 512.*/
  1732. } dot11RxMsduLifeTime_t;
  1733. /******************************************************************************
  1734. Name: DOT11_CUR_TX_PWR
  1735. Desc: This IE indicates the maximum TxPower in Dbm/10 currently being used to transmit data.
  1736. Type: Operation
  1737. Access: Write Only
  1738. Length: 1
  1739. ******************************************************************************/
  1740. typedef struct
  1741. {
  1742. INFO_ELE_HDR
  1743. uint8 dot11CurrentTxPower; /* the max Power in Dbm/10 to be used to transmit data.*/
  1744. uint8 padding[3]; /* alignment to 32bits boundry */
  1745. } dot11CurrentTxPowerStruct ;
  1746. /******************************************************************************
  1747. Name: DOT11_DEFAULT_KEY
  1748. Desc: This information element indicates the default key to use to encrypt
  1749. transmit frames.
  1750. Type: Configuration
  1751. Access: Write Only
  1752. Length: 1
  1753. ******************************************************************************/
  1754. typedef enum
  1755. {
  1756. DEFAULT_KEY_0 = 0,
  1757. DEFAULT_KEY_1,
  1758. DEFAULT_KEY_2,
  1759. DEFAULT_KEY_3,
  1760. MAX_NUM_WEP_DEFAULT_KEY
  1761. } DefaultKey_enum;
  1762. #ifdef HOST_COMPILE
  1763. typedef uint8 DefaultKey_e;
  1764. #else
  1765. typedef DefaultKey_enum DefaultKey_e;
  1766. #endif
  1767. typedef struct
  1768. {
  1769. INFO_ELE_HDR
  1770. DefaultKey_e DefaultKeyId; /* refer to DefaultKey_enum*/
  1771. uint8 padding[3]; /* alignment to 32bits boundry */
  1772. } dot11WEPDefaultKeyId_t;
  1773. /******************************************************************************
  1774. Name: DOT11_RX_DOT11_MODE
  1775. Desc: This IE indicates the current Rx Mode used by DSSS PHY.
  1776. Type: Configuration
  1777. Access: Write Only
  1778. Length: 4
  1779. ******************************************************************************/
  1780. /*
  1781. Possible values for Rx DOT11 Mode are the following:
  1782. Value Description
  1783. ===== ===========
  1784. 3 11g - processing of both a and b packet formats is enabled
  1785. 2 11b - processing of b packet format is enabled
  1786. 1 11a - processing of a packet format is enabled
  1787. 0 undefined
  1788. */
  1789. typedef struct
  1790. {
  1791. INFO_ELE_HDR
  1792. uint32 dot11RxDot11Mode; /* refer to above table*/
  1793. } dot11RxDot11ModeStruct;
  1794. /******************************************************************************
  1795. Name: DOT11_RTS_THRESHOLD
  1796. Type: Configuration
  1797. Access: Write Only
  1798. Length: 2
  1799. ******************************************************************************/
  1800. typedef struct
  1801. {
  1802. INFO_ELE_HDR
  1803. uint16 RTSThreshold; /* The number of octets in an MPDU, below which an */
  1804. /* RTS/CTS handshake is not performed.*/
  1805. uint8 padding[2]; /* alignment to 32bits boundry */
  1806. }dot11RTSThreshold_t;
  1807. /******************************************************************************
  1808. Name: DOT11_GROUP_ADDRESS_TBL
  1809. Desc: The variable lengths of MAC addresses that are define as listening for
  1810. multicast. The field Number of groups identifies how many MAC Addresses
  1811. are relevant in that information element.
  1812. Type: Configuration
  1813. Access: Write Only
  1814. Length: up to 50 bytes
  1815. ******************************************************************************/
  1816. #define ADDRESS_GROUP_MAX (8)
  1817. #define ADDRESS_GROUP_MAX_LEN (6 * ADDRESS_GROUP_MAX)
  1818. typedef struct
  1819. {
  1820. INFO_ELE_HDR
  1821. uint8 fltrState; /* 1 - multicast filtering is enabled. */
  1822. /* 0 - multicast filtering is disabled.*/
  1823. uint8 numOfGroups; /* number of relevant multicast */
  1824. /* addresses.*/
  1825. uint8 padding[2]; /* alignment to 32bits boundary */
  1826. uint8 dataLocation[ADDRESS_GROUP_MAX_LEN]; /* table of MAC addresses.*/
  1827. }dot11MulticastGroupAddrStart_t;
  1828. /******************************************************************************
  1829. ACX_CONFIG_PS_WMM (Patch for Wi-Fi Bug)
  1830. ******************************************************************************/
  1831. typedef struct
  1832. {
  1833. INFO_ELE_HDR
  1834. Bool32 ConfigPsOnWmmMode; /* TRUE - Configure PS to work on WMM mode - do not send the NULL/PS_POLL
  1835. packets even if TIM is set.
  1836. FALSE - Configure PS to work on Non-WMM mode - work according to the
  1837. standard. */
  1838. } IEConfigPsWmm_t;
  1839. /******************************************************************************
  1840. ACX_SET_RX_DATA_FILTER
  1841. ******************************************************************************/
  1842. /* data filter action */
  1843. #ifdef HOST_COMPILE
  1844. #define FILTER_DROP 0
  1845. #define FILTER_SIGNAL 1
  1846. #define FILTER_FW_HANDLE 2
  1847. #else
  1848. typedef enum {
  1849. FILTER_DROP = 0,
  1850. FILTER_SIGNAL ,
  1851. FILTER_FW_HANDLE,
  1852. FILTER_MAX = 0xFF
  1853. }filter_enum;
  1854. #endif
  1855. #ifdef HOST_COMPILE
  1856. typedef uint8 filter_e;
  1857. #else
  1858. typedef filter_enum filter_e;
  1859. #endif
  1860. /* data filter command */
  1861. #define REMOVE_FILTER 0
  1862. #define ADD_FILTER 1
  1863. /* limitation */
  1864. #define MAX_DATA_FILTERS 4
  1865. #define MAX_DATA_FILTER_SIZE 90
  1866. typedef struct
  1867. {
  1868. INFO_ELE_HDR
  1869. uint8 command; // 0-remove, 1-add
  1870. uint8 index;
  1871. filter_e action;
  1872. uint8 numOfFields;
  1873. uint8 FPTable; //filter fields starts here. unknown size.
  1874. } DataFilterConfig_t;
  1875. /******************************************************************************
  1876. ACX_ENABLE_RX_DATA_FILTER
  1877. ******************************************************************************/
  1878. typedef struct
  1879. {
  1880. INFO_ELE_HDR
  1881. uint8 enable;
  1882. filter_e action;
  1883. } DataFilterDefault_t;
  1884. /******************************************************************************
  1885. ACX_GET_DATA_FILTER_STATISTICS
  1886. ******************************************************************************/
  1887. typedef struct
  1888. {
  1889. INFO_ELE_HDR
  1890. uint32 unmatchedPacketsCount;
  1891. uint32 matchedPacketsCount[MAX_DATA_FILTERS];
  1892. } ACXDataFilteringStatistics_t;
  1893. /******************************************************************************
  1894. Name: ACX_POWER_LEVEL_TABLE
  1895. Desc: Retrieve Maximum Dbm per power level and sub-band.
  1896. Type: Configuration
  1897. Access: Read Only
  1898. Length: 20
  1899. ******************************************************************************/
  1900. typedef struct
  1901. {
  1902. INFO_ELE_HDR
  1903. uint8 txPowerTable[NUM_OF_SUB_BANDS][NUM_OF_POWER_LEVEL]; /* Maximun Dbm in Dbm/10 units */
  1904. } PowerLevelTable_t;
  1905. /******************************************************************************
  1906. Name: ACX_PWR_CONSUMPTION_STATISTICS
  1907. Desc: Retrieve time statistics of the different power states.
  1908. Type: Configuration
  1909. Access: Read Only
  1910. Length: 20
  1911. ******************************************************************************/
  1912. typedef struct
  1913. {
  1914. INFO_ELE_HDR
  1915. uint32 activeTimeCnt_Low;
  1916. uint32 activeTimeCnt_Hi;
  1917. uint32 powerDownTimeCnt_Low;
  1918. uint32 powerDownTimeCnt_Hi;
  1919. uint32 elpTimeCnt_Low;
  1920. uint32 elpTimeCnt_Hi;
  1921. }ACXPowerConsumptionTimeStat_t;
  1922. #endif // PUBLIC_INFOELE_H