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 _RXPT_CLASSIFY_INFO_H_ 25 #define _RXPT_CLASSIFY_INFO_H_ 26 #if !defined(__ASSEMBLER__) 27 #endif 28 29 30 // ################ START SUMMARY ################# 31 // 32 // Dword Fields 33 // 0 reo_destination_indication[4:0], lmac_peer_id_msb[6:5], use_flow_id_toeplitz_clfy[7], pkt_selection_fp_ucast_data[8], pkt_selection_fp_mcast_data[9], pkt_selection_fp_1000[10], rxdma0_source_ring_selection[12:11], rxdma0_destination_ring_selection[14:13], reserved_0b[31:15] 34 // 35 // ################ END SUMMARY ################# 36 37 #define NUM_OF_DWORDS_RXPT_CLASSIFY_INFO 1 38 39 struct rxpt_classify_info { 40 uint32_t reo_destination_indication : 5, //[4:0] 41 lmac_peer_id_msb : 2, //[6:5] 42 use_flow_id_toeplitz_clfy : 1, //[7] 43 pkt_selection_fp_ucast_data : 1, //[8] 44 pkt_selection_fp_mcast_data : 1, //[9] 45 pkt_selection_fp_1000 : 1, //[10] 46 rxdma0_source_ring_selection : 2, //[12:11] 47 rxdma0_destination_ring_selection: 2, //[14:13] 48 reserved_0b : 17; //[31:15] 49 }; 50 51 /* 52 53 reo_destination_indication 54 55 The ID of the REO exit ring where the MSDU frame shall 56 push after (MPDU level) reordering has finished. 57 58 59 60 <enum 0 reo_destination_tcl> Reo will push the frame 61 into the REO2TCL ring 62 63 <enum 1 reo_destination_sw1> Reo will push the frame 64 into the REO2SW1 ring 65 66 <enum 2 reo_destination_sw2> Reo will push the frame 67 into the REO2SW2 ring 68 69 <enum 3 reo_destination_sw3> Reo will push the frame 70 into the REO2SW3 ring 71 72 <enum 4 reo_destination_sw4> Reo will push the frame 73 into the REO2SW4 ring 74 75 <enum 5 reo_destination_release> Reo will push the frame 76 into the REO_release ring 77 78 <enum 6 reo_destination_fw> Reo will push the frame into 79 the REO2FW ring 80 81 <enum 7 reo_destination_sw5> Reo will push the frame 82 into the REO2SW5 ring 83 84 <enum 8 reo_destination_sw6> Reo will push the frame 85 into the REO2SW6 ring 86 87 <enum 9 reo_destination_9> REO remaps this <enum 10 88 reo_destination_10> REO remaps this 89 90 <enum 11 reo_destination_11> REO remaps this 91 92 <enum 12 reo_destination_12> REO remaps this <enum 13 93 reo_destination_13> REO remaps this 94 95 <enum 14 reo_destination_14> REO remaps this 96 97 <enum 15 reo_destination_15> REO remaps this 98 99 <enum 16 reo_destination_16> REO remaps this 100 101 <enum 17 reo_destination_17> REO remaps this 102 103 <enum 18 reo_destination_18> REO remaps this 104 105 <enum 19 reo_destination_19> REO remaps this 106 107 <enum 20 reo_destination_20> REO remaps this 108 109 <enum 21 reo_destination_21> REO remaps this 110 111 <enum 22 reo_destination_22> REO remaps this 112 113 <enum 23 reo_destination_23> REO remaps this 114 115 <enum 24 reo_destination_24> REO remaps this 116 117 <enum 25 reo_destination_25> REO remaps this 118 119 <enum 26 reo_destination_26> REO remaps this 120 121 <enum 27 reo_destination_27> REO remaps this 122 123 <enum 28 reo_destination_28> REO remaps this 124 125 <enum 29 reo_destination_29> REO remaps this 126 127 <enum 30 reo_destination_30> REO remaps this 128 129 <enum 31 reo_destination_31> REO remaps this 130 131 132 133 <legal all> 134 135 lmac_peer_id_msb 136 137 If use_flow_id_toeplitz_clfy is set and lmac_peer_id_'sb 138 is 2'b00, Rx OLE uses a REO desination indicati'n of {1'b1, 139 hash[3:0]} using the chosen Toeplitz hash from Common Parser 140 if flow search fails. 141 142 If use_flow_id_toeplitz_clfy is set and lmac_peer_id_msb 143 's not 2'b00, Rx OLE uses a REO desination indication of 144 {lmac_peer_id_msb, hash[2:0]} using the chosen Toeplitz hash 145 from Common Parser if flow search fails. 146 147 This LMAC/peer-based routing is not supported in 148 Hastings80 and HastingsPrime. 149 150 <legal 0> 151 152 use_flow_id_toeplitz_clfy 153 154 Indication to Rx OLE to enable REO destination routing 155 based on the chosen Toeplitz hash from Common Parser, in 156 case flow search fails 157 158 <legal all> 159 160 pkt_selection_fp_ucast_data 161 162 Filter pass Unicast data frame (matching 163 rxpcu_filter_pass and sw_frame_group_Unicast_data) routing 164 selection 165 166 167 168 1'b0: source and destination rings are selected from the 169 RxOLE register settings for the packet type 170 171 172 173 1'b1: source ring and destination ring is selected from 174 the rxdma0_source_ring_selection and 175 rxdma0_destination_ring_selection fields in this STRUCT 176 177 <legal all> 178 179 pkt_selection_fp_mcast_data 180 181 Filter pass Multicast data frame (matching 182 rxpcu_filter_pass and sw_frame_group_Multicast_data) routing 183 selection 184 185 186 187 1'b0: source and destination rings are selected from the 188 RxOLE register settings for the packet type 189 190 191 192 1'b1: source ring and destination ring is selected from 193 the rxdma0_source_ring_selection and 194 rxdma0_destination_ring_selection fields in this STRUCT 195 196 <legal all> 197 198 pkt_selection_fp_1000 199 200 Filter pass BAR frame (matching rxpcu_filter_pass and 201 sw_frame_group_ctrl_1000) routing selection 202 203 204 205 1'b0: source and destination rings are selected from the 206 RxOLE register settings for the packet type 207 208 209 210 1'b1: source ring and destination ring is selected from 211 the rxdma0_source_ring_selection and 212 rxdma0_destination_ring_selection fields in this STRUCT 213 214 <legal all> 215 216 rxdma0_source_ring_selection 217 218 Field only valid when for the received frame type the 219 corresponding pkt_selection_fp_... bit is set 220 221 222 223 <enum 0 wbm2rxdma_buf_source_ring> The data buffer for 224 225 <enum 1 fw2rxdma_buf_source_ring> The data buffer for 226 this frame shall be sourced by fw2rxdma buffer source ring. 227 228 <enum 2 sw2rxdma_buf_source_ring> The data buffer for 229 this frame shall be sourced by sw2rxdma buffer source ring. 230 231 <enum 3 no_buffer_ring> The frame shall not be written 232 to any data buffer. 233 234 235 236 <legal all> 237 238 rxdma0_destination_ring_selection 239 240 Field only valid when for the received frame type the 241 corresponding pkt_selection_fp_... bit is set 242 243 244 245 <enum 0 rxdma_release_ring> RXDMA0 shall push the frame 246 to the Release ring. Effectively this means the frame needs 247 to be dropped. 248 249 <enum 1 rxdma2fw_ring> RXDMA0 shall push the frame to 250 the FW ring. 251 252 <enum 2 rxdma2sw_ring> RXDMA0 shall push the frame to 253 the SW ring. 254 255 <enum 3 rxdma2reo_ring> RXDMA0 shall push the frame to 256 the REO entrance ring. 257 258 259 260 <legal all> 261 262 reserved_0b 263 264 <legal 0> 265 */ 266 267 268 /* Description RXPT_CLASSIFY_INFO_0_REO_DESTINATION_INDICATION 269 270 The ID of the REO exit ring where the MSDU frame shall 271 push after (MPDU level) reordering has finished. 272 273 274 275 <enum 0 reo_destination_tcl> Reo will push the frame 276 into the REO2TCL ring 277 278 <enum 1 reo_destination_sw1> Reo will push the frame 279 into the REO2SW1 ring 280 281 <enum 2 reo_destination_sw2> Reo will push the frame 282 into the REO2SW2 ring 283 284 <enum 3 reo_destination_sw3> Reo will push the frame 285 into the REO2SW3 ring 286 287 <enum 4 reo_destination_sw4> Reo will push the frame 288 into the REO2SW4 ring 289 290 <enum 5 reo_destination_release> Reo will push the frame 291 into the REO_release ring 292 293 <enum 6 reo_destination_fw> Reo will push the frame into 294 the REO2FW ring 295 296 <enum 7 reo_destination_sw5> Reo will push the frame 297 into the REO2SW5 ring 298 299 <enum 8 reo_destination_sw6> Reo will push the frame 300 into the REO2SW6 ring 301 302 <enum 9 reo_destination_9> REO remaps this <enum 10 303 reo_destination_10> REO remaps this 304 305 <enum 11 reo_destination_11> REO remaps this 306 307 <enum 12 reo_destination_12> REO remaps this <enum 13 308 reo_destination_13> REO remaps this 309 310 <enum 14 reo_destination_14> REO remaps this 311 312 <enum 15 reo_destination_15> REO remaps this 313 314 <enum 16 reo_destination_16> REO remaps this 315 316 <enum 17 reo_destination_17> REO remaps this 317 318 <enum 18 reo_destination_18> REO remaps this 319 320 <enum 19 reo_destination_19> REO remaps this 321 322 <enum 20 reo_destination_20> REO remaps this 323 324 <enum 21 reo_destination_21> REO remaps this 325 326 <enum 22 reo_destination_22> REO remaps this 327 328 <enum 23 reo_destination_23> REO remaps this 329 330 <enum 24 reo_destination_24> REO remaps this 331 332 <enum 25 reo_destination_25> REO remaps this 333 334 <enum 26 reo_destination_26> REO remaps this 335 336 <enum 27 reo_destination_27> REO remaps this 337 338 <enum 28 reo_destination_28> REO remaps this 339 340 <enum 29 reo_destination_29> REO remaps this 341 342 <enum 30 reo_destination_30> REO remaps this 343 344 <enum 31 reo_destination_31> REO remaps this 345 346 347 348 <legal all> 349 */ 350 #define RXPT_CLASSIFY_INFO_0_REO_DESTINATION_INDICATION_OFFSET 0x00000000 351 #define RXPT_CLASSIFY_INFO_0_REO_DESTINATION_INDICATION_LSB 0 352 #define RXPT_CLASSIFY_INFO_0_REO_DESTINATION_INDICATION_MASK 0x0000001f 353 354 /* Description RXPT_CLASSIFY_INFO_0_LMAC_PEER_ID_MSB 355 356 If use_flow_id_toeplitz_clfy is set and lmac_peer_id_'sb 357 is 2'b00, Rx OLE uses a REO desination indicati'n of {1'b1, 358 hash[3:0]} using the chosen Toeplitz hash from Common Parser 359 if flow search fails. 360 361 If use_flow_id_toeplitz_clfy is set and lmac_peer_id_msb 362 's not 2'b00, Rx OLE uses a REO desination indication of 363 {lmac_peer_id_msb, hash[2:0]} using the chosen Toeplitz hash 364 from Common Parser if flow search fails. 365 366 This LMAC/peer-based routing is not supported in 367 Hastings80 and HastingsPrime. 368 369 <legal 0> 370 */ 371 #define RXPT_CLASSIFY_INFO_0_LMAC_PEER_ID_MSB_OFFSET 0x00000000 372 #define RXPT_CLASSIFY_INFO_0_LMAC_PEER_ID_MSB_LSB 5 373 #define RXPT_CLASSIFY_INFO_0_LMAC_PEER_ID_MSB_MASK 0x00000060 374 375 /* Description RXPT_CLASSIFY_INFO_0_USE_FLOW_ID_TOEPLITZ_CLFY 376 377 Indication to Rx OLE to enable REO destination routing 378 based on the chosen Toeplitz hash from Common Parser, in 379 case flow search fails 380 381 <legal all> 382 */ 383 #define RXPT_CLASSIFY_INFO_0_USE_FLOW_ID_TOEPLITZ_CLFY_OFFSET 0x00000000 384 #define RXPT_CLASSIFY_INFO_0_USE_FLOW_ID_TOEPLITZ_CLFY_LSB 7 385 #define RXPT_CLASSIFY_INFO_0_USE_FLOW_ID_TOEPLITZ_CLFY_MASK 0x00000080 386 387 /* Description RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_UCAST_DATA 388 389 Filter pass Unicast data frame (matching 390 rxpcu_filter_pass and sw_frame_group_Unicast_data) routing 391 selection 392 393 394 395 1'b0: source and destination rings are selected from the 396 RxOLE register settings for the packet type 397 398 399 400 1'b1: source ring and destination ring is selected from 401 the rxdma0_source_ring_selection and 402 rxdma0_destination_ring_selection fields in this STRUCT 403 404 <legal all> 405 */ 406 #define RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_UCAST_DATA_OFFSET 0x00000000 407 #define RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_UCAST_DATA_LSB 8 408 #define RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_UCAST_DATA_MASK 0x00000100 409 410 /* Description RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_MCAST_DATA 411 412 Filter pass Multicast data frame (matching 413 rxpcu_filter_pass and sw_frame_group_Multicast_data) routing 414 selection 415 416 417 418 1'b0: source and destination rings are selected from the 419 RxOLE register settings for the packet type 420 421 422 423 1'b1: source ring and destination ring is selected from 424 the rxdma0_source_ring_selection and 425 rxdma0_destination_ring_selection fields in this STRUCT 426 427 <legal all> 428 */ 429 #define RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_MCAST_DATA_OFFSET 0x00000000 430 #define RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_MCAST_DATA_LSB 9 431 #define RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_MCAST_DATA_MASK 0x00000200 432 433 /* Description RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_1000 434 435 Filter pass BAR frame (matching rxpcu_filter_pass and 436 sw_frame_group_ctrl_1000) routing selection 437 438 439 440 1'b0: source and destination rings are selected from the 441 RxOLE register settings for the packet type 442 443 444 445 1'b1: source ring and destination ring is selected from 446 the rxdma0_source_ring_selection and 447 rxdma0_destination_ring_selection fields in this STRUCT 448 449 <legal all> 450 */ 451 #define RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_1000_OFFSET 0x00000000 452 #define RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_1000_LSB 10 453 #define RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_1000_MASK 0x00000400 454 455 /* Description RXPT_CLASSIFY_INFO_0_RXDMA0_SOURCE_RING_SELECTION 456 457 Field only valid when for the received frame type the 458 corresponding pkt_selection_fp_... bit is set 459 460 461 462 <enum 0 wbm2rxdma_buf_source_ring> The data buffer for 463 464 <enum 1 fw2rxdma_buf_source_ring> The data buffer for 465 this frame shall be sourced by fw2rxdma buffer source ring. 466 467 <enum 2 sw2rxdma_buf_source_ring> The data buffer for 468 this frame shall be sourced by sw2rxdma buffer source ring. 469 470 <enum 3 no_buffer_ring> The frame shall not be written 471 to any data buffer. 472 473 474 475 <legal all> 476 */ 477 #define RXPT_CLASSIFY_INFO_0_RXDMA0_SOURCE_RING_SELECTION_OFFSET 0x00000000 478 #define RXPT_CLASSIFY_INFO_0_RXDMA0_SOURCE_RING_SELECTION_LSB 11 479 #define RXPT_CLASSIFY_INFO_0_RXDMA0_SOURCE_RING_SELECTION_MASK 0x00001800 480 481 /* Description RXPT_CLASSIFY_INFO_0_RXDMA0_DESTINATION_RING_SELECTION 482 483 Field only valid when for the received frame type the 484 corresponding pkt_selection_fp_... bit is set 485 486 487 488 <enum 0 rxdma_release_ring> RXDMA0 shall push the frame 489 to the Release ring. Effectively this means the frame needs 490 to be dropped. 491 492 <enum 1 rxdma2fw_ring> RXDMA0 shall push the frame to 493 the FW ring. 494 495 <enum 2 rxdma2sw_ring> RXDMA0 shall push the frame to 496 the SW ring. 497 498 <enum 3 rxdma2reo_ring> RXDMA0 shall push the frame to 499 the REO entrance ring. 500 501 502 503 <legal all> 504 */ 505 #define RXPT_CLASSIFY_INFO_0_RXDMA0_DESTINATION_RING_SELECTION_OFFSET 0x00000000 506 #define RXPT_CLASSIFY_INFO_0_RXDMA0_DESTINATION_RING_SELECTION_LSB 13 507 #define RXPT_CLASSIFY_INFO_0_RXDMA0_DESTINATION_RING_SELECTION_MASK 0x00006000 508 509 /* Description RXPT_CLASSIFY_INFO_0_RESERVED_0B 510 511 <legal 0> 512 */ 513 #define RXPT_CLASSIFY_INFO_0_RESERVED_0B_OFFSET 0x00000000 514 #define RXPT_CLASSIFY_INFO_0_RESERVED_0B_LSB 15 515 #define RXPT_CLASSIFY_INFO_0_RESERVED_0B_MASK 0xffff8000 516 517 518 #endif // _RXPT_CLASSIFY_INFO_H_ 519