rx_ppdu_ack_report.h 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  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_PPDU_ACK_REPORT_H_
  17. #define _RX_PPDU_ACK_REPORT_H_
  18. #if !defined(__ASSEMBLER__)
  19. #endif
  20. #include "ack_report.h"
  21. #define NUM_OF_DWORDS_RX_PPDU_ACK_REPORT 2
  22. #define NUM_OF_QWORDS_RX_PPDU_ACK_REPORT 1
  23. struct rx_ppdu_ack_report {
  24. #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
  25. struct ack_report ack_report_details;
  26. uint32_t tlv64_padding : 32; // [31:0]
  27. #else
  28. struct ack_report ack_report_details;
  29. uint32_t tlv64_padding : 32; // [31:0]
  30. #endif
  31. };
  32. /* Description ACK_REPORT_DETAILS
  33. Info indicating why the received frame needed a SIFS response.
  34. */
  35. /* Description SELFGEN_RESPONSE_REASON
  36. Field that indicates why the received frame needs a response
  37. in SIFS time. The possible responses are listed in order.
  38. <enum 0 CTS_frame>
  39. <enum 1 ACK_frame>
  40. <enum 2 BA_frame >
  41. <enum 3 Qboost_trigger> Qboost trigger received
  42. <enum 4 PSPOLL_trigger> PSPOLL trigger received
  43. <enum 5 UAPSD_trigger > Unscheduled APSD trigger received
  44. <enum 6 CBF_frame> the CBF frame needs to be send as
  45. a result of NDP or BRPOLL
  46. <enum 7 ax_su_trigger> 11ax trigger received for this
  47. device
  48. <enum 8 ax_wildcard_trigger> 11ax wildcardtrigger has
  49. been received
  50. <enum 9 ax_unassoc_wildcard_trigger> 11ax wildcard trigger
  51. for unassociated STAs has been received
  52. <enum 12 eht_su_trigger> EHT R1 trigger received for
  53. this device
  54. <enum 10 MU_UL_response_to_response>
  55. <enum 11 Ranging_NDP_LMR_frames> Ranging NDP + LMR need
  56. to be sent in response to ranging NDPA + NDP
  57. <legal 0-12>
  58. */
  59. #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_SELFGEN_RESPONSE_REASON_OFFSET 0x0000000000000000
  60. #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_SELFGEN_RESPONSE_REASON_LSB 0
  61. #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_SELFGEN_RESPONSE_REASON_MSB 3
  62. #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_SELFGEN_RESPONSE_REASON_MASK 0x000000000000000f
  63. /* Description AX_TRIGGER_TYPE
  64. Field Only valid when selfgen_response_reason is an 11ax
  65. related trigger
  66. The 11AX trigger type/ trigger number:
  67. It identifies which trigger was received.
  68. <enum 0 ax_trigger_basic>
  69. <enum 1 ax_trigger_brpoll>
  70. <enum 2 ax_trigger_mu_bar>
  71. <enum 3 ax_trigger_mu_rts>
  72. <enum 4 ax_trigger_buffer_size>
  73. <enum 5 ax_trigger_gcr_mu_bar>
  74. <enum 6 ax_trigger_BQRP>
  75. <enum 7 ax_trigger_NDP_fb_report_poll>
  76. <enum 8 ax_tb_ranging_trigger>
  77. <enum 9 ax_trigger_reserved_9>
  78. <enum 10 ax_trigger_reserved_10>
  79. <enum 11 ax_trigger_reserved_11>
  80. <enum 12 ax_trigger_reserved_12>
  81. <enum 13 ax_trigger_reserved_13>
  82. <enum 14 ax_trigger_reserved_14>
  83. <enum 15 ax_trigger_reserved_15>
  84. <legal all>
  85. */
  86. #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_AX_TRIGGER_TYPE_OFFSET 0x0000000000000000
  87. #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_AX_TRIGGER_TYPE_LSB 4
  88. #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_AX_TRIGGER_TYPE_MSB 7
  89. #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_AX_TRIGGER_TYPE_MASK 0x00000000000000f0
  90. /* Description SR_PPDU
  91. Field only valid with SRP Responder support
  92. Indicates if the received frame was sent using SRP as indicated
  93. by the 'SR PPDU' bit in the 'CAS Control' in the 'HE A-Control'
  94. in one of the MPDUs received
  95. <legal all>
  96. */
  97. #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_SR_PPDU_OFFSET 0x0000000000000000
  98. #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_SR_PPDU_LSB 8
  99. #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_SR_PPDU_MSB 8
  100. #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_SR_PPDU_MASK 0x0000000000000100
  101. /* Description RESERVED
  102. <legal 0>
  103. */
  104. #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_RESERVED_OFFSET 0x0000000000000000
  105. #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_RESERVED_LSB 9
  106. #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_RESERVED_MSB 15
  107. #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_RESERVED_MASK 0x000000000000fe00
  108. /* Description FRAME_CONTROL
  109. Field not valid when selfgen_response_reason is MU_UL_response_to_response
  110. For SU receptions:
  111. frame control field of the received frame
  112. In 11ah Mode of Operation, for non-NDP frames the BW information
  113. is extracted from Frame Control fields [11:8].
  114. Decode is as follows
  115. Bits[11] - Dynamic/Static
  116. Bits[10:8] - Channel BW
  117. */
  118. #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_FRAME_CONTROL_OFFSET 0x0000000000000000
  119. #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_FRAME_CONTROL_LSB 16
  120. #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_FRAME_CONTROL_MSB 31
  121. #define RX_PPDU_ACK_REPORT_ACK_REPORT_DETAILS_FRAME_CONTROL_MASK 0x00000000ffff0000
  122. /* Description TLV64_PADDING
  123. Automatic DWORD padding inserted while converting TLV32
  124. to TLV64 for 64 bit ARCH
  125. <legal 0>
  126. */
  127. #define RX_PPDU_ACK_REPORT_TLV64_PADDING_OFFSET 0x0000000000000000
  128. #define RX_PPDU_ACK_REPORT_TLV64_PADDING_LSB 32
  129. #define RX_PPDU_ACK_REPORT_TLV64_PADDING_MSB 63
  130. #define RX_PPDU_ACK_REPORT_TLV64_PADDING_MASK 0xffffffff00000000
  131. #endif // RX_PPDU_ACK_REPORT