{"id":815214,"url":"http://patchwork.ozlabs.org/api/covers/815214/?format=json","web_url":"http://patchwork.ozlabs.org/project/netdev/cover/20170919003904.5124-1-tom@quantonium.net/","project":{"id":7,"url":"http://patchwork.ozlabs.org/api/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":"<20170919003904.5124-1-tom@quantonium.net>","list_archive_url":null,"date":"2017-09-19T00:38:50","name":"[net-next,00/14] gtp: Additional feature support","submitter":{"id":72064,"url":"http://patchwork.ozlabs.org/api/people/72064/?format=json","name":"Tom Herbert","email":"tom@quantonium.net"},"mbox":"http://patchwork.ozlabs.org/project/netdev/cover/20170919003904.5124-1-tom@quantonium.net/mbox/","series":[{"id":3758,"url":"http://patchwork.ozlabs.org/api/series/3758/?format=json","web_url":"http://patchwork.ozlabs.org/project/netdev/list/?series=3758","date":"2017-09-19T00:38:50","name":"gtp: Additional feature support","version":1,"mbox":"http://patchwork.ozlabs.org/series/3758/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/covers/815214/comments/","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=quantonium-net.20150623.gappssmtp.com\n\theader.i=@quantonium-net.20150623.gappssmtp.com\n\theader.b=\"CHfrvyr1\"; dkim-atps=neutral"],"Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xx3tJ52Fhz9s5L\n\tfor <patchwork-incoming@ozlabs.org>;\n\tTue, 19 Sep 2017 10:39:52 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1750964AbdISAjZ (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tMon, 18 Sep 2017 20:39:25 -0400","from mail-pf0-f177.google.com ([209.85.192.177]:50442 \"EHLO\n\tmail-pf0-f177.google.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1750822AbdISAjX (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Mon, 18 Sep 2017 20:39:23 -0400","by mail-pf0-f177.google.com with SMTP id m63so1102589pfk.7\n\tfor <netdev@vger.kernel.org>; Mon, 18 Sep 2017 17:39:23 -0700 (PDT)","from localhost.localdomain (c-73-162-13-107.hsd1.ca.comcast.net.\n\t[73.162.13.107]) by smtp.gmail.com with ESMTPSA id\n\tk78sm662018pfb.157.2017.09.18.17.39.20\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tMon, 18 Sep 2017 17:39:21 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=quantonium-net.20150623.gappssmtp.com; s=20150623;\n\th=from:to:cc:subject:date:message-id;\n\tbh=eiGlEmnLXjBXaOGvR4me3jxGZTnFeOIniVVbao5HY/E=;\n\tb=CHfrvyr11sPHONxYzrbngp2yFiJsfZTtA4ScCCh50ESI7Eq55vNqIqmch/stpRyti4\n\tQyPnkGhGsiB9fXdjqWB6ySyOtnXtrKaLz5OyeqNVoIXz23Tvg0MKCrCnX3lJzra9PQkz\n\t/Fsn1MMy6M6dgQdN2+3RFVSm4vdCwF4JxNFIwSz+/Es4yO2CT3j7PVC2lc/EANNeq2Zr\n\tmjFqMg5c1JMA+x2TSyAan2kEzJeFnf7+vT6ECzAyjc/We1ojBN+GjIygM4OlQw1MDvwa\n\tB4/ou71e1Rb4/KnPCBYNj1VW6KQ5JkEn4XocuIgU5fmjbQzs07f+L4rP5jPA4Uc+cTVy\n\tLK6w==","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:cc:subject:date:message-id;\n\tbh=eiGlEmnLXjBXaOGvR4me3jxGZTnFeOIniVVbao5HY/E=;\n\tb=hOya/sV+vMFkuzqGhzDf7U91GFX6iC8m2cL5cLUOrsVDuC3gyW5Qt7JEBwHocxZBHa\n\tstnYc91pbTtKs8aNT/5N9ohlnfqwN+8uA9lBwJmAkA+GQ4n92Tmmw6gyeU8e44VxbwvC\n\t+aUrLW+7UbOyaxy80S2/6Q0ioQvkN6CIGFMHDxQW4/QJYwjyxjFtbdGi06tFeGdZr/EK\n\t+o16v3r9acVaiKwSC+XGULIxnUVB6vYZ3k04AOjow/gJwuEdKFjATpjpTXkAdbUIBwYn\n\tPzoBQQ9VDQQ3yXk9XtDShtZP2GQh/FjrrmFLqeNgV+U2SaT21f6SzcOC84u/T3hP1yFz\n\tCszw==","X-Gm-Message-State":"AHPjjUgRItvS2nffHa+R8kiH5dLGN8FD9JqcC4HErPtZHczX+uJEklrY\n\tSp6k7lAisTzoFqqJ","X-Google-Smtp-Source":"AOwi7QCjlZwK3oUw42ErBrZ+BS41+rSWw8sLtiCvNx9QvyN/L2AXiYH96C+n9BPMWJUT4m6AaikjHw==","X-Received":"by 10.84.131.103 with SMTP id 94mr355867pld.302.1505781563145;\n\tMon, 18 Sep 2017 17:39:23 -0700 (PDT)","From":"Tom Herbert <tom@quantonium.net>","To":"davem@davemloft.net","Cc":"netdev@vger.kernel.org, pablo@netfilter.org, laforge@gnumonks.org,\n\trohit@quantonium.net, Tom Herbert <tom@quantonium.net>","Subject":"[PATCH net-next 00/14] gtp: Additional feature support","Date":"Mon, 18 Sep 2017 17:38:50 -0700","Message-Id":"<20170919003904.5124-1-tom@quantonium.net>","X-Mailer":"git-send-email 2.11.0","Sender":"netdev-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"},"content":"This patch set builds upon the initial GTP implementation to make\nsupport closer to that enjoyed by other encapsulation protocols.\n\nThe major items are:\n\n  - IPv6 support\n  - Configurable networking interfaces so that GTP kernel can be\n    used and tested without needing GSN network emulation (i.e. no user\n    space daemon needed).\n  - GSO,GRO\n  - Control of zero UDP checksums\n  - Port numbers are configurable\n  - Addition of a dst_cache in the GTP structure and other cleanup\n\nAdditionally, this patch set also includes a couple of general support\ncapabilities:\n\n  - A facility that allows application specific GSO callbacks\n  - Common functions to get a route fo for an IP tunnel\n\nFor IPv6 support, the mobile subscriber needs to allow IPv6 addresses,\nand the remote enpoint can be IPv6.\n\nFor configurable interfaces, configuration is added to allow an\nalterate means to configure a GTP and device. This follows the\ntypical UDP encapsulation model of specifying a listener port for\nreceive, and a remote address and port for transmit. \n\nGRO was straightfoward to implement following the model of other\nUDP encapsulations.\n\nProviding GSO support had one wrinkle-- the GTP header includes a\npayload length field that needs to be set per GSO segment. In order\nto address that in a general way, I create the concept of\napplication specific GSO.\n\nTo implement application layer GSO I reserved the top four bits of\nshinfo(skb)->gso_type. The idea is that an application or encapsulation\nprotocol (like GTP in this case) can register a GSO segment callback.\nThe facility returns a gso_type with upper four bits set to a value\n(index into a table). When the application sets up a packet it includes\nthe code in the gso_type for the skb. At some point (e.g. from UDP\nsegment) the gso_type is checked in the skb and if the application\nspecific GSO is indicated then the callback is called. The\nregistered callbacks include a set of other gso_types so that\nan application callback can be matched to an appropriate instance.\nFOr instance, the GTP callback checks for the UDP GSO flags.\n\nZero UDP checksum, port number configuration, and dst_cache are\nstraightforwad.\n\nConfiguration is performed by iproute2/ip. I will post that\nin a subsequent patch set.\n\nTested:\n\nConfigured the matrix of IPv4/IPv6 mobile subscriber, IPv4/IPv6 remote\npeer, and GTP version 0 and 1 (eight combinations). Observed\nconnectivity and proper GSO/GRO. Also, tested VXLAN for\nregression.\n\nTom Herbert (14):\n  iptunnel: Add common functions to get a tunnel route\n  vxlan: Call common functions to get tunnel routes\n  gtp: Call common functions to get tunnel routes and add dst_cache\n  gtp: udp recv clean up\n  gtp: Remove special mtu handling\n  gtp: Eliminate pktinfo and add port configuration\n  gtp: Support encapsulation of IPv6 packets\n  gtp: Support encpasulating over IPv6\n  gtp: Allow configuring GTP interface as standalone\n  gtp: Add support for devnet\n  net: Add a facility to support application defined GSO\n  gtp: Configuration for zero UDP checksum\n  gtp: Support for GRO\n  gtp: GSO support\n\n drivers/net/gtp.c            | 1300 ++++++++++++++++++++++++++++++++----------\n drivers/net/vxlan.c          |   84 +--\n include/linux/netdevice.h    |   31 +\n include/linux/skbuff.h       |   25 +\n include/net/ip6_tunnel.h     |   33 ++\n include/net/ip_tunnels.h     |   33 ++\n include/uapi/linux/gtp.h     |    8 +\n include/uapi/linux/if_link.h |    6 +\n net/core/dev.c               |   47 ++\n net/ipv4/ip_tunnel.c         |   41 ++\n net/ipv4/ip_tunnel_core.c    |    6 +\n net/ipv4/udp_offload.c       |   20 +-\n net/ipv6/ip6_tunnel.c        |   43 ++\n 13 files changed, 1306 insertions(+), 371 deletions(-)"}