@@ -3457,22 +3457,19 @@ static void net_mpls_features(struct sk_buff *skb, netdev_features_t *features,
}
#endif
-static netdev_features_t harmonize_features(struct sk_buff *skb,
- netdev_features_t features)
+static void harmonize_features(struct sk_buff *skb, netdev_features_t *features)
{
__be16 type;
type = skb_network_protocol(skb, NULL);
- net_mpls_features(skb, &features, type);
+ net_mpls_features(skb, features, type);
if (skb->ip_summed != CHECKSUM_NONE &&
- !can_checksum_protocol(features, type)) {
- features &= ~(NETIF_F_CSUM_MASK | NETIF_F_GSO_MASK);
+ !can_checksum_protocol(*features, type)) {
+ *features &= ~(NETIF_F_CSUM_MASK | NETIF_F_GSO_MASK);
}
if (illegal_highdma(skb->dev, skb))
- features &= ~NETIF_F_SG;
-
- return features;
+ *features &= ~NETIF_F_SG;
}
netdev_features_t passthru_features_check(struct sk_buff *skb,
@@ -3554,7 +3551,8 @@ netdev_features_t netif_skb_features(struct sk_buff *skb)
else
features &= dflt_features_check(skb, dev, features);
- return harmonize_features(skb, features);
+ harmonize_features(skb, &features);
+ return features;
}
EXPORT_SYMBOL(netif_skb_features);
For the origin type for netdev_features_t would be changed to be unsigned long * from u64, so changes the prototype of harmonize_features for adaption. Signed-off-by: Jian Shen <shenjian15@huawei.com> --- net/core/dev.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-)