|
@@ -2447,9 +2447,14 @@ static netdev_features_t mlx4_en_features_check(struct sk_buff *skb,
|
|
|
* strip that feature if this is an IPv6 encapsulated frame.
|
|
|
*/
|
|
|
if (skb->encapsulation &&
|
|
|
- (skb->ip_summed == CHECKSUM_PARTIAL) &&
|
|
|
- (ip_hdr(skb)->version != 4))
|
|
|
- features &= ~(NETIF_F_CSUM_MASK | NETIF_F_GSO_MASK);
|
|
|
+ (skb->ip_summed == CHECKSUM_PARTIAL)) {
|
|
|
+ struct mlx4_en_priv *priv = netdev_priv(dev);
|
|
|
+
|
|
|
+ if (!priv->vxlan_port ||
|
|
|
+ (ip_hdr(skb)->version != 4) ||
|
|
|
+ (udp_hdr(skb)->dest != priv->vxlan_port))
|
|
|
+ features &= ~(NETIF_F_CSUM_MASK | NETIF_F_GSO_MASK);
|
|
|
+ }
|
|
|
|
|
|
return features;
|
|
|
}
|