[PATCHv6 net-next 0/4] net: common feature compute for upper interface

Hangbin Liu
2025-10-17T03:42:07Z

Some high-level virtual drivers need to compute features from their
lower devices, but each currently has its own implementation and may
miss some feature computations. This patch set introduces a common function
to compute features for such devices.

Currently, bonding, team, and bridge have been updated to use the new
helper.

v6:
* no update, only rename UPPER_DEV_* to MASTER_UPPER_DEV_* (Jiri Pirko)

v5:
* rename VIRTUAL_DEV_* to UPPER_DEV_* (Jiri Pirko)
* use IS_ENABLED() instead of ifdef (Simon Horman)
* init max_headroom/tailroom (Simon Horman)
* link: https://lore.kernel.org/netdev/20251016033828.59324-1-liuhangbin@gmail.com

v4:
* update needed_{headroom, tailroom} in the common helper (Ido Schimmel)
* remove unneeded err in team (Stanislav Fomichev)
* remove selftest as `ethtool -k` does not test the dev->*_features. We
can add back the selftest when there is a good way to test. (Sabrina Dubroca)
* link: https://lore.kernel.org/netdev/20251014080217.47988-1-liuhangbin@gmail.com

v3:
a) fix hw_enc_features assign order (Sabrina Dubroca)
b) set virtual dev feature definition in netdev_features.h (Jakub Kicinski)
c) remove unneeded err in team_del_slave (Stanislav Fomichev)
d) remove NETIF_F_HW_ESP test as it needs to be test with GSO pkts (Sabrina Dubroca)

v2:
a) remove hard_header_len setting. I will set needed_headroom for bond/team
in a separate patch as bridge has it's own ways. (Ido Schimmel)
b) Add test file to Makefile, set RET=0 to a proper location. (Ido Schimmel)

Hangbin Liu (4):
net: add a common function to compute features for upper devices
bonding: use common function to compute the features
team: use common function to compute the features
net: bridge: use common function to compute the features

drivers/net/bonding/bond_main.c | 99 ++-------------------------------
drivers/net/team/team_core.c | 83 ++-------------------------
include/linux/netdev_features.h | 18 ++++++
include/linux/netdevice.h | 1 +
net/bridge/br_if.c | 22 +-------
net/core/dev.c | 88 +++++++++++++++++++++++++++++
6 files changed, 120 insertions(+), 191 deletions(-)

--
2.50.1