get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 52945,
    "url": "https://patches.dpdk.org/api/patches/52945/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20190418152229.13554-1-adrien.mazarguil@6wind.com/",
    "project": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20190418152229.13554-1-adrien.mazarguil@6wind.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20190418152229.13554-1-adrien.mazarguil@6wind.com",
    "date": "2019-04-18T15:32:52",
    "name": "[v2] net/failsafe: fix source port ID in Rx packets",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "e21986949698254a3d41c14f6913542d8aa70710",
    "submitter": {
        "id": 165,
        "url": "https://patches.dpdk.org/api/people/165/?format=api",
        "name": "Adrien Mazarguil",
        "email": "adrien.mazarguil@6wind.com"
    },
    "delegate": null,
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20190418152229.13554-1-adrien.mazarguil@6wind.com/mbox/",
    "series": [
        {
            "id": 4383,
            "url": "https://patches.dpdk.org/api/series/4383/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=4383",
            "date": "2019-04-18T15:32:52",
            "name": "[v2] net/failsafe: fix source port ID in Rx packets",
            "version": 2,
            "mbox": "https://patches.dpdk.org/series/4383/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/52945/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/52945/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 2794E1BBD9;\n\tThu, 18 Apr 2019 17:32:56 +0200 (CEST)",
            "from mail-wm1-f65.google.com (mail-wm1-f65.google.com\n\t[209.85.128.65]) by dpdk.org (Postfix) with ESMTP id 84DD61BBD9\n\tfor <dev@dpdk.org>; Thu, 18 Apr 2019 17:32:55 +0200 (CEST)",
            "by mail-wm1-f65.google.com with SMTP id c1so3219844wml.4\n\tfor <dev@dpdk.org>; Thu, 18 Apr 2019 08:32:55 -0700 (PDT)",
            "from 6wind.com (host.78.145.23.62.rev.coltfrance.com.\n\t[62.23.145.78]) by smtp.gmail.com with ESMTPSA id\n\tw12sm2090529wrg.29.2019.04.18.08.32.53\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tThu, 18 Apr 2019 08:32:53 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind.com; s=google; \n\th=date:from:to:cc:subject:message-id:references:mime-version\n\t:content-disposition:in-reply-to;\n\tbh=GziczzaKEmMsyXUeOrByM+6PquQok/wMrKBLW6oRWAA=;\n\tb=VUIbw/P0kPeDXXALC1jupxWC0gsux1sanF0rVjxfZXCc2/fLUwuKcGHeupfz5dVyE9\n\tahkJ4kQpP33mkMXh+Rj6HQcPHSwrUhS0j9RNM3xWIRfr+lpOjx+cTIqKg/50uKJ/DuSu\n\tdSdZ1cgJ7QOQlfRZGS1HCy9lSnfw9SAfxs5EPoS+/PbET+R3gJC7Om99CAqpn6VKac3Q\n\tiE9c7b4J4kVJqB2QtNmUdbg0R1LTZJZQG+CHfYkMeikMtFwEf8W2M35kwscH9n+4Utw5\n\tHfSnqKanGYuqdhr/pUUZJGXCxlkFCrAct4VczQqyabL/8Fq64MkQA/0/AqpDiZQsCb0V\n\thLkg==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:date:from:to:cc:subject:message-id:references\n\t:mime-version:content-disposition:in-reply-to;\n\tbh=GziczzaKEmMsyXUeOrByM+6PquQok/wMrKBLW6oRWAA=;\n\tb=sK4ZBsfqXNiUtIXHTpXJcjaBx+/YyS9fO4cEOXcGu+SF0tBY+M/8wvtwX34a1pK+r9\n\tAk0U3cFzXEabtlXy9sP8mMvaFOSbTxbK3zo5U4FcYYqJA/zuEQUbvYOOWParUbEVvc9s\n\tFFochZOpk83ktMLygtnT/K9tXCYetfQaNoa1UlSXdkS//doJ3CiX1dKoaGqmSxyZTz3W\n\t3BTiD3UqI6mu3twcvheUH4YVXNpXSrML+IJomsXGIk3kZ7Uo7M55294BgfLQkk9HjgoO\n\tkGyRdE2D5yiMzOskDojEz4uCsFOMCzOrUkIXGTCMHaqYq4vBZTX7gzH92C+GSdnWfFTh\n\tusxQ==",
        "X-Gm-Message-State": "APjAAAW670ntfr6OvDL1Sy7TL4qeWkczQXAGTTVFQW9Y7GeOkObSY8Bz\n\tStSccIRDgPgdzPs6B5RX69JTIw==",
        "X-Google-Smtp-Source": "APXvYqzOWZC1QhMhAQLbGoBrKzuRQGwOT8Mppm74kIvfqanSHWbeUMJIXQO+a9bjptQagUaOEPoOpg==",
        "X-Received": "by 2002:a1c:7f10:: with SMTP id a16mr3533680wmd.30.1555601575208;\n\tThu, 18 Apr 2019 08:32:55 -0700 (PDT)",
        "Date": "Thu, 18 Apr 2019 17:32:52 +0200",
        "From": "Adrien Mazarguil <adrien.mazarguil@6wind.com>",
        "To": "Gaetan Rivet <gaetan.rivet@6wind.com>",
        "Cc": "Ferruh Yigit <ferruh.yigit@intel.com>,\n\tDavid Marchand <david.marchand@redhat.com>, dev@dpdk.org, stable@dpdk.org",
        "Message-ID": "<20190418152229.13554-1-adrien.mazarguil@6wind.com>",
        "References": "<20190418130419.25675-1-adrien.mazarguil@6wind.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=us-ascii",
        "Content-Disposition": "inline",
        "In-Reply-To": "<20190418130419.25675-1-adrien.mazarguil@6wind.com>",
        "X-Mailer": "git-send-email 2.11.0",
        "Subject": "[dpdk-dev] [PATCH v2] net/failsafe: fix source port ID in Rx packets",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "When passed to the application, Rx packets retain the port ID value\noriginally set by slave devices. Unfortunately these IDs have no meaning to\napplications, which are typically unaware of their existence.\n\nThis confuses those caring about the source port field in mbufs (m->port)\nwhich experience issues ranging from traffic drop to crashes.\n\nFixes: a46f8d584eb8 (\"net/failsafe: add fail-safe PMD\")\nCc: stable@dpdk.org\n\nSigned-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>\nReviewed-by: David Marchand <david.marchand@redhat.com>\nAcked-by: Gaetan Rivet <gaetan.rivet@6wind.com>\n--\nv2 changes:\n\nModified \"rxq->priv->dev->data->port_id\" (v18.11-style) to\n\"rxq->priv->data->port_id\" (since v19.05) and checked compilation against\nmaster this time.\n\nGiven the limited scope of that change, reviewed-by/acked-by lines were\nkept.\n---\n drivers/net/failsafe/failsafe_rxtx.c | 21 +++++++++++++++++++++\n 1 file changed, 21 insertions(+)",
    "diff": "diff --git a/drivers/net/failsafe/failsafe_rxtx.c b/drivers/net/failsafe/failsafe_rxtx.c\nindex 231c83291..b9cddec78 100644\n--- a/drivers/net/failsafe/failsafe_rxtx.c\n+++ b/drivers/net/failsafe/failsafe_rxtx.c\n@@ -61,6 +61,21 @@ failsafe_set_burst_fn(struct rte_eth_dev *dev, int force_safe)\n \trte_wmb();\n }\n \n+/*\n+ * Override source port in Rx packets.\n+ *\n+ * Make Rx packets originate from this PMD instance instead of one of its\n+ * slaves. This is mandatory to avoid breaking applications.\n+ */\n+static void\n+failsafe_rx_set_port(struct rte_mbuf **rx_pkts, uint16_t nb_pkts, uint16_t port)\n+{\n+\tunsigned int i;\n+\n+\tfor (i = 0; i != nb_pkts; ++i)\n+\t\trx_pkts[i]->port = port;\n+}\n+\n uint16_t\n failsafe_rx_burst(void *queue,\n \t\t  struct rte_mbuf **rx_pkts,\n@@ -87,6 +102,9 @@ failsafe_rx_burst(void *queue,\n \t\tsdev = sdev->next;\n \t} while (nb_rx == 0 && sdev != rxq->sdev);\n \trxq->sdev = sdev;\n+\tif (nb_rx)\n+\t\tfailsafe_rx_set_port(rx_pkts, nb_rx,\n+\t\t\t\t     rxq->priv->data->port_id);\n \treturn nb_rx;\n }\n \n@@ -112,6 +130,9 @@ failsafe_rx_burst_fast(void *queue,\n \t\tsdev = sdev->next;\n \t} while (nb_rx == 0 && sdev != rxq->sdev);\n \trxq->sdev = sdev;\n+\tif (nb_rx)\n+\t\tfailsafe_rx_set_port(rx_pkts, nb_rx,\n+\t\t\t\t     rxq->priv->data->port_id);\n \treturn nb_rx;\n }\n \n",
    "prefixes": [
        "v2"
    ]
}