|
@@ -58,6 +58,7 @@
|
|
#include <net/tc_act/tc_gact.h>
|
|
#include <net/tc_act/tc_gact.h>
|
|
#include <net/tc_act/tc_mirred.h>
|
|
#include <net/tc_act/tc_mirred.h>
|
|
#include <net/vxlan.h>
|
|
#include <net/vxlan.h>
|
|
|
|
+#include <net/mpls.h>
|
|
|
|
|
|
#include "ixgbe.h"
|
|
#include "ixgbe.h"
|
|
#include "ixgbe_common.h"
|
|
#include "ixgbe_common.h"
|
|
@@ -7667,7 +7668,10 @@ static int ixgbe_tso(struct ixgbe_ring *tx_ring,
|
|
if (err < 0)
|
|
if (err < 0)
|
|
return err;
|
|
return err;
|
|
|
|
|
|
- ip.hdr = skb_network_header(skb);
|
|
|
|
|
|
+ if (eth_p_mpls(first->protocol))
|
|
|
|
+ ip.hdr = skb_inner_network_header(skb);
|
|
|
|
+ else
|
|
|
|
+ ip.hdr = skb_network_header(skb);
|
|
l4.hdr = skb_checksum_start(skb);
|
|
l4.hdr = skb_checksum_start(skb);
|
|
|
|
|
|
/* ADV DTYP TUCMD MKRLOC/ISCSIHEDLEN */
|
|
/* ADV DTYP TUCMD MKRLOC/ISCSIHEDLEN */
|
|
@@ -10191,7 +10195,11 @@ skip_sriov:
|
|
|
|
|
|
netdev->vlan_features |= netdev->features | NETIF_F_TSO_MANGLEID;
|
|
netdev->vlan_features |= netdev->features | NETIF_F_TSO_MANGLEID;
|
|
netdev->hw_enc_features |= netdev->vlan_features;
|
|
netdev->hw_enc_features |= netdev->vlan_features;
|
|
- netdev->mpls_features |= NETIF_F_HW_CSUM;
|
|
|
|
|
|
+ netdev->mpls_features |= NETIF_F_SG |
|
|
|
|
+ NETIF_F_TSO |
|
|
|
|
+ NETIF_F_TSO6 |
|
|
|
|
+ NETIF_F_HW_CSUM;
|
|
|
|
+ netdev->mpls_features |= IXGBE_GSO_PARTIAL_FEATURES;
|
|
|
|
|
|
/* set this bit last since it cannot be part of vlan_features */
|
|
/* set this bit last since it cannot be part of vlan_features */
|
|
netdev->features |= NETIF_F_HW_VLAN_CTAG_FILTER |
|
|
netdev->features |= NETIF_F_HW_VLAN_CTAG_FILTER |
|