rx_rxpcu_classification_overview.h 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. /*
  2. * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
  3. *
  4. * Permission to use, copy, modify, and/or distribute this software for any
  5. * purpose with or without fee is hereby granted, provided that the above
  6. * copyright notice and this permission notice appear in all copies.
  7. *
  8. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  9. * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  10. * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  11. * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  12. * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  13. * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  14. * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  15. */
  16. #ifndef _RX_RXPCU_CLASSIFICATION_OVERVIEW_H_
  17. #define _RX_RXPCU_CLASSIFICATION_OVERVIEW_H_
  18. #if !defined(__ASSEMBLER__)
  19. #endif
  20. #define NUM_OF_DWORDS_RX_RXPCU_CLASSIFICATION_OVERVIEW 1
  21. struct rx_rxpcu_classification_overview {
  22. #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
  23. uint32_t filter_pass_mpdus : 1, // [0:0]
  24. filter_pass_mpdus_fcs_ok : 1, // [1:1]
  25. monitor_direct_mpdus : 1, // [2:2]
  26. monitor_direct_mpdus_fcs_ok : 1, // [3:3]
  27. monitor_other_mpdus : 1, // [4:4]
  28. monitor_other_mpdus_fcs_ok : 1, // [5:5]
  29. phyrx_abort_received : 1, // [6:6]
  30. filter_pass_monitor_ovrd_mpdus : 1, // [7:7]
  31. filter_pass_monitor_ovrd_mpdus_fcs_ok : 1, // [8:8]
  32. reserved_0 : 7, // [15:9]
  33. phy_ppdu_id : 16; // [31:16]
  34. #else
  35. uint32_t phy_ppdu_id : 16, // [31:16]
  36. reserved_0 : 7, // [15:9]
  37. filter_pass_monitor_ovrd_mpdus_fcs_ok : 1, // [8:8]
  38. filter_pass_monitor_ovrd_mpdus : 1, // [7:7]
  39. phyrx_abort_received : 1, // [6:6]
  40. monitor_other_mpdus_fcs_ok : 1, // [5:5]
  41. monitor_other_mpdus : 1, // [4:4]
  42. monitor_direct_mpdus_fcs_ok : 1, // [3:3]
  43. monitor_direct_mpdus : 1, // [2:2]
  44. filter_pass_mpdus_fcs_ok : 1, // [1:1]
  45. filter_pass_mpdus : 1; // [0:0]
  46. #endif
  47. };
  48. /* Description FILTER_PASS_MPDUS
  49. When set, at least one Filter Pass MPDU has been received.
  50. FCS might or might not have been passing.
  51. For MU UL, in TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
  52. this field is the "OR of all the users.
  53. <legal all>
  54. */
  55. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_FILTER_PASS_MPDUS_OFFSET 0x00000000
  56. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_FILTER_PASS_MPDUS_LSB 0
  57. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_FILTER_PASS_MPDUS_MSB 0
  58. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_FILTER_PASS_MPDUS_MASK 0x00000001
  59. /* Description FILTER_PASS_MPDUS_FCS_OK
  60. When set, at least one Filter Pass MPDU has been received
  61. that has a correct FCS.
  62. For MU UL, in TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
  63. this field is the "OR of all the users.
  64. <legal all>
  65. */
  66. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_FILTER_PASS_MPDUS_FCS_OK_OFFSET 0x00000000
  67. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_FILTER_PASS_MPDUS_FCS_OK_LSB 1
  68. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_FILTER_PASS_MPDUS_FCS_OK_MSB 1
  69. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_FILTER_PASS_MPDUS_FCS_OK_MASK 0x00000002
  70. /* Description MONITOR_DIRECT_MPDUS
  71. When set, at least one Monitor Direct MPDU has been received.
  72. FCS might or might not have been passing
  73. For MU UL, in TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
  74. this field is the "OR of all the users.
  75. <legal all>
  76. */
  77. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_MONITOR_DIRECT_MPDUS_OFFSET 0x00000000
  78. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_MONITOR_DIRECT_MPDUS_LSB 2
  79. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_MONITOR_DIRECT_MPDUS_MSB 2
  80. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_MONITOR_DIRECT_MPDUS_MASK 0x00000004
  81. /* Description MONITOR_DIRECT_MPDUS_FCS_OK
  82. When set, at least one Monitor Direct MPDU has been received
  83. that has a correct FCS.
  84. For MU UL, in TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
  85. this field is the "OR of all the users.
  86. <legal all>
  87. */
  88. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_MONITOR_DIRECT_MPDUS_FCS_OK_OFFSET 0x00000000
  89. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_MONITOR_DIRECT_MPDUS_FCS_OK_LSB 3
  90. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_MONITOR_DIRECT_MPDUS_FCS_OK_MSB 3
  91. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_MONITOR_DIRECT_MPDUS_FCS_OK_MASK 0x00000008
  92. /* Description MONITOR_OTHER_MPDUS
  93. When set, at least one Monitor Direct MPDU has been received.
  94. FCS might or might not have been passing.
  95. For MU UL, in TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
  96. this field is the "OR of all the users.
  97. <legal all>
  98. */
  99. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_MONITOR_OTHER_MPDUS_OFFSET 0x00000000
  100. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_MONITOR_OTHER_MPDUS_LSB 4
  101. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_MONITOR_OTHER_MPDUS_MSB 4
  102. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_MONITOR_OTHER_MPDUS_MASK 0x00000010
  103. /* Description MONITOR_OTHER_MPDUS_FCS_OK
  104. When set, at least one Monitor Direct MPDU has been received
  105. that has a correct FCS.
  106. For MU UL, in TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
  107. this field is the "OR of all the users.
  108. <legal all>
  109. */
  110. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_MONITOR_OTHER_MPDUS_FCS_OK_OFFSET 0x00000000
  111. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_MONITOR_OTHER_MPDUS_FCS_OK_LSB 5
  112. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_MONITOR_OTHER_MPDUS_FCS_OK_MSB 5
  113. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_MONITOR_OTHER_MPDUS_FCS_OK_MASK 0x00000020
  114. /* Description PHYRX_ABORT_RECEIVED
  115. When set, PPDU reception was aborted by the PHY
  116. <legal all>
  117. */
  118. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_PHYRX_ABORT_RECEIVED_OFFSET 0x00000000
  119. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_PHYRX_ABORT_RECEIVED_LSB 6
  120. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_PHYRX_ABORT_RECEIVED_MSB 6
  121. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_PHYRX_ABORT_RECEIVED_MASK 0x00000040
  122. /* Description FILTER_PASS_MONITOR_OVRD_MPDUS
  123. When set, at least one 'Filter Pass Monitor Override' MPDU
  124. has been received. FCS might or might not have been passing.
  125. For MU UL, in TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
  126. this field is the "OR of all the users.
  127. <legal all>
  128. */
  129. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_FILTER_PASS_MONITOR_OVRD_MPDUS_OFFSET 0x00000000
  130. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_FILTER_PASS_MONITOR_OVRD_MPDUS_LSB 7
  131. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_FILTER_PASS_MONITOR_OVRD_MPDUS_MSB 7
  132. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_FILTER_PASS_MONITOR_OVRD_MPDUS_MASK 0x00000080
  133. /* Description FILTER_PASS_MONITOR_OVRD_MPDUS_FCS_OK
  134. When set, at least one 'Filter Pass Monitor Override' MPDU
  135. has been received that has a correct FCS.
  136. For MU UL, in TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
  137. this field is the "OR of all the users.
  138. <legal all>
  139. */
  140. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_FILTER_PASS_MONITOR_OVRD_MPDUS_FCS_OK_OFFSET 0x00000000
  141. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_FILTER_PASS_MONITOR_OVRD_MPDUS_FCS_OK_LSB 8
  142. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_FILTER_PASS_MONITOR_OVRD_MPDUS_FCS_OK_MSB 8
  143. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_FILTER_PASS_MONITOR_OVRD_MPDUS_FCS_OK_MASK 0x00000100
  144. /* Description RESERVED_0
  145. <legal 0>
  146. */
  147. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_RESERVED_0_OFFSET 0x00000000
  148. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_RESERVED_0_LSB 9
  149. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_RESERVED_0_MSB 15
  150. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_RESERVED_0_MASK 0x0000fe00
  151. /* Description PHY_PPDU_ID
  152. A ppdu counter value that PHY increments for every PPDU
  153. received. The counter value wraps around
  154. <legal all>
  155. */
  156. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_PHY_PPDU_ID_OFFSET 0x00000000
  157. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_PHY_PPDU_ID_LSB 16
  158. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_PHY_PPDU_ID_MSB 31
  159. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_PHY_PPDU_ID_MASK 0xffff0000
  160. #endif // RX_RXPCU_CLASSIFICATION_OVERVIEW