On 30/07/2026 16:46, Simon Horman wrote:
> [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?
The review is correct that dev_disable_gro() is setup-time enforcement, not an 
immutable policy. Clearing wanted_features prevents an ordinary feature 
recalculation from restoring GRO, but a privileged administrator can explicitly 
request it again with ethtool. Adding a new lower device below an already 
enslaved stacked device can similarly escape the recursive setup-time walk.

I did not add GRO to NETIF_F_UPPER_DISABLES because that is a generic 
upper/lower feature rule. It would make an upper device which does not 
advertise GRO disable GRO on all of its lowers, well beyond HSR/PRP. That seems 
too broad for this fix.

Patch 3 is the second line of defense. Even if GRO is explicitly re-enabled, no 
GSO super-packet is forwarded as one HSR/PRP frame. Plain Ethernet GSO packets 
from the master or interlink are unfolded and each segment receives its own tag 
and sequence number. GSO packets from an HSR/PRP LAN slave are rejected because 
software cannot reconstruct their individual HSR tags or PRP RCTs. Patch 2 
makes the segmentation path practical by moving the expensive work outside 
seqnr_lock; it is not itself an additional GRO guard.

The two layers therefore have different roles: patch 1 establishes the safe 
default when a port is enslaved, while patch 3 guarantees fail-safe handling if 
a super-packet nevertheless reaches the forward path. An administrator override 
can still cause packet loss on LAN ingress, but it cannot make an aggregate 
bypass the per-frame forwarding invariant.

 
--
Xin

Reply via email to