tx_fes_status_user_ppdu.h 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517
  1. /*
  2. * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
  3. *
  4. * Permission to use, copy, modify, and/or distribute this software for any
  5. * purpose with or without fee is hereby granted, provided that the above
  6. * copyright notice and this permission notice appear in all copies.
  7. *
  8. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  9. * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  10. * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  11. * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  12. * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  13. * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  14. * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  15. */
  16. #ifndef _TX_FES_STATUS_USER_PPDU_H_
  17. #define _TX_FES_STATUS_USER_PPDU_H_
  18. #if !defined(__ASSEMBLER__)
  19. #endif
  20. #define NUM_OF_DWORDS_TX_FES_STATUS_USER_PPDU 6
  21. #define NUM_OF_QWORDS_TX_FES_STATUS_USER_PPDU 3
  22. struct tx_fes_status_user_ppdu {
  23. #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
  24. uint32_t underflow_mpdu_count : 9, // [8:0]
  25. data_underflow_warning : 2, // [10:9]
  26. bw_drop_underflow_warning : 1, // [11:11]
  27. qc_eosp_setting : 1, // [12:12]
  28. fc_more_data_setting : 1, // [13:13]
  29. fc_pwr_mgt_setting : 1, // [14:14]
  30. mpdu_tx_count : 9, // [23:15]
  31. user_blocked : 1, // [24:24]
  32. pre_trig_response_delim_count : 7; // [31:25]
  33. uint32_t underflow_byte_count : 16, // [15:0]
  34. coex_abort_mpdu_count_valid : 1, // [16:16]
  35. coex_abort_mpdu_count : 9, // [25:17]
  36. transmitted_tid : 4, // [29:26]
  37. txdma_dropped_mpdu_warning : 1, // [30:30]
  38. reserved_1 : 1; // [31:31]
  39. uint32_t duration : 16, // [15:0]
  40. num_eof_delim_added : 16; // [31:16]
  41. uint32_t psdu_octet : 24, // [23:0]
  42. qos_buf_state : 8; // [31:24]
  43. uint32_t num_null_delim_added : 22, // [21:0]
  44. reserved_4a : 2, // [23:22]
  45. cv_corr_user_valid_in_phy : 1, // [24:24]
  46. nss : 3, // [27:25]
  47. mcs : 4; // [31:28]
  48. uint32_t ht_control : 32; // [31:0]
  49. #else
  50. uint32_t pre_trig_response_delim_count : 7, // [31:25]
  51. user_blocked : 1, // [24:24]
  52. mpdu_tx_count : 9, // [23:15]
  53. fc_pwr_mgt_setting : 1, // [14:14]
  54. fc_more_data_setting : 1, // [13:13]
  55. qc_eosp_setting : 1, // [12:12]
  56. bw_drop_underflow_warning : 1, // [11:11]
  57. data_underflow_warning : 2, // [10:9]
  58. underflow_mpdu_count : 9; // [8:0]
  59. uint32_t reserved_1 : 1, // [31:31]
  60. txdma_dropped_mpdu_warning : 1, // [30:30]
  61. transmitted_tid : 4, // [29:26]
  62. coex_abort_mpdu_count : 9, // [25:17]
  63. coex_abort_mpdu_count_valid : 1, // [16:16]
  64. underflow_byte_count : 16; // [15:0]
  65. uint32_t num_eof_delim_added : 16, // [31:16]
  66. duration : 16; // [15:0]
  67. uint32_t qos_buf_state : 8, // [31:24]
  68. psdu_octet : 24; // [23:0]
  69. uint32_t mcs : 4, // [31:28]
  70. nss : 3, // [27:25]
  71. cv_corr_user_valid_in_phy : 1, // [24:24]
  72. reserved_4a : 2, // [23:22]
  73. num_null_delim_added : 22; // [21:0]
  74. uint32_t ht_control : 32; // [31:0]
  75. #endif
  76. };
  77. /* Description UNDERFLOW_MPDU_COUNT
  78. The MPDU count correctly received from TX DMA when the first
  79. underrun condition was detected
  80. <legal 0-256>
  81. */
  82. #define TX_FES_STATUS_USER_PPDU_UNDERFLOW_MPDU_COUNT_OFFSET 0x0000000000000000
  83. #define TX_FES_STATUS_USER_PPDU_UNDERFLOW_MPDU_COUNT_LSB 0
  84. #define TX_FES_STATUS_USER_PPDU_UNDERFLOW_MPDU_COUNT_MSB 8
  85. #define TX_FES_STATUS_USER_PPDU_UNDERFLOW_MPDU_COUNT_MASK 0x00000000000001ff
  86. /* Description DATA_UNDERFLOW_WARNING
  87. Mac data underflow warning for this user
  88. <enum 0 no_data_underrun> No data underflow
  89. <enum 1 data_underrun_between_mpdu> PCU experienced data
  90. underflow in between MPDUs
  91. <enum 2 data_underrun_within_mpdu> PCU experienced data
  92. underflow within an MPDU
  93. <legal 0-2>
  94. */
  95. #define TX_FES_STATUS_USER_PPDU_DATA_UNDERFLOW_WARNING_OFFSET 0x0000000000000000
  96. #define TX_FES_STATUS_USER_PPDU_DATA_UNDERFLOW_WARNING_LSB 9
  97. #define TX_FES_STATUS_USER_PPDU_DATA_UNDERFLOW_WARNING_MSB 10
  98. #define TX_FES_STATUS_USER_PPDU_DATA_UNDERFLOW_WARNING_MASK 0x0000000000000600
  99. /* Description BW_DROP_UNDERFLOW_WARNING
  100. When set, data underflow happened while TXPCU was busy with
  101. dropping a frame that is only allowed to go out at certain
  102. BW, which is not the BW of the current transmission
  103. <legal all>
  104. */
  105. #define TX_FES_STATUS_USER_PPDU_BW_DROP_UNDERFLOW_WARNING_OFFSET 0x0000000000000000
  106. #define TX_FES_STATUS_USER_PPDU_BW_DROP_UNDERFLOW_WARNING_LSB 11
  107. #define TX_FES_STATUS_USER_PPDU_BW_DROP_UNDERFLOW_WARNING_MSB 11
  108. #define TX_FES_STATUS_USER_PPDU_BW_DROP_UNDERFLOW_WARNING_MASK 0x0000000000000800
  109. /* Description QC_EOSP_SETTING
  110. This field indicates if TX PCU set the eosp bit in the QoS
  111. control field for this user (indicated in field User_Id.)
  112. 0: No action
  113. 1: eosp bit is set in all the transmitted frames. This is
  114. done upon request of the PDG.
  115. <legal all>
  116. */
  117. #define TX_FES_STATUS_USER_PPDU_QC_EOSP_SETTING_OFFSET 0x0000000000000000
  118. #define TX_FES_STATUS_USER_PPDU_QC_EOSP_SETTING_LSB 12
  119. #define TX_FES_STATUS_USER_PPDU_QC_EOSP_SETTING_MSB 12
  120. #define TX_FES_STATUS_USER_PPDU_QC_EOSP_SETTING_MASK 0x0000000000001000
  121. /* Description FC_MORE_DATA_SETTING
  122. This field indicates what the setting was of the More data
  123. bit in the Frame control field for this user (indicated
  124. in field User_Id.)
  125. Note that TXPCU, depending on programming, might overwrite
  126. this bit in the Frame control field or just passes on what
  127. SW and/or OLE has already programmed. Either way, TXPCU
  128. just blindly copies the final setting of this "more Data"
  129. bit in the frame control field into this field in the TLV.
  130. 0: more_data bit NOT set
  131. 1: more_data bit is set
  132. <legal all>
  133. */
  134. #define TX_FES_STATUS_USER_PPDU_FC_MORE_DATA_SETTING_OFFSET 0x0000000000000000
  135. #define TX_FES_STATUS_USER_PPDU_FC_MORE_DATA_SETTING_LSB 13
  136. #define TX_FES_STATUS_USER_PPDU_FC_MORE_DATA_SETTING_MSB 13
  137. #define TX_FES_STATUS_USER_PPDU_FC_MORE_DATA_SETTING_MASK 0x0000000000002000
  138. /* Description FC_PWR_MGT_SETTING
  139. This field indicates what the setting was of the pwr bit
  140. in the Frame control field for this user (indicated in
  141. field User_Id.)
  142. Note that TXPCU never manipulates the pwr bit in the FC
  143. field. Generating the correct setting is all managed by
  144. TX OLE.
  145. TXPCU just reports here what the pwr setting was of the (last)
  146. transmitted MPDU.
  147. 0: pwr_mgt bit NOT set
  148. 1: pwr_mgt bit is set
  149. <legal all>
  150. */
  151. #define TX_FES_STATUS_USER_PPDU_FC_PWR_MGT_SETTING_OFFSET 0x0000000000000000
  152. #define TX_FES_STATUS_USER_PPDU_FC_PWR_MGT_SETTING_LSB 14
  153. #define TX_FES_STATUS_USER_PPDU_FC_PWR_MGT_SETTING_MSB 14
  154. #define TX_FES_STATUS_USER_PPDU_FC_PWR_MGT_SETTING_MASK 0x0000000000004000
  155. /* Description MPDU_TX_COUNT
  156. Number of MPDU frames transmitted
  157. Note: MPDUs that had an underrun during transmission will
  158. still be listed here. The assumption is that underrun is
  159. a very rare occasion, and any miscounting can therefor
  160. be accepted. If underrun happens too often, SW should change
  161. the density settings.
  162. <legal 0-256>
  163. */
  164. #define TX_FES_STATUS_USER_PPDU_MPDU_TX_COUNT_OFFSET 0x0000000000000000
  165. #define TX_FES_STATUS_USER_PPDU_MPDU_TX_COUNT_LSB 15
  166. #define TX_FES_STATUS_USER_PPDU_MPDU_TX_COUNT_MSB 23
  167. #define TX_FES_STATUS_USER_PPDU_MPDU_TX_COUNT_MASK 0x0000000000ff8000
  168. /* Description USER_BLOCKED
  169. When set, TXPCU received the TX_PEER_ENTRY TLV with bit 'Block_this_user'
  170. set. As a result TXDMA did not push in any MPDUs for this
  171. user and non were expected to be transmitted. TXPCU will
  172. therefor NOT report any underrun conditions for this user
  173. <legal all>
  174. */
  175. #define TX_FES_STATUS_USER_PPDU_USER_BLOCKED_OFFSET 0x0000000000000000
  176. #define TX_FES_STATUS_USER_PPDU_USER_BLOCKED_LSB 24
  177. #define TX_FES_STATUS_USER_PPDU_USER_BLOCKED_MSB 24
  178. #define TX_FES_STATUS_USER_PPDU_USER_BLOCKED_MASK 0x0000000001000000
  179. /* Description PRE_TRIG_RESPONSE_DELIM_COUNT
  180. This field is only valid when this TX_FES_STATUS_USER_PPDU
  181. is generated in the context of sending a response to a
  182. received trigger frame....(=> TX_FES_STATUS start indicated
  183. for field Transmit_start_reason == Trigger_based_transmit_start)
  184. The number of NULL delimiters the TXPCU passed on to the
  185. PHY before any real MPDU (response) data is given to the
  186. PHY that originated from the SCHeduler command.
  187. NOTE that this should not be flagged as an underrun condition.
  188. In units of 32 delimiters.
  189. <legal all>
  190. */
  191. #define TX_FES_STATUS_USER_PPDU_PRE_TRIG_RESPONSE_DELIM_COUNT_OFFSET 0x0000000000000000
  192. #define TX_FES_STATUS_USER_PPDU_PRE_TRIG_RESPONSE_DELIM_COUNT_LSB 25
  193. #define TX_FES_STATUS_USER_PPDU_PRE_TRIG_RESPONSE_DELIM_COUNT_MSB 31
  194. #define TX_FES_STATUS_USER_PPDU_PRE_TRIG_RESPONSE_DELIM_COUNT_MASK 0x00000000fe000000
  195. /* Description UNDERFLOW_BYTE_COUNT
  196. The number of bytes correctly received for this MPDU when
  197. the first underrun condition was detected
  198. In case of self-gen + SCH related data, self-gen will not
  199. be part of the underflow byte count. For example, in case
  200. of BA/CBF, if underrun is hit immediately after BA/CBF
  201. is sent, the underflow byte count will be 0.the BA/CBF bytes
  202. will not be part of the underflow byte count.
  203. */
  204. #define TX_FES_STATUS_USER_PPDU_UNDERFLOW_BYTE_COUNT_OFFSET 0x0000000000000000
  205. #define TX_FES_STATUS_USER_PPDU_UNDERFLOW_BYTE_COUNT_LSB 32
  206. #define TX_FES_STATUS_USER_PPDU_UNDERFLOW_BYTE_COUNT_MSB 47
  207. #define TX_FES_STATUS_USER_PPDU_UNDERFLOW_BYTE_COUNT_MASK 0x0000ffff00000000
  208. /* Description COEX_ABORT_MPDU_COUNT_VALID
  209. When set to 1, the (A-MPDU) transmission was silently aborted
  210. in the middle of transmission. The PHY faked the remaining
  211. transmission on the medium, so that TX PCU is still waiting
  212. for the BA frame to be received.
  213. */
  214. #define TX_FES_STATUS_USER_PPDU_COEX_ABORT_MPDU_COUNT_VALID_OFFSET 0x0000000000000000
  215. #define TX_FES_STATUS_USER_PPDU_COEX_ABORT_MPDU_COUNT_VALID_LSB 48
  216. #define TX_FES_STATUS_USER_PPDU_COEX_ABORT_MPDU_COUNT_VALID_MSB 48
  217. #define TX_FES_STATUS_USER_PPDU_COEX_ABORT_MPDU_COUNT_VALID_MASK 0x0001000000000000
  218. /* Description COEX_ABORT_MPDU_COUNT
  219. Field only valid when 'Coex_abort_mpdu_count_valid' is set.
  220. The number of MPDU frames that were properly sent bdoefore
  221. the coex transmit abort request was received
  222. <legal 0-256>
  223. */
  224. #define TX_FES_STATUS_USER_PPDU_COEX_ABORT_MPDU_COUNT_OFFSET 0x0000000000000000
  225. #define TX_FES_STATUS_USER_PPDU_COEX_ABORT_MPDU_COUNT_LSB 49
  226. #define TX_FES_STATUS_USER_PPDU_COEX_ABORT_MPDU_COUNT_MSB 57
  227. #define TX_FES_STATUS_USER_PPDU_COEX_ABORT_MPDU_COUNT_MASK 0x03fe000000000000
  228. /* Description TRANSMITTED_TID
  229. TID field blindy copied over from the TX_QUEUE_EXTENSION
  230. TLV, field qos_ctrl[3:0]
  231. <legal all>
  232. */
  233. #define TX_FES_STATUS_USER_PPDU_TRANSMITTED_TID_OFFSET 0x0000000000000000
  234. #define TX_FES_STATUS_USER_PPDU_TRANSMITTED_TID_LSB 58
  235. #define TX_FES_STATUS_USER_PPDU_TRANSMITTED_TID_MSB 61
  236. #define TX_FES_STATUS_USER_PPDU_TRANSMITTED_TID_MASK 0x3c00000000000000
  237. /* Description TXDMA_DROPPED_MPDU_WARNING
  238. Indication to FW a warning that Tx DMA has dropped MPDUs
  239. due to SFM FIFO full condition
  240. TXPCU fills this from OR of all TXDMA_dropped_mpdu_warning
  241. in 'TX_MPDU_STARTs' for this PPDU.
  242. <legal all>
  243. */
  244. #define TX_FES_STATUS_USER_PPDU_TXDMA_DROPPED_MPDU_WARNING_OFFSET 0x0000000000000000
  245. #define TX_FES_STATUS_USER_PPDU_TXDMA_DROPPED_MPDU_WARNING_LSB 62
  246. #define TX_FES_STATUS_USER_PPDU_TXDMA_DROPPED_MPDU_WARNING_MSB 62
  247. #define TX_FES_STATUS_USER_PPDU_TXDMA_DROPPED_MPDU_WARNING_MASK 0x4000000000000000
  248. /* Description RESERVED_1
  249. Reserved and not used by HW
  250. <legal 0>
  251. */
  252. #define TX_FES_STATUS_USER_PPDU_RESERVED_1_OFFSET 0x0000000000000000
  253. #define TX_FES_STATUS_USER_PPDU_RESERVED_1_LSB 63
  254. #define TX_FES_STATUS_USER_PPDU_RESERVED_1_MSB 63
  255. #define TX_FES_STATUS_USER_PPDU_RESERVED_1_MASK 0x8000000000000000
  256. /* Description DURATION
  257. The value of the duration field that TXPCU inserted in transmitted
  258. frames, for Tx Monitor to report
  259. For frames of encap type Ethernet or 802_3 TXPCU will always
  260. insert this value
  261. For frames of encap type: RAW and Native WiFi, TXPCU will
  262. check the 'Duration_field_mask' setting in TX_RAW_OR_NATIVE_FRAME_SETUP
  263. TLV to find out if overwrite is enabled. (This is per user)
  264. In case of multi TID transmission of Multi STA transmission,
  265. TXPCU will look at the 'TX_RAW_OR_NATIVE_FRAME_SETUP' of
  266. the 'first user'
  267. <legal all>
  268. */
  269. #define TX_FES_STATUS_USER_PPDU_DURATION_OFFSET 0x0000000000000008
  270. #define TX_FES_STATUS_USER_PPDU_DURATION_LSB 0
  271. #define TX_FES_STATUS_USER_PPDU_DURATION_MSB 15
  272. #define TX_FES_STATUS_USER_PPDU_DURATION_MASK 0x000000000000ffff
  273. /* Description NUM_EOF_DELIM_ADDED
  274. The total number of EOF pad delimiters added by TXPCU to
  275. the current PPDU for the MD/multi-TID group this user belongs
  276. to
  277. Set to 0xFFFF if the number exceeds the field width
  278. <legal all>
  279. */
  280. #define TX_FES_STATUS_USER_PPDU_NUM_EOF_DELIM_ADDED_OFFSET 0x0000000000000008
  281. #define TX_FES_STATUS_USER_PPDU_NUM_EOF_DELIM_ADDED_LSB 16
  282. #define TX_FES_STATUS_USER_PPDU_NUM_EOF_DELIM_ADDED_MSB 31
  283. #define TX_FES_STATUS_USER_PPDU_NUM_EOF_DELIM_ADDED_MASK 0x00000000ffff0000
  284. /* Description PSDU_OCTET
  285. Field only valid in case in 'TX_FES_STATUS_START' the field
  286. Transmit_start_reason != Trigger_based_transmit_start
  287. PSDU length in octets which includes all useful data in
  288. a packet which includes EOF padding and final padding (including
  289. the last 0 - 3 bytes).
  290. This is copied by TXPCU from 'PCU_PPDU_SETUP_USER.'
  291. <legal all>
  292. */
  293. #define TX_FES_STATUS_USER_PPDU_PSDU_OCTET_OFFSET 0x0000000000000008
  294. #define TX_FES_STATUS_USER_PPDU_PSDU_OCTET_LSB 32
  295. #define TX_FES_STATUS_USER_PPDU_PSDU_OCTET_MSB 55
  296. #define TX_FES_STATUS_USER_PPDU_PSDU_OCTET_MASK 0x00ffffff00000000
  297. /* Description QOS_BUF_STATE
  298. The value of the buffer state field in the QoS control that
  299. TXPCU inserted in transmitted frames, for Tx Monitor to
  300. report
  301. TXPCU checks the '*Buf_state*' settings in 'TX_QUEUE_EXTENSION'
  302. TLV to determine the value to insert.
  303. If TXPCU did not overwrite the buffer state field, this
  304. shall be set to 0x0.
  305. <legal all>
  306. */
  307. #define TX_FES_STATUS_USER_PPDU_QOS_BUF_STATE_OFFSET 0x0000000000000008
  308. #define TX_FES_STATUS_USER_PPDU_QOS_BUF_STATE_LSB 56
  309. #define TX_FES_STATUS_USER_PPDU_QOS_BUF_STATE_MSB 63
  310. #define TX_FES_STATUS_USER_PPDU_QOS_BUF_STATE_MASK 0xff00000000000000
  311. /* Description NUM_NULL_DELIM_ADDED
  312. The total number of non-EOF pad/null delimiters added by
  313. TXPCU to the current PPDU for this user
  314. <legal all>
  315. */
  316. #define TX_FES_STATUS_USER_PPDU_NUM_NULL_DELIM_ADDED_OFFSET 0x0000000000000010
  317. #define TX_FES_STATUS_USER_PPDU_NUM_NULL_DELIM_ADDED_LSB 0
  318. #define TX_FES_STATUS_USER_PPDU_NUM_NULL_DELIM_ADDED_MSB 21
  319. #define TX_FES_STATUS_USER_PPDU_NUM_NULL_DELIM_ADDED_MASK 0x00000000003fffff
  320. /* Description RESERVED_4A
  321. <legal 0>
  322. */
  323. #define TX_FES_STATUS_USER_PPDU_RESERVED_4A_OFFSET 0x0000000000000010
  324. #define TX_FES_STATUS_USER_PPDU_RESERVED_4A_LSB 22
  325. #define TX_FES_STATUS_USER_PPDU_RESERVED_4A_MSB 23
  326. #define TX_FES_STATUS_USER_PPDU_RESERVED_4A_MASK 0x0000000000c00000
  327. /* Description CV_CORR_USER_VALID_IN_PHY
  328. PDG sets this as 1 for up to 8 users enabled in 'PHYTX_CV_CORR_STATUS'
  329. after CV correlation, to be copied from 'PCU_PPDU_SETUP_USER.'
  330. <legal all>
  331. */
  332. #define TX_FES_STATUS_USER_PPDU_CV_CORR_USER_VALID_IN_PHY_OFFSET 0x0000000000000010
  333. #define TX_FES_STATUS_USER_PPDU_CV_CORR_USER_VALID_IN_PHY_LSB 24
  334. #define TX_FES_STATUS_USER_PPDU_CV_CORR_USER_VALID_IN_PHY_MSB 24
  335. #define TX_FES_STATUS_USER_PPDU_CV_CORR_USER_VALID_IN_PHY_MASK 0x0000000001000000
  336. /* Description NSS
  337. Number of Spatial Streams occupied by the User, to be copied
  338. from 'PCU_PPDU_SETUP_USER' by TXPCU
  339. <enum 0 1_spatial_stream>Single spatial stream
  340. <enum 1 2_spatial_streams>2 spatial streams
  341. <enum 2 3_spatial_streams>3 spatial streams
  342. <enum 3 4_spatial_streams>4 spatial streams
  343. <enum 4 5_spatial_streams>5 spatial streams
  344. <enum 5 6_spatial_streams>6 spatial streams
  345. <enum 6 7_spatial_streams>7 spatial streams
  346. <enum 7 8_spatial_streams>8 spatial streams
  347. */
  348. #define TX_FES_STATUS_USER_PPDU_NSS_OFFSET 0x0000000000000010
  349. #define TX_FES_STATUS_USER_PPDU_NSS_LSB 25
  350. #define TX_FES_STATUS_USER_PPDU_NSS_MSB 27
  351. #define TX_FES_STATUS_USER_PPDU_NSS_MASK 0x000000000e000000
  352. /* Description MCS
  353. Modulation Coding Scheme for the User, to be copied from
  354. 'PCU_PPDU_SETUP_USER' by TXPCU
  355. <legal all>
  356. */
  357. #define TX_FES_STATUS_USER_PPDU_MCS_OFFSET 0x0000000000000010
  358. #define TX_FES_STATUS_USER_PPDU_MCS_LSB 28
  359. #define TX_FES_STATUS_USER_PPDU_MCS_MSB 31
  360. #define TX_FES_STATUS_USER_PPDU_MCS_MASK 0x00000000f0000000
  361. /* Description HT_CONTROL
  362. The value of the HT control field that TXPCU inserted in
  363. transmitted frames, for Tx Monitor to report
  364. TXPCU checks the various HT-control-related settings in 'TX_QUEUE_EXTENSION'
  365. TLV to determine the value to insert.
  366. If TXPCU did not overwrite the HT control field, this shall
  367. be set to 0x0.
  368. <legal all>
  369. */
  370. #define TX_FES_STATUS_USER_PPDU_HT_CONTROL_OFFSET 0x0000000000000010
  371. #define TX_FES_STATUS_USER_PPDU_HT_CONTROL_LSB 32
  372. #define TX_FES_STATUS_USER_PPDU_HT_CONTROL_MSB 63
  373. #define TX_FES_STATUS_USER_PPDU_HT_CONTROL_MASK 0xffffffff00000000
  374. #endif // TX_FES_STATUS_USER_PPDU