@@ -9564,16 +9564,14 @@ static netdev_features_t netdev_sync_upper_features(struct net_device *lower,
struct net_device *upper, netdev_features_t features)
{
netdev_features_t upper_disables = NETIF_F_UPPER_DISABLES;
- netdev_features_t feature;
int feature_bit;
for_each_netdev_feature(upper_disables, feature_bit) {
- feature = __NETIF_F_BIT(feature_bit);
- if (!(upper->wanted_features & feature)
- && (features & feature)) {
- netdev_dbg(lower, "Dropping feature %pNF, upper dev %s has it off.\n",
- &feature, upper->name);
- features &= ~feature;
+ if (!netdev_wanted_feature_test(upper, feature_bit) &&
+ netdev_feature_test(feature_bit, features)) {
+ netdev_dbg(lower, "Dropping feature bit %d, upper dev %s has it off.\n",
+ feature_bit, upper->name);
+ netdev_feature_del(feature_bit, features);
}
}
@@ -9584,20 +9582,19 @@ static void netdev_sync_lower_features(struct net_device *upper,
struct net_device *lower, netdev_features_t features)
{
netdev_features_t upper_disables = NETIF_F_UPPER_DISABLES;
- netdev_features_t feature;
int feature_bit;
for_each_netdev_feature(upper_disables, feature_bit) {
- feature = __NETIF_F_BIT(feature_bit);
- if (!(features & feature) && (lower->features & feature)) {
- netdev_dbg(upper, "Disabling feature %pNF on lower dev %s.\n",
- &feature, lower->name);
- lower->wanted_features &= ~feature;
+ if (!netdev_feature_test(feature_bit, features) &&
+ netdev_active_feature_test(lower, feature_bit)) {
+ netdev_dbg(upper, "Disabling feature bit %d on lower dev %s.\n",
+ feature_bit, lower->name);
+ netdev_wanted_feature_del(lower, feature_bit);
__netdev_update_features(lower);
- if (unlikely(lower->features & feature))
- netdev_WARN(upper, "failed to disable %pNF on %s!\n",
- &feature, lower->name);
+ if (unlikely(netdev_active_feature_test(lower, feature_bit)))
+ netdev_WARN(upper, "failed to disable feature bit %d on %s!\n",
+ feature_bit, lower->name);
else
netdev_features_change(lower);
}
The functions netdev_sync_upper_features() and netdev_sync_lower_features() use NETIF_F_XXX as input parameter directly, change them to use NETIF_F_XXX_BIT, for all macroes NETIF_F_XXX will be removed later. Signed-off-by: Jian Shen <shenjian15@huawei.com> --- net/core/dev.c | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-)