if (unlikely(!budget))
goto out;
- if (c->xdpsq)
- busy |= mlx5e_poll_xdpsq_cq(&c->xdpsq->cq);
-
- if (c->xdp)
+ if (c->xdp) {
+ if (c->xdpsq)
+ busy |= mlx5e_poll_xdpsq_cq(&c->xdpsq->cq);
busy |= mlx5e_poll_xdpsq_cq(&c->rq_xdpsq.cq);
-
- if (xsk_open)
- work_done = mlx5e_poll_rx_cq(&xskrq->cq, budget);
+ if (xsk_open)
+ work_done += mlx5e_poll_rx_cq(&xskrq->cq, budget);
+ }
if (likely(budget - work_done))
work_done += mlx5e_poll_rx_cq(&rq->cq, budget - work_done);
/* Keep after async ICOSQ CQ poll */
if (unlikely(mlx5e_ktls_rx_pending_resync_list(c, budget)))
busy |= mlx5e_ktls_rx_handle_resync_list(c, budget);
+
+ if (xsk_open) {
+ busy |= mlx5e_poll_xdpsq_cq(&xsksq->cq);
+ busy_xsk |= mlx5e_napi_xsk_post(xsksq, xskrq);
+
+ busy |= busy_xsk;
+ }
}
busy |= INDIRECT_CALL_2(rq->post_wqes,
mlx5e_post_rx_mpwqes,
mlx5e_post_rx_wqes,
rq);
- if (xsk_open) {
- busy |= mlx5e_poll_xdpsq_cq(&xsksq->cq);
- busy_xsk |= mlx5e_napi_xsk_post(xsksq, xskrq);
- }
-
- busy |= busy_xsk;
if (busy) {
if (likely(mlx5e_channel_no_affinity_change(c))) {
mlx5e_cq_arm(&xsksq->cq);
mlx5e_cq_arm(&xskrq->cq);
}
+ if (c->xdpsq)
+ mlx5e_cq_arm(&c->xdpsq->cq);
}
- if (c->xdpsq)
- mlx5e_cq_arm(&c->xdpsq->cq);
if (unlikely(aff_change && busy_xsk)) {
mlx5e_trigger_irq(&c->icosq);