|
@@ -1750,18 +1750,13 @@ static int vxlan_build_skb(struct sk_buff *skb, struct dst_entry *dst,
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
min_headroom = LL_RESERVED_SPACE(dst->dev) + dst->header_len
|
|
min_headroom = LL_RESERVED_SPACE(dst->dev) + dst->header_len
|
|
|
- + VXLAN_HLEN + iphdr_len
|
|
|
|
|
- + (skb_vlan_tag_present(skb) ? VLAN_HLEN : 0);
|
|
|
|
|
|
|
+ + VXLAN_HLEN + iphdr_len;
|
|
|
|
|
|
|
|
/* Need space for new headers (invalidates iph ptr) */
|
|
/* Need space for new headers (invalidates iph ptr) */
|
|
|
err = skb_cow_head(skb, min_headroom);
|
|
err = skb_cow_head(skb, min_headroom);
|
|
|
if (unlikely(err))
|
|
if (unlikely(err))
|
|
|
goto out_free;
|
|
goto out_free;
|
|
|
|
|
|
|
|
- skb = vlan_hwaccel_push_inside(skb);
|
|
|
|
|
- if (WARN_ON(!skb))
|
|
|
|
|
- return -ENOMEM;
|
|
|
|
|
-
|
|
|
|
|
err = iptunnel_handle_offloads(skb, type);
|
|
err = iptunnel_handle_offloads(skb, type);
|
|
|
if (err)
|
|
if (err)
|
|
|
goto out_free;
|
|
goto out_free;
|
|
@@ -2529,10 +2524,8 @@ static void vxlan_setup(struct net_device *dev)
|
|
|
dev->features |= NETIF_F_GSO_SOFTWARE;
|
|
dev->features |= NETIF_F_GSO_SOFTWARE;
|
|
|
|
|
|
|
|
dev->vlan_features = dev->features;
|
|
dev->vlan_features = dev->features;
|
|
|
- dev->features |= NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_HW_VLAN_STAG_TX;
|
|
|
|
|
dev->hw_features |= NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_RXCSUM;
|
|
dev->hw_features |= NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_RXCSUM;
|
|
|
dev->hw_features |= NETIF_F_GSO_SOFTWARE;
|
|
dev->hw_features |= NETIF_F_GSO_SOFTWARE;
|
|
|
- dev->hw_features |= NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_HW_VLAN_STAG_TX;
|
|
|
|
|
netif_keep_dst(dev);
|
|
netif_keep_dst(dev);
|
|
|
dev->priv_flags |= IFF_NO_QUEUE;
|
|
dev->priv_flags |= IFF_NO_QUEUE;
|
|
|
|
|
|