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 _VHT_SIG_B_SU80_INFO_H_ 27 #define _VHT_SIG_B_SU80_INFO_H_ 28 #if !defined(__ASSEMBLER__) 29 #endif 30 31 #define NUM_OF_DWORDS_VHT_SIG_B_SU80_INFO 4 32 33 34 struct vht_sig_b_su80_info { 35 #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 36 uint32_t length : 21, // [20:0] 37 vhtb_reserved : 2, // [22:21] 38 tail : 6, // [28:23] 39 reserved_0 : 2, // [30:29] 40 rx_ndp : 1; // [31:31] 41 uint32_t length_copy_a : 21, // [20:0] 42 vhtb_reserved_copy_a : 2, // [22:21] 43 tail_copy_a : 6, // [28:23] 44 reserved_1 : 2, // [30:29] 45 rx_ndp_copy_a : 1; // [31:31] 46 uint32_t length_copy_b : 21, // [20:0] 47 vhtb_reserved_copy_b : 2, // [22:21] 48 tail_copy_b : 6, // [28:23] 49 reserved_2 : 2, // [30:29] 50 rx_ndp_copy_b : 1; // [31:31] 51 uint32_t length_copy_c : 21, // [20:0] 52 vhtb_reserved_copy_c : 2, // [22:21] 53 tail_copy_c : 6, // [28:23] 54 reserved_3 : 2, // [30:29] 55 rx_ndp_copy_c : 1; // [31:31] 56 #else 57 uint32_t rx_ndp : 1, // [31:31] 58 reserved_0 : 2, // [30:29] 59 tail : 6, // [28:23] 60 vhtb_reserved : 2, // [22:21] 61 length : 21; // [20:0] 62 uint32_t rx_ndp_copy_a : 1, // [31:31] 63 reserved_1 : 2, // [30:29] 64 tail_copy_a : 6, // [28:23] 65 vhtb_reserved_copy_a : 2, // [22:21] 66 length_copy_a : 21; // [20:0] 67 uint32_t rx_ndp_copy_b : 1, // [31:31] 68 reserved_2 : 2, // [30:29] 69 tail_copy_b : 6, // [28:23] 70 vhtb_reserved_copy_b : 2, // [22:21] 71 length_copy_b : 21; // [20:0] 72 uint32_t rx_ndp_copy_c : 1, // [31:31] 73 reserved_3 : 2, // [30:29] 74 tail_copy_c : 6, // [28:23] 75 vhtb_reserved_copy_c : 2, // [22:21] 76 length_copy_c : 21; // [20:0] 77 #endif 78 }; 79 80 81 /* Description LENGTH 82 83 VHT-SIG-B Length (in units of 4 octets) = ceiling (LENGTH/4) 84 85 <legal all> 86 */ 87 88 #define VHT_SIG_B_SU80_INFO_LENGTH_OFFSET 0x00000000 89 #define VHT_SIG_B_SU80_INFO_LENGTH_LSB 0 90 #define VHT_SIG_B_SU80_INFO_LENGTH_MSB 20 91 #define VHT_SIG_B_SU80_INFO_LENGTH_MASK 0x001fffff 92 93 94 /* Description VHTB_RESERVED 95 96 Reserved: Set to all ones for non-NDP frames and ignored 97 on receive <legal 1,3> 98 */ 99 100 #define VHT_SIG_B_SU80_INFO_VHTB_RESERVED_OFFSET 0x00000000 101 #define VHT_SIG_B_SU80_INFO_VHTB_RESERVED_LSB 21 102 #define VHT_SIG_B_SU80_INFO_VHTB_RESERVED_MSB 22 103 #define VHT_SIG_B_SU80_INFO_VHTB_RESERVED_MASK 0x00600000 104 105 106 /* Description TAIL 107 108 Used to terminate the trellis of the convolutional decoder. 109 110 Set to 0. <legal 0> 111 */ 112 113 #define VHT_SIG_B_SU80_INFO_TAIL_OFFSET 0x00000000 114 #define VHT_SIG_B_SU80_INFO_TAIL_LSB 23 115 #define VHT_SIG_B_SU80_INFO_TAIL_MSB 28 116 #define VHT_SIG_B_SU80_INFO_TAIL_MASK 0x1f800000 117 118 119 /* Description RESERVED_0 120 121 Not part of VHT-SIG-B. 122 Reserved: Set to 0 and ignored on receive <legal 0> 123 */ 124 125 #define VHT_SIG_B_SU80_INFO_RESERVED_0_OFFSET 0x00000000 126 #define VHT_SIG_B_SU80_INFO_RESERVED_0_LSB 29 127 #define VHT_SIG_B_SU80_INFO_RESERVED_0_MSB 30 128 #define VHT_SIG_B_SU80_INFO_RESERVED_0_MASK 0x60000000 129 130 131 /* Description RX_NDP 132 133 Not part of VHT-SIG-B. 134 Used to identify received NDP frame 135 <legal 0,1> 136 */ 137 138 #define VHT_SIG_B_SU80_INFO_RX_NDP_OFFSET 0x00000000 139 #define VHT_SIG_B_SU80_INFO_RX_NDP_LSB 31 140 #define VHT_SIG_B_SU80_INFO_RX_NDP_MSB 31 141 #define VHT_SIG_B_SU80_INFO_RX_NDP_MASK 0x80000000 142 143 144 /* Description LENGTH_COPY_A 145 146 Same as "length" <legal all> 147 */ 148 149 #define VHT_SIG_B_SU80_INFO_LENGTH_COPY_A_OFFSET 0x00000004 150 #define VHT_SIG_B_SU80_INFO_LENGTH_COPY_A_LSB 0 151 #define VHT_SIG_B_SU80_INFO_LENGTH_COPY_A_MSB 20 152 #define VHT_SIG_B_SU80_INFO_LENGTH_COPY_A_MASK 0x001fffff 153 154 155 /* Description VHTB_RESERVED_COPY_A 156 157 Same as "vhtb_reserved" <legal 1,3> 158 */ 159 160 #define VHT_SIG_B_SU80_INFO_VHTB_RESERVED_COPY_A_OFFSET 0x00000004 161 #define VHT_SIG_B_SU80_INFO_VHTB_RESERVED_COPY_A_LSB 21 162 #define VHT_SIG_B_SU80_INFO_VHTB_RESERVED_COPY_A_MSB 22 163 #define VHT_SIG_B_SU80_INFO_VHTB_RESERVED_COPY_A_MASK 0x00600000 164 165 166 /* Description TAIL_COPY_A 167 168 Same as "tail" <legal 0> 169 */ 170 171 #define VHT_SIG_B_SU80_INFO_TAIL_COPY_A_OFFSET 0x00000004 172 #define VHT_SIG_B_SU80_INFO_TAIL_COPY_A_LSB 23 173 #define VHT_SIG_B_SU80_INFO_TAIL_COPY_A_MSB 28 174 #define VHT_SIG_B_SU80_INFO_TAIL_COPY_A_MASK 0x1f800000 175 176 177 /* Description RESERVED_1 178 179 Reserved: Set to 0 and ignored on receive <legal 0> 180 */ 181 182 #define VHT_SIG_B_SU80_INFO_RESERVED_1_OFFSET 0x00000004 183 #define VHT_SIG_B_SU80_INFO_RESERVED_1_LSB 29 184 #define VHT_SIG_B_SU80_INFO_RESERVED_1_MSB 30 185 #define VHT_SIG_B_SU80_INFO_RESERVED_1_MASK 0x60000000 186 187 188 /* Description RX_NDP_COPY_A 189 190 Not part of VHT-SIG-B. 191 Used to identify received NDP frame 192 <legal 0,1> 193 */ 194 195 #define VHT_SIG_B_SU80_INFO_RX_NDP_COPY_A_OFFSET 0x00000004 196 #define VHT_SIG_B_SU80_INFO_RX_NDP_COPY_A_LSB 31 197 #define VHT_SIG_B_SU80_INFO_RX_NDP_COPY_A_MSB 31 198 #define VHT_SIG_B_SU80_INFO_RX_NDP_COPY_A_MASK 0x80000000 199 200 201 /* Description LENGTH_COPY_B 202 203 Same as "length" <legal all> 204 */ 205 206 #define VHT_SIG_B_SU80_INFO_LENGTH_COPY_B_OFFSET 0x00000008 207 #define VHT_SIG_B_SU80_INFO_LENGTH_COPY_B_LSB 0 208 #define VHT_SIG_B_SU80_INFO_LENGTH_COPY_B_MSB 20 209 #define VHT_SIG_B_SU80_INFO_LENGTH_COPY_B_MASK 0x001fffff 210 211 212 /* Description VHTB_RESERVED_COPY_B 213 214 Same as "vhtb_reserved" <legal 1,3> 215 */ 216 217 #define VHT_SIG_B_SU80_INFO_VHTB_RESERVED_COPY_B_OFFSET 0x00000008 218 #define VHT_SIG_B_SU80_INFO_VHTB_RESERVED_COPY_B_LSB 21 219 #define VHT_SIG_B_SU80_INFO_VHTB_RESERVED_COPY_B_MSB 22 220 #define VHT_SIG_B_SU80_INFO_VHTB_RESERVED_COPY_B_MASK 0x00600000 221 222 223 /* Description TAIL_COPY_B 224 225 Same as "tail" <legal 0> 226 */ 227 228 #define VHT_SIG_B_SU80_INFO_TAIL_COPY_B_OFFSET 0x00000008 229 #define VHT_SIG_B_SU80_INFO_TAIL_COPY_B_LSB 23 230 #define VHT_SIG_B_SU80_INFO_TAIL_COPY_B_MSB 28 231 #define VHT_SIG_B_SU80_INFO_TAIL_COPY_B_MASK 0x1f800000 232 233 234 /* Description RESERVED_2 235 236 Reserved: Set to 0 and ignored on receive <legal 0> 237 */ 238 239 #define VHT_SIG_B_SU80_INFO_RESERVED_2_OFFSET 0x00000008 240 #define VHT_SIG_B_SU80_INFO_RESERVED_2_LSB 29 241 #define VHT_SIG_B_SU80_INFO_RESERVED_2_MSB 30 242 #define VHT_SIG_B_SU80_INFO_RESERVED_2_MASK 0x60000000 243 244 245 /* Description RX_NDP_COPY_B 246 247 Not part of VHT-SIG-B. 248 Used to identify received NDP frame 249 <legal 0,1> 250 */ 251 252 #define VHT_SIG_B_SU80_INFO_RX_NDP_COPY_B_OFFSET 0x00000008 253 #define VHT_SIG_B_SU80_INFO_RX_NDP_COPY_B_LSB 31 254 #define VHT_SIG_B_SU80_INFO_RX_NDP_COPY_B_MSB 31 255 #define VHT_SIG_B_SU80_INFO_RX_NDP_COPY_B_MASK 0x80000000 256 257 258 /* Description LENGTH_COPY_C 259 260 Same as "length" <legal all> 261 */ 262 263 #define VHT_SIG_B_SU80_INFO_LENGTH_COPY_C_OFFSET 0x0000000c 264 #define VHT_SIG_B_SU80_INFO_LENGTH_COPY_C_LSB 0 265 #define VHT_SIG_B_SU80_INFO_LENGTH_COPY_C_MSB 20 266 #define VHT_SIG_B_SU80_INFO_LENGTH_COPY_C_MASK 0x001fffff 267 268 269 /* Description VHTB_RESERVED_COPY_C 270 271 Same as "vhtb_reserved" <legal 1,3> 272 */ 273 274 #define VHT_SIG_B_SU80_INFO_VHTB_RESERVED_COPY_C_OFFSET 0x0000000c 275 #define VHT_SIG_B_SU80_INFO_VHTB_RESERVED_COPY_C_LSB 21 276 #define VHT_SIG_B_SU80_INFO_VHTB_RESERVED_COPY_C_MSB 22 277 #define VHT_SIG_B_SU80_INFO_VHTB_RESERVED_COPY_C_MASK 0x00600000 278 279 280 /* Description TAIL_COPY_C 281 282 Same as "tail" <legal 0> 283 */ 284 285 #define VHT_SIG_B_SU80_INFO_TAIL_COPY_C_OFFSET 0x0000000c 286 #define VHT_SIG_B_SU80_INFO_TAIL_COPY_C_LSB 23 287 #define VHT_SIG_B_SU80_INFO_TAIL_COPY_C_MSB 28 288 #define VHT_SIG_B_SU80_INFO_TAIL_COPY_C_MASK 0x1f800000 289 290 291 /* Description RESERVED_3 292 293 Reserved: Set to 0 and ignored on receive <legal 0> 294 */ 295 296 #define VHT_SIG_B_SU80_INFO_RESERVED_3_OFFSET 0x0000000c 297 #define VHT_SIG_B_SU80_INFO_RESERVED_3_LSB 29 298 #define VHT_SIG_B_SU80_INFO_RESERVED_3_MSB 30 299 #define VHT_SIG_B_SU80_INFO_RESERVED_3_MASK 0x60000000 300 301 302 /* Description RX_NDP_COPY_C 303 304 Not part of VHT-SIG-B. 305 Used to identify received NDP frame 306 <legal 0,1> 307 */ 308 309 #define VHT_SIG_B_SU80_INFO_RX_NDP_COPY_C_OFFSET 0x0000000c 310 #define VHT_SIG_B_SU80_INFO_RX_NDP_COPY_C_LSB 31 311 #define VHT_SIG_B_SU80_INFO_RX_NDP_COPY_C_MSB 31 312 #define VHT_SIG_B_SU80_INFO_RX_NDP_COPY_C_MASK 0x80000000 313 314 315 316 #endif // VHT_SIG_B_SU80_INFO 317