On Mon, Dec 4, 2017 at 1:48 PM, Yuval Mintz <yuv...@mellanox.com> wrote: >> Advertise NETIF_F_GRO_HW and turn on or off hardware GRO based on >> NETIF_F_GRO_FW flag. >> >> Cc: Ariel Elior <ariel.el...@cavium.com> >> Cc: everest-linux...@cavium.com >> Signed-off-by: Michael Chan <michael.c...@broadcom.com> >> --- >> drivers/net/ethernet/qlogic/qede/qede_filter.c | 9 ++------- >> drivers/net/ethernet/qlogic/qede/qede_main.c | 4 ++-- >> 2 files changed, 4 insertions(+), 9 deletions(-) >> >> diff --git a/drivers/net/ethernet/qlogic/qede/qede_filter.c >> b/drivers/net/ethernet/qlogic/qede/qede_filter.c >> index c1a0708..7ee49b4 100644 >> --- a/drivers/net/ethernet/qlogic/qede/qede_filter.c >> +++ b/drivers/net/ethernet/qlogic/qede/qede_filter.c >> @@ -901,13 +901,8 @@ int qede_set_features(struct net_device *dev, >> netdev_features_t features) >> netdev_features_t changes = features ^ dev->features; >> bool need_reload = false; >> >> - /* No action needed if hardware GRO is disabled during driver load */ >> - if (changes & NETIF_F_GRO) { >> - if (dev->features & NETIF_F_GRO) >> - need_reload = !edev->gro_disable; >> - else >> - need_reload = edev->gro_disable; >> - } >> + if (changes & NETIF_F_GRO_HW) >> + need_reload = true; > > This doesn't look right; edev->gro_disable can change due to other > conditions as well - otherwise, it would have been synonymous with > (dev->features & NETIF_F_GRO). >
Feel free to modify the patch. The idea is for the driver to determine in ndo_fix_features()/ndo_set_features() if GRO_HW can be enabled. For things like generic XDP, I think we can add code to centrally disable GRO_HW and not have to worry about that in the driver.