tx_fes_status_user_ppdu.h 23 KB

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