forked from Minki/linux
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>
This commit is contained in:
commit
7fd3c56d60
@ -9084,6 +9084,7 @@ static int i40e_config_netdev(struct i40e_vsi *vsi)
|
||||
NETIF_F_GSO_GRE |
|
||||
NETIF_F_GSO_GRE_CSUM |
|
||||
NETIF_F_GSO_IPXIP4 |
|
||||
NETIF_F_GSO_IPXIP6 |
|
||||
NETIF_F_GSO_UDP_TUNNEL |
|
||||
NETIF_F_GSO_UDP_TUNNEL_CSUM |
|
||||
NETIF_F_GSO_PARTIAL |
|
||||
|
@ -2285,6 +2285,7 @@ static int i40e_tso(struct sk_buff *skb, u8 *hdr_len, u64 *cd_type_cmd_tso_mss)
|
||||
if (skb_shinfo(skb)->gso_type & (SKB_GSO_GRE |
|
||||
SKB_GSO_GRE_CSUM |
|
||||
SKB_GSO_IPXIP4 |
|
||||
SKB_GSO_IPXIP6 |
|
||||
SKB_GSO_UDP_TUNNEL |
|
||||
SKB_GSO_UDP_TUNNEL_CSUM)) {
|
||||
if (!(skb_shinfo(skb)->gso_type & SKB_GSO_PARTIAL) &&
|
||||
|
@ -1560,6 +1560,7 @@ static int i40e_tso(struct sk_buff *skb, u8 *hdr_len, u64 *cd_type_cmd_tso_mss)
|
||||
if (skb_shinfo(skb)->gso_type & (SKB_GSO_GRE |
|
||||
SKB_GSO_GRE_CSUM |
|
||||
SKB_GSO_IPXIP4 |
|
||||
SKB_GSO_IPXIP6 |
|
||||
SKB_GSO_UDP_TUNNEL |
|
||||
SKB_GSO_UDP_TUNNEL_CSUM)) {
|
||||
if (!(skb_shinfo(skb)->gso_type & SKB_GSO_PARTIAL) &&
|
||||
|
@ -2231,6 +2231,7 @@ int i40evf_process_config(struct i40evf_adapter *adapter)
|
||||
NETIF_F_GSO_GRE |
|
||||
NETIF_F_GSO_GRE_CSUM |
|
||||
NETIF_F_GSO_IPXIP4 |
|
||||
NETIF_F_GSO_IPXIP6 |
|
||||
NETIF_F_GSO_UDP_TUNNEL |
|
||||
NETIF_F_GSO_UDP_TUNNEL_CSUM |
|
||||
NETIF_F_GSO_PARTIAL |
|
||||
|
@ -2419,6 +2419,7 @@ static int igb_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||
#define IGB_GSO_PARTIAL_FEATURES (NETIF_F_GSO_GRE | \
|
||||
NETIF_F_GSO_GRE_CSUM | \
|
||||
NETIF_F_GSO_IPXIP4 | \
|
||||
NETIF_F_GSO_IPXIP6 | \
|
||||
NETIF_F_GSO_UDP_TUNNEL | \
|
||||
NETIF_F_GSO_UDP_TUNNEL_CSUM)
|
||||
|
||||
|
@ -2764,6 +2764,7 @@ static int igbvf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||
#define IGBVF_GSO_PARTIAL_FEATURES (NETIF_F_GSO_GRE | \
|
||||
NETIF_F_GSO_GRE_CSUM | \
|
||||
NETIF_F_GSO_IPXIP4 | \
|
||||
NETIF_F_GSO_IPXIP6 | \
|
||||
NETIF_F_GSO_UDP_TUNNEL | \
|
||||
NETIF_F_GSO_UDP_TUNNEL_CSUM)
|
||||
|
||||
|
@ -9483,6 +9483,7 @@ skip_sriov:
|
||||
#define IXGBE_GSO_PARTIAL_FEATURES (NETIF_F_GSO_GRE | \
|
||||
NETIF_F_GSO_GRE_CSUM | \
|
||||
NETIF_F_GSO_IPXIP4 | \
|
||||
NETIF_F_GSO_IPXIP6 | \
|
||||
NETIF_F_GSO_UDP_TUNNEL | \
|
||||
NETIF_F_GSO_UDP_TUNNEL_CSUM)
|
||||
|
||||
|
@ -4063,6 +4063,7 @@ static int ixgbevf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||
#define IXGBEVF_GSO_PARTIAL_FEATURES (NETIF_F_GSO_GRE | \
|
||||
NETIF_F_GSO_GRE_CSUM | \
|
||||
NETIF_F_GSO_IPXIP4 | \
|
||||
NETIF_F_GSO_IPXIP6 | \
|
||||
NETIF_F_GSO_UDP_TUNNEL | \
|
||||
NETIF_F_GSO_UDP_TUNNEL_CSUM)
|
||||
|
||||
|
@ -1355,11 +1355,15 @@ static int ip6gre_newlink(struct net *src_net, struct net_device *dev,
|
||||
dev->hw_features |= GRE6_FEATURES;
|
||||
|
||||
if (!(nt->parms.o_flags & TUNNEL_SEQ)) {
|
||||
/* TCP segmentation offload is not supported when we
|
||||
* generate output sequences.
|
||||
/* TCP offload with GRE SEQ is not supported, nor
|
||||
* can we support 2 levels of outer headers requiring
|
||||
* an update.
|
||||
*/
|
||||
dev->features |= NETIF_F_GSO_SOFTWARE;
|
||||
dev->hw_features |= NETIF_F_GSO_SOFTWARE;
|
||||
if (!(nt->parms.o_flags & TUNNEL_CSUM) ||
|
||||
(nt->encap.type == TUNNEL_ENCAP_NONE)) {
|
||||
dev->features |= NETIF_F_GSO_SOFTWARE;
|
||||
dev->hw_features |= NETIF_F_GSO_SOFTWARE;
|
||||
}
|
||||
|
||||
/* Can use a lockless transmit, unless we generate
|
||||
* output sequences
|
||||
|
Loading…
Reference in New Issue
Block a user