tx_queue_extension.h 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870
  1. /* Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved.
  2. *
  3. * Permission to use, copy, modify, and/or distribute this software for any
  4. * purpose with or without fee is hereby granted, provided that the above
  5. * copyright notice and this permission notice appear in all copies.
  6. *
  7. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  8. * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  9. * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  10. * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  11. * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  12. * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  13. * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  14. */
  15. #ifndef _TX_QUEUE_EXTENSION_H_
  16. #define _TX_QUEUE_EXTENSION_H_
  17. #if !defined(__ASSEMBLER__)
  18. #endif
  19. #define NUM_OF_DWORDS_TX_QUEUE_EXTENSION 14
  20. #define NUM_OF_QWORDS_TX_QUEUE_EXTENSION 7
  21. struct tx_queue_extension {
  22. #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
  23. uint32_t frame_ctl : 16, // [15:0]
  24. qos_ctl : 16; // [31:16]
  25. uint32_t ampdu_flag : 1, // [0:0]
  26. tx_notify_no_htc_override : 1, // [1:1]
  27. reserved_1a : 7, // [8:2]
  28. checksum_tso_disable_for_frag : 1, // [9:9]
  29. key_id : 8, // [17:10]
  30. qos_buf_state_overwrite : 1, // [18:18]
  31. buf_state_sta_id : 1, // [19:19]
  32. buf_state_source : 1, // [20:20]
  33. ht_control_overwrite_enable : 1, // [21:21]
  34. ht_control_overwrite_source : 4, // [25:22]
  35. reserved_1b : 6; // [31:26]
  36. uint32_t ul_headroom_insertion_enable : 1, // [0:0]
  37. ul_headroom_offset : 5, // [5:1]
  38. bqrp_insertion_enable : 1, // [6:6]
  39. bqrp_offset : 5, // [11:7]
  40. ul_headroom_rsvd_7_6 : 2, // [13:12]
  41. bqr_rsvd_9_8 : 2, // [15:14]
  42. base_pn_63_48 : 16; // [31:16]
  43. uint32_t base_pn_95_64 : 32; // [31:0]
  44. uint32_t base_pn_127_96 : 32; // [31:0]
  45. uint32_t ht_control_field_bw20 : 32; // [31:0]
  46. uint32_t ht_control_field_bw40 : 32; // [31:0]
  47. uint32_t ht_control_field_bw80 : 32; // [31:0]
  48. uint32_t ht_control_field_bw160 : 32; // [31:0]
  49. uint32_t ht_control_overwrite_mask : 32; // [31:0]
  50. uint32_t cas_control_info : 8, // [7:0]
  51. cas_offset : 5, // [12:8]
  52. cas_insertion_enable : 1, // [13:13]
  53. reserved_10a : 2, // [15:14]
  54. ht_control_overwrite_source_for_srp : 4, // [19:16]
  55. ht_control_overwrite_source_for_bsrp : 4, // [23:20]
  56. reserved_10b : 6, // [29:24]
  57. mpdu_hdr_len_override_en : 1, // [30:30]
  58. bar_ssn_overwrite_enable : 1; // [31:31]
  59. uint32_t bar_ssn_offset : 12, // [11:0]
  60. mpdu_hdr_len_override_val : 9, // [20:12]
  61. reserved_11a : 11; // [31:21]
  62. uint32_t ht_control_field_bw320 : 32; // [31:0]
  63. uint32_t fw2sw_info : 32; // [31:0]
  64. #else
  65. uint32_t qos_ctl : 16, // [31:16]
  66. frame_ctl : 16; // [15:0]
  67. uint32_t reserved_1b : 6, // [31:26]
  68. ht_control_overwrite_source : 4, // [25:22]
  69. ht_control_overwrite_enable : 1, // [21:21]
  70. buf_state_source : 1, // [20:20]
  71. buf_state_sta_id : 1, // [19:19]
  72. qos_buf_state_overwrite : 1, // [18:18]
  73. key_id : 8, // [17:10]
  74. checksum_tso_disable_for_frag : 1, // [9:9]
  75. reserved_1a : 7, // [8:2]
  76. tx_notify_no_htc_override : 1, // [1:1]
  77. ampdu_flag : 1; // [0:0]
  78. uint32_t base_pn_63_48 : 16, // [31:16]
  79. bqr_rsvd_9_8 : 2, // [15:14]
  80. ul_headroom_rsvd_7_6 : 2, // [13:12]
  81. bqrp_offset : 5, // [11:7]
  82. bqrp_insertion_enable : 1, // [6:6]
  83. ul_headroom_offset : 5, // [5:1]
  84. ul_headroom_insertion_enable : 1; // [0:0]
  85. uint32_t base_pn_95_64 : 32; // [31:0]
  86. uint32_t base_pn_127_96 : 32; // [31:0]
  87. uint32_t ht_control_field_bw20 : 32; // [31:0]
  88. uint32_t ht_control_field_bw40 : 32; // [31:0]
  89. uint32_t ht_control_field_bw80 : 32; // [31:0]
  90. uint32_t ht_control_field_bw160 : 32; // [31:0]
  91. uint32_t ht_control_overwrite_mask : 32; // [31:0]
  92. uint32_t bar_ssn_overwrite_enable : 1, // [31:31]
  93. mpdu_hdr_len_override_en : 1, // [30:30]
  94. reserved_10b : 6, // [29:24]
  95. ht_control_overwrite_source_for_bsrp : 4, // [23:20]
  96. ht_control_overwrite_source_for_srp : 4, // [19:16]
  97. reserved_10a : 2, // [15:14]
  98. cas_insertion_enable : 1, // [13:13]
  99. cas_offset : 5, // [12:8]
  100. cas_control_info : 8; // [7:0]
  101. uint32_t reserved_11a : 11, // [31:21]
  102. mpdu_hdr_len_override_val : 9, // [20:12]
  103. bar_ssn_offset : 12; // [11:0]
  104. uint32_t ht_control_field_bw320 : 32; // [31:0]
  105. uint32_t fw2sw_info : 32; // [31:0]
  106. #endif
  107. };
  108. /* Description FRAME_CTL
  109. Consumer: TXOLE
  110. Producer: SW
  111. 802.11 Frame control field:
  112. fc [1:0]: Protocol Version
  113. fc[7:2]: type/subtypeFor non-11ah fc[3:2] = Type fc[7:4] =
  114. Subtype For 11ah fc[4:2] = Typefc[7:5] = PTID/SubType
  115. fc [8]: To DS ( for Non-11ah) From DS ( for 11ah )
  116. fc [9]: From DS ( for Non-11ah )
  117. More Frag ( for 11ah )
  118. fc [10]: More Frag ( for Non-11ah )
  119. Power Management ( for 11ah)
  120. fc [11]: Retry ( for Non-11ah )
  121. More Data ( for 11ah )
  122. fc [12]: Pwr Mgt ( for Non-11ah )
  123. Protected Frame ( for 11ah )
  124. fc [13]: More Data( for Non-11ah )
  125. EOSP ( for 11ah )
  126. fc [14]: Protected Frame ( for Non-11ah)
  127. Relayed Frame ( for 11ah )
  128. fc [15]: Order ( for Non-11ah )
  129. Ack Policy ( for 11ah )
  130. Used by OLE during the encapsulation process for Native
  131. WiFi, Ethernet II, and 802.3.
  132. When the Order field is set, TXOLE shall insert 4 placeholder
  133. bytes for the HE-control field in the frame. TXPCU will
  134. overwrite them with the final actual value...
  135. */
  136. #define TX_QUEUE_EXTENSION_FRAME_CTL_OFFSET 0x0000000000000000
  137. #define TX_QUEUE_EXTENSION_FRAME_CTL_LSB 0
  138. #define TX_QUEUE_EXTENSION_FRAME_CTL_MSB 15
  139. #define TX_QUEUE_EXTENSION_FRAME_CTL_MASK 0x000000000000ffff
  140. /* Description QOS_CTL
  141. Consumer: TXOLE
  142. Producer: SW
  143. QoS control field is valid if the type field is data and
  144. the upper bit of the subtype field is set. The field decode
  145. is as below:
  146. qos_ctl[3:0]: TID
  147. qos_ctl[4]: EOSP (with some exceptions)
  148. qos_ctl[6:5]: Ack Policy
  149. 0x0: Normal Ack or Implicit BAR
  150. 0x1: No Ack
  151. 0x2: No explicit Ack or PSMP Ack (not supported)
  152. 0x3: Block Ack (Not supported)
  153. Qos_ctl[7]: A-MSDU Present (with some exceptions)
  154. Qos_ctl[15:8]: TXOP limit, AP PS buffer state, TXOP duration
  155. requested or queue size
  156. This field is inserted into the 802.11 header during the
  157. encapsulation process
  158. <legal all>
  159. */
  160. #define TX_QUEUE_EXTENSION_QOS_CTL_OFFSET 0x0000000000000000
  161. #define TX_QUEUE_EXTENSION_QOS_CTL_LSB 16
  162. #define TX_QUEUE_EXTENSION_QOS_CTL_MSB 31
  163. #define TX_QUEUE_EXTENSION_QOS_CTL_MASK 0x00000000ffff0000
  164. /* Description AMPDU_FLAG
  165. Consumer: PDG/TXPCU
  166. Producer: SW
  167. Note:
  168. For legacy rate transmissions (11 b and 11a, an 11g), this
  169. bit shall always be set to zero.
  170. 0:
  171. For legacy and .11n rates:
  172. MPDUs are only allowed to be sent out 1 at a time in NON
  173. A-MPDU format.
  174. For .11ac and .11ax rates:
  175. MPDUs are sent out in S-MPDU format (TXPCU sets the 'EOF'
  176. bit in the MPDU delimiter).
  177. 1: All MPDUs should be sent out using the A-MPDU format,
  178. even if there is only one MPDU.
  179. Note that this bit should be set to 0 in order to construct
  180. an S-MPDU frame. VHT and HE frames are all A-MPDU format
  181. but if this bit is clear, EOF bit is set to 1 for the MPDU
  182. delimiter in A-MPDU, which is the indicator of S-MPDU and
  183. solicits ACK rather than BA as response frame.
  184. This bit shall be set to 1 for any MD (Multi Destination)
  185. transmission.
  186. */
  187. #define TX_QUEUE_EXTENSION_AMPDU_FLAG_OFFSET 0x0000000000000000
  188. #define TX_QUEUE_EXTENSION_AMPDU_FLAG_LSB 32
  189. #define TX_QUEUE_EXTENSION_AMPDU_FLAG_MSB 32
  190. #define TX_QUEUE_EXTENSION_AMPDU_FLAG_MASK 0x0000000100000000
  191. /* Description TX_NOTIFY_NO_HTC_OVERRIDE
  192. When set, and a 'TX_MPDU_START' TLV has Tx_notify_frame
  193. set to TX_HARD_NOTIFY or TX_SOFT_NOTIFY or TX_SEMI_HARD_NOTIFY,
  194. then PDG would have updated the rate fields for a legacy
  195. PPDU which may not support HT Control.
  196. In this case TXOLE shall not:
  197. set the Order/+HTC bit in the 'Frame Control,'
  198. include 4 bytes for TXPCU to fill the HT Control, or
  199. set vht_control_present in 'TX_MPDU_START,'
  200. even if requested, and instead shall subtract '4' from the
  201. mpdu_length in 'TX_MPDU_START' and overwrite it.
  202. Hamilton v1 used bits [29:26], [8:1] along with word 11
  203. bits [31:12] for 'HT_control_field_bw320.'
  204. <legal all>
  205. */
  206. #define TX_QUEUE_EXTENSION_TX_NOTIFY_NO_HTC_OVERRIDE_OFFSET 0x0000000000000000
  207. #define TX_QUEUE_EXTENSION_TX_NOTIFY_NO_HTC_OVERRIDE_LSB 33
  208. #define TX_QUEUE_EXTENSION_TX_NOTIFY_NO_HTC_OVERRIDE_MSB 33
  209. #define TX_QUEUE_EXTENSION_TX_NOTIFY_NO_HTC_OVERRIDE_MASK 0x0000000200000000
  210. /* Description RESERVED_1A
  211. Hamilton v1 used bits [29:26], [8:1] along with word 11
  212. bits [31:12] for 'HT_control_field_bw320.'
  213. <legal 0>
  214. */
  215. #define TX_QUEUE_EXTENSION_RESERVED_1A_OFFSET 0x0000000000000000
  216. #define TX_QUEUE_EXTENSION_RESERVED_1A_LSB 34
  217. #define TX_QUEUE_EXTENSION_RESERVED_1A_MSB 40
  218. #define TX_QUEUE_EXTENSION_RESERVED_1A_MASK 0x000001fc00000000
  219. /* Description CHECKSUM_TSO_DISABLE_FOR_FRAG
  220. Field only valid in case of level-1 fragmentation, identified
  221. by TXOLE getting the 'TX_FRAG_STATE' TLV
  222. If set, TXOLE disables all checksum and TSO overwrites for
  223. the fragment(s) being transmitted.
  224. This is useful if it is known that the checksum and TSO
  225. overwrites affect only the first fragment (or first few
  226. fragments) and for the rest these can be safely disabled.
  227. <legal all>
  228. */
  229. #define TX_QUEUE_EXTENSION_CHECKSUM_TSO_DISABLE_FOR_FRAG_OFFSET 0x0000000000000000
  230. #define TX_QUEUE_EXTENSION_CHECKSUM_TSO_DISABLE_FOR_FRAG_LSB 41
  231. #define TX_QUEUE_EXTENSION_CHECKSUM_TSO_DISABLE_FOR_FRAG_MSB 41
  232. #define TX_QUEUE_EXTENSION_CHECKSUM_TSO_DISABLE_FOR_FRAG_MASK 0x0000020000000000
  233. /* Description KEY_ID
  234. Field only valid in case of encryption, and TXOLE being
  235. instructured to insert the IV.
  236. TXOLE blindly copies this field into the key ID octet (which
  237. is part of the IV) of the encrypted frame.
  238. For AES/TKIP the encoding is:
  239. key_id_octet[7:6]: key ID
  240. key_id_octet[5]: extended IV:
  241. key_id_octet[4:0]: Reserved bits
  242. For WEP the encoding is:
  243. key_id_octet[7:6]: key ID
  244. key_id_octet[5]: extended IV:
  245. key_id_octet[4:0]: Reserved bits
  246. For WAPI the encoding is:
  247. key_id_octet[7:2]: Reserved bits
  248. key_id_octet[1:0]: key ID
  249. <legal all>
  250. */
  251. #define TX_QUEUE_EXTENSION_KEY_ID_OFFSET 0x0000000000000000
  252. #define TX_QUEUE_EXTENSION_KEY_ID_LSB 42
  253. #define TX_QUEUE_EXTENSION_KEY_ID_MSB 49
  254. #define TX_QUEUE_EXTENSION_KEY_ID_MASK 0x0003fc0000000000
  255. /* Description QOS_BUF_STATE_OVERWRITE
  256. When clear, TXPCU shall not overwrite buffer state field
  257. in the QoS frame control field.
  258. When set, TXPCU shall overwrite the buffer state field in
  259. the QoS frame control field, with info that SW has programmed
  260. in TXPCU registers. Note that TXPCU shall pick up the values
  261. related to this TID.
  262. <legal all>
  263. */
  264. #define TX_QUEUE_EXTENSION_QOS_BUF_STATE_OVERWRITE_OFFSET 0x0000000000000000
  265. #define TX_QUEUE_EXTENSION_QOS_BUF_STATE_OVERWRITE_LSB 50
  266. #define TX_QUEUE_EXTENSION_QOS_BUF_STATE_OVERWRITE_MSB 50
  267. #define TX_QUEUE_EXTENSION_QOS_BUF_STATE_OVERWRITE_MASK 0x0004000000000000
  268. /* Description BUF_STATE_STA_ID
  269. Field only valid when QoS_Buf_state_overwrite is set.
  270. This field indicates what the STA ID register source is
  271. of the buffer status.
  272. 1'b0: TXPCU registers: STA0_buf_status_...
  273. 1'b1: TXPCU registers: STA1_buf_status_...
  274. <legal all>
  275. */
  276. #define TX_QUEUE_EXTENSION_BUF_STATE_STA_ID_OFFSET 0x0000000000000000
  277. #define TX_QUEUE_EXTENSION_BUF_STATE_STA_ID_LSB 51
  278. #define TX_QUEUE_EXTENSION_BUF_STATE_STA_ID_MSB 51
  279. #define TX_QUEUE_EXTENSION_BUF_STATE_STA_ID_MASK 0x0008000000000000
  280. /* Description BUF_STATE_SOURCE
  281. Field only valid when QoS_Buf_state_overwrite is set.
  282. This field indicates what the source is of the actual value
  283. TXPCU will insert
  284. <enum 0 BUF_STATE_TID_BASED> TXPCU looks at the TID field
  285. in the QoS control frame and based on this TID, selects
  286. the buffer source value from the corresponding TID register.
  287. <enum 1 BUF_STATE_SUM_BASED> TXPCU inserts the value from
  288. the buffer_state_sum register
  289. <legal all>
  290. */
  291. #define TX_QUEUE_EXTENSION_BUF_STATE_SOURCE_OFFSET 0x0000000000000000
  292. #define TX_QUEUE_EXTENSION_BUF_STATE_SOURCE_LSB 52
  293. #define TX_QUEUE_EXTENSION_BUF_STATE_SOURCE_MSB 52
  294. #define TX_QUEUE_EXTENSION_BUF_STATE_SOURCE_MASK 0x0010000000000000
  295. /* Description HT_CONTROL_OVERWRITE_ENABLE
  296. When set, TXPCU shall overwrite some (or all) of the HT_CONTROL
  297. field with values that are programmed in TXPCU registers:
  298. HT_CONTROL_OVERWRITE_IX???
  299. See HT/HE control overwrite order NOTE after this table
  300. <legal all>
  301. */
  302. #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_ENABLE_OFFSET 0x0000000000000000
  303. #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_ENABLE_LSB 53
  304. #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_ENABLE_MSB 53
  305. #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_ENABLE_MASK 0x0020000000000000
  306. /* Description HT_CONTROL_OVERWRITE_SOURCE
  307. Field only valid when HT_control_overwrite_enable is set.
  308. This field indicates the index of the TXPCU register HT_CONTROL_OVERWRITE_IX???
  309. That is the source of the overwrite data.
  310. <legal all>
  311. */
  312. #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_SOURCE_OFFSET 0x0000000000000000
  313. #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_SOURCE_LSB 54
  314. #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_SOURCE_MSB 57
  315. #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_SOURCE_MASK 0x03c0000000000000
  316. /* Description RESERVED_1B
  317. Hamilton v1 used bits [29:26], [8:1] along with word 11
  318. bits [31:12] for 'HT_control_field_bw320.'
  319. <legal 0>
  320. */
  321. #define TX_QUEUE_EXTENSION_RESERVED_1B_OFFSET 0x0000000000000000
  322. #define TX_QUEUE_EXTENSION_RESERVED_1B_LSB 58
  323. #define TX_QUEUE_EXTENSION_RESERVED_1B_MSB 63
  324. #define TX_QUEUE_EXTENSION_RESERVED_1B_MASK 0xfc00000000000000
  325. /* Description UL_HEADROOM_INSERTION_ENABLE
  326. When set, and this transmission services a trigger response
  327. transmission, TXPCU shall create and insert the UL headroom
  328. info in the HE control field, starting at offset indicated
  329. by field: UL_headroom_offset
  330. See HT/HE control overwrite order NOTE after this table
  331. <legal all>
  332. */
  333. #define TX_QUEUE_EXTENSION_UL_HEADROOM_INSERTION_ENABLE_OFFSET 0x0000000000000008
  334. #define TX_QUEUE_EXTENSION_UL_HEADROOM_INSERTION_ENABLE_LSB 0
  335. #define TX_QUEUE_EXTENSION_UL_HEADROOM_INSERTION_ENABLE_MSB 0
  336. #define TX_QUEUE_EXTENSION_UL_HEADROOM_INSERTION_ENABLE_MASK 0x0000000000000001
  337. /* Description UL_HEADROOM_OFFSET
  338. Field only valid when UL_headroom_insertion_enable is set.
  339. The bit location in HE_CONTROL Field where TXPCU will start
  340. writing the the 4 bit Control ID field that needs to be
  341. inserted, followed by the lower 6 bits of the 8 bit bit
  342. UL_headroom info (UPH Control).
  343. NOTE: currently on 6 bits are defined in the UPH control
  344. field. The upper two bits are provided by SW in UL_headroom_rsvd_7_6.
  345. <legal 2-20>
  346. */
  347. #define TX_QUEUE_EXTENSION_UL_HEADROOM_OFFSET_OFFSET 0x0000000000000008
  348. #define TX_QUEUE_EXTENSION_UL_HEADROOM_OFFSET_LSB 1
  349. #define TX_QUEUE_EXTENSION_UL_HEADROOM_OFFSET_MSB 5
  350. #define TX_QUEUE_EXTENSION_UL_HEADROOM_OFFSET_MASK 0x000000000000003e
  351. /* Description BQRP_INSERTION_ENABLE
  352. When set, and this transmission services a BQRP trigger
  353. response transmission, TXPCU shall create and insert the
  354. BQR control field into the HE control field, as well as
  355. the 4 bit preceding Control ID field.
  356. See HT/HE control overwrite order NOTE after this table
  357. <legal all>
  358. */
  359. #define TX_QUEUE_EXTENSION_BQRP_INSERTION_ENABLE_OFFSET 0x0000000000000008
  360. #define TX_QUEUE_EXTENSION_BQRP_INSERTION_ENABLE_LSB 6
  361. #define TX_QUEUE_EXTENSION_BQRP_INSERTION_ENABLE_MSB 6
  362. #define TX_QUEUE_EXTENSION_BQRP_INSERTION_ENABLE_MASK 0x0000000000000040
  363. /* Description BQRP_OFFSET
  364. Field only valid when BQRP_insertion_enable is set.
  365. The bit location in HE_CONTROL Field where TXPCU will start
  366. writing the 4 bit Control ID field that needs to be inserted,
  367. followed by the lower 8 bits of the 10 bit BQR control field.
  368. NOTE: currently only 8 bits are defined in the 10 bit BQR
  369. control field. The upper two bits are provided by SW in
  370. BQR_rsvd_9_8.
  371. <legal 2-20>
  372. */
  373. #define TX_QUEUE_EXTENSION_BQRP_OFFSET_OFFSET 0x0000000000000008
  374. #define TX_QUEUE_EXTENSION_BQRP_OFFSET_LSB 7
  375. #define TX_QUEUE_EXTENSION_BQRP_OFFSET_MSB 11
  376. #define TX_QUEUE_EXTENSION_BQRP_OFFSET_MASK 0x0000000000000f80
  377. /* Description UL_HEADROOM_RSVD_7_6
  378. These will be used by TXPCU to fill the upper two bits of
  379. the UPH control field.
  380. <legal all>
  381. */
  382. #define TX_QUEUE_EXTENSION_UL_HEADROOM_RSVD_7_6_OFFSET 0x0000000000000008
  383. #define TX_QUEUE_EXTENSION_UL_HEADROOM_RSVD_7_6_LSB 12
  384. #define TX_QUEUE_EXTENSION_UL_HEADROOM_RSVD_7_6_MSB 13
  385. #define TX_QUEUE_EXTENSION_UL_HEADROOM_RSVD_7_6_MASK 0x0000000000003000
  386. /* Description BQR_RSVD_9_8
  387. These will be used by TXPCU to fill the upper two bits of
  388. the BQR control field.
  389. NOTE: When overwriting CAS control (8-bit) at the same offset
  390. as BQR control (10-bit), TXPCU will ignore the BQR overwrite,
  391. including these upper two bits.
  392. <legal all>
  393. */
  394. #define TX_QUEUE_EXTENSION_BQR_RSVD_9_8_OFFSET 0x0000000000000008
  395. #define TX_QUEUE_EXTENSION_BQR_RSVD_9_8_LSB 14
  396. #define TX_QUEUE_EXTENSION_BQR_RSVD_9_8_MSB 15
  397. #define TX_QUEUE_EXTENSION_BQR_RSVD_9_8_MASK 0x000000000000c000
  398. /* Description BASE_PN_63_48
  399. Upper bits PN number, in case a larger then 48 bit PN number
  400. needs to be inserted in the transmit frame.
  401. 63-48 bits of the 128-bit packet number
  402. <legal all>
  403. */
  404. #define TX_QUEUE_EXTENSION_BASE_PN_63_48_OFFSET 0x0000000000000008
  405. #define TX_QUEUE_EXTENSION_BASE_PN_63_48_LSB 16
  406. #define TX_QUEUE_EXTENSION_BASE_PN_63_48_MSB 31
  407. #define TX_QUEUE_EXTENSION_BASE_PN_63_48_MASK 0x00000000ffff0000
  408. /* Description BASE_PN_95_64
  409. Upper bits PN number, in case a larger then 48 bit PN number
  410. needs to be inserted in the transmit frame.
  411. 95-64 bits of the 128-bit packet number
  412. <legal all>
  413. */
  414. #define TX_QUEUE_EXTENSION_BASE_PN_95_64_OFFSET 0x0000000000000008
  415. #define TX_QUEUE_EXTENSION_BASE_PN_95_64_LSB 32
  416. #define TX_QUEUE_EXTENSION_BASE_PN_95_64_MSB 63
  417. #define TX_QUEUE_EXTENSION_BASE_PN_95_64_MASK 0xffffffff00000000
  418. /* Description BASE_PN_127_96
  419. Upper bits PN number, in case a larger then 48 bit PN number
  420. needs to be inserted in the transmit frame.
  421. 127-96 bits of the 128-bit packet number
  422. <legal all>
  423. */
  424. #define TX_QUEUE_EXTENSION_BASE_PN_127_96_OFFSET 0x0000000000000010
  425. #define TX_QUEUE_EXTENSION_BASE_PN_127_96_LSB 0
  426. #define TX_QUEUE_EXTENSION_BASE_PN_127_96_MSB 31
  427. #define TX_QUEUE_EXTENSION_BASE_PN_127_96_MASK 0x00000000ffffffff
  428. /* Description HT_CONTROL_FIELD_BW20
  429. Field used by TXPCU when in TX_MPDU_START TLV field vht_control_present
  430. is set.
  431. Note that TXPCU might overwrite some fields. This is controlled
  432. with field HT_control_overwrite_enable
  433. See HT/HE control overwrite order NOTE after this table
  434. <legal all>
  435. */
  436. #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW20_OFFSET 0x0000000000000010
  437. #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW20_LSB 32
  438. #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW20_MSB 63
  439. #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW20_MASK 0xffffffff00000000
  440. /* Description HT_CONTROL_FIELD_BW40
  441. Field used by TXPCU when in TX_MPDU_START TLV field vht_control_present
  442. is set.
  443. Note that TXPCU might overwrite some fields. This is controlled
  444. with field HT_control_overwrite_enable
  445. See HT/HE control overwrite order NOTE after this table
  446. <legal all>
  447. */
  448. #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW40_OFFSET 0x0000000000000018
  449. #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW40_LSB 0
  450. #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW40_MSB 31
  451. #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW40_MASK 0x00000000ffffffff
  452. /* Description HT_CONTROL_FIELD_BW80
  453. Field used by TXPCU when in TX_MPDU_START TLV field vht_control_present
  454. is set.
  455. Note that TXPCU might overwrite some fields. This is controlled
  456. with field HT_control_overwrite_enable
  457. See HT/HE control overwrite order NOTE after this table
  458. <legal all>
  459. */
  460. #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW80_OFFSET 0x0000000000000018
  461. #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW80_LSB 32
  462. #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW80_MSB 63
  463. #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW80_MASK 0xffffffff00000000
  464. /* Description HT_CONTROL_FIELD_BW160
  465. Field used by TXPCU when in TX_MPDU_START TLV field vht_control_present
  466. is set.
  467. Note that TXPCU might overwrite some fields. This is controlled
  468. with field HT_control_overwrite_enable
  469. See HT/HE control overwrite order NOTE after this table
  470. <legal all>
  471. */
  472. #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW160_OFFSET 0x0000000000000020
  473. #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW160_LSB 0
  474. #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW160_MSB 31
  475. #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW160_MASK 0x00000000ffffffff
  476. /* Description HT_CONTROL_OVERWRITE_MASK
  477. Field only valid when HT_control_overwrite_enable is set.
  478. This field indicates which bits of the HT_CONTROL_FIELD
  479. shall be overwritten with bits from TXPCU register HT_CONTROL_OVERWRITE_IX???
  480. Every bit that needs to be overwritten is set to 1 in this
  481. register.
  482. <legal all>
  483. */
  484. #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_MASK_OFFSET 0x0000000000000020
  485. #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_MASK_LSB 32
  486. #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_MASK_MSB 63
  487. #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_MASK_MASK 0xffffffff00000000
  488. /* Description CAS_CONTROL_INFO
  489. This contains 8-bit CAS control field to be used for transmission
  490. during SRP window
  491. <legal all>
  492. */
  493. #define TX_QUEUE_EXTENSION_CAS_CONTROL_INFO_OFFSET 0x0000000000000028
  494. #define TX_QUEUE_EXTENSION_CAS_CONTROL_INFO_LSB 0
  495. #define TX_QUEUE_EXTENSION_CAS_CONTROL_INFO_MSB 7
  496. #define TX_QUEUE_EXTENSION_CAS_CONTROL_INFO_MASK 0x00000000000000ff
  497. /* Description CAS_OFFSET
  498. 5 bit offset for CAS insertion
  499. <legal 2-20>
  500. */
  501. #define TX_QUEUE_EXTENSION_CAS_OFFSET_OFFSET 0x0000000000000028
  502. #define TX_QUEUE_EXTENSION_CAS_OFFSET_LSB 8
  503. #define TX_QUEUE_EXTENSION_CAS_OFFSET_MSB 12
  504. #define TX_QUEUE_EXTENSION_CAS_OFFSET_MASK 0x0000000000001f00
  505. /* Description CAS_INSERTION_ENABLE
  506. single bit used as ENABLE for CAS control insertion for
  507. transmission during SRP window
  508. <legal all>
  509. */
  510. #define TX_QUEUE_EXTENSION_CAS_INSERTION_ENABLE_OFFSET 0x0000000000000028
  511. #define TX_QUEUE_EXTENSION_CAS_INSERTION_ENABLE_LSB 13
  512. #define TX_QUEUE_EXTENSION_CAS_INSERTION_ENABLE_MSB 13
  513. #define TX_QUEUE_EXTENSION_CAS_INSERTION_ENABLE_MASK 0x0000000000002000
  514. /* Description RESERVED_10A
  515. <legal 0>
  516. */
  517. #define TX_QUEUE_EXTENSION_RESERVED_10A_OFFSET 0x0000000000000028
  518. #define TX_QUEUE_EXTENSION_RESERVED_10A_LSB 14
  519. #define TX_QUEUE_EXTENSION_RESERVED_10A_MSB 15
  520. #define TX_QUEUE_EXTENSION_RESERVED_10A_MASK 0x000000000000c000
  521. /* Description HT_CONTROL_OVERWRITE_SOURCE_FOR_SRP
  522. 4-bit index similar to HT_control_overwrite_source field
  523. to be used for transmission during SRP window
  524. <legal all>
  525. */
  526. #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_SOURCE_FOR_SRP_OFFSET 0x0000000000000028
  527. #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_SOURCE_FOR_SRP_LSB 16
  528. #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_SOURCE_FOR_SRP_MSB 19
  529. #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_SOURCE_FOR_SRP_MASK 0x00000000000f0000
  530. /* Description HT_CONTROL_OVERWRITE_SOURCE_FOR_BSRP
  531. 4-bit index similar to HT_control_overwrite_source field
  532. to be used for response to BSRP triggers (even during SRP
  533. window)
  534. <legal all>
  535. */
  536. #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_SOURCE_FOR_BSRP_OFFSET 0x0000000000000028
  537. #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_SOURCE_FOR_BSRP_LSB 20
  538. #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_SOURCE_FOR_BSRP_MSB 23
  539. #define TX_QUEUE_EXTENSION_HT_CONTROL_OVERWRITE_SOURCE_FOR_BSRP_MASK 0x0000000000f00000
  540. /* Description RESERVED_10B
  541. <legal 0>
  542. */
  543. #define TX_QUEUE_EXTENSION_RESERVED_10B_OFFSET 0x0000000000000028
  544. #define TX_QUEUE_EXTENSION_RESERVED_10B_LSB 24
  545. #define TX_QUEUE_EXTENSION_RESERVED_10B_MSB 29
  546. #define TX_QUEUE_EXTENSION_RESERVED_10B_MASK 0x000000003f000000
  547. /* Description MPDU_HDR_LEN_OVERRIDE_EN
  548. This is for the FW override of MPDU overhead length programmed
  549. in the TQM queue.
  550. If enabled, PDG will update the length of each MPDU by subtracting
  551. the value of field Mpdu_header_length in 'MPDU_QUEUE_OVERVIEW'
  552. and adding Mpdu_hdr_len_override_val (in this TLV).
  553. <legal all>
  554. */
  555. #define TX_QUEUE_EXTENSION_MPDU_HDR_LEN_OVERRIDE_EN_OFFSET 0x0000000000000028
  556. #define TX_QUEUE_EXTENSION_MPDU_HDR_LEN_OVERRIDE_EN_LSB 30
  557. #define TX_QUEUE_EXTENSION_MPDU_HDR_LEN_OVERRIDE_EN_MSB 30
  558. #define TX_QUEUE_EXTENSION_MPDU_HDR_LEN_OVERRIDE_EN_MASK 0x0000000040000000
  559. /* Description BAR_SSN_OVERWRITE_ENABLE
  560. If enabled, TXPCU will overwrite the starting sequence number
  561. in case of Tx BAR or MU-BAR Trigger from with the sequence
  562. number from 'MPDU_QUEUE_OVERVIEW'
  563. <legal all>
  564. */
  565. #define TX_QUEUE_EXTENSION_BAR_SSN_OVERWRITE_ENABLE_OFFSET 0x0000000000000028
  566. #define TX_QUEUE_EXTENSION_BAR_SSN_OVERWRITE_ENABLE_LSB 31
  567. #define TX_QUEUE_EXTENSION_BAR_SSN_OVERWRITE_ENABLE_MSB 31
  568. #define TX_QUEUE_EXTENSION_BAR_SSN_OVERWRITE_ENABLE_MASK 0x0000000080000000
  569. /* Description BAR_SSN_OFFSET
  570. Offset to the starting sequence number in case of Tx BAR
  571. or MU-BAR Trigger that TXPCU can overwrite with the sequence
  572. number from 'MPDU_QUEUE_OVERVIEW'
  573. <legal all>
  574. */
  575. #define TX_QUEUE_EXTENSION_BAR_SSN_OFFSET_OFFSET 0x0000000000000028
  576. #define TX_QUEUE_EXTENSION_BAR_SSN_OFFSET_LSB 32
  577. #define TX_QUEUE_EXTENSION_BAR_SSN_OFFSET_MSB 43
  578. #define TX_QUEUE_EXTENSION_BAR_SSN_OFFSET_MASK 0x00000fff00000000
  579. /* Description MPDU_HDR_LEN_OVERRIDE_VAL
  580. This is for the FW override of MPDU overhead length programmed
  581. in the TQM queue.
  582. See field Mpdu_hdr_len_override_en.
  583. Hamilton v1 used bits [31:12] along with word 1 bits [29:26], [8:1]
  584. for 'HT_control_field_bw320.'
  585. <legal all>
  586. */
  587. #define TX_QUEUE_EXTENSION_MPDU_HDR_LEN_OVERRIDE_VAL_OFFSET 0x0000000000000028
  588. #define TX_QUEUE_EXTENSION_MPDU_HDR_LEN_OVERRIDE_VAL_LSB 44
  589. #define TX_QUEUE_EXTENSION_MPDU_HDR_LEN_OVERRIDE_VAL_MSB 52
  590. #define TX_QUEUE_EXTENSION_MPDU_HDR_LEN_OVERRIDE_VAL_MASK 0x001ff00000000000
  591. /* Description RESERVED_11A
  592. Hamilton v1 used bits [31:12] along with word 1 bits [29:26], [8:1]
  593. for 'HT_control_field_bw320.'
  594. <legal 0>
  595. */
  596. #define TX_QUEUE_EXTENSION_RESERVED_11A_OFFSET 0x0000000000000028
  597. #define TX_QUEUE_EXTENSION_RESERVED_11A_LSB 53
  598. #define TX_QUEUE_EXTENSION_RESERVED_11A_MSB 63
  599. #define TX_QUEUE_EXTENSION_RESERVED_11A_MASK 0xffe0000000000000
  600. /* Description HT_CONTROL_FIELD_BW320
  601. Field used by TXPCU when in TX_MPDU_START TLV field vht_control_present
  602. is set.
  603. Note that TXPCU might overwrite some fields. This is controlled
  604. with field HT_control_overwrite_enable
  605. See HT/HE control overwrite order NOTE after this table
  606. Hamilton v1 did not include this (and any subsequent) word.
  607. <legal all>
  608. */
  609. #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW320_OFFSET 0x0000000000000030
  610. #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW320_LSB 0
  611. #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW320_MSB 31
  612. #define TX_QUEUE_EXTENSION_HT_CONTROL_FIELD_BW320_MASK 0x00000000ffffffff
  613. /* Description FW2SW_INFO
  614. This field is provided by FW, to be logged via TXMON to
  615. host SW. It is transparent to HW.
  616. <legal all>
  617. */
  618. #define TX_QUEUE_EXTENSION_FW2SW_INFO_OFFSET 0x0000000000000030
  619. #define TX_QUEUE_EXTENSION_FW2SW_INFO_LSB 32
  620. #define TX_QUEUE_EXTENSION_FW2SW_INFO_MSB 63
  621. #define TX_QUEUE_EXTENSION_FW2SW_INFO_MASK 0xffffffff00000000
  622. #endif // TX_QUEUE_EXTENSION