{"id":805962,"url":"http://patchwork.ozlabs.org/api/1.2/patches/805962/?format=json","web_url":"http://patchwork.ozlabs.org/project/netdev/patch/1503678089-27131-2-git-send-email-u9012063@gmail.com/","project":{"id":7,"url":"http://patchwork.ozlabs.org/api/1.2/projects/7/?format=json","name":"Linux network development","link_name":"netdev","list_id":"netdev.vger.kernel.org","list_email":"netdev@vger.kernel.org","web_url":null,"scm_url":null,"webscm_url":null,"list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<1503678089-27131-2-git-send-email-u9012063@gmail.com>","list_archive_url":null,"date":"2017-08-25T16:21:27","name":"[net-next,1/3] gre: refactor the gre_fb_xmit","commit_ref":null,"pull_url":null,"state":"accepted","archived":true,"hash":"cdd8b9b51cbad484d9b8527942edfb8d97c22193","submitter":{"id":67856,"url":"http://patchwork.ozlabs.org/api/1.2/people/67856/?format=json","name":"William Tu","email":"u9012063@gmail.com"},"delegate":{"id":34,"url":"http://patchwork.ozlabs.org/api/1.2/users/34/?format=json","username":"davem","first_name":"David","last_name":"Miller","email":"davem@davemloft.net"},"mbox":"http://patchwork.ozlabs.org/project/netdev/patch/1503678089-27131-2-git-send-email-u9012063@gmail.com/mbox/","series":[],"comments":"http://patchwork.ozlabs.org/api/patches/805962/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/805962/checks/","tags":{},"related":[],"headers":{"Return-Path":"<netdev-owner@vger.kernel.org>","X-Original-To":"patchwork-incoming@ozlabs.org","Delivered-To":"patchwork-incoming@ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netdev-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"ge14DHcB\"; dkim-atps=neutral"],"Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xf5yc6h2Cz9rxm\n\tfor <patchwork-incoming@ozlabs.org>;\n\tSat, 26 Aug 2017 02:21:44 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S934397AbdHYQVn (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tFri, 25 Aug 2017 12:21:43 -0400","from mail-pg0-f66.google.com ([74.125.83.66]:33173 \"EHLO\n\tmail-pg0-f66.google.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S934389AbdHYQVl (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Fri, 25 Aug 2017 12:21:41 -0400","by mail-pg0-f66.google.com with SMTP id q16so391114pgc.0\n\tfor <netdev@vger.kernel.org>; Fri, 25 Aug 2017 09:21:41 -0700 (PDT)","from sc9-mailhost2.vmware.com ([208.91.1.34])\n\tby smtp.gmail.com with ESMTPSA id\n\tk197sm1051155pga.78.2017.08.25.09.21.40\n\tfor <netdev@vger.kernel.org>\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128);\n\tFri, 25 Aug 2017 09:21:40 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=gmail.com; s=20161025;\n\th=from:to:subject:date:message-id:in-reply-to:references;\n\tbh=LgbT9reDKnpviEdvTGQuF+KFlUzgK0MERP2hfXtgNeU=;\n\tb=ge14DHcBf4kNUsQQO+/BbgQpCP0TdMZuja3qU7jvdSmf2t+r+X2CJ3ehIoDU9o+So7\n\tP186mPzhAh2K8XNv0NWK11Z039kdcweFlP5QtJecaqksVF+K9U3osoXurjes2K7xhHPZ\n\ty2tuPj1dzlxtwhEGFdKgqADzw/rvQ8a7j3TPUv4QV0SIC8YeFtpE0zLxJEXLjYhtlKLj\n\tvge/7XGPQ1uQ09kzNCIVXJcr+CpPhZnVHfgNrjIsAYINMA7UqbhsbuACvfSYgdUQAIFl\n\tWOF7GYeiKC3EjS+0Asu+e/fxEivCQQZHKj8PdmAOeoEk40LgSNFoBzOicMJCA/CCci9V\n\tOrnw==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:from:to:subject:date:message-id:in-reply-to\n\t:references;\n\tbh=LgbT9reDKnpviEdvTGQuF+KFlUzgK0MERP2hfXtgNeU=;\n\tb=uiRwh/3dPoiBW7rXfJGtXmcbdaAwyFPlgUD/W1dbKVBLfRBSQ+DSdE4pzcPuO/c73Q\n\tjlQtuAB6QTdqcV4TtXQck7JIqPRaU1Ps9IO0IJC4ShMFoD3xJ5RHycVjU+lzQZXi/LOd\n\tpvS20ctRjgvSUMll8QqEaZnVchwkO4zASyhC/O4MZuA+AcJf4i4ieJF8v42pUT51C0ST\n\tDdGrZoON9FU65oDNVPnRToeeEw52HSkijmfLEy1ZDNXgJET7XiGfVK+K63WUqoJ89fo5\n\t1enC69BkvMHdaTPMBoF22Z1bHAvTACuzelHMFWOmKuTuyg3ydIhuPRgT33IFLbH/EusB\n\tFPTQ==","X-Gm-Message-State":"AHYfb5i7awKl3KjO+ySsWHjihQz/shK0PTt6gCX9h2hq4tVa+gVADTee\n\t1wnwPv0ztV2mgErumac=","X-Received":"by 10.99.37.199 with SMTP id l190mr10271962pgl.367.1503678100993;\n\tFri, 25 Aug 2017 09:21:40 -0700 (PDT)","From":"William Tu <u9012063@gmail.com>","To":"netdev@vger.kernel.org","Subject":"[PATCH net-next 1/3] gre: refactor the gre_fb_xmit","Date":"Fri, 25 Aug 2017 09:21:27 -0700","Message-Id":"<1503678089-27131-2-git-send-email-u9012063@gmail.com>","X-Mailer":"git-send-email 2.7.4","In-Reply-To":"<1503678089-27131-1-git-send-email-u9012063@gmail.com>","References":"<1503678089-27131-1-git-send-email-u9012063@gmail.com>","Sender":"netdev-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"},"content":"The patch refactors the gre_fb_xmit function, by creating\nprepare_fb_xmit function for later ERSPAN collect_md mode patch.\n\nSigned-off-by: William Tu <u9012063@gmail.com>\n---\n net/ipv4/ip_gre.c | 55 ++++++++++++++++++++++++++++++++++++++++---------------\n 1 file changed, 40 insertions(+), 15 deletions(-)","diff":"diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c\nindex f70674799fdd..453b7925b940 100644\n--- a/net/ipv4/ip_gre.c\n+++ b/net/ipv4/ip_gre.c\n@@ -432,39 +432,33 @@ static struct rtable *gre_get_rt(struct sk_buff *skb,\n \treturn ip_route_output_key(net, fl);\n }\n \n-static void gre_fb_xmit(struct sk_buff *skb, struct net_device *dev,\n-\t\t\t__be16 proto)\n+static struct rtable *prepare_fb_xmit(struct sk_buff *skb,\n+\t\t\t\t      struct net_device *dev,\n+\t\t\t\t      struct flowi4 *fl,\n+\t\t\t\t      int tunnel_hlen)\n {\n \tstruct ip_tunnel_info *tun_info;\n \tconst struct ip_tunnel_key *key;\n \tstruct rtable *rt = NULL;\n-\tstruct flowi4 fl;\n \tint min_headroom;\n-\tint tunnel_hlen;\n-\t__be16 df, flags;\n \tbool use_cache;\n \tint err;\n \n \ttun_info = skb_tunnel_info(skb);\n-\tif (unlikely(!tun_info || !(tun_info->mode & IP_TUNNEL_INFO_TX) ||\n-\t\t     ip_tunnel_info_af(tun_info) != AF_INET))\n-\t\tgoto err_free_skb;\n-\n \tkey = &tun_info->key;\n \tuse_cache = ip_tunnel_dst_cache_usable(skb, tun_info);\n+\n \tif (use_cache)\n-\t\trt = dst_cache_get_ip4(&tun_info->dst_cache, &fl.saddr);\n+\t\trt = dst_cache_get_ip4(&tun_info->dst_cache, &fl->saddr);\n \tif (!rt) {\n-\t\trt = gre_get_rt(skb, dev, &fl, key);\n+\t\trt = gre_get_rt(skb, dev, fl, key);\n \t\tif (IS_ERR(rt))\n-\t\t\t\tgoto err_free_skb;\n+\t\t\tgoto err_free_skb;\n \t\tif (use_cache)\n \t\t\tdst_cache_set_ip4(&tun_info->dst_cache, &rt->dst,\n-\t\t\t\t\t  fl.saddr);\n+\t\t\t\t\t  fl->saddr);\n \t}\n \n-\ttunnel_hlen = gre_calc_hlen(key->tun_flags);\n-\n \tmin_headroom = LL_RESERVED_SPACE(rt->dst.dev) + rt->dst.header_len\n \t\t\t+ tunnel_hlen + sizeof(struct iphdr);\n \tif (skb_headroom(skb) < min_headroom || skb_header_cloned(skb)) {\n@@ -476,6 +470,37 @@ static void gre_fb_xmit(struct sk_buff *skb, struct net_device *dev,\n \t\tif (unlikely(err))\n \t\t\tgoto err_free_rt;\n \t}\n+\treturn rt;\n+\n+err_free_rt:\n+\tip_rt_put(rt);\n+err_free_skb:\n+\tkfree_skb(skb);\n+\tdev->stats.tx_dropped++;\n+\treturn NULL;\n+}\n+\n+static void gre_fb_xmit(struct sk_buff *skb, struct net_device *dev,\n+\t\t\t__be16 proto)\n+{\n+\tstruct ip_tunnel_info *tun_info;\n+\tconst struct ip_tunnel_key *key;\n+\tstruct rtable *rt = NULL;\n+\tstruct flowi4 fl;\n+\tint tunnel_hlen;\n+\t__be16 df, flags;\n+\n+\ttun_info = skb_tunnel_info(skb);\n+\tif (unlikely(!tun_info || !(tun_info->mode & IP_TUNNEL_INFO_TX) ||\n+\t\t     ip_tunnel_info_af(tun_info) != AF_INET))\n+\t\tgoto err_free_skb;\n+\n+\tkey = &tun_info->key;\n+\ttunnel_hlen = gre_calc_hlen(key->tun_flags);\n+\n+\trt = prepare_fb_xmit(skb, dev, &fl, tunnel_hlen);\n+\tif (!rt)\n+\t\treturn;\n \n \t/* Push Tunnel header. */\n \tif (gre_handle_offloads(skb, !!(tun_info->key.tun_flags & TUNNEL_CSUM)))\n","prefixes":["net-next","1/3"]}