rxpcu_ppdu_end_info.h 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758
  1. /*
  2. * Copyright (c) 2018 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. // $ATH_LICENSE_HW_HDR_C$
  19. //
  20. // DO NOT EDIT! This file is automatically generated
  21. // These definitions are tied to a particular hardware layout
  22. #ifndef _RXPCU_PPDU_END_INFO_H_
  23. #define _RXPCU_PPDU_END_INFO_H_
  24. #if !defined(__ASSEMBLER__)
  25. #endif
  26. #include "phyrx_abort_request_info.h"
  27. #include "macrx_abort_request_info.h"
  28. // ################ START SUMMARY #################
  29. //
  30. // Dword Fields
  31. // 0 wb_timestamp_lower_32[31:0]
  32. // 1 wb_timestamp_upper_32[31:0]
  33. // 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]
  34. // 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], reserved_3[31:26]
  35. // 4 before_mpdu_count_passing_fcs[7:0], before_mpdu_count_failing_fcs[15:8], after_mpdu_count_passing_fcs[23:16], after_mpdu_count_failing_fcs[31:24]
  36. // 5 phy_timestamp_tx_lower_32[31:0]
  37. // 6 phy_timestamp_tx_upper_32[31:0]
  38. // 7 bb_length[15:0], bb_data[16], reserved_7[31:17]
  39. // 8 rx_ppdu_duration[23:0], reserved_8[31:24]
  40. // 9 ast_index[15:0], ast_index_valid[16], reserved_9[31:17]
  41. // 10 struct phyrx_abort_request_info phyrx_abort_request_info_details;
  42. // 11 struct macrx_abort_request_info macrx_abort_request_info_details;
  43. // 12 rx_ppdu_end_marker[31:0]
  44. //
  45. // ################ END SUMMARY #################
  46. #define NUM_OF_DWORDS_RXPCU_PPDU_END_INFO 13
  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. reserved_3 : 6; //[31:26]
  70. uint32_t before_mpdu_count_passing_fcs : 8, //[7:0]
  71. before_mpdu_count_failing_fcs : 8, //[15:8]
  72. after_mpdu_count_passing_fcs : 8, //[23:16]
  73. after_mpdu_count_failing_fcs : 8; //[31:24]
  74. uint32_t phy_timestamp_tx_lower_32 : 32; //[31:0]
  75. uint32_t phy_timestamp_tx_upper_32 : 32; //[31:0]
  76. uint32_t bb_length : 16, //[15:0]
  77. bb_data : 1, //[16]
  78. reserved_7 : 15; //[31:17]
  79. uint32_t rx_ppdu_duration : 24, //[23:0]
  80. reserved_8 : 8; //[31:24]
  81. uint32_t ast_index : 16, //[15:0]
  82. ast_index_valid : 1, //[16]
  83. reserved_9 : 15; //[31:17]
  84. struct phyrx_abort_request_info phyrx_abort_request_info_details;
  85. struct macrx_abort_request_info macrx_abort_request_info_details;
  86. uint16_t reserved_after_struct16 : 16; //[31:16]
  87. uint32_t rx_ppdu_end_marker : 32; //[31:0]
  88. };
  89. /*
  90. wb_timestamp_lower_32
  91. WLAN/BT timestamp is a 1 usec resolution timestamp which
  92. does not get updated based on receive beacon like TSF. The
  93. same rules for capturing tsf_timestamp are used to capture
  94. the wb_timestamp. This field represents the lower 32 bits of
  95. the 64-bit timestamp
  96. wb_timestamp_upper_32
  97. WLAN/BT timestamp is a 1 usec resolution timestamp which
  98. does not get updated based on receive beacon like TSF. The
  99. same rules for capturing tsf_timestamp are used to capture
  100. the wb_timestamp. This field represents the upper 32 bits of
  101. the 64-bit timestamp
  102. rx_antenna
  103. Receive antenna value ???
  104. tx_ht_vht_ack
  105. Indicates that a HT or VHT Ack/BA frame was transmitted
  106. in response to this receive packet.
  107. unsupported_mu_nc
  108. Set if MU Nc > 2 in received NDPA.
  109. If this bit is set, even though AID and BSSID are
  110. matched, MAC doesn't send tx_expect_ndp to PHY, because MU
  111. Nc > 2 is not supported in Helium.
  112. otp_txbf_disable
  113. Set if either OTP_SUBFEE_DISABLE or OTP_TXBF_DISABLE is
  114. set and if RXPU receives directed NDPA frame. Then, RXPCU
  115. should not send TX_EXPECT_NDP TLV to SW but set this bit to
  116. inform SW.
  117. previous_tlv_corrupted
  118. When set, the TLV preceding this RXPCU_END_INFO TLV
  119. within the RX_PPDU_END TLV, is corrupted. Not the entire TLV
  120. was received.... Likely due to an abort scenario... If abort
  121. is to blame, see the abort data datastructure for details.
  122. <legal all>
  123. phyrx_abort_request_info_valid
  124. When set, the PHY sent an PHYRX_ABORT_REQUEST TLV to
  125. RXPCU. The abort fields embedded in this TLV contain valid
  126. info.
  127. <legal all>
  128. macrx_abort_request_info_valid
  129. When set, the PHY sent an PHYRX_ABORT_REQUEST TLV to
  130. RXPCU. The abort fields embedded in this TLV contain valid
  131. info.
  132. <legal all>
  133. reserved
  134. <legal 0>
  135. coex_bt_tx_from_start_of_rx
  136. Set when BT TX was ongoing when WLAN RX started
  137. coex_bt_tx_after_start_of_rx
  138. coex_wan_tx_from_start_of_rx
  139. Set when WAN TX was ongoing when WLAN RX started
  140. coex_wan_tx_after_start_of_rx
  141. Set when WAN TX started while WLAN RX was already
  142. ongoing
  143. coex_wlan_tx_from_start_of_rx
  144. Set when other WLAN TX was ongoing when WLAN RX started
  145. coex_wlan_tx_after_start_of_rx
  146. Set when other WLAN TX started while WLAN RX was already
  147. ongoing
  148. mpdu_delimiter_errors_seen
  149. When set, MPDU delimiter errors have been detected
  150. during this PPDU reception
  151. ftm_tm
  152. Indicate the timestamp is for the FTM or TM frame
  153. 0: non TM or FTM frame
  154. 1: FTM frame
  155. 2: TM frame
  156. 3: reserved
  157. <legal all>
  158. dialog_token
  159. The dialog token in the FTM or TM frame. Only valid when
  160. the FTM is set. Clear to 254 for a non-FTM frame
  161. <legal all>
  162. follow_up_dialog_token
  163. The follow up dialog token in the FTM or TM frame. Only
  164. valid when the FTM is set. Clear to 0 for a non-FTM frame,
  165. The follow up dialog token in the FTM frame. Only valid when
  166. the FTM is set. Clear to 255 for a non-FTM frame<legal all>
  167. bb_captured_channel
  168. Set by RXPCU when the following conditions are met:
  169. Directed (=> unicast) TM or FTM frame has been received
  170. with passing FCS
  171. PHYRX_PKT_END. Location_info_valid is set
  172. <legal all>
  173. reserved_3
  174. <legal 0>
  175. before_mpdu_count_passing_fcs
  176. Number of MPDUs received in this PPDU that passed the
  177. FCS check before the Coex TX started
  178. before_mpdu_count_failing_fcs
  179. Number of MPDUs received in this PPDU that failed the
  180. FCS check before the Coex TX started
  181. after_mpdu_count_passing_fcs
  182. Number of MPDUs received in this PPDU that passed the
  183. FCS check after the moment the Coex TX started
  184. (Note: The partially received MPDU when the COEX tx
  185. start event came in falls in the after category)
  186. after_mpdu_count_failing_fcs
  187. Number of MPDUs received in this PPDU that failed the
  188. FCS check after the moment the Coex TX started
  189. (Note: The partially received MPDU when the COEX tx
  190. start event came in falls in the after category)
  191. phy_timestamp_tx_lower_32
  192. The PHY timestamp in the AMPI of the most recent rising
  193. edge (TODO: of what ???) after the TX_PHY_DESC.  This field
  194. indicates the lower 32 bits of the timestamp
  195. phy_timestamp_tx_upper_32
  196. The PHY timestamp in the AMPI of the most recent rising
  197. edge (TODO: of what ???) after the TX_PHY_DESC.  This field
  198. indicates the upper 32 bits of the timestamp
  199. bb_length
  200. Indicates the number of bytes of baseband information
  201. for PPDUs where the BB descriptor preamble type is 0x80 to
  202. 0xFF which indicates that this is not a normal PPDU but
  203. rather contains baseband debug information.
  204. TODO: Is this still needed ???
  205. bb_data
  206. Indicates that BB data associated with this PPDU will
  207. exist in the receive buffer. The exact contents of this BB
  208. data can be found by decoding the BB TLV in the buffer
  209. associated with the BB data. See vector_fragment in the
  210. Helium_mac_phy_interface.docx
  211. reserved_7
  212. Reserved: HW should fill with 0, FW should ignore.
  213. rx_ppdu_duration
  214. The length of this PPDU reception in us
  215. reserved_8
  216. <legal 0>
  217. ast_index
  218. The AST index of the receive Ack/BA. This information
  219. is provided from the TXPCU to the RXPCU for receive Ack/BA
  220. for implicit beamforming.
  221. <legal all>
  222. ast_index_valid
  223. Indicates that ast_index is valid. Should only be set
  224. for receive Ack/BA where single stream implicit sounding is
  225. captured.
  226. reserved_9
  227. <legal 0>
  228. struct phyrx_abort_request_info phyrx_abort_request_info_details
  229. Field only valid when Phyrx_abort_request_info_valid is
  230. set
  231. The reason why PHY generated an abort request
  232. struct macrx_abort_request_info macrx_abort_request_info_details
  233. Field only valid when macrx_abort_request_info_valid is
  234. set
  235. The reason why MACRX generated an abort request
  236. rx_ppdu_end_marker
  237. Field used by SW to double check that their structure
  238. alignment is in sync with what HW has done.
  239. <legal 0xAABBCCDD>
  240. */
  241. /* Description RXPCU_PPDU_END_INFO_0_WB_TIMESTAMP_LOWER_32
  242. WLAN/BT timestamp is a 1 usec resolution timestamp which
  243. does not get updated based on receive beacon like TSF. The
  244. same rules for capturing tsf_timestamp are used to capture
  245. the wb_timestamp. This field represents the lower 32 bits of
  246. the 64-bit timestamp
  247. */
  248. #define RXPCU_PPDU_END_INFO_0_WB_TIMESTAMP_LOWER_32_OFFSET 0x00000000
  249. #define RXPCU_PPDU_END_INFO_0_WB_TIMESTAMP_LOWER_32_LSB 0
  250. #define RXPCU_PPDU_END_INFO_0_WB_TIMESTAMP_LOWER_32_MASK 0xffffffff
  251. /* Description RXPCU_PPDU_END_INFO_1_WB_TIMESTAMP_UPPER_32
  252. WLAN/BT timestamp is a 1 usec resolution timestamp which
  253. does not get updated based on receive beacon like TSF. The
  254. same rules for capturing tsf_timestamp are used to capture
  255. the wb_timestamp. This field represents the upper 32 bits of
  256. the 64-bit timestamp
  257. */
  258. #define RXPCU_PPDU_END_INFO_1_WB_TIMESTAMP_UPPER_32_OFFSET 0x00000004
  259. #define RXPCU_PPDU_END_INFO_1_WB_TIMESTAMP_UPPER_32_LSB 0
  260. #define RXPCU_PPDU_END_INFO_1_WB_TIMESTAMP_UPPER_32_MASK 0xffffffff
  261. /* Description RXPCU_PPDU_END_INFO_2_RX_ANTENNA
  262. Receive antenna value ???
  263. */
  264. #define RXPCU_PPDU_END_INFO_2_RX_ANTENNA_OFFSET 0x00000008
  265. #define RXPCU_PPDU_END_INFO_2_RX_ANTENNA_LSB 0
  266. #define RXPCU_PPDU_END_INFO_2_RX_ANTENNA_MASK 0x00ffffff
  267. /* Description RXPCU_PPDU_END_INFO_2_TX_HT_VHT_ACK
  268. Indicates that a HT or VHT Ack/BA frame was transmitted
  269. in response to this receive packet.
  270. */
  271. #define RXPCU_PPDU_END_INFO_2_TX_HT_VHT_ACK_OFFSET 0x00000008
  272. #define RXPCU_PPDU_END_INFO_2_TX_HT_VHT_ACK_LSB 24
  273. #define RXPCU_PPDU_END_INFO_2_TX_HT_VHT_ACK_MASK 0x01000000
  274. /* Description RXPCU_PPDU_END_INFO_2_UNSUPPORTED_MU_NC
  275. Set if MU Nc > 2 in received NDPA.
  276. If this bit is set, even though AID and BSSID are
  277. matched, MAC doesn't send tx_expect_ndp to PHY, because MU
  278. Nc > 2 is not supported in Helium.
  279. */
  280. #define RXPCU_PPDU_END_INFO_2_UNSUPPORTED_MU_NC_OFFSET 0x00000008
  281. #define RXPCU_PPDU_END_INFO_2_UNSUPPORTED_MU_NC_LSB 25
  282. #define RXPCU_PPDU_END_INFO_2_UNSUPPORTED_MU_NC_MASK 0x02000000
  283. /* Description RXPCU_PPDU_END_INFO_2_OTP_TXBF_DISABLE
  284. Set if either OTP_SUBFEE_DISABLE or OTP_TXBF_DISABLE is
  285. set and if RXPU receives directed NDPA frame. Then, RXPCU
  286. should not send TX_EXPECT_NDP TLV to SW but set this bit to
  287. inform SW.
  288. */
  289. #define RXPCU_PPDU_END_INFO_2_OTP_TXBF_DISABLE_OFFSET 0x00000008
  290. #define RXPCU_PPDU_END_INFO_2_OTP_TXBF_DISABLE_LSB 26
  291. #define RXPCU_PPDU_END_INFO_2_OTP_TXBF_DISABLE_MASK 0x04000000
  292. /* Description RXPCU_PPDU_END_INFO_2_PREVIOUS_TLV_CORRUPTED
  293. When set, the TLV preceding this RXPCU_END_INFO TLV
  294. within the RX_PPDU_END TLV, is corrupted. Not the entire TLV
  295. was received.... Likely due to an abort scenario... If abort
  296. is to blame, see the abort data datastructure for details.
  297. <legal all>
  298. */
  299. #define RXPCU_PPDU_END_INFO_2_PREVIOUS_TLV_CORRUPTED_OFFSET 0x00000008
  300. #define RXPCU_PPDU_END_INFO_2_PREVIOUS_TLV_CORRUPTED_LSB 27
  301. #define RXPCU_PPDU_END_INFO_2_PREVIOUS_TLV_CORRUPTED_MASK 0x08000000
  302. /* Description RXPCU_PPDU_END_INFO_2_PHYRX_ABORT_REQUEST_INFO_VALID
  303. When set, the PHY sent an PHYRX_ABORT_REQUEST TLV to
  304. RXPCU. The abort fields embedded in this TLV contain valid
  305. info.
  306. <legal all>
  307. */
  308. #define RXPCU_PPDU_END_INFO_2_PHYRX_ABORT_REQUEST_INFO_VALID_OFFSET 0x00000008
  309. #define RXPCU_PPDU_END_INFO_2_PHYRX_ABORT_REQUEST_INFO_VALID_LSB 28
  310. #define RXPCU_PPDU_END_INFO_2_PHYRX_ABORT_REQUEST_INFO_VALID_MASK 0x10000000
  311. /* Description RXPCU_PPDU_END_INFO_2_MACRX_ABORT_REQUEST_INFO_VALID
  312. When set, the PHY sent an PHYRX_ABORT_REQUEST TLV to
  313. RXPCU. The abort fields embedded in this TLV contain valid
  314. info.
  315. <legal all>
  316. */
  317. #define RXPCU_PPDU_END_INFO_2_MACRX_ABORT_REQUEST_INFO_VALID_OFFSET 0x00000008
  318. #define RXPCU_PPDU_END_INFO_2_MACRX_ABORT_REQUEST_INFO_VALID_LSB 29
  319. #define RXPCU_PPDU_END_INFO_2_MACRX_ABORT_REQUEST_INFO_VALID_MASK 0x20000000
  320. /* Description RXPCU_PPDU_END_INFO_2_RESERVED
  321. <legal 0>
  322. */
  323. #define RXPCU_PPDU_END_INFO_2_RESERVED_OFFSET 0x00000008
  324. #define RXPCU_PPDU_END_INFO_2_RESERVED_LSB 30
  325. #define RXPCU_PPDU_END_INFO_2_RESERVED_MASK 0xc0000000
  326. /* Description RXPCU_PPDU_END_INFO_3_COEX_BT_TX_FROM_START_OF_RX
  327. Set when BT TX was ongoing when WLAN RX started
  328. */
  329. #define RXPCU_PPDU_END_INFO_3_COEX_BT_TX_FROM_START_OF_RX_OFFSET 0x0000000c
  330. #define RXPCU_PPDU_END_INFO_3_COEX_BT_TX_FROM_START_OF_RX_LSB 0
  331. #define RXPCU_PPDU_END_INFO_3_COEX_BT_TX_FROM_START_OF_RX_MASK 0x00000001
  332. /* Description RXPCU_PPDU_END_INFO_3_COEX_BT_TX_AFTER_START_OF_RX
  333. */
  334. #define RXPCU_PPDU_END_INFO_3_COEX_BT_TX_AFTER_START_OF_RX_OFFSET 0x0000000c
  335. #define RXPCU_PPDU_END_INFO_3_COEX_BT_TX_AFTER_START_OF_RX_LSB 1
  336. #define RXPCU_PPDU_END_INFO_3_COEX_BT_TX_AFTER_START_OF_RX_MASK 0x00000002
  337. /* Description RXPCU_PPDU_END_INFO_3_COEX_WAN_TX_FROM_START_OF_RX
  338. Set when WAN TX was ongoing when WLAN RX started
  339. */
  340. #define RXPCU_PPDU_END_INFO_3_COEX_WAN_TX_FROM_START_OF_RX_OFFSET 0x0000000c
  341. #define RXPCU_PPDU_END_INFO_3_COEX_WAN_TX_FROM_START_OF_RX_LSB 2
  342. #define RXPCU_PPDU_END_INFO_3_COEX_WAN_TX_FROM_START_OF_RX_MASK 0x00000004
  343. /* Description RXPCU_PPDU_END_INFO_3_COEX_WAN_TX_AFTER_START_OF_RX
  344. Set when WAN TX started while WLAN RX was already
  345. ongoing
  346. */
  347. #define RXPCU_PPDU_END_INFO_3_COEX_WAN_TX_AFTER_START_OF_RX_OFFSET 0x0000000c
  348. #define RXPCU_PPDU_END_INFO_3_COEX_WAN_TX_AFTER_START_OF_RX_LSB 3
  349. #define RXPCU_PPDU_END_INFO_3_COEX_WAN_TX_AFTER_START_OF_RX_MASK 0x00000008
  350. /* Description RXPCU_PPDU_END_INFO_3_COEX_WLAN_TX_FROM_START_OF_RX
  351. Set when other WLAN TX was ongoing when WLAN RX started
  352. */
  353. #define RXPCU_PPDU_END_INFO_3_COEX_WLAN_TX_FROM_START_OF_RX_OFFSET 0x0000000c
  354. #define RXPCU_PPDU_END_INFO_3_COEX_WLAN_TX_FROM_START_OF_RX_LSB 4
  355. #define RXPCU_PPDU_END_INFO_3_COEX_WLAN_TX_FROM_START_OF_RX_MASK 0x00000010
  356. /* Description RXPCU_PPDU_END_INFO_3_COEX_WLAN_TX_AFTER_START_OF_RX
  357. Set when other WLAN TX started while WLAN RX was already
  358. ongoing
  359. */
  360. #define RXPCU_PPDU_END_INFO_3_COEX_WLAN_TX_AFTER_START_OF_RX_OFFSET 0x0000000c
  361. #define RXPCU_PPDU_END_INFO_3_COEX_WLAN_TX_AFTER_START_OF_RX_LSB 5
  362. #define RXPCU_PPDU_END_INFO_3_COEX_WLAN_TX_AFTER_START_OF_RX_MASK 0x00000020
  363. /* Description RXPCU_PPDU_END_INFO_3_MPDU_DELIMITER_ERRORS_SEEN
  364. When set, MPDU delimiter errors have been detected
  365. during this PPDU reception
  366. */
  367. #define RXPCU_PPDU_END_INFO_3_MPDU_DELIMITER_ERRORS_SEEN_OFFSET 0x0000000c
  368. #define RXPCU_PPDU_END_INFO_3_MPDU_DELIMITER_ERRORS_SEEN_LSB 6
  369. #define RXPCU_PPDU_END_INFO_3_MPDU_DELIMITER_ERRORS_SEEN_MASK 0x00000040
  370. /* Description RXPCU_PPDU_END_INFO_3_FTM_TM
  371. Indicate the timestamp is for the FTM or TM frame
  372. 0: non TM or FTM frame
  373. 1: FTM frame
  374. 2: TM frame
  375. 3: reserved
  376. <legal all>
  377. */
  378. #define RXPCU_PPDU_END_INFO_3_FTM_TM_OFFSET 0x0000000c
  379. #define RXPCU_PPDU_END_INFO_3_FTM_TM_LSB 7
  380. #define RXPCU_PPDU_END_INFO_3_FTM_TM_MASK 0x00000180
  381. /* Description RXPCU_PPDU_END_INFO_3_DIALOG_TOKEN
  382. The dialog token in the FTM or TM frame. Only valid when
  383. the FTM is set. Clear to 254 for a non-FTM frame
  384. <legal all>
  385. */
  386. #define RXPCU_PPDU_END_INFO_3_DIALOG_TOKEN_OFFSET 0x0000000c
  387. #define RXPCU_PPDU_END_INFO_3_DIALOG_TOKEN_LSB 9
  388. #define RXPCU_PPDU_END_INFO_3_DIALOG_TOKEN_MASK 0x0001fe00
  389. /* Description RXPCU_PPDU_END_INFO_3_FOLLOW_UP_DIALOG_TOKEN
  390. The follow up dialog token in the FTM or TM frame. Only
  391. valid when the FTM is set. Clear to 0 for a non-FTM frame,
  392. The follow up dialog token in the FTM frame. Only valid when
  393. the FTM is set. Clear to 255 for a non-FTM frame<legal all>
  394. */
  395. #define RXPCU_PPDU_END_INFO_3_FOLLOW_UP_DIALOG_TOKEN_OFFSET 0x0000000c
  396. #define RXPCU_PPDU_END_INFO_3_FOLLOW_UP_DIALOG_TOKEN_LSB 17
  397. #define RXPCU_PPDU_END_INFO_3_FOLLOW_UP_DIALOG_TOKEN_MASK 0x01fe0000
  398. /* Description RXPCU_PPDU_END_INFO_3_BB_CAPTURED_CHANNEL
  399. Set by RXPCU when the following conditions are met:
  400. Directed (=> unicast) TM or FTM frame has been received
  401. with passing FCS
  402. PHYRX_PKT_END. Location_info_valid is set
  403. <legal all>
  404. */
  405. #define RXPCU_PPDU_END_INFO_3_BB_CAPTURED_CHANNEL_OFFSET 0x0000000c
  406. #define RXPCU_PPDU_END_INFO_3_BB_CAPTURED_CHANNEL_LSB 25
  407. #define RXPCU_PPDU_END_INFO_3_BB_CAPTURED_CHANNEL_MASK 0x02000000
  408. /* Description RXPCU_PPDU_END_INFO_3_RESERVED_3
  409. <legal 0>
  410. */
  411. #define RXPCU_PPDU_END_INFO_3_RESERVED_3_OFFSET 0x0000000c
  412. #define RXPCU_PPDU_END_INFO_3_RESERVED_3_LSB 26
  413. #define RXPCU_PPDU_END_INFO_3_RESERVED_3_MASK 0xfc000000
  414. /* Description RXPCU_PPDU_END_INFO_4_BEFORE_MPDU_COUNT_PASSING_FCS
  415. Number of MPDUs received in this PPDU that passed the
  416. FCS check before the Coex TX started
  417. */
  418. #define RXPCU_PPDU_END_INFO_4_BEFORE_MPDU_COUNT_PASSING_FCS_OFFSET 0x00000010
  419. #define RXPCU_PPDU_END_INFO_4_BEFORE_MPDU_COUNT_PASSING_FCS_LSB 0
  420. #define RXPCU_PPDU_END_INFO_4_BEFORE_MPDU_COUNT_PASSING_FCS_MASK 0x000000ff
  421. /* Description RXPCU_PPDU_END_INFO_4_BEFORE_MPDU_COUNT_FAILING_FCS
  422. Number of MPDUs received in this PPDU that failed the
  423. FCS check before the Coex TX started
  424. */
  425. #define RXPCU_PPDU_END_INFO_4_BEFORE_MPDU_COUNT_FAILING_FCS_OFFSET 0x00000010
  426. #define RXPCU_PPDU_END_INFO_4_BEFORE_MPDU_COUNT_FAILING_FCS_LSB 8
  427. #define RXPCU_PPDU_END_INFO_4_BEFORE_MPDU_COUNT_FAILING_FCS_MASK 0x0000ff00
  428. /* Description RXPCU_PPDU_END_INFO_4_AFTER_MPDU_COUNT_PASSING_FCS
  429. Number of MPDUs received in this PPDU that passed the
  430. FCS check after the moment the Coex TX started
  431. (Note: The partially received MPDU when the COEX tx
  432. start event came in falls in the after category)
  433. */
  434. #define RXPCU_PPDU_END_INFO_4_AFTER_MPDU_COUNT_PASSING_FCS_OFFSET 0x00000010
  435. #define RXPCU_PPDU_END_INFO_4_AFTER_MPDU_COUNT_PASSING_FCS_LSB 16
  436. #define RXPCU_PPDU_END_INFO_4_AFTER_MPDU_COUNT_PASSING_FCS_MASK 0x00ff0000
  437. /* Description RXPCU_PPDU_END_INFO_4_AFTER_MPDU_COUNT_FAILING_FCS
  438. Number of MPDUs received in this PPDU that failed the
  439. FCS check after the moment the Coex TX started
  440. (Note: The partially received MPDU when the COEX tx
  441. start event came in falls in the after category)
  442. */
  443. #define RXPCU_PPDU_END_INFO_4_AFTER_MPDU_COUNT_FAILING_FCS_OFFSET 0x00000010
  444. #define RXPCU_PPDU_END_INFO_4_AFTER_MPDU_COUNT_FAILING_FCS_LSB 24
  445. #define RXPCU_PPDU_END_INFO_4_AFTER_MPDU_COUNT_FAILING_FCS_MASK 0xff000000
  446. /* Description RXPCU_PPDU_END_INFO_5_PHY_TIMESTAMP_TX_LOWER_32
  447. The PHY timestamp in the AMPI of the most recent rising
  448. edge (TODO: of what ???) after the TX_PHY_DESC.  This field
  449. indicates the lower 32 bits of the timestamp
  450. */
  451. #define RXPCU_PPDU_END_INFO_5_PHY_TIMESTAMP_TX_LOWER_32_OFFSET 0x00000014
  452. #define RXPCU_PPDU_END_INFO_5_PHY_TIMESTAMP_TX_LOWER_32_LSB 0
  453. #define RXPCU_PPDU_END_INFO_5_PHY_TIMESTAMP_TX_LOWER_32_MASK 0xffffffff
  454. /* Description RXPCU_PPDU_END_INFO_6_PHY_TIMESTAMP_TX_UPPER_32
  455. The PHY timestamp in the AMPI of the most recent rising
  456. edge (TODO: of what ???) after the TX_PHY_DESC.  This field
  457. indicates the upper 32 bits of the timestamp
  458. */
  459. #define RXPCU_PPDU_END_INFO_6_PHY_TIMESTAMP_TX_UPPER_32_OFFSET 0x00000018
  460. #define RXPCU_PPDU_END_INFO_6_PHY_TIMESTAMP_TX_UPPER_32_LSB 0
  461. #define RXPCU_PPDU_END_INFO_6_PHY_TIMESTAMP_TX_UPPER_32_MASK 0xffffffff
  462. /* Description RXPCU_PPDU_END_INFO_7_BB_LENGTH
  463. Indicates the number of bytes of baseband information
  464. for PPDUs where the BB descriptor preamble type is 0x80 to
  465. 0xFF which indicates that this is not a normal PPDU but
  466. rather contains baseband debug information.
  467. TODO: Is this still needed ???
  468. */
  469. #define RXPCU_PPDU_END_INFO_7_BB_LENGTH_OFFSET 0x0000001c
  470. #define RXPCU_PPDU_END_INFO_7_BB_LENGTH_LSB 0
  471. #define RXPCU_PPDU_END_INFO_7_BB_LENGTH_MASK 0x0000ffff
  472. /* Description RXPCU_PPDU_END_INFO_7_BB_DATA
  473. Indicates that BB data associated with this PPDU will
  474. exist in the receive buffer. The exact contents of this BB
  475. data can be found by decoding the BB TLV in the buffer
  476. associated with the BB data. See vector_fragment in the
  477. Helium_mac_phy_interface.docx
  478. */
  479. #define RXPCU_PPDU_END_INFO_7_BB_DATA_OFFSET 0x0000001c
  480. #define RXPCU_PPDU_END_INFO_7_BB_DATA_LSB 16
  481. #define RXPCU_PPDU_END_INFO_7_BB_DATA_MASK 0x00010000
  482. /* Description RXPCU_PPDU_END_INFO_7_RESERVED_7
  483. Reserved: HW should fill with 0, FW should ignore.
  484. */
  485. #define RXPCU_PPDU_END_INFO_7_RESERVED_7_OFFSET 0x0000001c
  486. #define RXPCU_PPDU_END_INFO_7_RESERVED_7_LSB 17
  487. #define RXPCU_PPDU_END_INFO_7_RESERVED_7_MASK 0xfffe0000
  488. /* Description RXPCU_PPDU_END_INFO_8_RX_PPDU_DURATION
  489. The length of this PPDU reception in us
  490. */
  491. #define RXPCU_PPDU_END_INFO_8_RX_PPDU_DURATION_OFFSET 0x00000020
  492. #define RXPCU_PPDU_END_INFO_8_RX_PPDU_DURATION_LSB 0
  493. #define RXPCU_PPDU_END_INFO_8_RX_PPDU_DURATION_MASK 0x00ffffff
  494. /* Description RXPCU_PPDU_END_INFO_8_RESERVED_8
  495. <legal 0>
  496. */
  497. #define RXPCU_PPDU_END_INFO_8_RESERVED_8_OFFSET 0x00000020
  498. #define RXPCU_PPDU_END_INFO_8_RESERVED_8_LSB 24
  499. #define RXPCU_PPDU_END_INFO_8_RESERVED_8_MASK 0xff000000
  500. /* Description RXPCU_PPDU_END_INFO_9_AST_INDEX
  501. The AST index of the receive Ack/BA. This information
  502. is provided from the TXPCU to the RXPCU for receive Ack/BA
  503. for implicit beamforming.
  504. <legal all>
  505. */
  506. #define RXPCU_PPDU_END_INFO_9_AST_INDEX_OFFSET 0x00000024
  507. #define RXPCU_PPDU_END_INFO_9_AST_INDEX_LSB 0
  508. #define RXPCU_PPDU_END_INFO_9_AST_INDEX_MASK 0x0000ffff
  509. /* Description RXPCU_PPDU_END_INFO_9_AST_INDEX_VALID
  510. Indicates that ast_index is valid. Should only be set
  511. for receive Ack/BA where single stream implicit sounding is
  512. captured.
  513. */
  514. #define RXPCU_PPDU_END_INFO_9_AST_INDEX_VALID_OFFSET 0x00000024
  515. #define RXPCU_PPDU_END_INFO_9_AST_INDEX_VALID_LSB 16
  516. #define RXPCU_PPDU_END_INFO_9_AST_INDEX_VALID_MASK 0x00010000
  517. /* Description RXPCU_PPDU_END_INFO_9_RESERVED_9
  518. <legal 0>
  519. */
  520. #define RXPCU_PPDU_END_INFO_9_RESERVED_9_OFFSET 0x00000024
  521. #define RXPCU_PPDU_END_INFO_9_RESERVED_9_LSB 17
  522. #define RXPCU_PPDU_END_INFO_9_RESERVED_9_MASK 0xfffe0000
  523. #define RXPCU_PPDU_END_INFO_10_PHYRX_ABORT_REQUEST_INFO_PHYRX_ABORT_REQUEST_INFO_DETAILS_OFFSET 0x00000028
  524. #define RXPCU_PPDU_END_INFO_10_PHYRX_ABORT_REQUEST_INFO_PHYRX_ABORT_REQUEST_INFO_DETAILS_LSB 17
  525. #define RXPCU_PPDU_END_INFO_10_PHYRX_ABORT_REQUEST_INFO_PHYRX_ABORT_REQUEST_INFO_DETAILS_MASK 0xffffffff
  526. #define RXPCU_PPDU_END_INFO_11_MACRX_ABORT_REQUEST_INFO_MACRX_ABORT_REQUEST_INFO_DETAILS_OFFSET 0x0000002c
  527. #define RXPCU_PPDU_END_INFO_11_MACRX_ABORT_REQUEST_INFO_MACRX_ABORT_REQUEST_INFO_DETAILS_LSB 17
  528. #define RXPCU_PPDU_END_INFO_11_MACRX_ABORT_REQUEST_INFO_MACRX_ABORT_REQUEST_INFO_DETAILS_MASK 0xffffffff
  529. /* Description RXPCU_PPDU_END_INFO_12_RX_PPDU_END_MARKER
  530. Field used by SW to double check that their structure
  531. alignment is in sync with what HW has done.
  532. <legal 0xAABBCCDD>
  533. */
  534. #define RXPCU_PPDU_END_INFO_12_RX_PPDU_END_MARKER_OFFSET 0x00000030
  535. #define RXPCU_PPDU_END_INFO_12_RX_PPDU_END_MARKER_LSB 0
  536. #define RXPCU_PPDU_END_INFO_12_RX_PPDU_END_MARKER_MASK 0xffffffff
  537. #endif // _RXPCU_PPDU_END_INFO_H_