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 19 // 20 // DO NOT EDIT! This file is automatically generated 21 // These definitions are tied to a particular hardware layout 22 23 24 #ifndef _REO_FLUSH_TIMEOUT_LIST_H_ 25 #define _REO_FLUSH_TIMEOUT_LIST_H_ 26 #if !defined(__ASSEMBLER__) 27 #endif 28 29 #include "uniform_reo_cmd_header.h" 30 31 // ################ START SUMMARY ################# 32 // 33 // Dword Fields 34 // 0 struct uniform_reo_cmd_header cmd_header; 35 // 1 ac_timout_list[1:0], reserved_1[31:2] 36 // 2 minimum_release_desc_count[15:0], minimum_forward_buf_count[31:16] 37 // 3 reserved_3a[31:0] 38 // 4 reserved_4a[31:0] 39 // 5 reserved_5a[31:0] 40 // 6 reserved_6a[31:0] 41 // 7 reserved_7a[31:0] 42 // 8 reserved_8a[31:0] 43 // 44 // ################ END SUMMARY ################# 45 46 #define NUM_OF_DWORDS_REO_FLUSH_TIMEOUT_LIST 9 47 48 struct reo_flush_timeout_list { 49 struct uniform_reo_cmd_header cmd_header; 50 uint32_t ac_timout_list : 2, //[1:0] 51 reserved_1 : 30; //[31:2] 52 uint32_t minimum_release_desc_count : 16, //[15:0] 53 minimum_forward_buf_count : 16; //[31:16] 54 uint32_t reserved_3a : 32; //[31:0] 55 uint32_t reserved_4a : 32; //[31:0] 56 uint32_t reserved_5a : 32; //[31:0] 57 uint32_t reserved_6a : 32; //[31:0] 58 uint32_t reserved_7a : 32; //[31:0] 59 uint32_t reserved_8a : 32; //[31:0] 60 }; 61 62 /* 63 64 struct uniform_reo_cmd_header cmd_header 65 66 Consumer: REO 67 68 Producer: SW 69 70 71 72 Details for command execution tracking purposes. 73 74 ac_timout_list 75 76 Consumer: REO 77 78 Producer: SW 79 80 81 82 The AC_timeout list to be used for this command 83 84 <legal all> 85 86 reserved_1 87 88 <legal 0> 89 90 minimum_release_desc_count 91 92 Consumer: REO 93 94 Producer: SW 95 96 97 98 The minimum number of link descriptors requested to be 99 released. If set to 0, only buffer release counts seems to 100 be important... When set to very high value, likely the 101 entire timeout list will be exhausted before this count is 102 reached or maybe this count will not get reached. REO 103 however will stop here as it can not do anything else. 104 105 106 107 When both this field and field Minimum_forward_buf_count 108 are > 0, REO needs to meet both requirements. When both 109 entries are 0 (which should be a programming error), REO 110 does not need to do anything. 111 112 113 114 Note that this includes counts of MPDU link Desc as well 115 as MSDU link Desc. Where the count of MSDU link Desc is not 116 known to REO it's approximated by deriving from MSDU count 117 118 <legal all> 119 120 minimum_forward_buf_count 121 122 Consumer: REO 123 124 Producer: SW 125 126 127 128 The minimum number of buffer descriptors requested to be 129 passed on to the REO destination rings. 130 131 132 133 If set to 0, only descriptor release counts seems to be 134 important... 135 136 137 138 When set to very high value, likely the entire timeout 139 list will be exhausted before this count is reached or maybe 140 this count will not get reached. REO however will stop here 141 as it can not do anything else. 142 143 144 145 Note that REO does not know the exact buffer count. This 146 can be approximated by using the MSDU_COUNT 147 148 <legal all> 149 150 reserved_3a 151 152 <legal 0> 153 154 reserved_4a 155 156 <legal 0> 157 158 reserved_5a 159 160 <legal 0> 161 162 reserved_6a 163 164 <legal 0> 165 166 reserved_7a 167 168 <legal 0> 169 170 reserved_8a 171 172 <legal 0> 173 */ 174 175 176 /* EXTERNAL REFERENCE : struct uniform_reo_cmd_header cmd_header */ 177 178 179 /* Description REO_FLUSH_TIMEOUT_LIST_0_CMD_HEADER_REO_CMD_NUMBER 180 181 Consumer: REO/SW/DEBUG 182 183 Producer: SW 184 185 186 187 This number can be used by SW to track, identify and 188 link the created commands with the command statusses 189 190 191 192 193 194 <legal all> 195 */ 196 #define REO_FLUSH_TIMEOUT_LIST_0_CMD_HEADER_REO_CMD_NUMBER_OFFSET 0x00000000 197 #define REO_FLUSH_TIMEOUT_LIST_0_CMD_HEADER_REO_CMD_NUMBER_LSB 0 198 #define REO_FLUSH_TIMEOUT_LIST_0_CMD_HEADER_REO_CMD_NUMBER_MASK 0x0000ffff 199 200 /* Description REO_FLUSH_TIMEOUT_LIST_0_CMD_HEADER_REO_STATUS_REQUIRED 201 202 Consumer: REO 203 204 Producer: SW 205 206 207 208 <enum 0 NoStatus> REO does not need to generate a status 209 TLV for the execution of this command 210 211 <enum 1 StatusRequired> REO shall generate a status TLV 212 for the execution of this command 213 214 215 216 <legal all> 217 */ 218 #define REO_FLUSH_TIMEOUT_LIST_0_CMD_HEADER_REO_STATUS_REQUIRED_OFFSET 0x00000000 219 #define REO_FLUSH_TIMEOUT_LIST_0_CMD_HEADER_REO_STATUS_REQUIRED_LSB 16 220 #define REO_FLUSH_TIMEOUT_LIST_0_CMD_HEADER_REO_STATUS_REQUIRED_MASK 0x00010000 221 222 /* Description REO_FLUSH_TIMEOUT_LIST_0_CMD_HEADER_RESERVED_0A 223 224 <legal 0> 225 */ 226 #define REO_FLUSH_TIMEOUT_LIST_0_CMD_HEADER_RESERVED_0A_OFFSET 0x00000000 227 #define REO_FLUSH_TIMEOUT_LIST_0_CMD_HEADER_RESERVED_0A_LSB 17 228 #define REO_FLUSH_TIMEOUT_LIST_0_CMD_HEADER_RESERVED_0A_MASK 0xfffe0000 229 230 /* Description REO_FLUSH_TIMEOUT_LIST_1_AC_TIMOUT_LIST 231 232 Consumer: REO 233 234 Producer: SW 235 236 237 238 The AC_timeout list to be used for this command 239 240 <legal all> 241 */ 242 #define REO_FLUSH_TIMEOUT_LIST_1_AC_TIMOUT_LIST_OFFSET 0x00000004 243 #define REO_FLUSH_TIMEOUT_LIST_1_AC_TIMOUT_LIST_LSB 0 244 #define REO_FLUSH_TIMEOUT_LIST_1_AC_TIMOUT_LIST_MASK 0x00000003 245 246 /* Description REO_FLUSH_TIMEOUT_LIST_1_RESERVED_1 247 248 <legal 0> 249 */ 250 #define REO_FLUSH_TIMEOUT_LIST_1_RESERVED_1_OFFSET 0x00000004 251 #define REO_FLUSH_TIMEOUT_LIST_1_RESERVED_1_LSB 2 252 #define REO_FLUSH_TIMEOUT_LIST_1_RESERVED_1_MASK 0xfffffffc 253 254 /* Description REO_FLUSH_TIMEOUT_LIST_2_MINIMUM_RELEASE_DESC_COUNT 255 256 Consumer: REO 257 258 Producer: SW 259 260 261 262 The minimum number of link descriptors requested to be 263 released. If set to 0, only buffer release counts seems to 264 be important... When set to very high value, likely the 265 entire timeout list will be exhausted before this count is 266 reached or maybe this count will not get reached. REO 267 however will stop here as it can not do anything else. 268 269 270 271 When both this field and field Minimum_forward_buf_count 272 are > 0, REO needs to meet both requirements. When both 273 entries are 0 (which should be a programming error), REO 274 does not need to do anything. 275 276 277 278 Note that this includes counts of MPDU link Desc as well 279 as MSDU link Desc. Where the count of MSDU link Desc is not 280 known to REO it's approximated by deriving from MSDU count 281 282 <legal all> 283 */ 284 #define REO_FLUSH_TIMEOUT_LIST_2_MINIMUM_RELEASE_DESC_COUNT_OFFSET 0x00000008 285 #define REO_FLUSH_TIMEOUT_LIST_2_MINIMUM_RELEASE_DESC_COUNT_LSB 0 286 #define REO_FLUSH_TIMEOUT_LIST_2_MINIMUM_RELEASE_DESC_COUNT_MASK 0x0000ffff 287 288 /* Description REO_FLUSH_TIMEOUT_LIST_2_MINIMUM_FORWARD_BUF_COUNT 289 290 Consumer: REO 291 292 Producer: SW 293 294 295 296 The minimum number of buffer descriptors requested to be 297 passed on to the REO destination rings. 298 299 300 301 If set to 0, only descriptor release counts seems to be 302 important... 303 304 305 306 When set to very high value, likely the entire timeout 307 list will be exhausted before this count is reached or maybe 308 this count will not get reached. REO however will stop here 309 as it can not do anything else. 310 311 312 313 Note that REO does not know the exact buffer count. This 314 can be approximated by using the MSDU_COUNT 315 316 <legal all> 317 */ 318 #define REO_FLUSH_TIMEOUT_LIST_2_MINIMUM_FORWARD_BUF_COUNT_OFFSET 0x00000008 319 #define REO_FLUSH_TIMEOUT_LIST_2_MINIMUM_FORWARD_BUF_COUNT_LSB 16 320 #define REO_FLUSH_TIMEOUT_LIST_2_MINIMUM_FORWARD_BUF_COUNT_MASK 0xffff0000 321 322 /* Description REO_FLUSH_TIMEOUT_LIST_3_RESERVED_3A 323 324 <legal 0> 325 */ 326 #define REO_FLUSH_TIMEOUT_LIST_3_RESERVED_3A_OFFSET 0x0000000c 327 #define REO_FLUSH_TIMEOUT_LIST_3_RESERVED_3A_LSB 0 328 #define REO_FLUSH_TIMEOUT_LIST_3_RESERVED_3A_MASK 0xffffffff 329 330 /* Description REO_FLUSH_TIMEOUT_LIST_4_RESERVED_4A 331 332 <legal 0> 333 */ 334 #define REO_FLUSH_TIMEOUT_LIST_4_RESERVED_4A_OFFSET 0x00000010 335 #define REO_FLUSH_TIMEOUT_LIST_4_RESERVED_4A_LSB 0 336 #define REO_FLUSH_TIMEOUT_LIST_4_RESERVED_4A_MASK 0xffffffff 337 338 /* Description REO_FLUSH_TIMEOUT_LIST_5_RESERVED_5A 339 340 <legal 0> 341 */ 342 #define REO_FLUSH_TIMEOUT_LIST_5_RESERVED_5A_OFFSET 0x00000014 343 #define REO_FLUSH_TIMEOUT_LIST_5_RESERVED_5A_LSB 0 344 #define REO_FLUSH_TIMEOUT_LIST_5_RESERVED_5A_MASK 0xffffffff 345 346 /* Description REO_FLUSH_TIMEOUT_LIST_6_RESERVED_6A 347 348 <legal 0> 349 */ 350 #define REO_FLUSH_TIMEOUT_LIST_6_RESERVED_6A_OFFSET 0x00000018 351 #define REO_FLUSH_TIMEOUT_LIST_6_RESERVED_6A_LSB 0 352 #define REO_FLUSH_TIMEOUT_LIST_6_RESERVED_6A_MASK 0xffffffff 353 354 /* Description REO_FLUSH_TIMEOUT_LIST_7_RESERVED_7A 355 356 <legal 0> 357 */ 358 #define REO_FLUSH_TIMEOUT_LIST_7_RESERVED_7A_OFFSET 0x0000001c 359 #define REO_FLUSH_TIMEOUT_LIST_7_RESERVED_7A_LSB 0 360 #define REO_FLUSH_TIMEOUT_LIST_7_RESERVED_7A_MASK 0xffffffff 361 362 /* Description REO_FLUSH_TIMEOUT_LIST_8_RESERVED_8A 363 364 <legal 0> 365 */ 366 #define REO_FLUSH_TIMEOUT_LIST_8_RESERVED_8A_OFFSET 0x00000020 367 #define REO_FLUSH_TIMEOUT_LIST_8_RESERVED_8A_LSB 0 368 #define REO_FLUSH_TIMEOUT_LIST_8_RESERVED_8A_MASK 0xffffffff 369 370 371 #endif // _REO_FLUSH_TIMEOUT_LIST_H_ 372