| 2810 | } |
| 2811 | |
| 2812 | static inline int |
| 2813 | dlb2_consume_qe_immediate(struct dlb2_port *qm_port, int num) |
| 2814 | { |
| 2815 | struct process_local_port_data *port_data; |
| 2816 | struct dlb2_cq_pop_qe *qe; |
| 2817 | |
| 2818 | RTE_ASSERT(qm_port->config_state == DLB2_CONFIGURED); |
| 2819 | |
| 2820 | qe = qm_port->consume_qe; |
| 2821 | |
| 2822 | qe->tokens = num - 1; |
| 2823 | |
| 2824 | /* No store fence needed since no pointer is being sent, and CQ token |
| 2825 | * pops can be safely reordered with other HCWs. |
| 2826 | */ |
| 2827 | port_data = &dlb2_port[qm_port->id][PORT_TYPE(qm_port)]; |
| 2828 | |
| 2829 | dlb2_movntdq_single(port_data->pp_addr, qe); |
| 2830 | |
| 2831 | DLB2_LOG_DBG("dlb2: consume immediate - %d QEs\n", num); |
| 2832 | |
| 2833 | qm_port->owed_tokens = 0; |
| 2834 | |
| 2835 | return 0; |
| 2836 | } |
| 2837 | |
| 2838 | static inline void |
| 2839 | dlb2_hw_do_enqueue(struct dlb2_port *qm_port, |
no test coverage detected