get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 47782,
    "url": "http://patches.dpdk.org/api/patches/47782/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1541225876-8817-10-git-send-email-viacheslavo@mellanox.com/",
    "project": {
        "id": 1,
        "url": "http://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": "<1541225876-8817-10-git-send-email-viacheslavo@mellanox.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1541225876-8817-10-git-send-email-viacheslavo@mellanox.com",
    "date": "2018-11-03T06:18:42",
    "name": "[v5,09/13] net/mlx5: update E-Switch VXLAN netlink routines",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "0b0cf5c2b648b92da457495361fca3d76ea4fa2c",
    "submitter": {
        "id": 1102,
        "url": "http://patches.dpdk.org/api/people/1102/?format=api",
        "name": "Slava Ovsiienko",
        "email": "viacheslavo@mellanox.com"
    },
    "delegate": {
        "id": 6624,
        "url": "http://patches.dpdk.org/api/users/6624/?format=api",
        "username": "shahafs",
        "first_name": "Shahaf",
        "last_name": "Shuler",
        "email": "shahafs@mellanox.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1541225876-8817-10-git-send-email-viacheslavo@mellanox.com/mbox/",
    "series": [
        {
            "id": 2236,
            "url": "http://patches.dpdk.org/api/series/2236/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=2236",
            "date": "2018-11-03T06:18:34",
            "name": "net/mlx5: e-switch VXLAN encap/decap hardware offload",
            "version": 5,
            "mbox": "http://patches.dpdk.org/series/2236/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/47782/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/47782/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 2C20F1B115;\n\tSat,  3 Nov 2018 07:18:56 +0100 (CET)",
            "from EUR02-VE1-obe.outbound.protection.outlook.com\n\t(mail-eopbgr20043.outbound.protection.outlook.com [40.107.2.43])\n\tby dpdk.org (Postfix) with ESMTP id 7D45A5B30\n\tfor <dev@dpdk.org>; Sat,  3 Nov 2018 07:18:43 +0100 (CET)",
            "from AM4PR05MB3265.eurprd05.prod.outlook.com (10.171.186.150) by\n\tAM4PR05MB3250.eurprd05.prod.outlook.com (10.171.186.147) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n\t15.20.1294.21; Sat, 3 Nov 2018 06:18:42 +0000",
            "from AM4PR05MB3265.eurprd05.prod.outlook.com\n\t([fe80::544b:a68d:e6a5:ba6e]) by\n\tAM4PR05MB3265.eurprd05.prod.outlook.com\n\t([fe80::544b:a68d:e6a5:ba6e%2]) with mapi id 15.20.1294.027;\n\tSat, 3 Nov 2018 06:18:42 +0000"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com;\n\ts=selector1;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n\tbh=ig+/y4caruMk6IEYG4uM4/YRGKVmZcd0OGhC1PINntE=;\n\tb=AD4+jWKiy+ysDikPRUmaDaRXG5//WCNDaaTlmAJ3y5azGpv/GZ2YRguMw7oQblvnuzBj0XK+zoJZsOPJa6YYyqSxkNBSleVir9HjOq7ZZBew4MeIwpAObjmHfsCEOkgwrPaBLZ80EgK9gRD+fa2j6Bt3ENWxQIEylsW9XwiMnQM=",
        "From": "Slava Ovsiienko <viacheslavo@mellanox.com>",
        "To": "Shahaf Shuler <shahafs@mellanox.com>",
        "CC": "\"dev@dpdk.org\" <dev@dpdk.org>, Yongseok Koh <yskoh@mellanox.com>, Slava\n\tOvsiienko <viacheslavo@mellanox.com>",
        "Thread-Topic": "[PATCH v5 09/13] net/mlx5: update E-Switch VXLAN netlink\n\troutines",
        "Thread-Index": "AQHUcz0Rn3Wj2d2WOkGomHCY4k7fKA==",
        "Date": "Sat, 3 Nov 2018 06:18:42 +0000",
        "Message-ID": "<1541225876-8817-10-git-send-email-viacheslavo@mellanox.com>",
        "References": "<1541181152-15788-2-git-send-email-viacheslavo@mellanox.com>\n\t<1541225876-8817-1-git-send-email-viacheslavo@mellanox.com>",
        "In-Reply-To": "<1541225876-8817-1-git-send-email-viacheslavo@mellanox.com>",
        "Accept-Language": "en-US",
        "Content-Language": "en-US",
        "X-MS-Has-Attach": "",
        "X-MS-TNEF-Correlator": "",
        "x-clientproxiedby": "CWLP123CA0088.GBRP123.PROD.OUTLOOK.COM\n\t(2603:10a6:401:5b::28) To AM4PR05MB3265.eurprd05.prod.outlook.com\n\t(2603:10a6:205:4::22)",
        "authentication-results": "spf=none (sender IP is )\n\tsmtp.mailfrom=viacheslavo@mellanox.com; ",
        "x-ms-exchange-messagesentrepresentingtype": "1",
        "x-originating-ip": "[37.142.13.130]",
        "x-ms-publictraffictype": "Email",
        "x-microsoft-exchange-diagnostics": "1; AM4PR05MB3250;\n\t6:2EUOuIIuQjHZO1UHy9LiFP8pS9Ce2OF0yPItZlhaPsYtJN01HzKLGV0lzgmgAjZvMITucfEkcGDc0Axf8WxLA13skIDXSO2lXr/LnDjkJS4Ip8oeist9+u5fmG5zptlZpnrY6luLjLgls+Um5Oav7bRjCrpRKrLZq/SJoNoc+79oB4DorL+QzjrUoWLsPGwVvLrXkO0EFLrnZE0A85aEqoMzEqfLmuIa0u4dD7E+MjfaQGoiSOz8dgNsb8CRXly4bIjhFeW7eDjGjJQ6PasyuGhcbWaPq0hZLd/8dws98nsk/z2tJwVi5fJKKOK5GeqPZVvD2IYwbjzPStpsMf7+kzDoz727Sz3tTbYV4ztN/tPXpvOiPGKwqOh5xy6sEAk/IwEqDYvebEgnC5SW4Wbt6KyGxsgEV4OYJc570oyXGnDMObinDgE2sxwqvd7ENV9zARHv/ALsbACRGfhz3CB1TQ==;\n\t5:zOpAxOmwbNUVQpwj0bYLnwA9NymLzz5q8ddbUHH4T8hjHFSxjsQVr8EX0xG7nc85InCNFXz82nadZUfIUaBHyfGhsJdUArRxBGu2yANqu1qatOIs3gz38LnV8WFPzfD3bjhqjguqmzzNqjRQ7m5hawE+Jh9lEs42bnbEQ2zePQQ=;\n\t7:alFWF7kIY1V9IqC0aUbiGPwfHXDkSo6L7Knta01e+XyWwgo9l3u/yZeuSICZl5NtRMYN7cRXP7G3gWZkTZT2MZxYmdyb8mQbghjRQ3P4QVSE7vdQ+wWQINXSUvSZj5a8I0JUndkExD0UTzomwwXdAg==",
        "x-ms-office365-filtering-correlation-id": "b4356c1a-b758-4764-fe2d-08d6415433d0",
        "x-ms-office365-filtering-ht": "Tenant",
        "x-microsoft-antispam": "BCL:0; PCL:0;\n\tRULEID:(7020095)(4652040)(8989299)(5600074)(711020)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020);\n\tSRVR:AM4PR05MB3250; ",
        "x-ms-traffictypediagnostic": "AM4PR05MB3250:",
        "x-microsoft-antispam-prvs": "<AM4PR05MB3250C456C70584A2040EAD8AD2C80@AM4PR05MB3250.eurprd05.prod.outlook.com>",
        "x-exchange-antispam-report-test": "UriScan:;",
        "x-ms-exchange-senderadcheck": "1",
        "x-exchange-antispam-report-cfa-test": "BCL:0; PCL:0;\n\tRULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231382)(944501410)(52105095)(3002001)(10201501046)(93006095)(93001095)(6055026)(148016)(149066)(150057)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123560045)(20161123564045)(20161123558120)(201708071742011)(7699051)(76991095);\n\tSRVR:AM4PR05MB3250; BCL:0; PCL:0; RULEID:; SRVR:AM4PR05MB3250; ",
        "x-forefront-prvs": "08457955C4",
        "x-forefront-antispam-report": "SFV:NSPM;\n\tSFS:(10009020)(346002)(376002)(366004)(39860400002)(136003)(396003)(189003)(199004)(81156014)(66066001)(107886003)(6436002)(71200400001)(71190400001)(6636002)(106356001)(68736007)(25786009)(316002)(52116002)(3846002)(6486002)(6116002)(4326008)(76176011)(97736004)(6862004)(486006)(476003)(478600001)(11346002)(305945005)(37006003)(5660300001)(7736002)(105586002)(2900100001)(15650500001)(26005)(2906002)(99286004)(186003)(2616005)(53936002)(446003)(6512007)(6506007)(8676002)(256004)(8936002)(386003)(14454004)(14444005)(36756003)(102836004)(81166006)(86362001)(54906003);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:AM4PR05MB3250;\n\tH:AM4PR05MB3265.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en;\n\tPTR:InfoNoRecords; MX:1; A:1; ",
        "received-spf": "None (protection.outlook.com: mellanox.com does not designate\n\tpermitted sender hosts)",
        "x-microsoft-antispam-message-info": "W4blMAvVtG0VtoOmzyEBCbc4ZU+uTSzk64X9BhqKxXBXmL+/uqnCNxfb4EqNEU0xguDrky3mE5Hy5rTlXdhXz/aH/Yuw7tvbvG2YjrX3+7PwvJ8esqbQU3fbZofABSIZWNEuYNM1z8FfPp9+dPibVq0r95zpl+MttCmsX7pZ7I/MS2r8HGasfVF4/2GvIMsOtq5ItO9lAG3UVOOpdRQI/owG0cAkUgVjJ3iI4XLPqMbtN+5G60um3avnois0HjsWVo2OrqdPjTNQaLrNSzD4vo86aRhGzmiwheRQWlGuDcoLA8o5JNsUiW8KJzZRa0jo0W+9BuEjGJOuB5ELRZVtraJa+akAL26t+r7ArOtE0VU=",
        "spamdiagnosticoutput": "1:99",
        "spamdiagnosticmetadata": "NSPM",
        "Content-Type": "text/plain; charset=\"iso-8859-1\"",
        "Content-Transfer-Encoding": "quoted-printable",
        "MIME-Version": "1.0",
        "X-OriginatorOrg": "Mellanox.com",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "b4356c1a-b758-4764-fe2d-08d6415433d0",
        "X-MS-Exchange-CrossTenant-originalarrivaltime": "03 Nov 2018 06:18:42.4288\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-fromentityheader": "Hosted",
        "X-MS-Exchange-CrossTenant-id": "a652971c-7d2e-4d9b-a6a4-d149256f461b",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "AM4PR05MB3250",
        "Subject": "[dpdk-dev] [PATCH v5 09/13] net/mlx5: update E-Switch VXLAN netlink\n\troutines",
        "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": "This part of patchset updates Netlink exchange routine. Message\nsequence numbers became not random ones, the multipart reply messages\nare supported, not propagating errors to the following socket calls,\nNetlink replies buffer size is increased to MNL_SOCKET_BUFFER_SIZE\nand now is preallocated at context creation time instead of stack\nusage. This update is needed to support Netlink query operations.\n\nSuggested-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>\nSigned-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>\nAcked-by: Yongseok Koh <yskoh@mellanox.com>\n---\n drivers/net/mlx5/mlx5_flow_tcf.c | 83 +++++++++++++++++++++++++++++-----------\n 1 file changed, 61 insertions(+), 22 deletions(-)",
    "diff": "diff --git a/drivers/net/mlx5/mlx5_flow_tcf.c b/drivers/net/mlx5/mlx5_flow_tcf.c\nindex ba17806..26a91c5 100644\n--- a/drivers/net/mlx5/mlx5_flow_tcf.c\n+++ b/drivers/net/mlx5/mlx5_flow_tcf.c\n@@ -3725,37 +3725,76 @@ struct pedit_parser {\n /**\n  * Send Netlink message with acknowledgment.\n  *\n- * @param ctx\n+ * @param tcf\n  *   Flow context to use.\n  * @param nlh\n  *   Message to send. This function always raises the NLM_F_ACK flag before\n  *   sending.\n+ * @param[in] msglen\n+ *   Message length. Message buffer may contain multiple commands and\n+ *   nlmsg_len field not always corresponds to actual message length.\n+ *   If 0 specified the nlmsg_len field in header is used as message length.\n+ * @param[in] cb\n+ *   Callback handler for received message.\n+ * @param[in] arg\n+ *   Context pointer for callback handler.\n  *\n  * @return\n  *   0 on success, a negative errno value otherwise and rte_errno is set.\n  */\n static int\n-flow_tcf_nl_ack(struct mlx5_flow_tcf_context *ctx, struct nlmsghdr *nlh)\n+flow_tcf_nl_ack(struct mlx5_flow_tcf_context *tcf,\n+\t\tstruct nlmsghdr *nlh,\n+\t\tuint32_t msglen,\n+\t\tmnl_cb_t cb, void *arg)\n {\n-\talignas(struct nlmsghdr)\n-\tuint8_t ans[mnl_nlmsg_size(sizeof(struct nlmsgerr)) +\n-\t\t    nlh->nlmsg_len - sizeof(*nlh)];\n-\tuint32_t seq = ctx->seq++;\n-\tstruct mnl_socket *nl = ctx->nl;\n-\tint ret;\n-\n-\tnlh->nlmsg_flags |= NLM_F_ACK;\n+\tunsigned int portid = mnl_socket_get_portid(tcf->nl);\n+\tuint32_t seq = tcf->seq++;\n+\tint err, ret;\n+\n+\tassert(tcf->nl);\n+\tassert(tcf->buf);\n+\tif (!seq)\n+\t\t/* seq 0 is reserved for kernel event-driven notifications. */\n+\t\tseq = tcf->seq++;\n \tnlh->nlmsg_seq = seq;\n-\tret = mnl_socket_sendto(nl, nlh, nlh->nlmsg_len);\n-\tif (ret != -1)\n-\t\tret = mnl_socket_recvfrom(nl, ans, sizeof(ans));\n-\tif (ret != -1)\n-\t\tret = mnl_cb_run\n-\t\t\t(ans, ret, seq, mnl_socket_get_portid(nl), NULL, NULL);\n+\tif (!msglen) {\n+\t\tmsglen = nlh->nlmsg_len;\n+\t\tnlh->nlmsg_flags |= NLM_F_ACK;\n+\t}\n+\tret = mnl_socket_sendto(tcf->nl, nlh, msglen);\n+\terr = (ret <= 0) ? errno : 0;\n+\tnlh = (struct nlmsghdr *)(tcf->buf);\n+\t/*\n+\t * The following loop postpones non-fatal errors until multipart\n+\t * messages are complete.\n+\t */\n \tif (ret > 0)\n+\t\twhile (true) {\n+\t\t\tret = mnl_socket_recvfrom(tcf->nl, tcf->buf,\n+\t\t\t\t\t\t  tcf->buf_size);\n+\t\t\tif (ret < 0) {\n+\t\t\t\terr = errno;\n+\t\t\t\tif (err != ENOSPC)\n+\t\t\t\t\tbreak;\n+\t\t\t}\n+\t\t\tif (!err) {\n+\t\t\t\tret = mnl_cb_run(nlh, ret, seq, portid,\n+\t\t\t\t\t\t cb, arg);\n+\t\t\t\tif (ret < 0) {\n+\t\t\t\t\terr = errno;\n+\t\t\t\t\tbreak;\n+\t\t\t\t}\n+\t\t\t}\n+\t\t\t/* Will receive till end of multipart message */\n+\t\t\tif (!(nlh->nlmsg_flags & NLM_F_MULTI) ||\n+\t\t\t      nlh->nlmsg_type == NLMSG_DONE)\n+\t\t\t\tbreak;\n+\t\t}\n+\tif (!err)\n \t\treturn 0;\n-\trte_errno = errno;\n-\treturn -rte_errno;\n+\trte_errno = err;\n+\treturn -err;\n }\n \n /**\n@@ -3786,7 +3825,7 @@ struct pedit_parser {\n \tnlh = dev_flow->tcf.nlh;\n \tnlh->nlmsg_type = RTM_NEWTFILTER;\n \tnlh->nlmsg_flags = NLM_F_REQUEST | NLM_F_CREATE | NLM_F_EXCL;\n-\tif (!flow_tcf_nl_ack(ctx, nlh))\n+\tif (!flow_tcf_nl_ack(ctx, nlh, 0, NULL, NULL))\n \t\treturn 0;\n \treturn rte_flow_error_set(error, rte_errno,\n \t\t\t\t  RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL,\n@@ -3825,7 +3864,7 @@ struct pedit_parser {\n \tnlh = dev_flow->tcf.nlh;\n \tnlh->nlmsg_type = RTM_DELTFILTER;\n \tnlh->nlmsg_flags = NLM_F_REQUEST;\n-\tflow_tcf_nl_ack(ctx, nlh);\n+\tflow_tcf_nl_ack(ctx, nlh, 0, NULL, NULL);\n }\n \n /**\n@@ -4358,7 +4397,7 @@ struct pedit_parser {\n \ttcm->tcm_handle = TC_H_MAKE(TC_H_INGRESS, 0);\n \ttcm->tcm_parent = TC_H_INGRESS;\n \t/* Ignore errors when qdisc is already absent. */\n-\tif (flow_tcf_nl_ack(ctx, nlh) &&\n+\tif (flow_tcf_nl_ack(ctx, nlh, 0, NULL, NULL) &&\n \t    rte_errno != EINVAL && rte_errno != ENOENT)\n \t\treturn rte_flow_error_set(error, rte_errno,\n \t\t\t\t\t  RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL,\n@@ -4374,7 +4413,7 @@ struct pedit_parser {\n \ttcm->tcm_handle = TC_H_MAKE(TC_H_INGRESS, 0);\n \ttcm->tcm_parent = TC_H_INGRESS;\n \tmnl_attr_put_strz_check(nlh, sizeof(buf), TCA_KIND, \"ingress\");\n-\tif (flow_tcf_nl_ack(ctx, nlh))\n+\tif (flow_tcf_nl_ack(ctx, nlh, 0, NULL, NULL))\n \t\treturn rte_flow_error_set(error, rte_errno,\n \t\t\t\t\t  RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL,\n \t\t\t\t\t  \"netlink: failed to create ingress\"\n",
    "prefixes": [
        "v5",
        "09/13"
    ]
}