Re: [PATCH v19 bpf-next 23/23] xdp: disable XDP_REDIRECT for xdp multi-buff
From: Lorenzo Bianconi <hidden>
Date: 2021-12-06 20:04:05
Also in:
netdev
On Mon, Dec 6, 2021 at 11:11 AM Jesper Dangaard Brouer [off-list ref] wrote:quoted
On 30/11/2021 12.53, Lorenzo Bianconi wrote:quoted
XDP_REDIRECT is not fully supported yet for xdp multi-buff since not all XDP capable drivers can map non-linear xdp_frame in ndo_xdp_xmit so disable it for the moment. Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> --- net/core/filter.c | 7 +++++++ 1 file changed, 7 insertions(+)diff --git a/net/core/filter.c b/net/core/filter.c index b70725313442..a87d835d1122 100644 --- a/net/core/filter.c +++ b/net/core/filter.c@@ -4189,6 +4189,13 @@ int xdp_do_redirect(struct net_device *dev, struct xdp_buff *xdp, struct bpf_map *map; int err; + /* XDP_REDIRECT is not fully supported yet for xdp multi-buff since + * not all XDP capable drivers can map non-linear xdp_frame in + * ndo_xdp_xmit. + */ + if (unlikely(xdp_buff_is_mb(xdp))) + return -EOPNOTSUPP; +This approach also exclude 'cpumap' use-case, which you AFAIK have added MB support for in this patchset. Generally this check is hopefully something we can remove again, once drivers add MB ndo_xdp_xmit support.What happens in the future when a new driver is added without (in its intial version) MB ndo_xdp_xmit support? Is MB support for ndo_xdp_xmit going to be a requirement for a driver (with ndo_xdp_xmit) to be accepted to the kernel?
I think the optimal solution would be export the driver XDP capabilities (AFAIK there is an ogoing effort for this, but it is not available yet).
I'm not arguing against removing this check in the future, I'm just wondering if we need a different mechanism than outright prohibiting XDP_REDIRECT with MB to protect against the redirected device not having MB support?quoted
quoted
ri->map_id = 0; /* Valid map id idr range: [1,INT_MAX[ */ ri->map_type = BPF_MAP_TYPE_UNSPEC;
Attachments
- signature.asc [application/pgp-signature] 228 bytes