On Fri, Sep 20, 2019 at 12:49 AM Steffen Klassert <steffen.klass...@secunet.com> wrote: > > The previous patch added the NETIF_F_GRO_FRAGLIST feature. > This is a software feature that should default to off. > Current software features default to on, so add a new > feature set that defaults to off. > > Signed-off-by: Steffen Klassert <steffen.klass...@secunet.com> > --- > include/linux/netdev_features.h | 3 +++ > net/core/dev.c | 2 +- > 2 files changed, 4 insertions(+), 1 deletion(-) > > diff --git a/include/linux/netdev_features.h b/include/linux/netdev_features.h > index b239507da2a0..34d050bb1ae6 100644 > --- a/include/linux/netdev_features.h > +++ b/include/linux/netdev_features.h > @@ -230,6 +230,9 @@ static inline int find_next_netdev_feature(u64 feature, > unsigned long start) > /* changeable features with no special hardware requirements */ > #define NETIF_F_SOFT_FEATURES (NETIF_F_GSO | NETIF_F_GRO) > > +/* Changeable features with no special hardware requirements that defaults > to off. */ > +#define NETIF_F_SOFT_FEATURES_OFF NETIF_F_GRO_FRAGLIST > +
NETIF_F_GRO_FRAGLIST is not really a device feature, but a way to configure which form of UDP GRO to apply. The UDP GRO benchmarks were largely positive, but not a strict win if I read Paolo's previous results correctly. Even if enabling to by default, it probably should come with a sysctl to disable for specific workloads. If so, how about a ternary per-netns sysctl {off, on without gro-list, on with gro-list} instead of configuring through ethtool? Alternative, the choice between gro-list or not could perhaps be informed by whether ip_forward is set. I think we discussed that and it was rejected, but I cannot remember why.