On 31/03/2018 3:05 PM, Jesper Dangaard Brouer wrote:
..
@@ -844,6 +851,15 @@ static inline int mlx5e_xdp_handle(struct mlx5e_rq *rq,
if (unlikely(!mlx5e_xmit_xdp_frame(rq, di, &xdp)))
trace_xdp_exception(rq->netdev, prog, act);
return true;
+ case XDP_REDIRECT:
+ /* When XDP enabled then page-refcnt==1 here */
+ err = xdp_do_redirect(rq->netdev, &xdp, prog);
+ if (!err) {
+ rq->wqe.xdp_xmit = true; /* XDP xmit owns page */
boolean xdp_xmit does not exist anymore, it was removed recently by:
121e89275471 net/mlx5e: Refactor RQ XDP_TX indication
please replace with:
__set_bit(MLX5E_RQ_FLAG_XDP_XMIT, rq->flags);
+ rq->xdpsq.db.redirect_flush = true;
+ mlx5e_page_dma_unmap(rq, di);
+ }
+ return true;
default:
bpf_warn_invalid_xdp_action(act);
case XDP_ABORTED: