Skip to content

Commit 7fd3c56

Browse files
committed
Merge branch 'GREoIPV6-followups'
Alexander Duyck says: ==================== Follow-ups for GUEoIPv6 patches This patch series is meant to be applied after: [PATCH v7 net-next 00/16] ipv6: Enable GUEoIPv6 and more fixes for v6 tunneling The first patch addresses an issue we already resolved in the GREv4 and is now present in GREv6 with the introduction of FOU/GUE for IPv6 based GRE tunnels. The second patch goes through and enables IPv6 tunnel offloads for the Intel NICs that already support the IPv4 based IP-in-IP tunnel offloads. I have only done a bit of touch testing but have seen ~20 Gb/s over an i40e interface using a v4-in-v6 tunnel, and I have verified IPv6 GRE is still passing traffic at around the same rate. I plan to do further testing but with these patches present it should enable a wider audience to be able to test the new features introduced in Tom's patchset with hardware offloads. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
2 parents 9a0351d + bf2d1df commit 7fd3c56

File tree

9 files changed

+16
-4
lines changed

9 files changed

+16
-4
lines changed

drivers/net/ethernet/intel/i40e/i40e_main.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9084,6 +9084,7 @@ static int i40e_config_netdev(struct i40e_vsi *vsi)
90849084
NETIF_F_GSO_GRE |
90859085
NETIF_F_GSO_GRE_CSUM |
90869086
NETIF_F_GSO_IPXIP4 |
9087+
NETIF_F_GSO_IPXIP6 |
90879088
NETIF_F_GSO_UDP_TUNNEL |
90889089
NETIF_F_GSO_UDP_TUNNEL_CSUM |
90899090
NETIF_F_GSO_PARTIAL |

drivers/net/ethernet/intel/i40e/i40e_txrx.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2285,6 +2285,7 @@ static int i40e_tso(struct sk_buff *skb, u8 *hdr_len, u64 *cd_type_cmd_tso_mss)
22852285
if (skb_shinfo(skb)->gso_type & (SKB_GSO_GRE |
22862286
SKB_GSO_GRE_CSUM |
22872287
SKB_GSO_IPXIP4 |
2288+
SKB_GSO_IPXIP6 |
22882289
SKB_GSO_UDP_TUNNEL |
22892290
SKB_GSO_UDP_TUNNEL_CSUM)) {
22902291
if (!(skb_shinfo(skb)->gso_type & SKB_GSO_PARTIAL) &&

drivers/net/ethernet/intel/i40evf/i40e_txrx.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1560,6 +1560,7 @@ static int i40e_tso(struct sk_buff *skb, u8 *hdr_len, u64 *cd_type_cmd_tso_mss)
15601560
if (skb_shinfo(skb)->gso_type & (SKB_GSO_GRE |
15611561
SKB_GSO_GRE_CSUM |
15621562
SKB_GSO_IPXIP4 |
1563+
SKB_GSO_IPXIP6 |
15631564
SKB_GSO_UDP_TUNNEL |
15641565
SKB_GSO_UDP_TUNNEL_CSUM)) {
15651566
if (!(skb_shinfo(skb)->gso_type & SKB_GSO_PARTIAL) &&

drivers/net/ethernet/intel/i40evf/i40evf_main.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2231,6 +2231,7 @@ int i40evf_process_config(struct i40evf_adapter *adapter)
22312231
NETIF_F_GSO_GRE |
22322232
NETIF_F_GSO_GRE_CSUM |
22332233
NETIF_F_GSO_IPXIP4 |
2234+
NETIF_F_GSO_IPXIP6 |
22342235
NETIF_F_GSO_UDP_TUNNEL |
22352236
NETIF_F_GSO_UDP_TUNNEL_CSUM |
22362237
NETIF_F_GSO_PARTIAL |

drivers/net/ethernet/intel/igb/igb_main.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2419,6 +2419,7 @@ static int igb_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
24192419
#define IGB_GSO_PARTIAL_FEATURES (NETIF_F_GSO_GRE | \
24202420
NETIF_F_GSO_GRE_CSUM | \
24212421
NETIF_F_GSO_IPXIP4 | \
2422+
NETIF_F_GSO_IPXIP6 | \
24222423
NETIF_F_GSO_UDP_TUNNEL | \
24232424
NETIF_F_GSO_UDP_TUNNEL_CSUM)
24242425

drivers/net/ethernet/intel/igbvf/netdev.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2764,6 +2764,7 @@ static int igbvf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
27642764
#define IGBVF_GSO_PARTIAL_FEATURES (NETIF_F_GSO_GRE | \
27652765
NETIF_F_GSO_GRE_CSUM | \
27662766
NETIF_F_GSO_IPXIP4 | \
2767+
NETIF_F_GSO_IPXIP6 | \
27672768
NETIF_F_GSO_UDP_TUNNEL | \
27682769
NETIF_F_GSO_UDP_TUNNEL_CSUM)
27692770

drivers/net/ethernet/intel/ixgbe/ixgbe_main.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9483,6 +9483,7 @@ static int ixgbe_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
94839483
#define IXGBE_GSO_PARTIAL_FEATURES (NETIF_F_GSO_GRE | \
94849484
NETIF_F_GSO_GRE_CSUM | \
94859485
NETIF_F_GSO_IPXIP4 | \
9486+
NETIF_F_GSO_IPXIP6 | \
94869487
NETIF_F_GSO_UDP_TUNNEL | \
94879488
NETIF_F_GSO_UDP_TUNNEL_CSUM)
94889489

drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4063,6 +4063,7 @@ static int ixgbevf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
40634063
#define IXGBEVF_GSO_PARTIAL_FEATURES (NETIF_F_GSO_GRE | \
40644064
NETIF_F_GSO_GRE_CSUM | \
40654065
NETIF_F_GSO_IPXIP4 | \
4066+
NETIF_F_GSO_IPXIP6 | \
40664067
NETIF_F_GSO_UDP_TUNNEL | \
40674068
NETIF_F_GSO_UDP_TUNNEL_CSUM)
40684069

net/ipv6/ip6_gre.c

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1355,11 +1355,15 @@ static int ip6gre_newlink(struct net *src_net, struct net_device *dev,
13551355
dev->hw_features |= GRE6_FEATURES;
13561356

13571357
if (!(nt->parms.o_flags & TUNNEL_SEQ)) {
1358-
/* TCP segmentation offload is not supported when we
1359-
* generate output sequences.
1358+
/* TCP offload with GRE SEQ is not supported, nor
1359+
* can we support 2 levels of outer headers requiring
1360+
* an update.
13601361
*/
1361-
dev->features |= NETIF_F_GSO_SOFTWARE;
1362-
dev->hw_features |= NETIF_F_GSO_SOFTWARE;
1362+
if (!(nt->parms.o_flags & TUNNEL_CSUM) ||
1363+
(nt->encap.type == TUNNEL_ENCAP_NONE)) {
1364+
dev->features |= NETIF_F_GSO_SOFTWARE;
1365+
dev->hw_features |= NETIF_F_GSO_SOFTWARE;
1366+
}
13631367

13641368
/* Can use a lockless transmit, unless we generate
13651369
* output sequences

0 commit comments

Comments
 (0)