aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2013-04-29 15:27:57 -0400
committerDavid S. Miller <davem@davemloft.net>2013-04-29 15:27:57 -0400
commitb807a3d688c7b1da86662b220ace548389c48167 (patch)
treeecc44d4f64874311b0468a38c136735d73eae054
parent94dace10142790ddeb0a3a7b8b33d9540d30c79f (diff)
parent65bc0cfe492a6deb66daa123de94bbb62e01f21b (diff)
Merge branch 'vxlan_bnx2x_offload'
Dmitry Kravkov says: ==================== The series fixes GSO flags in vxlan xmit code and adds appropriate code for bnx2x driver to utilize fw support for UDP tunneling protocols offload. Netperf's results below show improvement in throughput between two vxlan interfaces: before: MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 9.0.0.2 (9.0.0.2) port 0 AF_INET Recv Send Send Socket Socket Message Elapsed Size Size Size Time Throughput bytes bytes bytes secs. 10^6bits/sec 87380 16384 16384 10.20 228.73 after: MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 9.0.0.2 (9.0.0.2) port 0 AF_INET Recv Send Send Socket Socket Message Elapsed Size Size Size Time Throughput bytes bytes bytes secs. 10^6bits/sec 87380 16384 16384 10.00 3314.75 ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c5
-rw-r--r--drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c4
-rw-r--r--drivers/net/vxlan.c2
3 files changed, 8 insertions, 3 deletions
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
index fd20a4ff0150..466b512cda4f 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
@@ -3530,6 +3530,11 @@ static void bnx2x_update_pbds_gso_enc(struct sk_buff *skb,
3530 ETH_TX_PARSE_2ND_BD_IP_HDR_LEN_OUTER_W_SHIFT) | 3530 ETH_TX_PARSE_2ND_BD_IP_HDR_LEN_OUTER_W_SHIFT) |
3531 ((skb->protocol == cpu_to_be16(ETH_P_8021Q)) << 3531 ((skb->protocol == cpu_to_be16(ETH_P_8021Q)) <<
3532 ETH_TX_PARSE_2ND_BD_LLC_SNAP_EN_SHIFT); 3532 ETH_TX_PARSE_2ND_BD_LLC_SNAP_EN_SHIFT);
3533
3534 if (ip_hdr(skb)->protocol == IPPROTO_UDP) {
3535 SET_FLAG(*global_data, ETH_TX_PARSE_2ND_BD_TUNNEL_UDP_EXIST, 1);
3536 pbd2->tunnel_udp_hdr_start_w = skb_transport_offset(skb) >> 1;
3537 }
3533} 3538}
3534 3539
3535/* called with netif_tx_lock 3540/* called with netif_tx_lock
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
index 927f83af9d5c..91a0434ce1bd 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
@@ -12043,11 +12043,11 @@ static int bnx2x_init_dev(struct bnx2x *bp, struct pci_dev *pdev,
12043 NETIF_F_RXCSUM | NETIF_F_LRO | NETIF_F_GRO | 12043 NETIF_F_RXCSUM | NETIF_F_LRO | NETIF_F_GRO |
12044 NETIF_F_RXHASH | NETIF_F_HW_VLAN_CTAG_TX; 12044 NETIF_F_RXHASH | NETIF_F_HW_VLAN_CTAG_TX;
12045 if (!CHIP_IS_E1x(bp)) { 12045 if (!CHIP_IS_E1x(bp)) {
12046 dev->hw_features |= NETIF_F_GSO_GRE; 12046 dev->hw_features |= NETIF_F_GSO_GRE | NETIF_F_GSO_UDP_TUNNEL;
12047 dev->hw_enc_features = 12047 dev->hw_enc_features =
12048 NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM | NETIF_F_SG | 12048 NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM | NETIF_F_SG |
12049 NETIF_F_TSO | NETIF_F_TSO_ECN | NETIF_F_TSO6 | 12049 NETIF_F_TSO | NETIF_F_TSO_ECN | NETIF_F_TSO6 |
12050 NETIF_F_GSO_GRE; 12050 NETIF_F_GSO_GRE | NETIF_F_GSO_UDP_TUNNEL;
12051 } 12051 }
12052 12052
12053 dev->vlan_features = NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM | 12053 dev->vlan_features = NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM |
diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c
index f1d9e981e541..ba81f3c39a83 100644
--- a/drivers/net/vxlan.c
+++ b/drivers/net/vxlan.c
@@ -917,7 +917,7 @@ static int handle_offloads(struct sk_buff *skb)
917 if (unlikely(err)) 917 if (unlikely(err))
918 return err; 918 return err;
919 919
920 skb_shinfo(skb)->gso_type |= (SKB_GSO_UDP_TUNNEL | SKB_GSO_UDP); 920 skb_shinfo(skb)->gso_type |= SKB_GSO_UDP_TUNNEL;
921 } else if (skb->ip_summed != CHECKSUM_PARTIAL) 921 } else if (skb->ip_summed != CHECKSUM_PARTIAL)
922 skb->ip_summed = CHECKSUM_NONE; 922 skb->ip_summed = CHECKSUM_NONE;
923 923