get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 52948,
    "url": "https://patches.dpdk.org/api/patches/52948/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20190418171859.11624-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": "<20190418171859.11624-1-adrien.mazarguil@6wind.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20190418171859.11624-1-adrien.mazarguil@6wind.com",
    "date": "2019-04-18T17:20:55",
    "name": "[v3] net/failsafe: fix source port ID in Rx packets",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "28499caf1d451eee9dda729e3b205ea8a51b97f4",
    "submitter": {
        "id": 165,
        "url": "https://patches.dpdk.org/api/people/165/?format=api",
        "name": "Adrien Mazarguil",
        "email": "adrien.mazarguil@6wind.com"
    },
    "delegate": {
        "id": 319,
        "url": "https://patches.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20190418171859.11624-1-adrien.mazarguil@6wind.com/mbox/",
    "series": [
        {
            "id": 4386,
            "url": "https://patches.dpdk.org/api/series/4386/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=4386",
            "date": "2019-04-18T17:20:55",
            "name": "[v3] net/failsafe: fix source port ID in Rx packets",
            "version": 3,
            "mbox": "https://patches.dpdk.org/series/4386/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/52948/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/52948/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 37C721BC1D;\n\tThu, 18 Apr 2019 19:20:59 +0200 (CEST)",
            "from mail-wr1-f68.google.com (mail-wr1-f68.google.com\n\t[209.85.221.68]) by dpdk.org (Postfix) with ESMTP id 03C7E1BC15\n\tfor <dev@dpdk.org>; Thu, 18 Apr 2019 19:20:57 +0200 (CEST)",
            "by mail-wr1-f68.google.com with SMTP id y13so3902128wrd.3\n\tfor <dev@dpdk.org>; Thu, 18 Apr 2019 10:20:57 -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\tc20sm3200878wre.28.2019.04.18.10.20.57\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tThu, 18 Apr 2019 10:20:57 -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=Ee6F7YLGP6ed/POR9F2AEonwCOIzEWYAuTExUzuqerw=;\n\tb=OMTy3zHIhDitrRqeoULwYn6VQZadVQHq9uFOAhFfB1Kmw9wUwrfIP+FcTYL74m/P2G\n\t/nhllpMho/bNcre3gBG/34a6mHHOBk5wOVPXIuQzsqt7QbI5vm17n2WwBDUFEiXIbDHd\n\tSgjExrE3KTVjzWbpJBUqfCGxqzTFKP2HrEEStYgd68uHgG1TGJynHkPr8r0DG5/tm0zl\n\tE8Qo3Z5/NlV9Y4IoVRMBQNuk16XQNNgfIcZq8OwXZn5spSpxscGDy3AhnjdPlNuVlXmm\n\t68Q0UA0QCdHxi3TuXDLbCH2DGsyeg3QidqvnX13TCw8QfbBLH+7Xn1BHhe+eqSe95YEN\n\tYfEA==",
        "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=Ee6F7YLGP6ed/POR9F2AEonwCOIzEWYAuTExUzuqerw=;\n\tb=UrYAUH326MGOnMfhxfY8HGkvaT939G+WPcYAFjZPy0ujMd2XLheshLcaV3Kk2UYLua\n\tbCKa5TvdRta8ItEMe/DSu/cc7UMKRCxqgZ/8xpQxR+4zf72dSpbLP5ZW3eLr3TNh6bH4\n\tWrC+rOvNIl/ahnGSlJzbpqWfNdC+dIMmZaOMDPPenXOCKxmHePzyImIhkRE4uiyOfKMK\n\t49n7+1bP0xPHN/5fTUDLnPFHUF8hSQLRiO1pUbOf2Z8zpUNuYHJTYiiBhfegJlK3HxAj\n\tDbmpxq1FyF3aoOVHeYO8CdV73th+GWXcxfyC7W2BkYG6lSQY3eZDjYXWRIyCjGUGC0Bp\n\tiHPw==",
        "X-Gm-Message-State": "APjAAAVK0RWVvUI6AX1pCjD9ITI+mLVjq1VEy6P1qWtI8xz3j70Suxcw\n\tewnBhGO15X+ZxS+ZK1o67ti95Q==",
        "X-Google-Smtp-Source": "APXvYqy1YCgWypi/65n4ORUJ/kJLKl6+Yly/jsQ/y9tdvI3OYrth/nUDlNoLmeFHYeHFsYRM390gkw==",
        "X-Received": "by 2002:a5d:434c:: with SMTP id u12mr2015292wrr.92.1555608057778;\n\tThu, 18 Apr 2019 10:20:57 -0700 (PDT)",
        "Date": "Thu, 18 Apr 2019 19:20:55 +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": "<20190418171859.11624-1-adrien.mazarguil@6wind.com>",
        "References": "<20190418152229.13554-1-adrien.mazarguil@6wind.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=us-ascii",
        "Content-Disposition": "inline",
        "In-Reply-To": "<20190418152229.13554-1-adrien.mazarguil@6wind.com>",
        "X-Mailer": "git-send-email 2.11.0",
        "Subject": "[dpdk-dev] [PATCH v3] 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--\nv3 changes:\n\nRemoved unnecessary reference to slavery (\"slave\" device) for political\ncorrectness.\n\nAlso kept *-by lines as in v2.\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..fee08fa23 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+ * sub-devices. 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": [
        "v3"
    ]
}