get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/818164/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 818164,
    "url": "http://patchwork.ozlabs.org/api/patches/818164/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/netdev/patch/1506335021-32024-8-git-send-email-simon.horman@netronome.com/",
    "project": {
        "id": 7,
        "url": "http://patchwork.ozlabs.org/api/projects/7/?format=api",
        "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": "<1506335021-32024-8-git-send-email-simon.horman@netronome.com>",
    "list_archive_url": null,
    "date": "2017-09-25T10:23:41",
    "name": "[net-next,7/7] nfp: flower vxlan neighbour keep-alive",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "7ccac07042ee4a82febd58546f43c2c3179b1d8f",
    "submitter": {
        "id": 64714,
        "url": "http://patchwork.ozlabs.org/api/people/64714/?format=api",
        "name": "Simon Horman",
        "email": "simon.horman@netronome.com"
    },
    "delegate": {
        "id": 34,
        "url": "http://patchwork.ozlabs.org/api/users/34/?format=api",
        "username": "davem",
        "first_name": "David",
        "last_name": "Miller",
        "email": "davem@davemloft.net"
    },
    "mbox": "http://patchwork.ozlabs.org/project/netdev/patch/1506335021-32024-8-git-send-email-simon.horman@netronome.com/mbox/",
    "series": [
        {
            "id": 4932,
            "url": "http://patchwork.ozlabs.org/api/series/4932/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/netdev/list/?series=4932",
            "date": "2017-09-25T10:23:34",
            "name": "nfp: flower vxlan tunnel offload",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/4932/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/818164/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/818164/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=netronome-com.20150623.gappssmtp.com\n\theader.i=@netronome-com.20150623.gappssmtp.com\n\theader.b=\"FIwQeaRZ\"; dkim-atps=neutral"
        ],
        "Received": [
            "from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3y10Yy1slnz9tXF\n\tfor <patchwork-incoming@ozlabs.org>;\n\tMon, 25 Sep 2017 20:24:22 +1000 (AEST)",
            "(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S934467AbdIYKYO (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tMon, 25 Sep 2017 06:24:14 -0400",
            "from mail-wm0-f50.google.com ([74.125.82.50]:46066 \"EHLO\n\tmail-wm0-f50.google.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S934439AbdIYKYJ (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Mon, 25 Sep 2017 06:24:09 -0400",
            "by mail-wm0-f50.google.com with SMTP id q124so17903644wmb.0\n\tfor <netdev@vger.kernel.org>; Mon, 25 Sep 2017 03:24:09 -0700 (PDT)",
            "from penelope.horms.nl ([217.111.208.18])\n\tby smtp.gmail.com with ESMTPSA id\n\t10sm6816818wrt.59.2017.09.25.03.24.07\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128);\n\tMon, 25 Sep 2017 03:24:07 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=netronome-com.20150623.gappssmtp.com; s=20150623;\n\th=from:to:cc:subject:date:message-id:in-reply-to:references;\n\tbh=Yf5BIU2eXcmn4ohOLDWSfZtRL0L8qorKuP0yD5Ppt4U=;\n\tb=FIwQeaRZs0yCPlNeMnR5DMCQkl4bja07KY31fYEdCRT8oZU7WaEEp12TLetR9MVUgg\n\tzXqllAn8l4zFXBmSFlH7rfX8r5R80zlQQe5/N2wGrXeHeE9MGOgp3srIHOn54lGZoaIp\n\tIvVUTsfcI4Gamw2TLVecpTz68DV+T0+S5WslwnHgnxeMr8eQiAOX0j9+TqaPkT3NYiYa\n\t0BoMC9cIZlTtoCzehq8ucIxMLQf11HHE77Yz1CWF327KNGst7GeirJXl5eeezcQ/nS4x\n\tf9J2OIw5NFrwEwBvBgW7lsk9sJxf4Hy7NOxzEoGurdZaaqp/Geh+TURa0UnxSJRoPbsu\n\t6Pog==",
        "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:in-reply-to\n\t:references;\n\tbh=Yf5BIU2eXcmn4ohOLDWSfZtRL0L8qorKuP0yD5Ppt4U=;\n\tb=TgE1Yr5wuVYYAI7tXzcf7X5P2unP9ytO6H1MUrzHKfKejwTHkrE8F0F6xWAQWL/7IJ\n\tTJtiOuSplA8f4HSxo+1JCDMNsMGXMZdEtzMgqHcXKvntSc1b/5/W1R8lZlx3Vm3/S4ey\n\t5RkCmBzNm6ahDnNF2eExB0aZIdlEcRtv29Oz7170r5EDsH9+ya8LIdkmDt6mOM9TOqoC\n\tOmdKFXDZstD61TqIHqwoEKplj56f+03hDf0FR3etBMb2c5drcg34kN4wwXty+lYBE4Gd\n\tXvlzyBkpPo2a9k5Z0Or0O8FAbGf3U2ZuKn/uijXQvdTBsDoLmRq/4fPLga6Fmluu/4uw\n\taBog==",
        "X-Gm-Message-State": "AHPjjUh9J05nxN5fCZZZGxNZWhTekAZ70ibPSfLNq8uOHSA0tf7Vn2jl\n\t1Q17en2KHLWK1Nf5xP5pXZZvsg==",
        "X-Google-Smtp-Source": "AOwi7QBvu4fBKrMoCqX9q1KeEVlESQ6IfYUpoyC8SmNXVH8QRmQCbVdqKTw3RkMMQUVWzUkmfJ9qrA==",
        "X-Received": "by 10.28.230.3 with SMTP id d3mr36532wmh.54.1506335048367;\n\tMon, 25 Sep 2017 03:24:08 -0700 (PDT)",
        "From": "Simon Horman <simon.horman@netronome.com>",
        "To": "David Miller <davem@davemloft.net>,\n\tJakub Kicinski <jakub.kicinski@netronome.com>",
        "Cc": "netdev@vger.kernel.org, oss-drivers@netronome.com,\n\tJohn Hurley <john.hurley@netronome.com>,\n\tSimon Horman <simon.horman@netronome.com>",
        "Subject": "[PATCH net-next 7/7] nfp: flower vxlan neighbour keep-alive",
        "Date": "Mon, 25 Sep 2017 12:23:41 +0200",
        "Message-Id": "<1506335021-32024-8-git-send-email-simon.horman@netronome.com>",
        "X-Mailer": "git-send-email 2.1.4",
        "In-Reply-To": "<1506335021-32024-1-git-send-email-simon.horman@netronome.com>",
        "References": "<1506335021-32024-1-git-send-email-simon.horman@netronome.com>",
        "Sender": "netdev-owner@vger.kernel.org",
        "Precedence": "bulk",
        "List-ID": "<netdev.vger.kernel.org>",
        "X-Mailing-List": "netdev@vger.kernel.org"
    },
    "content": "From: John Hurley <john.hurley@netronome.com>\n\nPeriodically receive messages containing the destination IPs of tunnels\nthat have recently forwarded traffic. Update the neighbour entries 'used'\nvalue for these IPs next hop.\n\nThis prevents the neighbour entry from expiring on timeout but rather\nsignals an ARP to verify the connection. From an NFP perspective, packets\nwill not fall back mid-flow unless the link is verified to be down.\n\nSigned-off-by: John Hurley <john.hurley@netronome.com>\nReviewed-by: Simon Horman <simon.horman@netronome.com>\nSigned-off-by: Simon Horman <simon.horman@netronome.com>\n---\n drivers/net/ethernet/netronome/nfp/flower/cmsg.c   |  3 +\n drivers/net/ethernet/netronome/nfp/flower/cmsg.h   |  1 +\n drivers/net/ethernet/netronome/nfp/flower/main.h   |  1 +\n .../ethernet/netronome/nfp/flower/tunnel_conf.c    | 64 ++++++++++++++++++++++\n 4 files changed, 69 insertions(+)",
    "diff": "diff --git a/drivers/net/ethernet/netronome/nfp/flower/cmsg.c b/drivers/net/ethernet/netronome/nfp/flower/cmsg.c\nindex 862787daaa68..6b71c719deba 100644\n--- a/drivers/net/ethernet/netronome/nfp/flower/cmsg.c\n+++ b/drivers/net/ethernet/netronome/nfp/flower/cmsg.c\n@@ -184,6 +184,9 @@ nfp_flower_cmsg_process_one_rx(struct nfp_app *app, struct sk_buff *skb)\n \tcase NFP_FLOWER_CMSG_TYPE_NO_NEIGH:\n \t\tnfp_tunnel_request_route(app, skb);\n \t\tbreak;\n+\tcase NFP_FLOWER_CMSG_TYPE_ACTIVE_TUNS:\n+\t\tnfp_tunnel_keep_alive(app, skb);\n+\t\tbreak;\n \tcase NFP_FLOWER_CMSG_TYPE_TUN_NEIGH:\n \t\t/* Acks from the NFP that the route is added - ignore. */\n \t\tbreak;\ndiff --git a/drivers/net/ethernet/netronome/nfp/flower/cmsg.h b/drivers/net/ethernet/netronome/nfp/flower/cmsg.h\nindex 1dc72a1ed577..504ddaa21701 100644\n--- a/drivers/net/ethernet/netronome/nfp/flower/cmsg.h\n+++ b/drivers/net/ethernet/netronome/nfp/flower/cmsg.h\n@@ -319,6 +319,7 @@ enum nfp_flower_cmsg_type_port {\n \tNFP_FLOWER_CMSG_TYPE_PORT_MOD =\t\t8,\n \tNFP_FLOWER_CMSG_TYPE_NO_NEIGH =\t\t10,\n \tNFP_FLOWER_CMSG_TYPE_TUN_MAC =\t\t11,\n+\tNFP_FLOWER_CMSG_TYPE_ACTIVE_TUNS =\t12,\n \tNFP_FLOWER_CMSG_TYPE_TUN_NEIGH =\t13,\n \tNFP_FLOWER_CMSG_TYPE_TUN_IPS =\t\t14,\n \tNFP_FLOWER_CMSG_TYPE_FLOW_STATS =\t15,\ndiff --git a/drivers/net/ethernet/netronome/nfp/flower/main.h b/drivers/net/ethernet/netronome/nfp/flower/main.h\nindex 93ad969c3653..12c319a219d8 100644\n--- a/drivers/net/ethernet/netronome/nfp/flower/main.h\n+++ b/drivers/net/ethernet/netronome/nfp/flower/main.h\n@@ -196,5 +196,6 @@ void nfp_tunnel_write_macs(struct nfp_app *app);\n void nfp_tunnel_del_ipv4_off(struct nfp_app *app, __be32 ipv4);\n void nfp_tunnel_add_ipv4_off(struct nfp_app *app, __be32 ipv4);\n void nfp_tunnel_request_route(struct nfp_app *app, struct sk_buff *skb);\n+void nfp_tunnel_keep_alive(struct nfp_app *app, struct sk_buff *skb);\n \n #endif\ndiff --git a/drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c b/drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c\nindex 8c6b88a1306b..c495f8f38506 100644\n--- a/drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c\n+++ b/drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c\n@@ -36,12 +36,36 @@\n #include <net/netevent.h>\n #include <linux/idr.h>\n #include <net/dst_metadata.h>\n+#include <net/arp.h>\n \n #include \"cmsg.h\"\n #include \"main.h\"\n #include \"../nfp_net_repr.h\"\n #include \"../nfp_net.h\"\n \n+#define NFP_FL_MAX_ROUTES               32\n+\n+/**\n+ * struct nfp_tun_active_tuns - periodic message of active tunnels\n+ * @seq:\t\tsequence number of the message\n+ * @count:\t\tnumber of tunnels report in message\n+ * @flags:\t\toptions part of the request\n+ * @ipv4:\t\tdest IPv4 address of active route\n+ * @egress_port:\tport the encapsulated packet egressed\n+ * @extra:\t\treserved for future use\n+ * @tun_info:\t\ttunnels that have sent traffic in reported period\n+ */\n+struct nfp_tun_active_tuns {\n+\t__be32 seq;\n+\t__be32 count;\n+\t__be32 flags;\n+\tstruct route_ip_info {\n+\t\t__be32 ipv4;\n+\t\t__be32 egress_port;\n+\t\t__be32 extra[2];\n+\t} tun_info[];\n+};\n+\n /**\n  * struct nfp_tun_neigh - neighbour/route entry on the NFP\n  * @dst_ipv4:\tdestination IPv4 address\n@@ -147,6 +171,46 @@ struct nfp_tun_mac_non_nfp_idx {\n \tstruct list_head list;\n };\n \n+void nfp_tunnel_keep_alive(struct nfp_app *app, struct sk_buff *skb)\n+{\n+\tstruct nfp_tun_active_tuns *payload;\n+\tstruct net_device *netdev;\n+\tint count, i, pay_len;\n+\tstruct neighbour *n;\n+\t__be32 ipv4_addr;\n+\tu32 port;\n+\n+\tpayload = nfp_flower_cmsg_get_data(skb);\n+\tcount = be32_to_cpu(payload->count);\n+\tif (count > NFP_FL_MAX_ROUTES) {\n+\t\tnfp_flower_cmsg_warn(app, \"Tunnel keep-alive request exceeds max routes.\\n\");\n+\t\treturn;\n+\t}\n+\n+\tpay_len = nfp_flower_cmsg_get_data_len(skb);\n+\tif (pay_len != sizeof(struct nfp_tun_active_tuns) +\n+\t    sizeof(struct route_ip_info) * count) {\n+\t\tnfp_flower_cmsg_warn(app, \"Corruption in tunnel keep-alive message.\\n\");\n+\t\treturn;\n+\t}\n+\n+\tfor (i = 0; i < count; i++) {\n+\t\tipv4_addr = payload->tun_info[i].ipv4;\n+\t\tport = be32_to_cpu(payload->tun_info[i].egress_port);\n+\t\tnetdev = nfp_app_repr_get(app, port);\n+\t\tif (!netdev)\n+\t\t\tcontinue;\n+\n+\t\tn = neigh_lookup(&arp_tbl, &ipv4_addr, netdev);\n+\t\tif (!n)\n+\t\t\tcontinue;\n+\n+\t\t/* Update the used timestamp of neighbour */\n+\t\tneigh_event_send(n, NULL);\n+\t\tneigh_release(n);\n+\t}\n+}\n+\n static bool nfp_tun_is_netdev_to_offload(struct net_device *netdev)\n {\n \tif (!netdev->rtnl_link_ops)\n",
    "prefixes": [
        "net-next",
        "7/7"
    ]
}