rxpcu_ppdu_end_info.h 40 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234
  1. /*
  2. * Copyright (c) 2020 The Linux Foundation. All rights reserved.
  3. *
  4. * Permission to use, copy, modify, and/or distribute this software for
  5. * any purpose with or without fee is hereby granted, provided that the
  6. * above copyright notice and this permission notice appear in all
  7. * copies.
  8. *
  9. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
  10. * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
  11. * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
  12. * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
  13. * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
  14. * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
  15. * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  16. * PERFORMANCE OF THIS SOFTWARE.
  17. */
  18. //
  19. // DO NOT EDIT! This file is automatically generated
  20. // These definitions are tied to a particular hardware layout
  21. #ifndef _RXPCU_PPDU_END_INFO_H_
  22. #define _RXPCU_PPDU_END_INFO_H_
  23. #if !defined(__ASSEMBLER__)
  24. #endif
  25. #include "phyrx_abort_request_info.h"
  26. #include "macrx_abort_request_info.h"
  27. // ################ START SUMMARY #################
  28. //
  29. // Dword Fields
  30. // 0 wb_timestamp_lower_32[31:0]
  31. // 1 wb_timestamp_upper_32[31:0]
  32. // 2 rx_antenna[23:0], tx_ht_vht_ack[24], unsupported_mu_nc[25], otp_txbf_disable[26], previous_tlv_corrupted[27], phyrx_abort_request_info_valid[28], macrx_abort_request_info_valid[29], reserved[31:30]
  33. // 3 coex_bt_tx_from_start_of_rx[0], coex_bt_tx_after_start_of_rx[1], coex_wan_tx_from_start_of_rx[2], coex_wan_tx_after_start_of_rx[3], coex_wlan_tx_from_start_of_rx[4], coex_wlan_tx_after_start_of_rx[5], mpdu_delimiter_errors_seen[6], ftm_tm[8:7], dialog_token[16:9], follow_up_dialog_token[24:17], bb_captured_channel[25], bb_captured_reason[28:26], bb_captured_timeout[29], reserved_3[31:30]
  34. // 4 before_mpdu_count_passing_fcs[9:0], before_mpdu_count_failing_fcs[19:10], after_mpdu_count_passing_fcs[29:20], reserved_4[31:30]
  35. // 5 after_mpdu_count_failing_fcs[9:0], reserved_5[31:10]
  36. // 6 phy_timestamp_tx_lower_32[31:0]
  37. // 7 phy_timestamp_tx_upper_32[31:0]
  38. // 8 bb_length[15:0], bb_data[16], reserved_8[19:17], first_bt_broadcast_status_details[31:20]
  39. // 9 rx_ppdu_duration[23:0], reserved_9[31:24]
  40. // 10 ast_index[15:0], ast_index_valid[16], reserved_10[19:17], second_bt_broadcast_status_details[31:20]
  41. // 11 struct phyrx_abort_request_info phyrx_abort_request_info_details;
  42. // 12 struct macrx_abort_request_info macrx_abort_request_info_details;
  43. // 13 rx_ppdu_end_marker[31:0]
  44. //
  45. // ################ END SUMMARY #################
  46. #define NUM_OF_DWORDS_RXPCU_PPDU_END_INFO 14
  47. struct rxpcu_ppdu_end_info {
  48. uint32_t wb_timestamp_lower_32 : 32; //[31:0]
  49. uint32_t wb_timestamp_upper_32 : 32; //[31:0]
  50. uint32_t rx_antenna : 24, //[23:0]
  51. tx_ht_vht_ack : 1, //[24]
  52. unsupported_mu_nc : 1, //[25]
  53. otp_txbf_disable : 1, //[26]
  54. previous_tlv_corrupted : 1, //[27]
  55. phyrx_abort_request_info_valid : 1, //[28]
  56. macrx_abort_request_info_valid : 1, //[29]
  57. reserved : 2; //[31:30]
  58. uint32_t coex_bt_tx_from_start_of_rx : 1, //[0]
  59. coex_bt_tx_after_start_of_rx : 1, //[1]
  60. coex_wan_tx_from_start_of_rx : 1, //[2]
  61. coex_wan_tx_after_start_of_rx : 1, //[3]
  62. coex_wlan_tx_from_start_of_rx : 1, //[4]
  63. coex_wlan_tx_after_start_of_rx : 1, //[5]
  64. mpdu_delimiter_errors_seen : 1, //[6]
  65. ftm_tm : 2, //[8:7]
  66. dialog_token : 8, //[16:9]
  67. follow_up_dialog_token : 8, //[24:17]
  68. bb_captured_channel : 1, //[25]
  69. bb_captured_reason : 3, //[28:26]
  70. bb_captured_timeout : 1, //[29]
  71. reserved_3 : 2; //[31:30]
  72. uint32_t before_mpdu_count_passing_fcs : 10, //[9:0]
  73. before_mpdu_count_failing_fcs : 10, //[19:10]
  74. after_mpdu_count_passing_fcs : 10, //[29:20]
  75. reserved_4 : 2; //[31:30]
  76. uint32_t after_mpdu_count_failing_fcs : 10, //[9:0]
  77. reserved_5 : 22; //[31:10]
  78. uint32_t phy_timestamp_tx_lower_32 : 32; //[31:0]
  79. uint32_t phy_timestamp_tx_upper_32 : 32; //[31:0]
  80. uint32_t bb_length : 16, //[15:0]
  81. bb_data : 1, //[16]
  82. reserved_8 : 3, //[19:17]
  83. first_bt_broadcast_status_details: 12; //[31:20]
  84. uint32_t rx_ppdu_duration : 24, //[23:0]
  85. reserved_9 : 8; //[31:24]
  86. uint32_t ast_index : 16, //[15:0]
  87. ast_index_valid : 1, //[16]
  88. reserved_10 : 3, //[19:17]
  89. second_bt_broadcast_status_details: 12; //[31:20]
  90. struct phyrx_abort_request_info phyrx_abort_request_info_details;
  91. struct macrx_abort_request_info macrx_abort_request_info_details;
  92. uint16_t pre_bt_broadcast_status_details : 12, //[27:16]
  93. reserved_12a : 4; //[31:28]
  94. uint32_t rx_ppdu_end_marker : 32; //[31:0]
  95. };
  96. /*
  97. wb_timestamp_lower_32
  98. WLAN/BT timestamp is a 1 usec resolution timestamp which
  99. does not get updated based on receive beacon like TSF. The
  100. same rules for capturing tsf_timestamp are used to capture
  101. the wb_timestamp. This field represents the lower 32 bits of
  102. the 64-bit timestamp
  103. wb_timestamp_upper_32
  104. WLAN/BT timestamp is a 1 usec resolution timestamp which
  105. does not get updated based on receive beacon like TSF. The
  106. same rules for capturing tsf_timestamp are used to capture
  107. the wb_timestamp. This field represents the upper 32 bits of
  108. the 64-bit timestamp
  109. rx_antenna
  110. Receive antenna value ???
  111. tx_ht_vht_ack
  112. Indicates that a HT or VHT Ack/BA frame was transmitted
  113. in response to this receive packet.
  114. unsupported_mu_nc
  115. Set if MU Nc > 2 in received NDPA.
  116. If this bit is set, even though AID and BSSID are
  117. matched, MAC doesn't send tx_expect_ndp to PHY, because MU
  118. Nc > 2 is not supported in Helium.
  119. otp_txbf_disable
  120. Set if either OTP_SUBFEE_DISABLE or OTP_TXBF_DISABLE is
  121. set and if RXPU receives directed NDPA frame. Then, RXPCU
  122. should not send TX_EXPECT_NDP TLV to SW but set this bit to
  123. inform SW.
  124. previous_tlv_corrupted
  125. When set, the TLV preceding this RXPCU_END_INFO TLV
  126. within the RX_PPDU_END TLV, is corrupted. Not the entire TLV
  127. was received.... Likely due to an abort scenario... If abort
  128. is to blame, see the abort data datastructure for details.
  129. <legal all>
  130. phyrx_abort_request_info_valid
  131. When set, the PHY sent an PHYRX_ABORT_REQUEST TLV to
  132. RXPCU. The abort fields embedded in this TLV contain valid
  133. info.
  134. <legal all>
  135. macrx_abort_request_info_valid
  136. When set, the MAC sent an MACRX_ABORT_REQUEST TLV to
  137. PHYRX. The abort fields embedded in this TLV contain valid
  138. info.
  139. <legal all>
  140. reserved
  141. <legal 0>
  142. coex_bt_tx_from_start_of_rx
  143. Set when BT TX was ongoing when WLAN RX started
  144. coex_bt_tx_after_start_of_rx
  145. coex_wan_tx_from_start_of_rx
  146. Set when WAN TX was ongoing when WLAN RX started
  147. coex_wan_tx_after_start_of_rx
  148. Set when WAN TX started while WLAN RX was already
  149. ongoing
  150. coex_wlan_tx_from_start_of_rx
  151. Set when other WLAN TX was ongoing when WLAN RX started
  152. coex_wlan_tx_after_start_of_rx
  153. Set when other WLAN TX started while WLAN RX was already
  154. ongoing
  155. mpdu_delimiter_errors_seen
  156. When set, MPDU delimiter errors have been detected
  157. during this PPDU reception
  158. ftm_tm
  159. Indicate the timestamp is for the FTM or TM frame
  160. 0: non TM or FTM frame
  161. 1: FTM frame
  162. 2: TM frame
  163. 3: reserved
  164. <legal all>
  165. dialog_token
  166. The dialog token in the FTM or TM frame. Only valid when
  167. the FTM is set. Clear to 254 for a non-FTM frame
  168. <legal all>
  169. follow_up_dialog_token
  170. The follow up dialog token in the FTM or TM frame. Only
  171. valid when the FTM is set. Clear to 0 for a non-FTM frame,
  172. The follow up dialog token in the FTM frame. Only valid when
  173. the FTM is set. Clear to 255 for a non-FTM frame<legal all>
  174. bb_captured_channel
  175. Set by RXPCU when MACRX_FREEZE_CAPTURE_CHANNEL TLV is
  176. sent to PHY, FW check it to correlate current PPDU TLVs with
  177. uploaded channel information.
  178. <legal all>
  179. bb_captured_reason
  180. Copy capture_reason of MACRX_FREEZE_CAPTURE_CHANNEL TLV
  181. to here for FW usage. Valid when bb_captured_channel or
  182. bb_captured_timeout is set.
  183. This field indicates why the MAC asked to capture the
  184. channel
  185. <enum 0 freeze_reason_TM>
  186. <enum 1 freeze_reason_FTM>
  187. <enum 2 freeze_reason_ACK_resp_to_TM_FTM>
  188. <enum 3 freeze_reason_TA_RA_TYPE_FILTER>
  189. <enum 4 freeze_reason_NDPA_NDP>
  190. <enum 5 freeze_reason_ALL_PACKET>
  191. <legal 0-5>
  192. bb_captured_timeout
  193. Set by RxPCU to indicate channel capture condition is
  194. meet, but MACRX_FREEZE_CAPTURE_CHANNEL is not sent to PHY
  195. due to AST long delay, which means the rx_frame_falling edge
  196. to FREEZE TLV ready time exceed the threshold time defined
  197. by RXPCU register FREEZE_TLV_DELAY_CNT_THRESH.
  198. Bb_captured_reason is still valid in this case.
  199. <legal all>
  200. reserved_3
  201. <legal 0>
  202. before_mpdu_count_passing_fcs
  203. Number of MPDUs received in this PPDU that passed the
  204. FCS check before the Coex TX started
  205. The counter saturates at 0x3FF.
  206. <legal all>
  207. before_mpdu_count_failing_fcs
  208. Number of MPDUs received in this PPDU that failed the
  209. FCS check before the Coex TX started
  210. The counter saturates at 0x3FF.
  211. <legal all>
  212. after_mpdu_count_passing_fcs
  213. Number of MPDUs received in this PPDU that passed the
  214. FCS check after the moment the Coex TX started
  215. (Note: The partially received MPDU when the COEX tx
  216. start event came in falls in the after category)
  217. The counter saturates at 0x3FF.
  218. <legal all>
  219. reserved_4
  220. <legal 0>
  221. after_mpdu_count_failing_fcs
  222. Number of MPDUs received in this PPDU that failed the
  223. FCS check after the moment the Coex TX started
  224. (Note: The partially received MPDU when the COEX tx
  225. start event came in falls in the after category)
  226. The counter saturates at 0x3FF.
  227. <legal all>
  228. reserved_5
  229. <legal 0>
  230. phy_timestamp_tx_lower_32
  231. The PHY timestamp in the AMPI of the most recent rising
  232. edge (TODO: of what ???) after the TX_PHY_DESC.  This field
  233. indicates the lower 32 bits of the timestamp
  234. phy_timestamp_tx_upper_32
  235. The PHY timestamp in the AMPI of the most recent rising
  236. edge (TODO: of what ???) after the TX_PHY_DESC.  This field
  237. indicates the upper 32 bits of the timestamp
  238. bb_length
  239. Indicates the number of bytes of baseband information
  240. for PPDUs where the BB descriptor preamble type is 0x80 to
  241. 0xFF which indicates that this is not a normal PPDU but
  242. rather contains baseband debug information.
  243. TODO: Is this still needed ???
  244. bb_data
  245. Indicates that BB data associated with this PPDU will
  246. exist in the receive buffer. The exact contents of this BB
  247. data can be found by decoding the BB TLV in the buffer
  248. associated with the BB data. See vector_fragment in the
  249. Helium_mac_phy_interface.docx
  250. reserved_8
  251. Reserved: HW should fill with 0, FW should ignore.
  252. first_bt_broadcast_status_details
  253. Same contents as field bt_broadcast_status_details for
  254. the first received COEX_STATUS_BROADCAST tlv during this
  255. PPDU reception.
  256. If no COEX_STATUS_BROADCAST tlv is received during this
  257. PPDU reception, this field will be set to 0
  258. For detailed info see doc: TBD
  259. <legal all>
  260. rx_ppdu_duration
  261. The length of this PPDU reception in us
  262. reserved_9
  263. <legal 0>
  264. ast_index
  265. The AST index of the receive Ack/BA. This information
  266. is provided from the TXPCU to the RXPCU for receive Ack/BA
  267. for implicit beamforming.
  268. <legal all>
  269. ast_index_valid
  270. Indicates that ast_index is valid. Should only be set
  271. for receive Ack/BA where single stream implicit sounding is
  272. captured.
  273. reserved_10
  274. <legal 0>
  275. second_bt_broadcast_status_details
  276. Same contents as field bt_broadcast_status_details for
  277. the second received COEX_STATUS_BROADCAST tlv during this
  278. PPDU reception.
  279. If no second COEX_STATUS_BROADCAST tlv is received
  280. during this PPDU reception, this field will be set to 0
  281. For detailed info see doc: TBD
  282. <legal all>
  283. struct phyrx_abort_request_info phyrx_abort_request_info_details
  284. Field only valid when Phyrx_abort_request_info_valid is
  285. set
  286. The reason why PHY generated an abort request
  287. struct macrx_abort_request_info macrx_abort_request_info_details
  288. Field only valid when macrx_abort_request_info_valid is
  289. set
  290. The reason why MACRX generated an abort request
  291. rx_ppdu_end_marker
  292. Field used by SW to double check that their structure
  293. alignment is in sync with what HW has done.
  294. <legal 0xAABBCCDD>
  295. */
  296. /* Description RXPCU_PPDU_END_INFO_0_WB_TIMESTAMP_LOWER_32
  297. WLAN/BT timestamp is a 1 usec resolution timestamp which
  298. does not get updated based on receive beacon like TSF. The
  299. same rules for capturing tsf_timestamp are used to capture
  300. the wb_timestamp. This field represents the lower 32 bits of
  301. the 64-bit timestamp
  302. */
  303. #define RXPCU_PPDU_END_INFO_0_WB_TIMESTAMP_LOWER_32_OFFSET 0x00000000
  304. #define RXPCU_PPDU_END_INFO_0_WB_TIMESTAMP_LOWER_32_LSB 0
  305. #define RXPCU_PPDU_END_INFO_0_WB_TIMESTAMP_LOWER_32_MASK 0xffffffff
  306. /* Description RXPCU_PPDU_END_INFO_1_WB_TIMESTAMP_UPPER_32
  307. WLAN/BT timestamp is a 1 usec resolution timestamp which
  308. does not get updated based on receive beacon like TSF. The
  309. same rules for capturing tsf_timestamp are used to capture
  310. the wb_timestamp. This field represents the upper 32 bits of
  311. the 64-bit timestamp
  312. */
  313. #define RXPCU_PPDU_END_INFO_1_WB_TIMESTAMP_UPPER_32_OFFSET 0x00000004
  314. #define RXPCU_PPDU_END_INFO_1_WB_TIMESTAMP_UPPER_32_LSB 0
  315. #define RXPCU_PPDU_END_INFO_1_WB_TIMESTAMP_UPPER_32_MASK 0xffffffff
  316. /* Description RXPCU_PPDU_END_INFO_2_RX_ANTENNA
  317. Receive antenna value ???
  318. */
  319. #define RXPCU_PPDU_END_INFO_2_RX_ANTENNA_OFFSET 0x00000008
  320. #define RXPCU_PPDU_END_INFO_2_RX_ANTENNA_LSB 0
  321. #define RXPCU_PPDU_END_INFO_2_RX_ANTENNA_MASK 0x00ffffff
  322. /* Description RXPCU_PPDU_END_INFO_2_TX_HT_VHT_ACK
  323. Indicates that a HT or VHT Ack/BA frame was transmitted
  324. in response to this receive packet.
  325. */
  326. #define RXPCU_PPDU_END_INFO_2_TX_HT_VHT_ACK_OFFSET 0x00000008
  327. #define RXPCU_PPDU_END_INFO_2_TX_HT_VHT_ACK_LSB 24
  328. #define RXPCU_PPDU_END_INFO_2_TX_HT_VHT_ACK_MASK 0x01000000
  329. /* Description RXPCU_PPDU_END_INFO_2_UNSUPPORTED_MU_NC
  330. Set if MU Nc > 2 in received NDPA.
  331. If this bit is set, even though AID and BSSID are
  332. matched, MAC doesn't send tx_expect_ndp to PHY, because MU
  333. Nc > 2 is not supported in Helium.
  334. */
  335. #define RXPCU_PPDU_END_INFO_2_UNSUPPORTED_MU_NC_OFFSET 0x00000008
  336. #define RXPCU_PPDU_END_INFO_2_UNSUPPORTED_MU_NC_LSB 25
  337. #define RXPCU_PPDU_END_INFO_2_UNSUPPORTED_MU_NC_MASK 0x02000000
  338. /* Description RXPCU_PPDU_END_INFO_2_OTP_TXBF_DISABLE
  339. Set if either OTP_SUBFEE_DISABLE or OTP_TXBF_DISABLE is
  340. set and if RXPU receives directed NDPA frame. Then, RXPCU
  341. should not send TX_EXPECT_NDP TLV to SW but set this bit to
  342. inform SW.
  343. */
  344. #define RXPCU_PPDU_END_INFO_2_OTP_TXBF_DISABLE_OFFSET 0x00000008
  345. #define RXPCU_PPDU_END_INFO_2_OTP_TXBF_DISABLE_LSB 26
  346. #define RXPCU_PPDU_END_INFO_2_OTP_TXBF_DISABLE_MASK 0x04000000
  347. /* Description RXPCU_PPDU_END_INFO_2_PREVIOUS_TLV_CORRUPTED
  348. When set, the TLV preceding this RXPCU_END_INFO TLV
  349. within the RX_PPDU_END TLV, is corrupted. Not the entire TLV
  350. was received.... Likely due to an abort scenario... If abort
  351. is to blame, see the abort data datastructure for details.
  352. <legal all>
  353. */
  354. #define RXPCU_PPDU_END_INFO_2_PREVIOUS_TLV_CORRUPTED_OFFSET 0x00000008
  355. #define RXPCU_PPDU_END_INFO_2_PREVIOUS_TLV_CORRUPTED_LSB 27
  356. #define RXPCU_PPDU_END_INFO_2_PREVIOUS_TLV_CORRUPTED_MASK 0x08000000
  357. /* Description RXPCU_PPDU_END_INFO_2_PHYRX_ABORT_REQUEST_INFO_VALID
  358. When set, the PHY sent an PHYRX_ABORT_REQUEST TLV to
  359. RXPCU. The abort fields embedded in this TLV contain valid
  360. info.
  361. <legal all>
  362. */
  363. #define RXPCU_PPDU_END_INFO_2_PHYRX_ABORT_REQUEST_INFO_VALID_OFFSET 0x00000008
  364. #define RXPCU_PPDU_END_INFO_2_PHYRX_ABORT_REQUEST_INFO_VALID_LSB 28
  365. #define RXPCU_PPDU_END_INFO_2_PHYRX_ABORT_REQUEST_INFO_VALID_MASK 0x10000000
  366. /* Description RXPCU_PPDU_END_INFO_2_MACRX_ABORT_REQUEST_INFO_VALID
  367. When set, the MAC sent an MACRX_ABORT_REQUEST TLV to
  368. PHYRX. The abort fields embedded in this TLV contain valid
  369. info.
  370. <legal all>
  371. */
  372. #define RXPCU_PPDU_END_INFO_2_MACRX_ABORT_REQUEST_INFO_VALID_OFFSET 0x00000008
  373. #define RXPCU_PPDU_END_INFO_2_MACRX_ABORT_REQUEST_INFO_VALID_LSB 29
  374. #define RXPCU_PPDU_END_INFO_2_MACRX_ABORT_REQUEST_INFO_VALID_MASK 0x20000000
  375. /* Description RXPCU_PPDU_END_INFO_2_RESERVED
  376. <legal 0>
  377. */
  378. #define RXPCU_PPDU_END_INFO_2_RESERVED_OFFSET 0x00000008
  379. #define RXPCU_PPDU_END_INFO_2_RESERVED_LSB 30
  380. #define RXPCU_PPDU_END_INFO_2_RESERVED_MASK 0xc0000000
  381. /* Description RXPCU_PPDU_END_INFO_3_COEX_BT_TX_FROM_START_OF_RX
  382. Set when BT TX was ongoing when WLAN RX started
  383. */
  384. #define RXPCU_PPDU_END_INFO_3_COEX_BT_TX_FROM_START_OF_RX_OFFSET 0x0000000c
  385. #define RXPCU_PPDU_END_INFO_3_COEX_BT_TX_FROM_START_OF_RX_LSB 0
  386. #define RXPCU_PPDU_END_INFO_3_COEX_BT_TX_FROM_START_OF_RX_MASK 0x00000001
  387. /* Description RXPCU_PPDU_END_INFO_3_COEX_BT_TX_AFTER_START_OF_RX
  388. */
  389. #define RXPCU_PPDU_END_INFO_3_COEX_BT_TX_AFTER_START_OF_RX_OFFSET 0x0000000c
  390. #define RXPCU_PPDU_END_INFO_3_COEX_BT_TX_AFTER_START_OF_RX_LSB 1
  391. #define RXPCU_PPDU_END_INFO_3_COEX_BT_TX_AFTER_START_OF_RX_MASK 0x00000002
  392. /* Description RXPCU_PPDU_END_INFO_3_COEX_WAN_TX_FROM_START_OF_RX
  393. Set when WAN TX was ongoing when WLAN RX started
  394. */
  395. #define RXPCU_PPDU_END_INFO_3_COEX_WAN_TX_FROM_START_OF_RX_OFFSET 0x0000000c
  396. #define RXPCU_PPDU_END_INFO_3_COEX_WAN_TX_FROM_START_OF_RX_LSB 2
  397. #define RXPCU_PPDU_END_INFO_3_COEX_WAN_TX_FROM_START_OF_RX_MASK 0x00000004
  398. /* Description RXPCU_PPDU_END_INFO_3_COEX_WAN_TX_AFTER_START_OF_RX
  399. Set when WAN TX started while WLAN RX was already
  400. ongoing
  401. */
  402. #define RXPCU_PPDU_END_INFO_3_COEX_WAN_TX_AFTER_START_OF_RX_OFFSET 0x0000000c
  403. #define RXPCU_PPDU_END_INFO_3_COEX_WAN_TX_AFTER_START_OF_RX_LSB 3
  404. #define RXPCU_PPDU_END_INFO_3_COEX_WAN_TX_AFTER_START_OF_RX_MASK 0x00000008
  405. /* Description RXPCU_PPDU_END_INFO_3_COEX_WLAN_TX_FROM_START_OF_RX
  406. Set when other WLAN TX was ongoing when WLAN RX started
  407. */
  408. #define RXPCU_PPDU_END_INFO_3_COEX_WLAN_TX_FROM_START_OF_RX_OFFSET 0x0000000c
  409. #define RXPCU_PPDU_END_INFO_3_COEX_WLAN_TX_FROM_START_OF_RX_LSB 4
  410. #define RXPCU_PPDU_END_INFO_3_COEX_WLAN_TX_FROM_START_OF_RX_MASK 0x00000010
  411. /* Description RXPCU_PPDU_END_INFO_3_COEX_WLAN_TX_AFTER_START_OF_RX
  412. Set when other WLAN TX started while WLAN RX was already
  413. ongoing
  414. */
  415. #define RXPCU_PPDU_END_INFO_3_COEX_WLAN_TX_AFTER_START_OF_RX_OFFSET 0x0000000c
  416. #define RXPCU_PPDU_END_INFO_3_COEX_WLAN_TX_AFTER_START_OF_RX_LSB 5
  417. #define RXPCU_PPDU_END_INFO_3_COEX_WLAN_TX_AFTER_START_OF_RX_MASK 0x00000020
  418. /* Description RXPCU_PPDU_END_INFO_3_MPDU_DELIMITER_ERRORS_SEEN
  419. When set, MPDU delimiter errors have been detected
  420. during this PPDU reception
  421. */
  422. #define RXPCU_PPDU_END_INFO_3_MPDU_DELIMITER_ERRORS_SEEN_OFFSET 0x0000000c
  423. #define RXPCU_PPDU_END_INFO_3_MPDU_DELIMITER_ERRORS_SEEN_LSB 6
  424. #define RXPCU_PPDU_END_INFO_3_MPDU_DELIMITER_ERRORS_SEEN_MASK 0x00000040
  425. /* Description RXPCU_PPDU_END_INFO_3_FTM_TM
  426. Indicate the timestamp is for the FTM or TM frame
  427. 0: non TM or FTM frame
  428. 1: FTM frame
  429. 2: TM frame
  430. 3: reserved
  431. <legal all>
  432. */
  433. #define RXPCU_PPDU_END_INFO_3_FTM_TM_OFFSET 0x0000000c
  434. #define RXPCU_PPDU_END_INFO_3_FTM_TM_LSB 7
  435. #define RXPCU_PPDU_END_INFO_3_FTM_TM_MASK 0x00000180
  436. /* Description RXPCU_PPDU_END_INFO_3_DIALOG_TOKEN
  437. The dialog token in the FTM or TM frame. Only valid when
  438. the FTM is set. Clear to 254 for a non-FTM frame
  439. <legal all>
  440. */
  441. #define RXPCU_PPDU_END_INFO_3_DIALOG_TOKEN_OFFSET 0x0000000c
  442. #define RXPCU_PPDU_END_INFO_3_DIALOG_TOKEN_LSB 9
  443. #define RXPCU_PPDU_END_INFO_3_DIALOG_TOKEN_MASK 0x0001fe00
  444. /* Description RXPCU_PPDU_END_INFO_3_FOLLOW_UP_DIALOG_TOKEN
  445. The follow up dialog token in the FTM or TM frame. Only
  446. valid when the FTM is set. Clear to 0 for a non-FTM frame,
  447. The follow up dialog token in the FTM frame. Only valid when
  448. the FTM is set. Clear to 255 for a non-FTM frame<legal all>
  449. */
  450. #define RXPCU_PPDU_END_INFO_3_FOLLOW_UP_DIALOG_TOKEN_OFFSET 0x0000000c
  451. #define RXPCU_PPDU_END_INFO_3_FOLLOW_UP_DIALOG_TOKEN_LSB 17
  452. #define RXPCU_PPDU_END_INFO_3_FOLLOW_UP_DIALOG_TOKEN_MASK 0x01fe0000
  453. /* Description RXPCU_PPDU_END_INFO_3_BB_CAPTURED_CHANNEL
  454. Set by RXPCU when MACRX_FREEZE_CAPTURE_CHANNEL TLV is
  455. sent to PHY, FW check it to correlate current PPDU TLVs with
  456. uploaded channel information.
  457. <legal all>
  458. */
  459. #define RXPCU_PPDU_END_INFO_3_BB_CAPTURED_CHANNEL_OFFSET 0x0000000c
  460. #define RXPCU_PPDU_END_INFO_3_BB_CAPTURED_CHANNEL_LSB 25
  461. #define RXPCU_PPDU_END_INFO_3_BB_CAPTURED_CHANNEL_MASK 0x02000000
  462. /* Description RXPCU_PPDU_END_INFO_3_BB_CAPTURED_REASON
  463. Copy capture_reason of MACRX_FREEZE_CAPTURE_CHANNEL TLV
  464. to here for FW usage. Valid when bb_captured_channel or
  465. bb_captured_timeout is set.
  466. This field indicates why the MAC asked to capture the
  467. channel
  468. <enum 0 freeze_reason_TM>
  469. <enum 1 freeze_reason_FTM>
  470. <enum 2 freeze_reason_ACK_resp_to_TM_FTM>
  471. <enum 3 freeze_reason_TA_RA_TYPE_FILTER>
  472. <enum 4 freeze_reason_NDPA_NDP>
  473. <enum 5 freeze_reason_ALL_PACKET>
  474. <legal 0-5>
  475. */
  476. #define RXPCU_PPDU_END_INFO_3_BB_CAPTURED_REASON_OFFSET 0x0000000c
  477. #define RXPCU_PPDU_END_INFO_3_BB_CAPTURED_REASON_LSB 26
  478. #define RXPCU_PPDU_END_INFO_3_BB_CAPTURED_REASON_MASK 0x1c000000
  479. /* Description RXPCU_PPDU_END_INFO_3_BB_CAPTURED_TIMEOUT
  480. Set by RxPCU to indicate channel capture condition is
  481. meet, but MACRX_FREEZE_CAPTURE_CHANNEL is not sent to PHY
  482. due to AST long delay, which means the rx_frame_falling edge
  483. to FREEZE TLV ready time exceed the threshold time defined
  484. by RXPCU register FREEZE_TLV_DELAY_CNT_THRESH.
  485. Bb_captured_reason is still valid in this case.
  486. <legal all>
  487. */
  488. #define RXPCU_PPDU_END_INFO_3_BB_CAPTURED_TIMEOUT_OFFSET 0x0000000c
  489. #define RXPCU_PPDU_END_INFO_3_BB_CAPTURED_TIMEOUT_LSB 29
  490. #define RXPCU_PPDU_END_INFO_3_BB_CAPTURED_TIMEOUT_MASK 0x20000000
  491. /* Description RXPCU_PPDU_END_INFO_3_RESERVED_3
  492. <legal 0>
  493. */
  494. #define RXPCU_PPDU_END_INFO_3_RESERVED_3_OFFSET 0x0000000c
  495. #define RXPCU_PPDU_END_INFO_3_RESERVED_3_LSB 30
  496. #define RXPCU_PPDU_END_INFO_3_RESERVED_3_MASK 0xc0000000
  497. /* Description RXPCU_PPDU_END_INFO_4_BEFORE_MPDU_COUNT_PASSING_FCS
  498. Number of MPDUs received in this PPDU that passed the
  499. FCS check before the Coex TX started
  500. The counter saturates at 0x3FF.
  501. <legal all>
  502. */
  503. #define RXPCU_PPDU_END_INFO_4_BEFORE_MPDU_COUNT_PASSING_FCS_OFFSET 0x00000010
  504. #define RXPCU_PPDU_END_INFO_4_BEFORE_MPDU_COUNT_PASSING_FCS_LSB 0
  505. #define RXPCU_PPDU_END_INFO_4_BEFORE_MPDU_COUNT_PASSING_FCS_MASK 0x000003ff
  506. /* Description RXPCU_PPDU_END_INFO_4_BEFORE_MPDU_COUNT_FAILING_FCS
  507. Number of MPDUs received in this PPDU that failed the
  508. FCS check before the Coex TX started
  509. The counter saturates at 0x3FF.
  510. <legal all>
  511. */
  512. #define RXPCU_PPDU_END_INFO_4_BEFORE_MPDU_COUNT_FAILING_FCS_OFFSET 0x00000010
  513. #define RXPCU_PPDU_END_INFO_4_BEFORE_MPDU_COUNT_FAILING_FCS_LSB 10
  514. #define RXPCU_PPDU_END_INFO_4_BEFORE_MPDU_COUNT_FAILING_FCS_MASK 0x000ffc00
  515. /* Description RXPCU_PPDU_END_INFO_4_AFTER_MPDU_COUNT_PASSING_FCS
  516. Number of MPDUs received in this PPDU that passed the
  517. FCS check after the moment the Coex TX started
  518. (Note: The partially received MPDU when the COEX tx
  519. start event came in falls in the after category)
  520. The counter saturates at 0x3FF.
  521. <legal all>
  522. */
  523. #define RXPCU_PPDU_END_INFO_4_AFTER_MPDU_COUNT_PASSING_FCS_OFFSET 0x00000010
  524. #define RXPCU_PPDU_END_INFO_4_AFTER_MPDU_COUNT_PASSING_FCS_LSB 20
  525. #define RXPCU_PPDU_END_INFO_4_AFTER_MPDU_COUNT_PASSING_FCS_MASK 0x3ff00000
  526. /* Description RXPCU_PPDU_END_INFO_4_RESERVED_4
  527. <legal 0>
  528. */
  529. #define RXPCU_PPDU_END_INFO_4_RESERVED_4_OFFSET 0x00000010
  530. #define RXPCU_PPDU_END_INFO_4_RESERVED_4_LSB 30
  531. #define RXPCU_PPDU_END_INFO_4_RESERVED_4_MASK 0xc0000000
  532. /* Description RXPCU_PPDU_END_INFO_5_AFTER_MPDU_COUNT_FAILING_FCS
  533. Number of MPDUs received in this PPDU that failed the
  534. FCS check after the moment the Coex TX started
  535. (Note: The partially received MPDU when the COEX tx
  536. start event came in falls in the after category)
  537. The counter saturates at 0x3FF.
  538. <legal all>
  539. */
  540. #define RXPCU_PPDU_END_INFO_5_AFTER_MPDU_COUNT_FAILING_FCS_OFFSET 0x00000014
  541. #define RXPCU_PPDU_END_INFO_5_AFTER_MPDU_COUNT_FAILING_FCS_LSB 0
  542. #define RXPCU_PPDU_END_INFO_5_AFTER_MPDU_COUNT_FAILING_FCS_MASK 0x000003ff
  543. /* Description RXPCU_PPDU_END_INFO_5_RESERVED_5
  544. <legal 0>
  545. */
  546. #define RXPCU_PPDU_END_INFO_5_RESERVED_5_OFFSET 0x00000014
  547. #define RXPCU_PPDU_END_INFO_5_RESERVED_5_LSB 10
  548. #define RXPCU_PPDU_END_INFO_5_RESERVED_5_MASK 0xfffffc00
  549. /* Description RXPCU_PPDU_END_INFO_6_PHY_TIMESTAMP_TX_LOWER_32
  550. The PHY timestamp in the AMPI of the most recent rising
  551. edge (TODO: of what ???) after the TX_PHY_DESC.  This field
  552. indicates the lower 32 bits of the timestamp
  553. */
  554. #define RXPCU_PPDU_END_INFO_6_PHY_TIMESTAMP_TX_LOWER_32_OFFSET 0x00000018
  555. #define RXPCU_PPDU_END_INFO_6_PHY_TIMESTAMP_TX_LOWER_32_LSB 0
  556. #define RXPCU_PPDU_END_INFO_6_PHY_TIMESTAMP_TX_LOWER_32_MASK 0xffffffff
  557. /* Description RXPCU_PPDU_END_INFO_7_PHY_TIMESTAMP_TX_UPPER_32
  558. The PHY timestamp in the AMPI of the most recent rising
  559. edge (TODO: of what ???) after the TX_PHY_DESC.  This field
  560. indicates the upper 32 bits of the timestamp
  561. */
  562. #define RXPCU_PPDU_END_INFO_7_PHY_TIMESTAMP_TX_UPPER_32_OFFSET 0x0000001c
  563. #define RXPCU_PPDU_END_INFO_7_PHY_TIMESTAMP_TX_UPPER_32_LSB 0
  564. #define RXPCU_PPDU_END_INFO_7_PHY_TIMESTAMP_TX_UPPER_32_MASK 0xffffffff
  565. /* Description RXPCU_PPDU_END_INFO_8_BB_LENGTH
  566. Indicates the number of bytes of baseband information
  567. for PPDUs where the BB descriptor preamble type is 0x80 to
  568. 0xFF which indicates that this is not a normal PPDU but
  569. rather contains baseband debug information.
  570. TODO: Is this still needed ???
  571. */
  572. #define RXPCU_PPDU_END_INFO_8_BB_LENGTH_OFFSET 0x00000020
  573. #define RXPCU_PPDU_END_INFO_8_BB_LENGTH_LSB 0
  574. #define RXPCU_PPDU_END_INFO_8_BB_LENGTH_MASK 0x0000ffff
  575. /* Description RXPCU_PPDU_END_INFO_8_BB_DATA
  576. Indicates that BB data associated with this PPDU will
  577. exist in the receive buffer. The exact contents of this BB
  578. data can be found by decoding the BB TLV in the buffer
  579. associated with the BB data. See vector_fragment in the
  580. Helium_mac_phy_interface.docx
  581. */
  582. #define RXPCU_PPDU_END_INFO_8_BB_DATA_OFFSET 0x00000020
  583. #define RXPCU_PPDU_END_INFO_8_BB_DATA_LSB 16
  584. #define RXPCU_PPDU_END_INFO_8_BB_DATA_MASK 0x00010000
  585. /* Description RXPCU_PPDU_END_INFO_8_RESERVED_8
  586. Reserved: HW should fill with 0, FW should ignore.
  587. */
  588. #define RXPCU_PPDU_END_INFO_8_RESERVED_8_OFFSET 0x00000020
  589. #define RXPCU_PPDU_END_INFO_8_RESERVED_8_LSB 17
  590. #define RXPCU_PPDU_END_INFO_8_RESERVED_8_MASK 0x000e0000
  591. /* Description RXPCU_PPDU_END_INFO_8_FIRST_BT_BROADCAST_STATUS_DETAILS
  592. Same contents as field bt_broadcast_status_details for
  593. the first received COEX_STATUS_BROADCAST tlv during this
  594. PPDU reception.
  595. If no COEX_STATUS_BROADCAST tlv is received during this
  596. PPDU reception, this field will be set to 0
  597. For detailed info see doc: TBD
  598. <legal all>
  599. */
  600. #define RXPCU_PPDU_END_INFO_8_FIRST_BT_BROADCAST_STATUS_DETAILS_OFFSET 0x00000020
  601. #define RXPCU_PPDU_END_INFO_8_FIRST_BT_BROADCAST_STATUS_DETAILS_LSB 20
  602. #define RXPCU_PPDU_END_INFO_8_FIRST_BT_BROADCAST_STATUS_DETAILS_MASK 0xfff00000
  603. /* Description RXPCU_PPDU_END_INFO_9_RX_PPDU_DURATION
  604. The length of this PPDU reception in us
  605. */
  606. #define RXPCU_PPDU_END_INFO_9_RX_PPDU_DURATION_OFFSET 0x00000024
  607. #define RXPCU_PPDU_END_INFO_9_RX_PPDU_DURATION_LSB 0
  608. #define RXPCU_PPDU_END_INFO_9_RX_PPDU_DURATION_MASK 0x00ffffff
  609. /* Description RXPCU_PPDU_END_INFO_9_RESERVED_9
  610. <legal 0>
  611. */
  612. #define RXPCU_PPDU_END_INFO_9_RESERVED_9_OFFSET 0x00000024
  613. #define RXPCU_PPDU_END_INFO_9_RESERVED_9_LSB 24
  614. #define RXPCU_PPDU_END_INFO_9_RESERVED_9_MASK 0xff000000
  615. /* Description RXPCU_PPDU_END_INFO_10_AST_INDEX
  616. The AST index of the receive Ack/BA. This information
  617. is provided from the TXPCU to the RXPCU for receive Ack/BA
  618. for implicit beamforming.
  619. <legal all>
  620. */
  621. #define RXPCU_PPDU_END_INFO_10_AST_INDEX_OFFSET 0x00000028
  622. #define RXPCU_PPDU_END_INFO_10_AST_INDEX_LSB 0
  623. #define RXPCU_PPDU_END_INFO_10_AST_INDEX_MASK 0x0000ffff
  624. /* Description RXPCU_PPDU_END_INFO_10_AST_INDEX_VALID
  625. Indicates that ast_index is valid. Should only be set
  626. for receive Ack/BA where single stream implicit sounding is
  627. captured.
  628. */
  629. #define RXPCU_PPDU_END_INFO_10_AST_INDEX_VALID_OFFSET 0x00000028
  630. #define RXPCU_PPDU_END_INFO_10_AST_INDEX_VALID_LSB 16
  631. #define RXPCU_PPDU_END_INFO_10_AST_INDEX_VALID_MASK 0x00010000
  632. /* Description RXPCU_PPDU_END_INFO_10_RESERVED_10
  633. <legal 0>
  634. */
  635. #define RXPCU_PPDU_END_INFO_10_RESERVED_10_OFFSET 0x00000028
  636. #define RXPCU_PPDU_END_INFO_10_RESERVED_10_LSB 17
  637. #define RXPCU_PPDU_END_INFO_10_RESERVED_10_MASK 0x000e0000
  638. /* Description RXPCU_PPDU_END_INFO_10_SECOND_BT_BROADCAST_STATUS_DETAILS
  639. Same contents as field bt_broadcast_status_details for
  640. the second received COEX_STATUS_BROADCAST tlv during this
  641. PPDU reception.
  642. If no second COEX_STATUS_BROADCAST tlv is received
  643. during this PPDU reception, this field will be set to 0
  644. For detailed info see doc: TBD
  645. <legal all>
  646. */
  647. #define RXPCU_PPDU_END_INFO_10_SECOND_BT_BROADCAST_STATUS_DETAILS_OFFSET 0x00000028
  648. #define RXPCU_PPDU_END_INFO_10_SECOND_BT_BROADCAST_STATUS_DETAILS_LSB 20
  649. #define RXPCU_PPDU_END_INFO_10_SECOND_BT_BROADCAST_STATUS_DETAILS_MASK 0xfff00000
  650. /* EXTERNAL REFERENCE : struct phyrx_abort_request_info phyrx_abort_request_info_details */
  651. /* Description RXPCU_PPDU_END_INFO_11_PHYRX_ABORT_REQUEST_INFO_DETAILS_PHYRX_ABORT_REASON
  652. <enum 0 phyrx_err_phy_off> Reception aborted due to
  653. receiving a PHY_OFF TLV
  654. <enum 1 phyrx_err_synth_off>
  655. <enum 2 phyrx_err_ofdma_timing>
  656. <enum 3 phyrx_err_ofdma_signal_parity>
  657. <enum 4 phyrx_err_ofdma_rate_illegal>
  658. <enum 5 phyrx_err_ofdma_length_illegal>
  659. <enum 6 phyrx_err_ofdma_restart>
  660. <enum 7 phyrx_err_ofdma_service>
  661. <enum 8 phyrx_err_ppdu_ofdma_power_drop>
  662. <enum 9 phyrx_err_cck_blokker>
  663. <enum 10 phyrx_err_cck_timing>
  664. <enum 11 phyrx_err_cck_header_crc>
  665. <enum 12 phyrx_err_cck_rate_illegal>
  666. <enum 13 phyrx_err_cck_length_illegal>
  667. <enum 14 phyrx_err_cck_restart>
  668. <enum 15 phyrx_err_cck_service>
  669. <enum 16 phyrx_err_cck_power_drop>
  670. <enum 17 phyrx_err_ht_crc_err>
  671. <enum 18 phyrx_err_ht_length_illegal>
  672. <enum 19 phyrx_err_ht_rate_illegal>
  673. <enum 20 phyrx_err_ht_zlf>
  674. <enum 21 phyrx_err_false_radar_ext>
  675. <enum 22 phyrx_err_green_field>
  676. <enum 23 phyrx_err_bw_gt_dyn_bw>
  677. <enum 24 phyrx_err_leg_ht_mismatch>
  678. <enum 25 phyrx_err_vht_crc_error>
  679. <enum 26 phyrx_err_vht_siga_unsupported>
  680. <enum 27 phyrx_err_vht_lsig_len_invalid>
  681. <enum 28 phyrx_err_vht_ndp_or_zlf>
  682. <enum 29 phyrx_err_vht_nsym_lt_zero>
  683. <enum 30 phyrx_err_vht_rx_extra_symbol_mismatch>
  684. <enum 31 phyrx_err_vht_rx_skip_group_id0>
  685. <enum 32 phyrx_err_vht_rx_skip_group_id1to62>
  686. <enum 33 phyrx_err_vht_rx_skip_group_id63>
  687. <enum 34 phyrx_err_ofdm_ldpc_decoder_disabled>
  688. <enum 35 phyrx_err_defer_nap>
  689. <enum 36 phyrx_err_fdomain_timeout>
  690. <enum 37 phyrx_err_lsig_rel_check>
  691. <enum 38 phyrx_err_bt_collision>
  692. <enum 39 phyrx_err_unsupported_mu_feedback>
  693. <enum 40 phyrx_err_ppdu_tx_interrupt_rx>
  694. <enum 41 phyrx_err_unsupported_cbf>
  695. <enum 42 phyrx_err_other> Should not really be used. If
  696. needed, ask for documentation update
  697. <enum 43 phyrx_err_he_siga_unsupported > <enum 44
  698. phyrx_err_he_crc_error > <enum 45
  699. phyrx_err_he_sigb_unsupported > <enum 46
  700. phyrx_err_he_mu_mode_unsupported > <enum 47
  701. phyrx_err_he_ndp_or_zlf > <enum 48 phyrx_err_he_nsym_lt_zero
  702. > <enum 49 phyrx_err_he_ru_params_unsupported > <enum 50
  703. phyrx_err_he_num_users_unsupported ><enum 51
  704. phyrx_err_he_sounding_params_unsupported >
  705. <enum 52 phyrx_err_MU_UL_no_power_detected>
  706. <enum 53 phyrx_err_MU_UL_not_for_me>
  707. <legal 0 - 53>
  708. */
  709. #define RXPCU_PPDU_END_INFO_11_PHYRX_ABORT_REQUEST_INFO_DETAILS_PHYRX_ABORT_REASON_OFFSET 0x0000002c
  710. #define RXPCU_PPDU_END_INFO_11_PHYRX_ABORT_REQUEST_INFO_DETAILS_PHYRX_ABORT_REASON_LSB 0
  711. #define RXPCU_PPDU_END_INFO_11_PHYRX_ABORT_REQUEST_INFO_DETAILS_PHYRX_ABORT_REASON_MASK 0x000000ff
  712. /* Description RXPCU_PPDU_END_INFO_11_PHYRX_ABORT_REQUEST_INFO_DETAILS_PHY_ENTERS_NAP_STATE
  713. When set, PHY enters PHY NAP state after sending this
  714. abort
  715. Note that nap and defer state are mutually exclusive.
  716. Field put pro-actively in place....usage still to be
  717. agreed upon.
  718. <legal all>
  719. */
  720. #define RXPCU_PPDU_END_INFO_11_PHYRX_ABORT_REQUEST_INFO_DETAILS_PHY_ENTERS_NAP_STATE_OFFSET 0x0000002c
  721. #define RXPCU_PPDU_END_INFO_11_PHYRX_ABORT_REQUEST_INFO_DETAILS_PHY_ENTERS_NAP_STATE_LSB 8
  722. #define RXPCU_PPDU_END_INFO_11_PHYRX_ABORT_REQUEST_INFO_DETAILS_PHY_ENTERS_NAP_STATE_MASK 0x00000100
  723. /* Description RXPCU_PPDU_END_INFO_11_PHYRX_ABORT_REQUEST_INFO_DETAILS_PHY_ENTERS_DEFER_STATE
  724. When set, PHY enters PHY defer state after sending this
  725. abort
  726. Note that nap and defer state are mutually exclusive.
  727. Field put pro-actively in place....usage still to be
  728. agreed upon.
  729. <legal all>
  730. */
  731. #define RXPCU_PPDU_END_INFO_11_PHYRX_ABORT_REQUEST_INFO_DETAILS_PHY_ENTERS_DEFER_STATE_OFFSET 0x0000002c
  732. #define RXPCU_PPDU_END_INFO_11_PHYRX_ABORT_REQUEST_INFO_DETAILS_PHY_ENTERS_DEFER_STATE_LSB 9
  733. #define RXPCU_PPDU_END_INFO_11_PHYRX_ABORT_REQUEST_INFO_DETAILS_PHY_ENTERS_DEFER_STATE_MASK 0x00000200
  734. /* Description RXPCU_PPDU_END_INFO_11_PHYRX_ABORT_REQUEST_INFO_DETAILS_RESERVED_0
  735. <legal 0>
  736. */
  737. #define RXPCU_PPDU_END_INFO_11_PHYRX_ABORT_REQUEST_INFO_DETAILS_RESERVED_0_OFFSET 0x0000002c
  738. #define RXPCU_PPDU_END_INFO_11_PHYRX_ABORT_REQUEST_INFO_DETAILS_RESERVED_0_LSB 10
  739. #define RXPCU_PPDU_END_INFO_11_PHYRX_ABORT_REQUEST_INFO_DETAILS_RESERVED_0_MASK 0x0000fc00
  740. /* Description RXPCU_PPDU_END_INFO_11_PHYRX_ABORT_REQUEST_INFO_DETAILS_RECEIVE_DURATION
  741. The remaining receive duration of this PPDU in the
  742. medium (in us). When PHY does not know this duration when
  743. this TLV is generated, the field will be set to 0.
  744. The timing reference point is the reception by the MAC
  745. of this TLV. The value shall be accurate to within 2us.
  746. In case Phy_enters_nap_state and/or
  747. Phy_enters_defer_state is set, there is a possibility that
  748. MAC PMM can also decide to go into a low(er) power state.
  749. <legal all>
  750. */
  751. #define RXPCU_PPDU_END_INFO_11_PHYRX_ABORT_REQUEST_INFO_DETAILS_RECEIVE_DURATION_OFFSET 0x0000002c
  752. #define RXPCU_PPDU_END_INFO_11_PHYRX_ABORT_REQUEST_INFO_DETAILS_RECEIVE_DURATION_LSB 16
  753. #define RXPCU_PPDU_END_INFO_11_PHYRX_ABORT_REQUEST_INFO_DETAILS_RECEIVE_DURATION_MASK 0xffff0000
  754. /* EXTERNAL REFERENCE : struct macrx_abort_request_info macrx_abort_request_info_details */
  755. /* Description RXPCU_PPDU_END_INFO_12_MACRX_ABORT_REQUEST_INFO_DETAILS_MACRX_ABORT_REASON
  756. <enum 0 macrx_abort_sw_initiated>
  757. <enum 1 macrx_abort_obss_reception> Upon receiving this
  758. abort reason, PHY should stop reception of the current frame
  759. and go back into a search mode
  760. <enum 2 macrx_abort_other>
  761. <enum 3 macrx_abort_sw_initiated_channel_switch > MAC FW
  762. issued an abort for channel switch reasons
  763. <enum 4 macrx_abort_sw_initiated_power_save > MAC FW
  764. issued an abort power save reasons
  765. <enum 5 macrx_abort_too_much_bad_data > RXPCU is
  766. terminating the current ongoing reception, as the data that
  767. MAC is receiving seems to be all garbage... The PER is too
  768. high, or in case of MU UL, Likely the trigger frame never
  769. got properly received by any of the targeted MU UL devices.
  770. After the abort, PHYRX can resume a normal search mode.
  771. <legal 0-5>
  772. */
  773. #define RXPCU_PPDU_END_INFO_12_MACRX_ABORT_REQUEST_INFO_DETAILS_MACRX_ABORT_REASON_OFFSET 0x00000030
  774. #define RXPCU_PPDU_END_INFO_12_MACRX_ABORT_REQUEST_INFO_DETAILS_MACRX_ABORT_REASON_LSB 0
  775. #define RXPCU_PPDU_END_INFO_12_MACRX_ABORT_REQUEST_INFO_DETAILS_MACRX_ABORT_REASON_MASK 0x000000ff
  776. /* Description RXPCU_PPDU_END_INFO_12_MACRX_ABORT_REQUEST_INFO_DETAILS_RESERVED_0
  777. <legal 0>
  778. */
  779. #define RXPCU_PPDU_END_INFO_12_MACRX_ABORT_REQUEST_INFO_DETAILS_RESERVED_0_OFFSET 0x00000030
  780. #define RXPCU_PPDU_END_INFO_12_MACRX_ABORT_REQUEST_INFO_DETAILS_RESERVED_0_LSB 8
  781. #define RXPCU_PPDU_END_INFO_12_MACRX_ABORT_REQUEST_INFO_DETAILS_RESERVED_0_MASK 0x0000ff00
  782. /* Description RXPCU_PPDU_END_INFO_13_RX_PPDU_END_MARKER
  783. Field used by SW to double check that their structure
  784. alignment is in sync with what HW has done.
  785. <legal 0xAABBCCDD>
  786. */
  787. #define RXPCU_PPDU_END_INFO_13_RX_PPDU_END_MARKER_OFFSET 0x00000034
  788. #define RXPCU_PPDU_END_INFO_13_RX_PPDU_END_MARKER_LSB 0
  789. #define RXPCU_PPDU_END_INFO_13_RX_PPDU_END_MARKER_MASK 0xffffffff
  790. #endif // _RXPCU_PPDU_END_INFO_H_