1 2 /* 3 * Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved. 4 * SPDX-License-Identifier: ISC 5 */ 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #ifndef _HE_SIG_A_SU_INFO_H_ 20 #define _HE_SIG_A_SU_INFO_H_ 21 #if !defined(__ASSEMBLER__) 22 #endif 23 24 #define NUM_OF_DWORDS_HE_SIG_A_SU_INFO 2 25 26 27 struct he_sig_a_su_info { 28 #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 29 uint32_t format_indication : 1, 30 beam_change : 1, 31 dl_ul_flag : 1, 32 transmit_mcs : 4, 33 dcm : 1, 34 bss_color_id : 6, 35 reserved_0a : 1, 36 spatial_reuse : 4, 37 transmit_bw : 2, 38 cp_ltf_size : 2, 39 nsts : 3, 40 reserved_0b : 6; 41 uint32_t txop_duration : 7, 42 coding : 1, 43 ldpc_extra_symbol : 1, 44 stbc : 1, 45 txbf : 1, 46 packet_extension_a_factor : 2, 47 packet_extension_pe_disambiguity : 1, 48 reserved_1a : 1, 49 doppler_indication : 1, 50 crc : 4, 51 tail : 6, 52 dot11ax_su_extended : 1, 53 dot11ax_ext_ru_size : 3, 54 rx_ndp : 1, 55 rx_integrity_check_passed : 1; 56 #else 57 uint32_t reserved_0b : 6, 58 nsts : 3, 59 cp_ltf_size : 2, 60 transmit_bw : 2, 61 spatial_reuse : 4, 62 reserved_0a : 1, 63 bss_color_id : 6, 64 dcm : 1, 65 transmit_mcs : 4, 66 dl_ul_flag : 1, 67 beam_change : 1, 68 format_indication : 1; 69 uint32_t rx_integrity_check_passed : 1, 70 rx_ndp : 1, 71 dot11ax_ext_ru_size : 3, 72 dot11ax_su_extended : 1, 73 tail : 6, 74 crc : 4, 75 doppler_indication : 1, 76 reserved_1a : 1, 77 packet_extension_pe_disambiguity : 1, 78 packet_extension_a_factor : 2, 79 txbf : 1, 80 stbc : 1, 81 ldpc_extra_symbol : 1, 82 coding : 1, 83 txop_duration : 7; 84 #endif 85 }; 86 87 88 89 90 #define HE_SIG_A_SU_INFO_FORMAT_INDICATION_OFFSET 0x00000000 91 #define HE_SIG_A_SU_INFO_FORMAT_INDICATION_LSB 0 92 #define HE_SIG_A_SU_INFO_FORMAT_INDICATION_MSB 0 93 #define HE_SIG_A_SU_INFO_FORMAT_INDICATION_MASK 0x00000001 94 95 96 97 98 #define HE_SIG_A_SU_INFO_BEAM_CHANGE_OFFSET 0x00000000 99 #define HE_SIG_A_SU_INFO_BEAM_CHANGE_LSB 1 100 #define HE_SIG_A_SU_INFO_BEAM_CHANGE_MSB 1 101 #define HE_SIG_A_SU_INFO_BEAM_CHANGE_MASK 0x00000002 102 103 104 105 106 #define HE_SIG_A_SU_INFO_DL_UL_FLAG_OFFSET 0x00000000 107 #define HE_SIG_A_SU_INFO_DL_UL_FLAG_LSB 2 108 #define HE_SIG_A_SU_INFO_DL_UL_FLAG_MSB 2 109 #define HE_SIG_A_SU_INFO_DL_UL_FLAG_MASK 0x00000004 110 111 112 113 114 #define HE_SIG_A_SU_INFO_TRANSMIT_MCS_OFFSET 0x00000000 115 #define HE_SIG_A_SU_INFO_TRANSMIT_MCS_LSB 3 116 #define HE_SIG_A_SU_INFO_TRANSMIT_MCS_MSB 6 117 #define HE_SIG_A_SU_INFO_TRANSMIT_MCS_MASK 0x00000078 118 119 120 121 122 #define HE_SIG_A_SU_INFO_DCM_OFFSET 0x00000000 123 #define HE_SIG_A_SU_INFO_DCM_LSB 7 124 #define HE_SIG_A_SU_INFO_DCM_MSB 7 125 #define HE_SIG_A_SU_INFO_DCM_MASK 0x00000080 126 127 128 129 130 #define HE_SIG_A_SU_INFO_BSS_COLOR_ID_OFFSET 0x00000000 131 #define HE_SIG_A_SU_INFO_BSS_COLOR_ID_LSB 8 132 #define HE_SIG_A_SU_INFO_BSS_COLOR_ID_MSB 13 133 #define HE_SIG_A_SU_INFO_BSS_COLOR_ID_MASK 0x00003f00 134 135 136 137 138 #define HE_SIG_A_SU_INFO_RESERVED_0A_OFFSET 0x00000000 139 #define HE_SIG_A_SU_INFO_RESERVED_0A_LSB 14 140 #define HE_SIG_A_SU_INFO_RESERVED_0A_MSB 14 141 #define HE_SIG_A_SU_INFO_RESERVED_0A_MASK 0x00004000 142 143 144 145 146 #define HE_SIG_A_SU_INFO_SPATIAL_REUSE_OFFSET 0x00000000 147 #define HE_SIG_A_SU_INFO_SPATIAL_REUSE_LSB 15 148 #define HE_SIG_A_SU_INFO_SPATIAL_REUSE_MSB 18 149 #define HE_SIG_A_SU_INFO_SPATIAL_REUSE_MASK 0x00078000 150 151 152 153 154 #define HE_SIG_A_SU_INFO_TRANSMIT_BW_OFFSET 0x00000000 155 #define HE_SIG_A_SU_INFO_TRANSMIT_BW_LSB 19 156 #define HE_SIG_A_SU_INFO_TRANSMIT_BW_MSB 20 157 #define HE_SIG_A_SU_INFO_TRANSMIT_BW_MASK 0x00180000 158 159 160 161 162 #define HE_SIG_A_SU_INFO_CP_LTF_SIZE_OFFSET 0x00000000 163 #define HE_SIG_A_SU_INFO_CP_LTF_SIZE_LSB 21 164 #define HE_SIG_A_SU_INFO_CP_LTF_SIZE_MSB 22 165 #define HE_SIG_A_SU_INFO_CP_LTF_SIZE_MASK 0x00600000 166 167 168 169 170 #define HE_SIG_A_SU_INFO_NSTS_OFFSET 0x00000000 171 #define HE_SIG_A_SU_INFO_NSTS_LSB 23 172 #define HE_SIG_A_SU_INFO_NSTS_MSB 25 173 #define HE_SIG_A_SU_INFO_NSTS_MASK 0x03800000 174 175 176 177 178 #define HE_SIG_A_SU_INFO_RESERVED_0B_OFFSET 0x00000000 179 #define HE_SIG_A_SU_INFO_RESERVED_0B_LSB 26 180 #define HE_SIG_A_SU_INFO_RESERVED_0B_MSB 31 181 #define HE_SIG_A_SU_INFO_RESERVED_0B_MASK 0xfc000000 182 183 184 185 186 #define HE_SIG_A_SU_INFO_TXOP_DURATION_OFFSET 0x00000004 187 #define HE_SIG_A_SU_INFO_TXOP_DURATION_LSB 0 188 #define HE_SIG_A_SU_INFO_TXOP_DURATION_MSB 6 189 #define HE_SIG_A_SU_INFO_TXOP_DURATION_MASK 0x0000007f 190 191 192 193 194 #define HE_SIG_A_SU_INFO_CODING_OFFSET 0x00000004 195 #define HE_SIG_A_SU_INFO_CODING_LSB 7 196 #define HE_SIG_A_SU_INFO_CODING_MSB 7 197 #define HE_SIG_A_SU_INFO_CODING_MASK 0x00000080 198 199 200 201 202 #define HE_SIG_A_SU_INFO_LDPC_EXTRA_SYMBOL_OFFSET 0x00000004 203 #define HE_SIG_A_SU_INFO_LDPC_EXTRA_SYMBOL_LSB 8 204 #define HE_SIG_A_SU_INFO_LDPC_EXTRA_SYMBOL_MSB 8 205 #define HE_SIG_A_SU_INFO_LDPC_EXTRA_SYMBOL_MASK 0x00000100 206 207 208 209 210 #define HE_SIG_A_SU_INFO_STBC_OFFSET 0x00000004 211 #define HE_SIG_A_SU_INFO_STBC_LSB 9 212 #define HE_SIG_A_SU_INFO_STBC_MSB 9 213 #define HE_SIG_A_SU_INFO_STBC_MASK 0x00000200 214 215 216 217 218 #define HE_SIG_A_SU_INFO_TXBF_OFFSET 0x00000004 219 #define HE_SIG_A_SU_INFO_TXBF_LSB 10 220 #define HE_SIG_A_SU_INFO_TXBF_MSB 10 221 #define HE_SIG_A_SU_INFO_TXBF_MASK 0x00000400 222 223 224 225 226 #define HE_SIG_A_SU_INFO_PACKET_EXTENSION_A_FACTOR_OFFSET 0x00000004 227 #define HE_SIG_A_SU_INFO_PACKET_EXTENSION_A_FACTOR_LSB 11 228 #define HE_SIG_A_SU_INFO_PACKET_EXTENSION_A_FACTOR_MSB 12 229 #define HE_SIG_A_SU_INFO_PACKET_EXTENSION_A_FACTOR_MASK 0x00001800 230 231 232 233 234 #define HE_SIG_A_SU_INFO_PACKET_EXTENSION_PE_DISAMBIGUITY_OFFSET 0x00000004 235 #define HE_SIG_A_SU_INFO_PACKET_EXTENSION_PE_DISAMBIGUITY_LSB 13 236 #define HE_SIG_A_SU_INFO_PACKET_EXTENSION_PE_DISAMBIGUITY_MSB 13 237 #define HE_SIG_A_SU_INFO_PACKET_EXTENSION_PE_DISAMBIGUITY_MASK 0x00002000 238 239 240 241 242 #define HE_SIG_A_SU_INFO_RESERVED_1A_OFFSET 0x00000004 243 #define HE_SIG_A_SU_INFO_RESERVED_1A_LSB 14 244 #define HE_SIG_A_SU_INFO_RESERVED_1A_MSB 14 245 #define HE_SIG_A_SU_INFO_RESERVED_1A_MASK 0x00004000 246 247 248 249 250 #define HE_SIG_A_SU_INFO_DOPPLER_INDICATION_OFFSET 0x00000004 251 #define HE_SIG_A_SU_INFO_DOPPLER_INDICATION_LSB 15 252 #define HE_SIG_A_SU_INFO_DOPPLER_INDICATION_MSB 15 253 #define HE_SIG_A_SU_INFO_DOPPLER_INDICATION_MASK 0x00008000 254 255 256 257 258 #define HE_SIG_A_SU_INFO_CRC_OFFSET 0x00000004 259 #define HE_SIG_A_SU_INFO_CRC_LSB 16 260 #define HE_SIG_A_SU_INFO_CRC_MSB 19 261 #define HE_SIG_A_SU_INFO_CRC_MASK 0x000f0000 262 263 264 265 266 #define HE_SIG_A_SU_INFO_TAIL_OFFSET 0x00000004 267 #define HE_SIG_A_SU_INFO_TAIL_LSB 20 268 #define HE_SIG_A_SU_INFO_TAIL_MSB 25 269 #define HE_SIG_A_SU_INFO_TAIL_MASK 0x03f00000 270 271 272 273 274 #define HE_SIG_A_SU_INFO_DOT11AX_SU_EXTENDED_OFFSET 0x00000004 275 #define HE_SIG_A_SU_INFO_DOT11AX_SU_EXTENDED_LSB 26 276 #define HE_SIG_A_SU_INFO_DOT11AX_SU_EXTENDED_MSB 26 277 #define HE_SIG_A_SU_INFO_DOT11AX_SU_EXTENDED_MASK 0x04000000 278 279 280 281 282 #define HE_SIG_A_SU_INFO_DOT11AX_EXT_RU_SIZE_OFFSET 0x00000004 283 #define HE_SIG_A_SU_INFO_DOT11AX_EXT_RU_SIZE_LSB 27 284 #define HE_SIG_A_SU_INFO_DOT11AX_EXT_RU_SIZE_MSB 29 285 #define HE_SIG_A_SU_INFO_DOT11AX_EXT_RU_SIZE_MASK 0x38000000 286 287 288 289 290 #define HE_SIG_A_SU_INFO_RX_NDP_OFFSET 0x00000004 291 #define HE_SIG_A_SU_INFO_RX_NDP_LSB 30 292 #define HE_SIG_A_SU_INFO_RX_NDP_MSB 30 293 #define HE_SIG_A_SU_INFO_RX_NDP_MASK 0x40000000 294 295 296 297 298 #define HE_SIG_A_SU_INFO_RX_INTEGRITY_CHECK_PASSED_OFFSET 0x00000004 299 #define HE_SIG_A_SU_INFO_RX_INTEGRITY_CHECK_PASSED_LSB 31 300 #define HE_SIG_A_SU_INFO_RX_INTEGRITY_CHECK_PASSED_MSB 31 301 #define HE_SIG_A_SU_INFO_RX_INTEGRITY_CHECK_PASSED_MASK 0x80000000 302 303 304 305 #endif 306