This is an AI-generated review of your patch. The human sending this
email has considered the AI review valid, or at least plausible.
Full review at:
https://sashiko.dev/#/patchset/[email protected]?part=1
---
--- Patch [1]: [PATCH net v2 1/4] net: hsr: fix packet drops caused by GRO
superpackets ---
commit b386202ef95164a9e68085058531ac441d9df79d
Author: Xin Xie <[email protected]>
net: hsr: fix packet drops caused by GRO superpackets
This commit fixes HSR/PRP packet drops by preventing lower devices from
aggregating frames into GRO super-packets. It adds dev_disable_gro() and
netif_disable_gro() functions and calls them during HSR port setup.
> diff --git a/net/core/dev.c b/net/core/dev.c
> index 5933c5dab09ee..a6cf2adc86256 100644
> --- a/net/core/dev.c
> +++ b/net/core/dev.c
[ ... ]
> @@ -1840,6 +1840,24 @@ void netif_disable_lro(struct net_device *dev)
> }
> }
>
> +void netif_disable_gro(struct net_device *dev)
> +{
> + struct net_device *lower_dev;
> + struct list_head *iter;
> +
> + dev->wanted_features &= ~(NETIF_F_GRO | NETIF_F_GRO_HW);
[Severity: High]
Does this one-time modification of wanted_features prevent userspace from
subsequently re-enabling GRO?
Since NETIF_F_GRO and NETIF_F_GRO_HW are not included in the
NETIF_F_UPPER_DISABLES macro definition in include/linux/netdev_features.h,
would netdev_sync_upper_features() and netdev_sync_lower_features() fail
to enforce the disabled state on lower devices during features recalculation?
Could an administrator run ethtool -K eth0 gro on (or add a new physical
device to an intermediate upper device already enslaved to HSR) to bypass
this restriction and cause the HSR packet drops to resurface?
> + netdev_update_features(dev);
> +
> + if (unlikely(dev->features & (NETIF_F_GRO | NETIF_F_GRO_HW)))
> + netdev_WARN(dev, "failed to disable GRO!\n");
> +
> + netdev_for_each_lower_dev(dev, lower_dev, iter) {
> + netdev_lock_ops(lower_dev);
> + netif_disable_gro(lower_dev);
> + netdev_unlock_ops(lower_dev);
> + }
> +}