]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
net: introduce mangleid_features
authorPaolo Abeni <pabeni@redhat.com>
Wed, 21 Jan 2026 16:11:27 +0000 (17:11 +0100)
committerJakub Kicinski <kuba@kernel.org>
Fri, 23 Jan 2026 19:31:05 +0000 (11:31 -0800)
commit31c5a71d982b57df75858974634c2f0a338f2fc6
tree0b944e49277f49de37b5883e24e259949c346282
parent8811df1dd4e03522e52fc70ceaa6c01a41411590
net: introduce mangleid_features

Some/most devices implementing gso_partial need to disable the GSO partial
features when the IP ID can't be mangled; to that extend each of them
implements something alike the following[1]:

if (skb->encapsulation && !(features & NETIF_F_TSO_MANGLEID))
features &= ~NETIF_F_TSO;

in the ndo_features_check() op, which leads to a bit of duplicate code.

Later patch in the series will implement GSO partial support for virtual
devices, and the current status quo will require more duplicate code and
a new indirect call in the TX path for them.

Introduce the mangleid_features mask, allowing the core to disable NIC
features based on/requiring MANGLEID, without any further intervention
from the driver.

The same functionality could be alternatively implemented adding a single
boolean flag to the struct net_device, but would require an additional
checks in ndo_features_check().

Also note that [1] is incorrect if the NIC additionally implements
NETIF_F_GSO_UDP_L4, mangleid_features transparently handle even such a
case.

Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Link: https://patch.msgid.link/5a7cdaeea40b0a29b88e525b6c942d73ed3b8ce7.1769011015.git.pabeni@redhat.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/linux/netdevice.h
net/core/dev.c