Message ID | 20240205123011.22036-1-magnus.karlsson@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net] bonding: do not report NETDEV_XDP_ACT_XSK_ZEROCOPY | expand |
Magnus Karlsson <magnus.karlsson@gmail.com> writes: > From: Magnus Karlsson <magnus.karlsson@intel.com> > > Do not report the XDP capability NETDEV_XDP_ACT_XSK_ZEROCOPY as the > bonding driver does not support XDP and AF_XDP in zero-copy mode even > if the real NIC drivers do. > > Fixes: cb9e6e584d58 ("bonding: add xdp_features support") > Reported-by: Prashant Batra <prbatra.mail@gmail.com> > Link: https://lore.kernel.org/all/CAJ8uoz2ieZCopgqTvQ9ZY6xQgTbujmC6XkMTamhp68O-h_-rLg@mail.gmail.com/T/ > Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com> > --- > drivers/net/bonding/bond_main.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c > index 4e0600c7b050..79a37bed097b 100644 > --- a/drivers/net/bonding/bond_main.c > +++ b/drivers/net/bonding/bond_main.c > @@ -1819,6 +1819,8 @@ void bond_xdp_set_features(struct net_device *bond_dev) > bond_for_each_slave(bond, slave, iter) > val &= slave->dev->xdp_features; > > + val &= ~NETDEV_XDP_ACT_XSK_ZEROCOPY; > + > xdp_set_features_flag(bond_dev, val); > } > > @@ -5910,8 +5912,10 @@ void bond_setup(struct net_device *bond_dev) > bond_dev->features |= BOND_XFRM_FEATURES; > #endif /* CONFIG_XFRM_OFFLOAD */ > > - if (bond_xdp_check(bond)) > + if (bond_xdp_check(bond)) { > bond_dev->xdp_features = NETDEV_XDP_ACT_MASK; > + bond_dev->xdp_features &= ~NETDEV_XDP_ACT_XSK_ZEROCOPY; > + } Shouldn't we rather drop this assignment completely? It makes no sense to default to all features, it should default to none... -Toke
On Mon, 5 Feb 2024 at 14:08, Toke Høiland-Jørgensen <toke@redhat.com> wrote: > > Magnus Karlsson <magnus.karlsson@gmail.com> writes: > > > From: Magnus Karlsson <magnus.karlsson@intel.com> > > > > Do not report the XDP capability NETDEV_XDP_ACT_XSK_ZEROCOPY as the > > bonding driver does not support XDP and AF_XDP in zero-copy mode even > > if the real NIC drivers do. > > > > Fixes: cb9e6e584d58 ("bonding: add xdp_features support") > > Reported-by: Prashant Batra <prbatra.mail@gmail.com> > > Link: https://lore.kernel.org/all/CAJ8uoz2ieZCopgqTvQ9ZY6xQgTbujmC6XkMTamhp68O-h_-rLg@mail.gmail.com/T/ > > Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com> > > --- > > drivers/net/bonding/bond_main.c | 6 +++++- > > 1 file changed, 5 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c > > index 4e0600c7b050..79a37bed097b 100644 > > --- a/drivers/net/bonding/bond_main.c > > +++ b/drivers/net/bonding/bond_main.c > > @@ -1819,6 +1819,8 @@ void bond_xdp_set_features(struct net_device *bond_dev) > > bond_for_each_slave(bond, slave, iter) > > val &= slave->dev->xdp_features; > > > > + val &= ~NETDEV_XDP_ACT_XSK_ZEROCOPY; > > + > > xdp_set_features_flag(bond_dev, val); > > } > > > > @@ -5910,8 +5912,10 @@ void bond_setup(struct net_device *bond_dev) > > bond_dev->features |= BOND_XFRM_FEATURES; > > #endif /* CONFIG_XFRM_OFFLOAD */ > > > > - if (bond_xdp_check(bond)) > > + if (bond_xdp_check(bond)) { > > bond_dev->xdp_features = NETDEV_XDP_ACT_MASK; > > + bond_dev->xdp_features &= ~NETDEV_XDP_ACT_XSK_ZEROCOPY; > > + } > > Shouldn't we rather drop this assignment completely? It makes no sense > to default to all features, it should default to none... Good point. Seems the bond device defaults to supporting everything before a device is bonded to it, but I might have misunderstood something. Lorenzo, could you enlighten us please? Thanks: Magnus > -Toke >
> On Mon, 5 Feb 2024 at 14:08, Toke Høiland-Jørgensen <toke@redhat.com> wrote: > > > > Magnus Karlsson <magnus.karlsson@gmail.com> writes: > > > > > From: Magnus Karlsson <magnus.karlsson@intel.com> > > > > > > Do not report the XDP capability NETDEV_XDP_ACT_XSK_ZEROCOPY as the > > > bonding driver does not support XDP and AF_XDP in zero-copy mode even > > > if the real NIC drivers do. > > > > > > Fixes: cb9e6e584d58 ("bonding: add xdp_features support") > > > Reported-by: Prashant Batra <prbatra.mail@gmail.com> > > > Link: https://lore.kernel.org/all/CAJ8uoz2ieZCopgqTvQ9ZY6xQgTbujmC6XkMTamhp68O-h_-rLg@mail.gmail.com/T/ > > > Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com> > > > --- > > > drivers/net/bonding/bond_main.c | 6 +++++- > > > 1 file changed, 5 insertions(+), 1 deletion(-) > > > > > > diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c > > > index 4e0600c7b050..79a37bed097b 100644 > > > --- a/drivers/net/bonding/bond_main.c > > > +++ b/drivers/net/bonding/bond_main.c > > > @@ -1819,6 +1819,8 @@ void bond_xdp_set_features(struct net_device *bond_dev) > > > bond_for_each_slave(bond, slave, iter) > > > val &= slave->dev->xdp_features; > > > > > > + val &= ~NETDEV_XDP_ACT_XSK_ZEROCOPY; > > > + > > > xdp_set_features_flag(bond_dev, val); > > > } > > > > > > @@ -5910,8 +5912,10 @@ void bond_setup(struct net_device *bond_dev) > > > bond_dev->features |= BOND_XFRM_FEATURES; > > > #endif /* CONFIG_XFRM_OFFLOAD */ > > > > > > - if (bond_xdp_check(bond)) > > > + if (bond_xdp_check(bond)) { > > > bond_dev->xdp_features = NETDEV_XDP_ACT_MASK; > > > + bond_dev->xdp_features &= ~NETDEV_XDP_ACT_XSK_ZEROCOPY; > > > + } > > > > Shouldn't we rather drop this assignment completely? It makes no sense > > to default to all features, it should default to none... > > Good point. Seems the bond device defaults to supporting everything > before a device is bonded to it, but I might have misunderstood > something. Lorenzo, could you enlighten us please? ack, I agree we can get rid of it since the xdp features will be calculated again as soon as a new device is added to the bond. Regards, Lorenzo > > Thanks: Magnus > > > -Toke > >
On Tue, 6 Feb 2024 at 16:16, Lorenzo Bianconi <lorenzo@kernel.org> wrote: > > > On Mon, 5 Feb 2024 at 14:08, Toke Høiland-Jørgensen <toke@redhat.com> wrote: > > > > > > Magnus Karlsson <magnus.karlsson@gmail.com> writes: > > > > > > > From: Magnus Karlsson <magnus.karlsson@intel.com> > > > > > > > > Do not report the XDP capability NETDEV_XDP_ACT_XSK_ZEROCOPY as the > > > > bonding driver does not support XDP and AF_XDP in zero-copy mode even > > > > if the real NIC drivers do. > > > > > > > > Fixes: cb9e6e584d58 ("bonding: add xdp_features support") > > > > Reported-by: Prashant Batra <prbatra.mail@gmail.com> > > > > Link: https://lore.kernel.org/all/CAJ8uoz2ieZCopgqTvQ9ZY6xQgTbujmC6XkMTamhp68O-h_-rLg@mail.gmail.com/T/ > > > > Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com> > > > > --- > > > > drivers/net/bonding/bond_main.c | 6 +++++- > > > > 1 file changed, 5 insertions(+), 1 deletion(-) > > > > > > > > diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c > > > > index 4e0600c7b050..79a37bed097b 100644 > > > > --- a/drivers/net/bonding/bond_main.c > > > > +++ b/drivers/net/bonding/bond_main.c > > > > @@ -1819,6 +1819,8 @@ void bond_xdp_set_features(struct net_device *bond_dev) > > > > bond_for_each_slave(bond, slave, iter) > > > > val &= slave->dev->xdp_features; > > > > > > > > + val &= ~NETDEV_XDP_ACT_XSK_ZEROCOPY; > > > > + > > > > xdp_set_features_flag(bond_dev, val); > > > > } > > > > > > > > @@ -5910,8 +5912,10 @@ void bond_setup(struct net_device *bond_dev) > > > > bond_dev->features |= BOND_XFRM_FEATURES; > > > > #endif /* CONFIG_XFRM_OFFLOAD */ > > > > > > > > - if (bond_xdp_check(bond)) > > > > + if (bond_xdp_check(bond)) { > > > > bond_dev->xdp_features = NETDEV_XDP_ACT_MASK; > > > > + bond_dev->xdp_features &= ~NETDEV_XDP_ACT_XSK_ZEROCOPY; > > > > + } > > > > > > Shouldn't we rather drop this assignment completely? It makes no sense > > > to default to all features, it should default to none... > > > > Good point. Seems the bond device defaults to supporting everything > > before a device is bonded to it, but I might have misunderstood > > something. Lorenzo, could you enlighten us please? > > ack, I agree we can get rid of it since the xdp features will be calculated > again as soon as a new device is added to the bond. Thanks. Will spin a v2. > Regards, > Lorenzo > > > > > Thanks: Magnus > > > > > -Toke > > >
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index 4e0600c7b050..79a37bed097b 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c @@ -1819,6 +1819,8 @@ void bond_xdp_set_features(struct net_device *bond_dev) bond_for_each_slave(bond, slave, iter) val &= slave->dev->xdp_features; + val &= ~NETDEV_XDP_ACT_XSK_ZEROCOPY; + xdp_set_features_flag(bond_dev, val); } @@ -5910,8 +5912,10 @@ void bond_setup(struct net_device *bond_dev) bond_dev->features |= BOND_XFRM_FEATURES; #endif /* CONFIG_XFRM_OFFLOAD */ - if (bond_xdp_check(bond)) + if (bond_xdp_check(bond)) { bond_dev->xdp_features = NETDEV_XDP_ACT_MASK; + bond_dev->xdp_features &= ~NETDEV_XDP_ACT_XSK_ZEROCOPY; + } } /* Destroy a bonding device.