rx_rxpcu_classification_overview.h 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  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 _RX_RXPCU_CLASSIFICATION_OVERVIEW_H_
  16. #define _RX_RXPCU_CLASSIFICATION_OVERVIEW_H_
  17. #if !defined(__ASSEMBLER__)
  18. #endif
  19. #define NUM_OF_DWORDS_RX_RXPCU_CLASSIFICATION_OVERVIEW 1
  20. struct rx_rxpcu_classification_overview {
  21. #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
  22. uint32_t filter_pass_mpdus : 1, // [0:0]
  23. filter_pass_mpdus_fcs_ok : 1, // [1:1]
  24. monitor_direct_mpdus : 1, // [2:2]
  25. monitor_direct_mpdus_fcs_ok : 1, // [3:3]
  26. monitor_other_mpdus : 1, // [4:4]
  27. monitor_other_mpdus_fcs_ok : 1, // [5:5]
  28. phyrx_abort_received : 1, // [6:6]
  29. filter_pass_monitor_ovrd_mpdus : 1, // [7:7]
  30. filter_pass_monitor_ovrd_mpdus_fcs_ok : 1, // [8:8]
  31. reserved_0 : 7, // [15:9]
  32. phy_ppdu_id : 16; // [31:16]
  33. #else
  34. uint32_t phy_ppdu_id : 16, // [31:16]
  35. reserved_0 : 7, // [15:9]
  36. filter_pass_monitor_ovrd_mpdus_fcs_ok : 1, // [8:8]
  37. filter_pass_monitor_ovrd_mpdus : 1, // [7:7]
  38. phyrx_abort_received : 1, // [6:6]
  39. monitor_other_mpdus_fcs_ok : 1, // [5:5]
  40. monitor_other_mpdus : 1, // [4:4]
  41. monitor_direct_mpdus_fcs_ok : 1, // [3:3]
  42. monitor_direct_mpdus : 1, // [2:2]
  43. filter_pass_mpdus_fcs_ok : 1, // [1:1]
  44. filter_pass_mpdus : 1; // [0:0]
  45. #endif
  46. };
  47. /* Description FILTER_PASS_MPDUS
  48. When set, at least one Filter Pass MPDU has been received.
  49. FCS might or might not have been passing.
  50. For MU UL, in TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
  51. this field is the "OR of all the users.
  52. <legal all>
  53. */
  54. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_FILTER_PASS_MPDUS_OFFSET 0x00000000
  55. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_FILTER_PASS_MPDUS_LSB 0
  56. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_FILTER_PASS_MPDUS_MSB 0
  57. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_FILTER_PASS_MPDUS_MASK 0x00000001
  58. /* Description FILTER_PASS_MPDUS_FCS_OK
  59. When set, at least one Filter Pass MPDU has been received
  60. that has a correct FCS.
  61. For MU UL, in TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
  62. this field is the "OR of all the users.
  63. <legal all>
  64. */
  65. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_FILTER_PASS_MPDUS_FCS_OK_OFFSET 0x00000000
  66. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_FILTER_PASS_MPDUS_FCS_OK_LSB 1
  67. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_FILTER_PASS_MPDUS_FCS_OK_MSB 1
  68. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_FILTER_PASS_MPDUS_FCS_OK_MASK 0x00000002
  69. /* Description MONITOR_DIRECT_MPDUS
  70. When set, at least one Monitor Direct MPDU has been received.
  71. FCS might or might not have been passing
  72. For MU UL, in TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
  73. this field is the "OR of all the users.
  74. <legal all>
  75. */
  76. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_MONITOR_DIRECT_MPDUS_OFFSET 0x00000000
  77. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_MONITOR_DIRECT_MPDUS_LSB 2
  78. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_MONITOR_DIRECT_MPDUS_MSB 2
  79. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_MONITOR_DIRECT_MPDUS_MASK 0x00000004
  80. /* Description MONITOR_DIRECT_MPDUS_FCS_OK
  81. When set, at least one Monitor Direct MPDU has been received
  82. that has a correct FCS.
  83. For MU UL, in TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
  84. this field is the "OR of all the users.
  85. <legal all>
  86. */
  87. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_MONITOR_DIRECT_MPDUS_FCS_OK_OFFSET 0x00000000
  88. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_MONITOR_DIRECT_MPDUS_FCS_OK_LSB 3
  89. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_MONITOR_DIRECT_MPDUS_FCS_OK_MSB 3
  90. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_MONITOR_DIRECT_MPDUS_FCS_OK_MASK 0x00000008
  91. /* Description MONITOR_OTHER_MPDUS
  92. When set, at least one Monitor Direct MPDU has been received.
  93. FCS might or might not have been passing.
  94. For MU UL, in TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
  95. this field is the "OR of all the users.
  96. <legal all>
  97. */
  98. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_MONITOR_OTHER_MPDUS_OFFSET 0x00000000
  99. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_MONITOR_OTHER_MPDUS_LSB 4
  100. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_MONITOR_OTHER_MPDUS_MSB 4
  101. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_MONITOR_OTHER_MPDUS_MASK 0x00000010
  102. /* Description MONITOR_OTHER_MPDUS_FCS_OK
  103. When set, at least one Monitor Direct MPDU has been received
  104. that has a correct FCS.
  105. For MU UL, in TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
  106. this field is the "OR of all the users.
  107. <legal all>
  108. */
  109. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_MONITOR_OTHER_MPDUS_FCS_OK_OFFSET 0x00000000
  110. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_MONITOR_OTHER_MPDUS_FCS_OK_LSB 5
  111. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_MONITOR_OTHER_MPDUS_FCS_OK_MSB 5
  112. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_MONITOR_OTHER_MPDUS_FCS_OK_MASK 0x00000020
  113. /* Description PHYRX_ABORT_RECEIVED
  114. When set, PPDU reception was aborted by the PHY
  115. <legal all>
  116. */
  117. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_PHYRX_ABORT_RECEIVED_OFFSET 0x00000000
  118. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_PHYRX_ABORT_RECEIVED_LSB 6
  119. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_PHYRX_ABORT_RECEIVED_MSB 6
  120. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_PHYRX_ABORT_RECEIVED_MASK 0x00000040
  121. /* Description FILTER_PASS_MONITOR_OVRD_MPDUS
  122. When set, at least one 'Filter Pass Monitor Override' MPDU
  123. has been received. FCS might or might not have been passing.
  124. For MU UL, in TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
  125. this field is the "OR of all the users.
  126. <legal all>
  127. */
  128. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_FILTER_PASS_MONITOR_OVRD_MPDUS_OFFSET 0x00000000
  129. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_FILTER_PASS_MONITOR_OVRD_MPDUS_LSB 7
  130. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_FILTER_PASS_MONITOR_OVRD_MPDUS_MSB 7
  131. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_FILTER_PASS_MONITOR_OVRD_MPDUS_MASK 0x00000080
  132. /* Description FILTER_PASS_MONITOR_OVRD_MPDUS_FCS_OK
  133. When set, at least one 'Filter Pass Monitor Override' MPDU
  134. has been received that has a correct FCS.
  135. For MU UL, in TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
  136. this field is the "OR of all the users.
  137. <legal all>
  138. */
  139. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_FILTER_PASS_MONITOR_OVRD_MPDUS_FCS_OK_OFFSET 0x00000000
  140. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_FILTER_PASS_MONITOR_OVRD_MPDUS_FCS_OK_LSB 8
  141. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_FILTER_PASS_MONITOR_OVRD_MPDUS_FCS_OK_MSB 8
  142. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_FILTER_PASS_MONITOR_OVRD_MPDUS_FCS_OK_MASK 0x00000100
  143. /* Description RESERVED_0
  144. <legal 0>
  145. */
  146. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_RESERVED_0_OFFSET 0x00000000
  147. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_RESERVED_0_LSB 9
  148. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_RESERVED_0_MSB 15
  149. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_RESERVED_0_MASK 0x0000fe00
  150. /* Description PHY_PPDU_ID
  151. A ppdu counter value that PHY increments for every PPDU
  152. received. The counter value wraps around
  153. <legal all>
  154. */
  155. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_PHY_PPDU_ID_OFFSET 0x00000000
  156. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_PHY_PPDU_ID_LSB 16
  157. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_PHY_PPDU_ID_MSB 31
  158. #define RX_RXPCU_CLASSIFICATION_OVERVIEW_PHY_PPDU_ID_MASK 0xffff0000
  159. #endif // RX_RXPCU_CLASSIFICATION_OVERVIEW