On 06/27/2018 04:46 AM, Saeed Mahameed wrote: [...] > @@ -935,11 +958,16 @@ static inline bool mlx5e_xdp_handle(struct mlx5e_rq *rq, > return false; > > xdp.data = va + *rx_headroom; > - xdp_set_data_meta_invalid(&xdp); > xdp.data_end = xdp.data + *len; > xdp.data_hard_start = va; > xdp.rxq = &rq->xdp_rxq; > > + if (rq->xdp.flags & XDP_FLAGS_META_ALL) { > + xdp_reset_data_meta(&xdp); > + mlx5e_xdp_fill_data_meta(rq->xdp.md_info, xdp.data_meta, cqe); > + } else > + xdp_set_data_meta_invalid(&xdp); > +
Just a quick note on this one: would actually be great to not set the xdp_set_data_meta_invalid() in the else path as this meta buffer should also be usable independent of hw hints. Meaning, in any case it would be great if mlx5 + mlx4 could implement the xdp->data_meta support we have today, this might probably be a good first step anyway; so far supported on i40e, ixgbe, ixgbevf, nfp. > act = bpf_prog_run_xdp(prog, &xdp); > switch (act) { > case XDP_PASS: > Thanks, Daniel