1 /* 2 * Copyright (c) 2018 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 19 #ifndef _RX_REO_QUEUE_EXT_H_ 20 #define _RX_REO_QUEUE_EXT_H_ 21 #if !defined(__ASSEMBLER__) 22 #endif 23 24 #include "uniform_descriptor_header.h" 25 #include "rx_mpdu_link_ptr.h" 26 27 // ################ START SUMMARY ################# 28 // 29 // Dword Fields 30 // 0 struct uniform_descriptor_header descriptor_header; 31 // 1 reserved_1a[31:0] 32 // 2-3 struct rx_mpdu_link_ptr mpdu_link_pointer_0; 33 // 4-5 struct rx_mpdu_link_ptr mpdu_link_pointer_1; 34 // 6-7 struct rx_mpdu_link_ptr mpdu_link_pointer_2; 35 // 8-9 struct rx_mpdu_link_ptr mpdu_link_pointer_3; 36 // 10-11 struct rx_mpdu_link_ptr mpdu_link_pointer_4; 37 // 12-13 struct rx_mpdu_link_ptr mpdu_link_pointer_5; 38 // 14-15 struct rx_mpdu_link_ptr mpdu_link_pointer_6; 39 // 16-17 struct rx_mpdu_link_ptr mpdu_link_pointer_7; 40 // 18-19 struct rx_mpdu_link_ptr mpdu_link_pointer_8; 41 // 20-21 struct rx_mpdu_link_ptr mpdu_link_pointer_9; 42 // 22-23 struct rx_mpdu_link_ptr mpdu_link_pointer_10; 43 // 24-25 struct rx_mpdu_link_ptr mpdu_link_pointer_11; 44 // 26-27 struct rx_mpdu_link_ptr mpdu_link_pointer_12; 45 // 28-29 struct rx_mpdu_link_ptr mpdu_link_pointer_13; 46 // 30-31 struct rx_mpdu_link_ptr mpdu_link_pointer_14; 47 // 48 // ################ END SUMMARY ################# 49 50 #define NUM_OF_DWORDS_RX_REO_QUEUE_EXT 32 51 52 struct rx_reo_queue_ext { 53 struct uniform_descriptor_header descriptor_header; 54 uint32_t reserved_1a : 32; //[31:0] 55 struct rx_mpdu_link_ptr mpdu_link_pointer_0; 56 struct rx_mpdu_link_ptr mpdu_link_pointer_1; 57 struct rx_mpdu_link_ptr mpdu_link_pointer_2; 58 struct rx_mpdu_link_ptr mpdu_link_pointer_3; 59 struct rx_mpdu_link_ptr mpdu_link_pointer_4; 60 struct rx_mpdu_link_ptr mpdu_link_pointer_5; 61 struct rx_mpdu_link_ptr mpdu_link_pointer_6; 62 struct rx_mpdu_link_ptr mpdu_link_pointer_7; 63 struct rx_mpdu_link_ptr mpdu_link_pointer_8; 64 struct rx_mpdu_link_ptr mpdu_link_pointer_9; 65 struct rx_mpdu_link_ptr mpdu_link_pointer_10; 66 struct rx_mpdu_link_ptr mpdu_link_pointer_11; 67 struct rx_mpdu_link_ptr mpdu_link_pointer_12; 68 struct rx_mpdu_link_ptr mpdu_link_pointer_13; 69 struct rx_mpdu_link_ptr mpdu_link_pointer_14; 70 }; 71 72 /* 73 74 struct uniform_descriptor_header descriptor_header 75 76 Details about which module owns this struct. 77 78 Note that sub field Buffer_type shall be set to 79 Receive_REO_queue_ext_descriptor 80 81 reserved_1a 82 83 <legal 0> 84 85 struct rx_mpdu_link_ptr mpdu_link_pointer_0 86 87 Consumer: REO 88 89 Producer: REO 90 91 92 93 Pointer to the next MPDU_link descriptor in the MPDU 94 queue 95 96 struct rx_mpdu_link_ptr mpdu_link_pointer_1 97 98 Consumer: REO 99 100 Producer: REO 101 102 103 104 Pointer to the next MPDU_link descriptor in the MPDU 105 queue 106 107 struct rx_mpdu_link_ptr mpdu_link_pointer_2 108 109 Consumer: REO 110 111 Producer: REO 112 113 114 115 Pointer to the next MPDU_link descriptor in the MPDU 116 queue 117 118 struct rx_mpdu_link_ptr mpdu_link_pointer_3 119 120 Consumer: REO 121 122 Producer: REO 123 124 125 126 Pointer to the next MPDU_link descriptor in the MPDU 127 queue 128 129 struct rx_mpdu_link_ptr mpdu_link_pointer_4 130 131 Consumer: REO 132 133 Producer: REO 134 135 136 137 Pointer to the next MPDU_link descriptor in the MPDU 138 queue 139 140 struct rx_mpdu_link_ptr mpdu_link_pointer_5 141 142 Consumer: REO 143 144 Producer: REO 145 146 147 148 Pointer to the next MPDU_link descriptor in the MPDU 149 queue 150 151 struct rx_mpdu_link_ptr mpdu_link_pointer_6 152 153 Consumer: REO 154 155 Producer: REO 156 157 158 159 Pointer to the next MPDU_link descriptor in the MPDU 160 queue 161 162 struct rx_mpdu_link_ptr mpdu_link_pointer_7 163 164 Consumer: REO 165 166 Producer: REO 167 168 169 170 Pointer to the next MPDU_link descriptor in the MPDU 171 queue 172 173 struct rx_mpdu_link_ptr mpdu_link_pointer_8 174 175 Consumer: REO 176 177 Producer: REO 178 179 180 181 Pointer to the next MPDU_link descriptor in the MPDU 182 queue 183 184 struct rx_mpdu_link_ptr mpdu_link_pointer_9 185 186 Consumer: REO 187 188 Producer: REO 189 190 191 192 Pointer to the next MPDU_link descriptor in the MPDU 193 queue 194 195 struct rx_mpdu_link_ptr mpdu_link_pointer_10 196 197 Consumer: REO 198 199 Producer: REO 200 201 202 203 Pointer to the next MPDU_link descriptor in the MPDU 204 queue 205 206 struct rx_mpdu_link_ptr mpdu_link_pointer_11 207 208 Consumer: REO 209 210 Producer: REO 211 212 213 214 Pointer to the next MPDU_link descriptor in the MPDU 215 queue 216 217 struct rx_mpdu_link_ptr mpdu_link_pointer_12 218 219 Consumer: REO 220 221 Producer: REO 222 223 224 225 Pointer to the next MPDU_link descriptor in the MPDU 226 queue 227 228 struct rx_mpdu_link_ptr mpdu_link_pointer_13 229 230 Consumer: REO 231 232 Producer: REO 233 234 235 236 Pointer to the next MPDU_link descriptor in the MPDU 237 queue 238 239 struct rx_mpdu_link_ptr mpdu_link_pointer_14 240 241 Consumer: REO 242 243 Producer: REO 244 245 246 247 Pointer to the next MPDU_link descriptor in the MPDU 248 queue 249 */ 250 251 #define RX_REO_QUEUE_EXT_0_UNIFORM_DESCRIPTOR_HEADER_DESCRIPTOR_HEADER_OFFSET 0x00000000 252 #define RX_REO_QUEUE_EXT_0_UNIFORM_DESCRIPTOR_HEADER_DESCRIPTOR_HEADER_LSB 0 253 #define RX_REO_QUEUE_EXT_0_UNIFORM_DESCRIPTOR_HEADER_DESCRIPTOR_HEADER_MASK 0xffffffff 254 255 /* Description RX_REO_QUEUE_EXT_1_RESERVED_1A 256 257 <legal 0> 258 */ 259 #define RX_REO_QUEUE_EXT_1_RESERVED_1A_OFFSET 0x00000004 260 #define RX_REO_QUEUE_EXT_1_RESERVED_1A_LSB 0 261 #define RX_REO_QUEUE_EXT_1_RESERVED_1A_MASK 0xffffffff 262 #define RX_REO_QUEUE_EXT_2_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_0_OFFSET 0x00000008 263 #define RX_REO_QUEUE_EXT_2_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_0_LSB 0 264 #define RX_REO_QUEUE_EXT_2_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_0_MASK 0xffffffff 265 #define RX_REO_QUEUE_EXT_3_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_0_OFFSET 0x0000000c 266 #define RX_REO_QUEUE_EXT_3_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_0_LSB 0 267 #define RX_REO_QUEUE_EXT_3_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_0_MASK 0xffffffff 268 #define RX_REO_QUEUE_EXT_4_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_1_OFFSET 0x00000010 269 #define RX_REO_QUEUE_EXT_4_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_1_LSB 0 270 #define RX_REO_QUEUE_EXT_4_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_1_MASK 0xffffffff 271 #define RX_REO_QUEUE_EXT_5_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_1_OFFSET 0x00000014 272 #define RX_REO_QUEUE_EXT_5_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_1_LSB 0 273 #define RX_REO_QUEUE_EXT_5_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_1_MASK 0xffffffff 274 #define RX_REO_QUEUE_EXT_6_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_2_OFFSET 0x00000018 275 #define RX_REO_QUEUE_EXT_6_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_2_LSB 0 276 #define RX_REO_QUEUE_EXT_6_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_2_MASK 0xffffffff 277 #define RX_REO_QUEUE_EXT_7_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_2_OFFSET 0x0000001c 278 #define RX_REO_QUEUE_EXT_7_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_2_LSB 0 279 #define RX_REO_QUEUE_EXT_7_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_2_MASK 0xffffffff 280 #define RX_REO_QUEUE_EXT_8_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_3_OFFSET 0x00000020 281 #define RX_REO_QUEUE_EXT_8_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_3_LSB 0 282 #define RX_REO_QUEUE_EXT_8_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_3_MASK 0xffffffff 283 #define RX_REO_QUEUE_EXT_9_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_3_OFFSET 0x00000024 284 #define RX_REO_QUEUE_EXT_9_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_3_LSB 0 285 #define RX_REO_QUEUE_EXT_9_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_3_MASK 0xffffffff 286 #define RX_REO_QUEUE_EXT_10_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_4_OFFSET 0x00000028 287 #define RX_REO_QUEUE_EXT_10_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_4_LSB 0 288 #define RX_REO_QUEUE_EXT_10_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_4_MASK 0xffffffff 289 #define RX_REO_QUEUE_EXT_11_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_4_OFFSET 0x0000002c 290 #define RX_REO_QUEUE_EXT_11_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_4_LSB 0 291 #define RX_REO_QUEUE_EXT_11_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_4_MASK 0xffffffff 292 #define RX_REO_QUEUE_EXT_12_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_5_OFFSET 0x00000030 293 #define RX_REO_QUEUE_EXT_12_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_5_LSB 0 294 #define RX_REO_QUEUE_EXT_12_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_5_MASK 0xffffffff 295 #define RX_REO_QUEUE_EXT_13_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_5_OFFSET 0x00000034 296 #define RX_REO_QUEUE_EXT_13_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_5_LSB 0 297 #define RX_REO_QUEUE_EXT_13_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_5_MASK 0xffffffff 298 #define RX_REO_QUEUE_EXT_14_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_6_OFFSET 0x00000038 299 #define RX_REO_QUEUE_EXT_14_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_6_LSB 0 300 #define RX_REO_QUEUE_EXT_14_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_6_MASK 0xffffffff 301 #define RX_REO_QUEUE_EXT_15_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_6_OFFSET 0x0000003c 302 #define RX_REO_QUEUE_EXT_15_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_6_LSB 0 303 #define RX_REO_QUEUE_EXT_15_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_6_MASK 0xffffffff 304 #define RX_REO_QUEUE_EXT_16_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_7_OFFSET 0x00000040 305 #define RX_REO_QUEUE_EXT_16_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_7_LSB 0 306 #define RX_REO_QUEUE_EXT_16_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_7_MASK 0xffffffff 307 #define RX_REO_QUEUE_EXT_17_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_7_OFFSET 0x00000044 308 #define RX_REO_QUEUE_EXT_17_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_7_LSB 0 309 #define RX_REO_QUEUE_EXT_17_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_7_MASK 0xffffffff 310 #define RX_REO_QUEUE_EXT_18_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_8_OFFSET 0x00000048 311 #define RX_REO_QUEUE_EXT_18_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_8_LSB 0 312 #define RX_REO_QUEUE_EXT_18_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_8_MASK 0xffffffff 313 #define RX_REO_QUEUE_EXT_19_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_8_OFFSET 0x0000004c 314 #define RX_REO_QUEUE_EXT_19_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_8_LSB 0 315 #define RX_REO_QUEUE_EXT_19_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_8_MASK 0xffffffff 316 #define RX_REO_QUEUE_EXT_20_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_9_OFFSET 0x00000050 317 #define RX_REO_QUEUE_EXT_20_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_9_LSB 0 318 #define RX_REO_QUEUE_EXT_20_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_9_MASK 0xffffffff 319 #define RX_REO_QUEUE_EXT_21_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_9_OFFSET 0x00000054 320 #define RX_REO_QUEUE_EXT_21_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_9_LSB 0 321 #define RX_REO_QUEUE_EXT_21_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_9_MASK 0xffffffff 322 #define RX_REO_QUEUE_EXT_22_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_10_OFFSET 0x00000058 323 #define RX_REO_QUEUE_EXT_22_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_10_LSB 0 324 #define RX_REO_QUEUE_EXT_22_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_10_MASK 0xffffffff 325 #define RX_REO_QUEUE_EXT_23_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_10_OFFSET 0x0000005c 326 #define RX_REO_QUEUE_EXT_23_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_10_LSB 0 327 #define RX_REO_QUEUE_EXT_23_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_10_MASK 0xffffffff 328 #define RX_REO_QUEUE_EXT_24_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_11_OFFSET 0x00000060 329 #define RX_REO_QUEUE_EXT_24_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_11_LSB 0 330 #define RX_REO_QUEUE_EXT_24_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_11_MASK 0xffffffff 331 #define RX_REO_QUEUE_EXT_25_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_11_OFFSET 0x00000064 332 #define RX_REO_QUEUE_EXT_25_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_11_LSB 0 333 #define RX_REO_QUEUE_EXT_25_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_11_MASK 0xffffffff 334 #define RX_REO_QUEUE_EXT_26_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_12_OFFSET 0x00000068 335 #define RX_REO_QUEUE_EXT_26_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_12_LSB 0 336 #define RX_REO_QUEUE_EXT_26_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_12_MASK 0xffffffff 337 #define RX_REO_QUEUE_EXT_27_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_12_OFFSET 0x0000006c 338 #define RX_REO_QUEUE_EXT_27_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_12_LSB 0 339 #define RX_REO_QUEUE_EXT_27_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_12_MASK 0xffffffff 340 #define RX_REO_QUEUE_EXT_28_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_13_OFFSET 0x00000070 341 #define RX_REO_QUEUE_EXT_28_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_13_LSB 0 342 #define RX_REO_QUEUE_EXT_28_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_13_MASK 0xffffffff 343 #define RX_REO_QUEUE_EXT_29_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_13_OFFSET 0x00000074 344 #define RX_REO_QUEUE_EXT_29_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_13_LSB 0 345 #define RX_REO_QUEUE_EXT_29_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_13_MASK 0xffffffff 346 #define RX_REO_QUEUE_EXT_30_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_14_OFFSET 0x00000078 347 #define RX_REO_QUEUE_EXT_30_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_14_LSB 0 348 #define RX_REO_QUEUE_EXT_30_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_14_MASK 0xffffffff 349 #define RX_REO_QUEUE_EXT_31_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_14_OFFSET 0x0000007c 350 #define RX_REO_QUEUE_EXT_31_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_14_LSB 0 351 #define RX_REO_QUEUE_EXT_31_RX_MPDU_LINK_PTR_MPDU_LINK_POINTER_14_MASK 0xffffffff 352 353 354 #endif // _RX_REO_QUEUE_EXT_H_ 355