@@ -292,7 +292,7 @@ static void br_fix_features(struct net_device *dev, netdev_features_t *features)
{
struct net_bridge *br = netdev_priv(dev);
- *features = br_features_recompute(br, *features);
+ br_features_recompute(br, features);
}
#ifdef CONFIG_NET_POLL_CONTROLLER
@@ -532,25 +532,22 @@ static void br_set_gso_limits(struct net_bridge *br)
/*
* Recomputes features using slave's features
*/
-netdev_features_t br_features_recompute(struct net_bridge *br,
- netdev_features_t features)
+void br_features_recompute(struct net_bridge *br, netdev_features_t *features)
{
struct net_bridge_port *p;
netdev_features_t mask;
if (list_empty(&br->port_list))
- return features;
+ return;
- mask = features;
- features &= ~NETIF_F_ONE_FOR_ALL;
+ mask = *features;
+ *features &= ~NETIF_F_ONE_FOR_ALL;
list_for_each_entry(p, &br->port_list, list) {
- features = netdev_increment_features(features,
- p->dev->features, mask);
+ *features = netdev_increment_features(*features,
+ p->dev->features, mask);
}
- features = netdev_add_tso_features(features, mask);
-
- return features;
+ *features = netdev_add_tso_features(*features, mask);
}
/* called with RTNL */
@@ -824,8 +824,7 @@ int br_add_if(struct net_bridge *br, struct net_device *dev,
struct netlink_ext_ack *extack);
int br_del_if(struct net_bridge *br, struct net_device *dev);
void br_mtu_auto_adjust(struct net_bridge *br);
-netdev_features_t br_features_recompute(struct net_bridge *br,
- netdev_features_t features);
+void br_features_recompute(struct net_bridge *br, netdev_features_t *features);
void br_port_flags_change(struct net_bridge_port *port, unsigned long mask);
void br_manage_promisc(struct net_bridge *br);
int nbp_backup_change(struct net_bridge_port *p, struct net_device *backup_dev);
For the origin type for netdev_features_t would be changed to be unsigned long * from u64, so changes the prototype of br_features_recompute for adaption. Signed-off-by: Jian Shen <shenjian15@huawei.com> --- net/bridge/br_device.c | 2 +- net/bridge/br_if.c | 17 +++++++---------- net/bridge/br_private.h | 3 +-- 3 files changed, 9 insertions(+), 13 deletions(-)