Message ID | 20241210141245.327886-1-daniel@iogearbox.net (mailing list archive) |
---|---|
State | Accepted |
Commit | d2516c3a53705f783bb6868df0f4a2b977898a71 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net,1/5] net, team, bonding: Add netdev_base_features helper | expand |
On Tue, Dec 10, 2024 at 03:12:41PM +0100, Daniel Borkmann wrote: > Both bonding and team driver have logic to derive the base feature > flags before iterating over their slave devices to refine the set > via netdev_increment_features(). > > Add a small helper netdev_base_features() so this can be reused > instead of having it open-coded multiple times. > > Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> > Cc: Nikolay Aleksandrov <razor@blackwall.org> > Cc: Ido Schimmel <idosch@idosch.org> > Cc: Jiri Pirko <jiri@nvidia.com> > --- > drivers/net/bonding/bond_main.c | 4 +--- > drivers/net/team/team_core.c | 3 +-- > include/linux/netdev_features.h | 7 +++++++ > 3 files changed, 9 insertions(+), 5 deletions(-) > > diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c > index 49dd4fe195e5..42c835c60cd8 100644 > --- a/drivers/net/bonding/bond_main.c > +++ b/drivers/net/bonding/bond_main.c > @@ -1520,9 +1520,7 @@ static netdev_features_t bond_fix_features(struct net_device *dev, > struct slave *slave; > > mask = features; > - > - features &= ~NETIF_F_ONE_FOR_ALL; > - features |= NETIF_F_ALL_FOR_ALL; > + features = netdev_base_features(features); > > bond_for_each_slave(bond, slave, iter) { > features = netdev_increment_features(features, > diff --git a/drivers/net/team/team_core.c b/drivers/net/team/team_core.c > index a1b27b69f010..1df062c67640 100644 > --- a/drivers/net/team/team_core.c > +++ b/drivers/net/team/team_core.c > @@ -2011,8 +2011,7 @@ static netdev_features_t team_fix_features(struct net_device *dev, > netdev_features_t mask; > > mask = features; > - features &= ~NETIF_F_ONE_FOR_ALL; > - features |= NETIF_F_ALL_FOR_ALL; > + features = netdev_base_features(features); > > rcu_read_lock(); > list_for_each_entry_rcu(port, &team->port_list, list) { > diff --git a/include/linux/netdev_features.h b/include/linux/netdev_features.h > index 66e7d26b70a4..11be70a7929f 100644 > --- a/include/linux/netdev_features.h > +++ b/include/linux/netdev_features.h > @@ -253,4 +253,11 @@ static inline int find_next_netdev_feature(u64 feature, unsigned long start) > NETIF_F_GSO_UDP_TUNNEL | \ > NETIF_F_GSO_UDP_TUNNEL_CSUM) > > +static inline netdev_features_t netdev_base_features(netdev_features_t features) > +{ > + features &= ~NETIF_F_ONE_FOR_ALL; > + features |= NETIF_F_ALL_FOR_ALL; > + return features; > +} > + > #endif /* _LINUX_NETDEV_FEATURES_H */ > -- > 2.43.0 > Reviewed-by: Hangbin Liu <liuhangbin@gmail.com>
On 12/10/24 16:12, Daniel Borkmann wrote: > Both bonding and team driver have logic to derive the base feature > flags before iterating over their slave devices to refine the set > via netdev_increment_features(). > > Add a small helper netdev_base_features() so this can be reused > instead of having it open-coded multiple times. > > Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> > Cc: Nikolay Aleksandrov <razor@blackwall.org> > Cc: Ido Schimmel <idosch@idosch.org> > Cc: Jiri Pirko <jiri@nvidia.com> > --- > drivers/net/bonding/bond_main.c | 4 +--- > drivers/net/team/team_core.c | 3 +-- > include/linux/netdev_features.h | 7 +++++++ > 3 files changed, 9 insertions(+), 5 deletions(-) > Reviewed-by: Nikolay Aleksandrov <razor@blackwall.org>
On 12/10/24 15:12, Daniel Borkmann wrote: > Both bonding and team driver have logic to derive the base feature > flags before iterating over their slave devices to refine the set > via netdev_increment_features(). > > Add a small helper netdev_base_features() so this can be reused > instead of having it open-coded multiple times. > > Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> > Cc: Nikolay Aleksandrov <razor@blackwall.org> > Cc: Ido Schimmel <idosch@idosch.org> > Cc: Jiri Pirko <jiri@nvidia.com> The series looks good, I'm applying it right now, but please include a (even small) cover letter in the next multi-patch submission, thanks! Paolo
Hello: This series was applied to netdev/net.git (main) by Paolo Abeni <pabeni@redhat.com>: On Tue, 10 Dec 2024 15:12:41 +0100 you wrote: > Both bonding and team driver have logic to derive the base feature > flags before iterating over their slave devices to refine the set > via netdev_increment_features(). > > Add a small helper netdev_base_features() so this can be reused > instead of having it open-coded multiple times. > > [...] Here is the summary with links: - [net,1/5] net, team, bonding: Add netdev_base_features helper https://git.kernel.org/netdev/net/c/d2516c3a5370 - [net,2/5] bonding: Fix initial {vlan,mpls}_feature set in bond_compute_features https://git.kernel.org/netdev/net/c/d064ea7fe2a2 - [net,3/5] bonding: Fix feature propagation of NETIF_F_GSO_ENCAP_ALL https://git.kernel.org/netdev/net/c/77b11c8bf3a2 - [net,4/5] team: Fix initial vlan_feature set in __team_compute_features https://git.kernel.org/netdev/net/c/396699ac2cb1 - [net,5/5] team: Fix feature propagation of NETIF_F_GSO_ENCAP_ALL https://git.kernel.org/netdev/net/c/98712844589e You are awesome, thank you!
On 12/12/24 11:58 AM, Paolo Abeni wrote: > On 12/10/24 15:12, Daniel Borkmann wrote: >> Both bonding and team driver have logic to derive the base feature >> flags before iterating over their slave devices to refine the set >> via netdev_increment_features(). >> >> Add a small helper netdev_base_features() so this can be reused >> instead of having it open-coded multiple times. >> >> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> >> Cc: Nikolay Aleksandrov <razor@blackwall.org> >> Cc: Ido Schimmel <idosch@idosch.org> >> Cc: Jiri Pirko <jiri@nvidia.com> > > The series looks good, I'm applying it right now, but please include a > (even small) cover letter in the next multi-patch submission, thanks! Ok, thanks, will do next time! Cheers, Daniel
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index 49dd4fe195e5..42c835c60cd8 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c @@ -1520,9 +1520,7 @@ static netdev_features_t bond_fix_features(struct net_device *dev, struct slave *slave; mask = features; - - features &= ~NETIF_F_ONE_FOR_ALL; - features |= NETIF_F_ALL_FOR_ALL; + features = netdev_base_features(features); bond_for_each_slave(bond, slave, iter) { features = netdev_increment_features(features, diff --git a/drivers/net/team/team_core.c b/drivers/net/team/team_core.c index a1b27b69f010..1df062c67640 100644 --- a/drivers/net/team/team_core.c +++ b/drivers/net/team/team_core.c @@ -2011,8 +2011,7 @@ static netdev_features_t team_fix_features(struct net_device *dev, netdev_features_t mask; mask = features; - features &= ~NETIF_F_ONE_FOR_ALL; - features |= NETIF_F_ALL_FOR_ALL; + features = netdev_base_features(features); rcu_read_lock(); list_for_each_entry_rcu(port, &team->port_list, list) { diff --git a/include/linux/netdev_features.h b/include/linux/netdev_features.h index 66e7d26b70a4..11be70a7929f 100644 --- a/include/linux/netdev_features.h +++ b/include/linux/netdev_features.h @@ -253,4 +253,11 @@ static inline int find_next_netdev_feature(u64 feature, unsigned long start) NETIF_F_GSO_UDP_TUNNEL | \ NETIF_F_GSO_UDP_TUNNEL_CSUM) +static inline netdev_features_t netdev_base_features(netdev_features_t features) +{ + features &= ~NETIF_F_ONE_FOR_ALL; + features |= NETIF_F_ALL_FOR_ALL; + return features; +} + #endif /* _LINUX_NETDEV_FEATURES_H */
Both bonding and team driver have logic to derive the base feature flags before iterating over their slave devices to refine the set via netdev_increment_features(). Add a small helper netdev_base_features() so this can be reused instead of having it open-coded multiple times. Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Cc: Nikolay Aleksandrov <razor@blackwall.org> Cc: Ido Schimmel <idosch@idosch.org> Cc: Jiri Pirko <jiri@nvidia.com> --- drivers/net/bonding/bond_main.c | 4 +--- drivers/net/team/team_core.c | 3 +-- include/linux/netdev_features.h | 7 +++++++ 3 files changed, 9 insertions(+), 5 deletions(-)