From patchwork Thu Dec 17 15:30:25 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Edward Cree X-Patchwork-Id: 558385 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 9FCDD1402BB for ; Fri, 18 Dec 2015 02:30:45 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S967089AbbLQPal (ORCPT ); Thu, 17 Dec 2015 10:30:41 -0500 Received: from nbfkord-smmo04.seg.att.com ([209.65.160.86]:48727 "EHLO nbfkord-smmo04.seg.att.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932318AbbLQPak (ORCPT ); Thu, 17 Dec 2015 10:30:40 -0500 Received: from unknown [12.187.104.26] (EHLO nbfkord-smmo04.seg.att.com) by nbfkord-smmo04.seg.att.com(mxl_mta-7.2.4-6) with ESMTP id 025d2765.2abcebe52940.781839.00-2462.1878103.nbfkord-smmo04.seg.att.com (envelope-from ); Thu, 17 Dec 2015 15:30:40 +0000 (UTC) X-MXL-Hash: 5672d52049d19840-ab8839e3c262416faef0cd658c5030581811ff5e Received: from unknown [12.187.104.26] by nbfkord-smmo04.seg.att.com(mxl_mta-7.2.4-6) with SMTP id 915d2765.0.781821.00-2328.1878056.nbfkord-smmo04.seg.att.com (envelope-from ); Thu, 17 Dec 2015 15:30:35 +0000 (UTC) X-MXL-Hash: 5672d51b738bd27d-d0d51662eef9914d660f44fa18f29584efa1c2c7 Received: from ec-desktop.uk.level5networks.com (10.17.20.45) by ocex03.SolarFlarecom.com (10.20.40.36) with Microsoft SMTP Server (TLS) id 15.0.1044.25; Thu, 17 Dec 2015 07:30:28 -0800 From: Edward Cree Subject: [PATCH net-next 2/2] net: vxlan: enable local checksum offload on HW_CSUM devices References: <5672D466.6050900@solarflare.com> To: David Miller CC: Tom Herbert , netdev Message-ID: <5672D511.3050905@solarflare.com> Date: Thu, 17 Dec 2015 15:30:25 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0 MIME-Version: 1.0 In-Reply-To: <5672D466.6050900@solarflare.com> X-Originating-IP: [10.17.20.45] X-ClientProxiedBy: ocex03.SolarFlarecom.com (10.20.40.36) To ocex03.SolarFlarecom.com (10.20.40.36) X-AnalysisOut: [v=2.0 cv=SOP1opTH c=1 sm=1 a=8BlWFWvVlq5taO8ncb8nKg==:17 a] X-AnalysisOut: [=zRKbQ67AAAAA:8 a=fVG4DLb5TBsA:10 a=wUQvQvOEmiQA:10 a=g9U9] X-AnalysisOut: [d9xcj1ldndYMC7oA:9 a=QEXdDO2ut3YA:10 a=Tj-ShC7_NHf10uB9:21] X-AnalysisOut: [ a=YMAsJMkgPmVHZgoD:21] X-Spam: [F=0.4695641887; CM=0.500; S=0.469(2015072901)] X-MAIL-FROM: X-SOURCE-IP: [12.187.104.26] Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Signed-off-by: Edward Cree --- drivers/net/vxlan.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c index 6369a57..c1660d6 100644 --- a/drivers/net/vxlan.c +++ b/drivers/net/vxlan.c @@ -1785,6 +1785,9 @@ static int vxlan_xmit_skb(struct rtable *rt, struct sock *sk, struct sk_buff *sk bool udp_sum = !!(vxflags & VXLAN_F_UDP_CSUM); int type = udp_sum ? SKB_GSO_UDP_TUNNEL_CSUM : SKB_GSO_UDP_TUNNEL; u16 hdrlen = sizeof(struct vxlanhdr); + /* Is device able to do the inner checksum? */ + bool inner_csum = skb_dst(skb) && skb_dst(skb)->dev && + (skb_dst(skb)->dev->features & NETIF_F_HW_CSUM); if ((vxflags & VXLAN_F_REMCSUM_TX) && skb->ip_summed == CHECKSUM_PARTIAL) { @@ -1814,7 +1817,7 @@ static int vxlan_xmit_skb(struct rtable *rt, struct sock *sk, struct sk_buff *sk if (WARN_ON(!skb)) return -ENOMEM; - skb = iptunnel_handle_offloads(skb, udp_sum, type); + skb = iptunnel_handle_offloads(skb, udp_sum && !inner_csum, type); if (IS_ERR(skb)) return PTR_ERR(skb);