On Mon, 19 Sep 2016 16:58:58 +0300 Tariq Toukan <tar...@mellanox.com> wrote:
> + act = bpf_prog_run_xdp(prog, &xdp); > + switch (act) { > + case XDP_PASS: > + return false; > + case XDP_TX: > + consumed = mlx5e_xmit_xdp_frame(&rq->channel->xdp_sq, di, > + MLX5_RX_HEADROOM, > + len); > + rq->stats.xdp_tx += consumed; > + return consumed; > + default: > + bpf_warn_invalid_xdp_action(act); > + return false; This looks wrong. According to the specification[1] and comment in the code /include/uapi/linux/bpf.h: "Unknown return codes will result in packet drop" > + case XDP_ABORTED: It is not clearly defined, but I believe XDP_ABORTED should also result in a warning (calling bpf_warn_invalid_xdp_action(act)). > + case XDP_DROP: > + rq->stats.xdp_drop++; > + mlx5e_page_release(rq, di, true); > + return true; > + } I've started documenting XDP[2], as this patch clearly shows there is a need to have a specification, given already the second driver supporting XDP gets these details wrong. [1] https://prototype-kernel.readthedocs.io/en/latest/networking/XDP/implementation/xdp_actions.html#xdp-aborted [2] https://prototype-kernel.readthedocs.io/en/latest/networking/XDP/index.html -- Best regards, Jesper Dangaard Brouer MSc.CS, Principal Kernel Engineer at Red Hat Author of http://www.iptv-analyzer.org LinkedIn: http://www.linkedin.com/in/brouer