| 2571 | } |
| 2572 | |
| 2573 | static inline int |
| 2574 | grinder_next_tc(struct rte_sched_port *port, |
| 2575 | struct rte_sched_subport *subport, uint32_t pos) |
| 2576 | { |
| 2577 | struct rte_sched_grinder *grinder = subport->grinder + pos; |
| 2578 | struct rte_mbuf **qbase; |
| 2579 | uint32_t qindex; |
| 2580 | uint16_t qsize; |
| 2581 | |
| 2582 | if (grinder->tccache_r == grinder->tccache_w) |
| 2583 | return 0; |
| 2584 | |
| 2585 | qindex = grinder->tccache_qindex[grinder->tccache_r]; |
| 2586 | qbase = rte_sched_subport_pipe_qbase(subport, qindex); |
| 2587 | qsize = rte_sched_subport_pipe_qsize(port, subport, qindex); |
| 2588 | |
| 2589 | grinder->tc_index = rte_sched_port_pipe_tc(port, qindex); |
| 2590 | grinder->qmask = grinder->tccache_qmask[grinder->tccache_r]; |
| 2591 | grinder->qsize = qsize; |
| 2592 | |
| 2593 | if (grinder->tc_index < RTE_SCHED_TRAFFIC_CLASS_BE) { |
| 2594 | grinder->queue[0] = subport->queue + qindex; |
| 2595 | grinder->qbase[0] = qbase; |
| 2596 | grinder->qindex[0] = qindex; |
| 2597 | grinder->tccache_r++; |
| 2598 | |
| 2599 | return 1; |
| 2600 | } |
| 2601 | |
| 2602 | grinder->queue[0] = subport->queue + qindex; |
| 2603 | grinder->queue[1] = subport->queue + qindex + 1; |
| 2604 | grinder->queue[2] = subport->queue + qindex + 2; |
| 2605 | grinder->queue[3] = subport->queue + qindex + 3; |
| 2606 | |
| 2607 | grinder->qbase[0] = qbase; |
| 2608 | grinder->qbase[1] = qbase + qsize; |
| 2609 | grinder->qbase[2] = qbase + 2 * qsize; |
| 2610 | grinder->qbase[3] = qbase + 3 * qsize; |
| 2611 | |
| 2612 | grinder->qindex[0] = qindex; |
| 2613 | grinder->qindex[1] = qindex + 1; |
| 2614 | grinder->qindex[2] = qindex + 2; |
| 2615 | grinder->qindex[3] = qindex + 3; |
| 2616 | |
| 2617 | grinder->tccache_r++; |
| 2618 | return 1; |
| 2619 | } |
| 2620 | |
| 2621 | static inline int |
| 2622 | grinder_next_pipe(struct rte_sched_port *port, |
no test coverage detected