netdevsim: 'support' multi-buf XDP
authorJakub Kicinski <kuba@kernel.org>
Tue, 11 Mar 2025 09:28:20 +0000 (10:28 +0100)
committerJakub Kicinski <kuba@kernel.org>
Wed, 12 Mar 2025 20:39:59 +0000 (13:39 -0700)
Don't error out on large MTU if XDP is multi-buf.
The ping test now tests ping with XDP and high MTU.
netdevsim doesn't actually run the prog (yet?) so
it doesn't matter if the prog was multi-buf..

Reviewed-by: Michal Kubiak <michal.kubiak@intel.com>
Link: https://patch.msgid.link/20250311092820.542148-1-kuba@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/netdevsim/bpf.c
drivers/net/netdevsim/netdev.c

index 608953d4f98da9f2e44b006e8187b0e445b1d38c..49537d3c41205cdabc5c3a3e11758e97c295a4f4 100644 (file)
@@ -296,7 +296,8 @@ static int nsim_setup_prog_checks(struct netdevsim *ns, struct netdev_bpf *bpf)
                NSIM_EA(bpf->extack, "attempt to load offloaded prog to drv");
                return -EINVAL;
        }
-       if (ns->netdev->mtu > NSIM_XDP_MAX_MTU) {
+       if (bpf->prog && !bpf->prog->aux->xdp_has_frags &&
+           ns->netdev->mtu > NSIM_XDP_MAX_MTU) {
                NSIM_EA(bpf->extack, "MTU too large w/ XDP enabled");
                return -EINVAL;
        }
index e3152ebe98a233bade539bf7155594f97a7bd6c2..b67af4651185be5acb22b8b7a244e108a3e096fa 100644 (file)
@@ -116,7 +116,8 @@ static int nsim_change_mtu(struct net_device *dev, int new_mtu)
 {
        struct netdevsim *ns = netdev_priv(dev);
 
-       if (ns->xdp.prog && new_mtu > NSIM_XDP_MAX_MTU)
+       if (ns->xdp.prog && !ns->xdp.prog->aux->xdp_has_frags &&
+           new_mtu > NSIM_XDP_MAX_MTU)
                return -EBUSY;
 
        WRITE_ONCE(dev->mtu, new_mtu);