From patchwork Sun Jun 15 06:24:36 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Herbert X-Patchwork-Id: 359820 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 64BC314009A for ; Sun, 15 Jun 2014 16:24:42 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753190AbaFOGYi (ORCPT ); Sun, 15 Jun 2014 02:24:38 -0400 Received: from mail-ve0-f202.google.com ([209.85.128.202]:42880 "EHLO mail-ve0-f202.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753092AbaFOGYh (ORCPT ); Sun, 15 Jun 2014 02:24:37 -0400 Received: by mail-ve0-f202.google.com with SMTP id oy12so247414veb.3 for ; Sat, 14 Jun 2014 23:24:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=date:from:to:subject:message-id:user-agent:mime-version :content-type; bh=t4ciDdpwUsZ5bmYJpMpT4ScGjtk3lhcaOBCFHNPV6Ik=; b=n5q3ZFmOA2QJeBelbwb/Cg1BdTPrBgks2/m6H9kd4iNE/xBDGXARqEtcIvHSXn42dz sWvdPCjCFvbiOwN2/+AaVZf38W7yaDJJCfB6ee8kGcNmdRnxpH/EQZHCj3YiZh8lqLSt 4XhAi78cw8GuI5vP/q082Q7UqyzAmJXpC6/WZDod2E8O1q3O1UdZWrTyTGf2zgFKdj7Y K/831bL1g4dJZ/yK3kvvyQn2I/FxN/pCG5XqGHkpbvwGv6FcxvEXBYRREKpkg+RLE8z9 u/GTymH9Y2jU39ad9gwpHzCjtWvWMjRq9p/Ku1w+6XzquPBzhYTe0EUm4xKL78AJu2Dm oqCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:subject:message-id:user-agent :mime-version:content-type; bh=t4ciDdpwUsZ5bmYJpMpT4ScGjtk3lhcaOBCFHNPV6Ik=; b=FlgQ8f5sBkSU36MJU4vTDI2I0Et232Xwu4/Gbw1iQ7sTBuPRhBVHsdBX6SYimJ6581 3aEJafcwlgHIeOXaj4/Fv5NXTdwMPhnne3fc9vtk5bbDq561SQKMBZWh9jDpL1mudQ2u fy7xj0NulrURB4dwT2N+zpij6nEJ1Ne0Fxez36Venqfz/ZapEJCxmQcnEHPoEDhGi2Mc cqOW30m5nzQzI5IoYgrWDroLLGsc0oYzxBKmKkpqBrDazH2GbVK58O9/Jn/uZm7yTKsY doCZcXkV+k68LuEixJ02GRLupgf800bv2pCPSbpteeBlg0qK8LjFkAHBvbieHua2LC9J Nv5g== X-Gm-Message-State: ALoCoQmtvSBPwty4fNZr5fNl13rpixTLdDJgnr6TQuJxeiw02V/piOpDr5s9+rpzuLy62y6Ipgtt X-Received: by 10.52.186.132 with SMTP id fk4mr386838vdc.1.1402813476820; Sat, 14 Jun 2014 23:24:36 -0700 (PDT) Received: from corp2gmr1-2.hot.corp.google.com (corp2gmr1-2.hot.corp.google.com [172.24.189.93]) by gmr-mx.google.com with ESMTPS id i65si668056yhg.2.2014.06.14.23.24.36 for (version=TLSv1.1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sat, 14 Jun 2014 23:24:36 -0700 (PDT) Received: from tomh.mtv.corp.google.com (tomh.mtv.corp.google.com [172.18.117.126]) by corp2gmr1-2.hot.corp.google.com (Postfix) with ESMTP id A85BB5A4492; Sat, 14 Jun 2014 23:24:36 -0700 (PDT) Received: by tomh.mtv.corp.google.com (Postfix, from userid 60832) id 595E6200A97; Sat, 14 Jun 2014 23:24:36 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by tomh.mtv.corp.google.com (Postfix) with ESMTP id 3E88E2008DC; Sat, 14 Jun 2014 23:24:36 -0700 (PDT) Date: Sat, 14 Jun 2014 23:24:36 -0700 (PDT) From: Tom Herbert To: davem@davemloft.net, netdev@vger.kernel.org Subject: [PATCH v2 5/5] vxlan: Checksum fixes Message-ID: User-Agent: Alpine 2.02 (DEB 1266 2009-07-14) MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Call skb_pop_rcv_encapsulation and postpull_rcsum for the Ethernet header to work properly with checksum complete. Signed-off-by: Tom Herbert --- drivers/net/vxlan.c | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c index 1610d51..0016fcc 100644 --- a/drivers/net/vxlan.c +++ b/drivers/net/vxlan.c @@ -1156,15 +1156,7 @@ static int vxlan_udp_encap_recv(struct sock *sk, struct sk_buff *skb) if (!vs) goto drop; - /* If the NIC driver gave us an encapsulated packet - * with the encapsulation mark, the device checksummed it - * for us. Otherwise force the upper layers to verify it. - */ - if ((skb->ip_summed != CHECKSUM_UNNECESSARY && skb->ip_summed != CHECKSUM_PARTIAL) || - !skb->encapsulation) - skb->ip_summed = CHECKSUM_NONE; - - skb->encapsulation = 0; + skb_pop_rcv_encapsulation(skb); vs->rcv(vs, skb, vxh->vx_vni); return 0; @@ -1201,6 +1193,7 @@ static void vxlan_rcv(struct vxlan_sock *vs, skb_reset_mac_header(skb); skb_scrub_packet(skb, !net_eq(vxlan->net, dev_net(vxlan->dev))); skb->protocol = eth_type_trans(skb, vxlan->dev); + skb_postpull_rcsum(skb, eth_hdr(skb), ETH_HLEN); /* Ignore packet loops (and multicast echo) */ if (ether_addr_equal(eth_hdr(skb)->h_source, vxlan->dev->dev_addr))