1 2 /* Copyright (c) 2022, 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 17 18 19 20 21 22 23 24 25 26 #ifndef _MACTX_HT_SIG_H_ 27 #define _MACTX_HT_SIG_H_ 28 #if !defined(__ASSEMBLER__) 29 #endif 30 31 #include "ht_sig_info.h" 32 #define NUM_OF_DWORDS_MACTX_HT_SIG 2 33 34 #define NUM_OF_QWORDS_MACTX_HT_SIG 1 35 36 37 struct mactx_ht_sig { 38 #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 39 struct ht_sig_info mactx_ht_sig_info_details; 40 #else 41 struct ht_sig_info mactx_ht_sig_info_details; 42 #endif 43 }; 44 45 46 /* Description MACTX_HT_SIG_INFO_DETAILS 47 48 See detailed description of the STRUCT 49 */ 50 51 52 /* Description MCS 53 54 Modulation Coding Scheme: 55 0-7 are used for single stream 56 8-15 are used for 2 streams 57 16-23 are used for 3 streams 58 24-31 are used for 4 streams 59 32 is used for duplicate HT20 (unsupported) 60 33-76 is used for unequal modulation (unsupported) 61 77-127 is reserved. 62 <legal 0-31> 63 */ 64 65 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_MCS_OFFSET 0x0000000000000000 66 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_MCS_LSB 0 67 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_MCS_MSB 6 68 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_MCS_MASK 0x000000000000007f 69 70 71 /* Description CBW 72 73 Packet bandwidth: 74 <enum 0 ht_20_mhz> 75 <enum 1 ht_40_mhz> 76 <legal 0-1> 77 */ 78 79 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_CBW_OFFSET 0x0000000000000000 80 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_CBW_LSB 7 81 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_CBW_MSB 7 82 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_CBW_MASK 0x0000000000000080 83 84 85 /* Description LENGTH 86 87 This is the MPDU or A-MPDU length in octets of the PPDU 88 <legal all> 89 */ 90 91 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_LENGTH_OFFSET 0x0000000000000000 92 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_LENGTH_LSB 8 93 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_LENGTH_MSB 23 94 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_LENGTH_MASK 0x0000000000ffff00 95 96 97 /* Description RESERVED_0 98 99 This field is not part of HT-SIG 100 Reserved: Should be set to 0 by the MAC and ignored by the 101 PHY <legal 0> 102 */ 103 104 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_RESERVED_0_OFFSET 0x0000000000000000 105 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_RESERVED_0_LSB 24 106 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_RESERVED_0_MSB 31 107 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_RESERVED_0_MASK 0x00000000ff000000 108 109 110 /* Description SMOOTHING 111 112 Field indicates if smoothing is needed 113 E_num 0 do_smoothing Unsupported setting: indicates 114 smoothing is often used for beamforming 115 <enum 1 no_smoothing> Indicates no smoothing is used 116 117 <legal 1> 118 */ 119 120 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_SMOOTHING_OFFSET 0x0000000000000000 121 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_SMOOTHING_LSB 32 122 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_SMOOTHING_MSB 32 123 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_SMOOTHING_MASK 0x0000000100000000 124 125 126 /* Description NOT_SOUNDING 127 128 E_num 0 sounding Unsupported setting: indicates sounding 129 is used 130 <enum 1 no_sounding> Indicates no sounding is used 131 <legal 1> 132 */ 133 134 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_NOT_SOUNDING_OFFSET 0x0000000000000000 135 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_NOT_SOUNDING_LSB 33 136 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_NOT_SOUNDING_MSB 33 137 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_NOT_SOUNDING_MASK 0x0000000200000000 138 139 140 /* Description HT_RESERVED 141 142 Reserved: Should be set to 1 by the MAC and ignored by the 143 PHY 144 <legal 1> 145 */ 146 147 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_HT_RESERVED_OFFSET 0x0000000000000000 148 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_HT_RESERVED_LSB 34 149 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_HT_RESERVED_MSB 34 150 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_HT_RESERVED_MASK 0x0000000400000000 151 152 153 /* Description AGGREGATION 154 155 <enum 0 mpdu> Indicates MPDU format 156 <enum 1 a_mpdu> Indicates A-MPDU format 157 <legal 0-1> 158 */ 159 160 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_AGGREGATION_OFFSET 0x0000000000000000 161 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_AGGREGATION_LSB 35 162 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_AGGREGATION_MSB 35 163 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_AGGREGATION_MASK 0x0000000800000000 164 165 166 /* Description STBC 167 168 <enum 0 no_stbc> Indicates no STBC 169 <enum 1 1_str_stbc> Indicates 1 stream STBC 170 E_num 2 2_str_stbc Indicates 2 stream STBC (Unsupported) 171 172 <legal 0-1> 173 */ 174 175 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_STBC_OFFSET 0x0000000000000000 176 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_STBC_LSB 36 177 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_STBC_MSB 37 178 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_STBC_MASK 0x0000003000000000 179 180 181 /* Description FEC_CODING 182 183 <enum 0 ht_bcc> Indicates BCC coding 184 <enum 1 ht_ldpc> Indicates LDPC coding 185 <legal 0-1> 186 */ 187 188 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_FEC_CODING_OFFSET 0x0000000000000000 189 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_FEC_CODING_LSB 38 190 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_FEC_CODING_MSB 38 191 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_FEC_CODING_MASK 0x0000004000000000 192 193 194 /* Description SHORT_GI 195 196 <enum 0 ht_normal_gi> Indicates normal guard interval 197 198 <enum 1 ht_short_gi> Indicates short guard interval 199 200 <legal 0-1> 201 */ 202 203 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_SHORT_GI_OFFSET 0x0000000000000000 204 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_SHORT_GI_LSB 39 205 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_SHORT_GI_MSB 39 206 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_SHORT_GI_MASK 0x0000008000000000 207 208 209 /* Description NUM_EXT_SP_STR 210 211 Number of extension spatial streams: (Used for TxBF) 212 <enum 0 0_ext_sp_str> No extension spatial streams 213 E_num 1 1_ext_sp_str Not supported: 1 extension spatial 214 streams 215 E_num 2 2_ext_sp_str Not supported: 2 extension spatial 216 streams 217 <legal 0> 218 */ 219 220 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_NUM_EXT_SP_STR_OFFSET 0x0000000000000000 221 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_NUM_EXT_SP_STR_LSB 40 222 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_NUM_EXT_SP_STR_MSB 41 223 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_NUM_EXT_SP_STR_MASK 0x0000030000000000 224 225 226 /* Description CRC 227 228 The CRC protects the HT-SIG (HT-SIG[0][23:0] and HT-SIG[1][9:0]. 229 The generator polynomial is G(D) = D8 + D2 + D + 1. <legal 230 all> 231 */ 232 233 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_CRC_OFFSET 0x0000000000000000 234 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_CRC_LSB 42 235 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_CRC_MSB 49 236 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_CRC_MASK 0x0003fc0000000000 237 238 239 /* Description SIGNAL_TAIL 240 241 The 6 bits of tail is always set to 0 is used to flush the 242 BCC encoder and decoder. <legal 0> 243 */ 244 245 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_SIGNAL_TAIL_OFFSET 0x0000000000000000 246 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_SIGNAL_TAIL_LSB 50 247 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_SIGNAL_TAIL_MSB 55 248 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_SIGNAL_TAIL_MASK 0x00fc000000000000 249 250 251 /* Description RESERVED_1 252 253 This field is not part of HT-SIG: 254 Reserved: Should be set to 0 by the MAC and ignored by the 255 PHY. <legal 0> 256 */ 257 258 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_RESERVED_1_OFFSET 0x0000000000000000 259 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_RESERVED_1_LSB 56 260 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_RESERVED_1_MSB 62 261 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_RESERVED_1_MASK 0x7f00000000000000 262 263 264 /* Description RX_INTEGRITY_CHECK_PASSED 265 266 TX side: Set to 0 267 RX side: Set to 1 if PHY determines the HT-SIG CRC check 268 has passed, else set to 0 269 270 <legal all> 271 */ 272 273 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_RX_INTEGRITY_CHECK_PASSED_OFFSET 0x0000000000000000 274 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_RX_INTEGRITY_CHECK_PASSED_LSB 63 275 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_RX_INTEGRITY_CHECK_PASSED_MSB 63 276 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_RX_INTEGRITY_CHECK_PASSED_MASK 0x8000000000000000 277 278 279 280 #endif // MACTX_HT_SIG 281