From patchwork Thu Aug 1 18:45:03 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pravin B Shelar X-Patchwork-Id: 264079 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 2A1A22C007C for ; Fri, 2 Aug 2013 04:45:17 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756797Ab3HASpK (ORCPT ); Thu, 1 Aug 2013 14:45:10 -0400 Received: from na3sys009aog121.obsmtp.com ([74.125.149.145]:38870 "HELO na3sys009aog121.obsmtp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S1756534Ab3HASpJ (ORCPT ); Thu, 1 Aug 2013 14:45:09 -0400 Received: from mail-pa0-f47.google.com ([209.85.220.47]) (using TLSv1) by na3sys009aob121.postini.com ([74.125.148.12]) with SMTP ID DSNKUfqssioO/rys4mes5DFixfz9mWgoQc80@postini.com; Thu, 01 Aug 2013 11:45:08 PDT Received: by mail-pa0-f47.google.com with SMTP id kl13so2466264pab.34 for ; Thu, 01 Aug 2013 11:45:06 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer:x-gm-message-state; bh=sxL09CKrKPOZhm+b6sp3y9eeDzlOd845e/ZVFaGSQbc=; b=fUmZNQyuzVLnP0G1O3BFG43wBxGa92MV2f249tNruwch2iI/EtCS/OAzP3liKxu8qj 9/6T3ZDk9HUFF327Q/CTmZUv2WDNAN3Zxm50ev2qnVoxBRnEUDAegjzcoBp0kAQnEvtF 88eSE79G6/Qr5gjQaKbqUXYubEGPP6vN5u4sNpywNso3ToR9CAdFZmsg3lPaLVSQmX1w iaUYXl+SbiMXkU7wvmL5p3zeqE/NJCJdr2lKgW//nE/UE4vYyO3fd2MLExdTy14SHHcv P2yHSvHaNf0xcgvnhyCzVVEVfOeO9KxUB38fJumdliu5e/5hBnCkBZfHFWtreTT3j6B5 L7mw== X-Received: by 10.68.33.10 with SMTP id n10mr3807573pbi.3.1375382706023; Thu, 01 Aug 2013 11:45:06 -0700 (PDT) X-Received: by 10.68.33.10 with SMTP id n10mr3807569pbi.3.1375382705940; Thu, 01 Aug 2013 11:45:05 -0700 (PDT) Received: from localhost ([75.98.92.113]) by mx.google.com with ESMTPSA id qv4sm5494550pbc.16.2013.08.01.11.45.04 for (version=TLSv1.1 cipher=RC4-SHA bits=128/128); Thu, 01 Aug 2013 11:45:05 -0700 (PDT) From: Pravin B Shelar To: netdev@vger.kernel.org Cc: stephen@networkplumber.org, Pravin B Shelar Subject: [PATCH net-next v6 6/8] vxlan: Improve vxlan headroom calculation. Date: Thu, 1 Aug 2013 11:45:03 -0700 Message-Id: <1375382703-3346-1-git-send-email-pshelar@nicira.com> X-Mailer: git-send-email 1.8.2.135.g7b592fa X-Gm-Message-State: ALoCoQnSxRbWQY0vIXEras39EvN/n/O78gfh3H3vfesdJAhNxM7Ci9o1NmCmQ/BZ/MVxpchh/7pe//X4RNEzExM8n6U/C4UGqmtLdExuXh5aJw8DhFYYkDhr5C+FPnboA5BITkuuRYFwg/M9Q9gQrWc3GI3It7hXtgxUxxC4AuStp9gupExh2AE= Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Rather than having static headroom calculation, adjust headroom according to target device. Signed-off-by: Pravin B Shelar --- drivers/net/vxlan.c | 13 +++++++++---- 1 files changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c index 55f4e4b..dc91de3 100644 --- a/drivers/net/vxlan.c +++ b/drivers/net/vxlan.c @@ -1108,6 +1108,7 @@ int vxlan_xmit_skb(struct net *net, struct vxlan_sock *vs, { struct vxlanhdr *vxh; struct udphdr *uh; + int min_headroom; int err; if (!skb->encapsulation) { @@ -1115,6 +1116,14 @@ int vxlan_xmit_skb(struct net *net, struct vxlan_sock *vs, skb->encapsulation = 1; } + min_headroom = LL_RESERVED_SPACE(rt->dst.dev) + rt->dst.header_len + + VXLAN_HLEN + sizeof(struct iphdr); + + /* Need space for new headers (invalidates iph ptr) */ + err = skb_cow_head(skb, min_headroom); + if (unlikely(err)) + return err; + vxh = (struct vxlanhdr *) __skb_push(skb, sizeof(*vxh)); vxh->vx_flags = htonl(VXLAN_FLAGS); vxh->vx_vni = vni; @@ -1198,10 +1207,6 @@ static void vxlan_xmit_one(struct sk_buff *skb, struct net_device *dev, goto drop; } - /* Need space for new headers (invalidates iph ptr) */ - if (skb_cow_head(skb, VXLAN_HEADROOM)) - goto drop; - old_iph = ip_hdr(skb); ttl = vxlan->ttl;