phyrx_l_sig_a.h 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. /*
  2. * Copyright (c) 2019 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. #ifndef _PHYRX_L_SIG_A_H_
  19. #define _PHYRX_L_SIG_A_H_
  20. #if !defined(__ASSEMBLER__)
  21. #endif
  22. #include "l_sig_a_info.h"
  23. // ################ START SUMMARY #################
  24. //
  25. // Dword Fields
  26. // 0 struct l_sig_a_info phyrx_l_sig_a_info_details;
  27. //
  28. // ################ END SUMMARY #################
  29. #define NUM_OF_DWORDS_PHYRX_L_SIG_A 1
  30. struct phyrx_l_sig_a {
  31. struct l_sig_a_info phyrx_l_sig_a_info_details;
  32. };
  33. /*
  34. struct l_sig_a_info phyrx_l_sig_a_info_details
  35. See detailed description of the STRUCT
  36. */
  37. /* EXTERNAL REFERENCE : struct l_sig_a_info phyrx_l_sig_a_info_details */
  38. /* Description PHYRX_L_SIG_A_0_PHYRX_L_SIG_A_INFO_DETAILS_RATE
  39. This format is originally defined for OFDM as a 4 bit
  40. field but the 5th bit was added to indicate 11b formatted
  41. frames. In the standard bit [4] is specified as reserved.
  42. For 11b frames this L-SIG is transformed in the PHY into the
  43. 11b preamble format. The following are the rates:
  44. <enum 8 ofdm_48_mbps> 64-QAM 2/3 (48 Mbps)
  45. <enum 9 ofdm_24_mbps> 16-QAM 1/2 (24 Mbps)
  46. <enum 10 ofdm_12_mbps> QPSK 1/2 (12 Mbps)
  47. <enum 11 ofdm_6_mbps> BPSK 1/2 (6 Mbps)
  48. <enum 12 ofdm_54_mbps> 64-QAM 3/4 (54 Mbps)
  49. <enum 13 ofdm_36_mbps> 16-QAM 3/4 (36 Mbps)
  50. <enum 14 ofdm_18_mbps> QPSK 1/2 (18 Mbps)
  51. <enum 15 ofdm_9_mbps> BPSK 3/4 (9 Mbps)
  52. <legal 8-15>
  53. */
  54. #define PHYRX_L_SIG_A_0_PHYRX_L_SIG_A_INFO_DETAILS_RATE_OFFSET 0x00000000
  55. #define PHYRX_L_SIG_A_0_PHYRX_L_SIG_A_INFO_DETAILS_RATE_LSB 0
  56. #define PHYRX_L_SIG_A_0_PHYRX_L_SIG_A_INFO_DETAILS_RATE_MASK 0x0000000f
  57. /* Description PHYRX_L_SIG_A_0_PHYRX_L_SIG_A_INFO_DETAILS_LSIG_RESERVED
  58. Reserved: Should be set to 0 by the MAC and ignored by
  59. the PHY
  60. <legal 0>
  61. */
  62. #define PHYRX_L_SIG_A_0_PHYRX_L_SIG_A_INFO_DETAILS_LSIG_RESERVED_OFFSET 0x00000000
  63. #define PHYRX_L_SIG_A_0_PHYRX_L_SIG_A_INFO_DETAILS_LSIG_RESERVED_LSB 4
  64. #define PHYRX_L_SIG_A_0_PHYRX_L_SIG_A_INFO_DETAILS_LSIG_RESERVED_MASK 0x00000010
  65. /* Description PHYRX_L_SIG_A_0_PHYRX_L_SIG_A_INFO_DETAILS_LENGTH
  66. The length indicates the number of octets in this MPDU.
  67. Note that when using mixed mode 11n preamble this length
  68. provides the spoofed length for the PPDU. This length
  69. provides part of the information to derive the actually PPDU
  70. length. For legacy OFDM and 11B frames the maximum length
  71. is
  72. <legal all>
  73. */
  74. #define PHYRX_L_SIG_A_0_PHYRX_L_SIG_A_INFO_DETAILS_LENGTH_OFFSET 0x00000000
  75. #define PHYRX_L_SIG_A_0_PHYRX_L_SIG_A_INFO_DETAILS_LENGTH_LSB 5
  76. #define PHYRX_L_SIG_A_0_PHYRX_L_SIG_A_INFO_DETAILS_LENGTH_MASK 0x0001ffe0
  77. /* Description PHYRX_L_SIG_A_0_PHYRX_L_SIG_A_INFO_DETAILS_PARITY
  78. 11a/n/ac TX: This field provides even parity over the
  79. first 18 bits of the signal field which means that the sum
  80. of 1s in the signal field will always be even on
  81. 11a/n/ac RX: this field contains the received parity
  82. field from the L-SIG symbol for the current packet.
  83. <legal 0-1>
  84. */
  85. #define PHYRX_L_SIG_A_0_PHYRX_L_SIG_A_INFO_DETAILS_PARITY_OFFSET 0x00000000
  86. #define PHYRX_L_SIG_A_0_PHYRX_L_SIG_A_INFO_DETAILS_PARITY_LSB 17
  87. #define PHYRX_L_SIG_A_0_PHYRX_L_SIG_A_INFO_DETAILS_PARITY_MASK 0x00020000
  88. /* Description PHYRX_L_SIG_A_0_PHYRX_L_SIG_A_INFO_DETAILS_TAIL
  89. The 6 bits of tail is always set to 0 is used to flush
  90. the BCC encoder and decoder. <legal 0>
  91. */
  92. #define PHYRX_L_SIG_A_0_PHYRX_L_SIG_A_INFO_DETAILS_TAIL_OFFSET 0x00000000
  93. #define PHYRX_L_SIG_A_0_PHYRX_L_SIG_A_INFO_DETAILS_TAIL_LSB 18
  94. #define PHYRX_L_SIG_A_0_PHYRX_L_SIG_A_INFO_DETAILS_TAIL_MASK 0x00fc0000
  95. /* Description PHYRX_L_SIG_A_0_PHYRX_L_SIG_A_INFO_DETAILS_PKT_TYPE
  96. Only used on the RX side.
  97. Note: This is not really part of L-SIG
  98. Packet type:
  99. <enum 0 dot11a>802.11a PPDU type
  100. <enum 1 dot11b>802.11b PPDU type
  101. <enum 2 dot11n_mm>802.11n Mixed Mode PPDU type
  102. <enum 3 dot11ac>802.11ac PPDU type
  103. <enum 4 dot11ax>802.11ax PPDU type
  104. <enum 5 dot11ba>802.11ba (WUR) PPDU type
  105. */
  106. #define PHYRX_L_SIG_A_0_PHYRX_L_SIG_A_INFO_DETAILS_PKT_TYPE_OFFSET 0x00000000
  107. #define PHYRX_L_SIG_A_0_PHYRX_L_SIG_A_INFO_DETAILS_PKT_TYPE_LSB 24
  108. #define PHYRX_L_SIG_A_0_PHYRX_L_SIG_A_INFO_DETAILS_PKT_TYPE_MASK 0x0f000000
  109. /* Description PHYRX_L_SIG_A_0_PHYRX_L_SIG_A_INFO_DETAILS_CAPTURED_IMPLICIT_SOUNDING
  110. Only used on the RX side.
  111. Note: This is not really part of L-SIG
  112. This indicates that the PHY has captured implicit
  113. sounding.
  114. */
  115. #define PHYRX_L_SIG_A_0_PHYRX_L_SIG_A_INFO_DETAILS_CAPTURED_IMPLICIT_SOUNDING_OFFSET 0x00000000
  116. #define PHYRX_L_SIG_A_0_PHYRX_L_SIG_A_INFO_DETAILS_CAPTURED_IMPLICIT_SOUNDING_LSB 28
  117. #define PHYRX_L_SIG_A_0_PHYRX_L_SIG_A_INFO_DETAILS_CAPTURED_IMPLICIT_SOUNDING_MASK 0x10000000
  118. /* Description PHYRX_L_SIG_A_0_PHYRX_L_SIG_A_INFO_DETAILS_RESERVED
  119. Reserved: Should be set to 0 by the transmitting MAC and
  120. ignored by the PHY <legal 0>
  121. */
  122. #define PHYRX_L_SIG_A_0_PHYRX_L_SIG_A_INFO_DETAILS_RESERVED_OFFSET 0x00000000
  123. #define PHYRX_L_SIG_A_0_PHYRX_L_SIG_A_INFO_DETAILS_RESERVED_LSB 29
  124. #define PHYRX_L_SIG_A_0_PHYRX_L_SIG_A_INFO_DETAILS_RESERVED_MASK 0xe0000000
  125. #endif // _PHYRX_L_SIG_A_H_