get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 95106,
    "url": "https://patches.dpdk.org/api/patches/95106/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20210701073133.23488-1-viacheslavo@nvidia.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": "<20210701073133.23488-1-viacheslavo@nvidia.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20210701073133.23488-1-viacheslavo@nvidia.com",
    "date": "2021-07-01T07:31:33",
    "name": "common/mlx5: fix Netlink receive message buffer size",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "b6e681552a824164d6fc8100b3ad23030ba52e6d",
    "submitter": {
        "id": 1926,
        "url": "https://patches.dpdk.org/api/people/1926/?format=api",
        "name": "Slava Ovsiienko",
        "email": "viacheslavo@nvidia.com"
    },
    "delegate": {
        "id": 3268,
        "url": "https://patches.dpdk.org/api/users/3268/?format=api",
        "username": "rasland",
        "first_name": "Raslan",
        "last_name": "Darawsheh",
        "email": "rasland@nvidia.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20210701073133.23488-1-viacheslavo@nvidia.com/mbox/",
    "series": [
        {
            "id": 17568,
            "url": "https://patches.dpdk.org/api/series/17568/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=17568",
            "date": "2021-07-01T07:31:33",
            "name": "common/mlx5: fix Netlink receive message buffer size",
            "version": 1,
            "mbox": "https://patches.dpdk.org/series/17568/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/95106/comments/",
    "check": "fail",
    "checks": "https://patches.dpdk.org/api/patches/95106/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 2EEE6A0A0C;\n\tThu,  1 Jul 2021 09:31:58 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id DE25340141;\n\tThu,  1 Jul 2021 09:31:57 +0200 (CEST)",
            "from NAM11-BN8-obe.outbound.protection.outlook.com\n (mail-bn8nam11on2082.outbound.protection.outlook.com [40.107.236.82])\n by mails.dpdk.org (Postfix) with ESMTP id 158E640040;\n Thu,  1 Jul 2021 09:31:56 +0200 (CEST)",
            "from BN6PR2001CA0030.namprd20.prod.outlook.com\n (2603:10b6:405:16::16) by DM4PR12MB5360.namprd12.prod.outlook.com\n (2603:10b6:5:39f::24) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4264.19; Thu, 1 Jul\n 2021 07:31:54 +0000",
            "from BN8NAM11FT036.eop-nam11.prod.protection.outlook.com\n (2603:10b6:405:16:cafe::1) by BN6PR2001CA0030.outlook.office365.com\n (2603:10b6:405:16::16) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4287.22 via Frontend\n Transport; Thu, 1 Jul 2021 07:31:54 +0000",
            "from mail.nvidia.com (216.228.112.34) by\n BN8NAM11FT036.mail.protection.outlook.com (10.13.177.168) with Microsoft SMTP\n Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id\n 15.20.4287.22 via Frontend Transport; Thu, 1 Jul 2021 07:31:54 +0000",
            "from nvidia.com (172.20.187.6) by HQMAIL107.nvidia.com\n (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 1 Jul\n 2021 07:31:51 +0000"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=mGl90ULrS7+VeLsiPRA/hsfIzebfa4m+Mgq/edxo/0K/q81aSc3eyFhiwuGGN4SQjzWx5pwDMNMIP0du87XZt/ge9gkuhCEl1LdbEc4e846PnrhGM6T7B16pf1cxXAf27BWwHCT/Jtpj7qQ4Gw7Bneeu99vkVEkxB4qeZzB/sFR2j58Z3pWjmt0wZUfNnyNK7Irng55u7z7a3P4K32hmeyYHk1h37T4UnEKPMyXdZ27NxFQ+M9HgBeHdvuNKkxtwLabgFp04hRLW8AlCHtK9Ik6kiZQtWZH4rePTfwfWRolZKE0k0WZMMap8adukgc2SsX9+nEPzdgyQWNj4F81kKA==",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector9901;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=kG2L7V1DR57y1g2w+VH2JKzvBrHHlArrbtD3FKIXXVU=;\n b=fpASuhJdCgp+u2zI6lSmdVPCw6yz2jYZNnl/vKvMCGrFMkkJNSU4+BCYCDMBRwyUqyv0TYKKAxlESrPfj7QoYlQVRbDpQ2n8V2YjEtklNo6ccF0AY2d/aNUWgFV6Ivfpw5Vp8vhQgmdhKnuIJ5zvdl/x5YKJgpkV72a9XRRnQ+r6tTUaGhXoGkhlJb5q9VRfJGll9bThimCVL3k/DoZ6m55/tGQQHLv1No6tg4zJt43EIQ/BpraoTMYhL1/IbK6OIiASZ+TfYwApJY4eAaL+XxYRPpjOA/Oz5PHdq59HVwHKLvPg67uKjh0FPns8qUuuV7U/GzMCtx4fv+xNnyvdeQ==",
        "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 216.228.112.34) smtp.rcpttodomain=dpdk.org smtp.mailfrom=nvidia.com;\n dmarc=pass (p=none sp=none pct=100) action=none header.from=nvidia.com;\n dkim=none (message not signed); arc=none",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com;\n s=selector2;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=kG2L7V1DR57y1g2w+VH2JKzvBrHHlArrbtD3FKIXXVU=;\n b=pPAq8/RjGasEc9QKU8Yxo2ynbil6cYq1MRxGmV7gNUWmYrB75+lFP525ARclDDY9L9z5QEAlRjSRWpdmSoqJ3mOHQCYW/9PK5qC1AWRKXAIGYpGONECQQlZBMZLNDhS+juhK4FKHm0cBtta6NKWdNDGmP3qIvHPweZTCnaAbErRmHCODhgKZN7FEfdrPV3dlRP8gLKqIS+is8p0MmK0V37P9qxnDXiZEi5Mox7GLkuYKNFjI1Ed49s2QDdZi47r92rHKP1o+ubV9vMyf2fqEbyQ1OHVHJOg7KUd65w9DZ0PnnFzSIqSXtWxyN5Um21sPClKhOcm33W1REYvxPCqvKQ==",
        "X-MS-Exchange-Authentication-Results": "spf=pass (sender IP is 216.228.112.34)\n smtp.mailfrom=nvidia.com; dpdk.org; dkim=none (message not signed)\n header.d=none;dpdk.org; dmarc=pass action=none header.from=nvidia.com;",
        "Received-SPF": "Pass (protection.outlook.com: domain of nvidia.com designates\n 216.228.112.34 as permitted sender) receiver=protection.outlook.com;\n client-ip=216.228.112.34; helo=mail.nvidia.com;",
        "From": "Viacheslav Ovsiienko <viacheslavo@nvidia.com>",
        "To": "<dev@dpdk.org>",
        "CC": "<rasland@nvidia.com>, <matan@nvidia.com>, <orika@nvidia.com>,\n <stable@dpdk.org>",
        "Date": "Thu, 1 Jul 2021 10:31:33 +0300",
        "Message-ID": "<20210701073133.23488-1-viacheslavo@nvidia.com>",
        "X-Mailer": "git-send-email 2.18.1",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[172.20.187.6]",
        "X-ClientProxiedBy": "HQMAIL101.nvidia.com (172.20.187.10) To\n HQMAIL107.nvidia.com (172.20.187.13)",
        "X-EOPAttributedMessage": "0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id": "b452c328-9b00-4140-b4b8-08d93c624cd4",
        "X-MS-TrafficTypeDiagnostic": "DM4PR12MB5360:",
        "X-Microsoft-Antispam-PRVS": "\n <DM4PR12MB53602236E99A45B21368A93ADF009@DM4PR12MB5360.namprd12.prod.outlook.com>",
        "X-MS-Oob-TLC-OOBClassifiers": "OLM:8273;",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-Microsoft-Antispam": "BCL:0;",
        "X-Microsoft-Antispam-Message-Info": "\n tJQqcEgmHtBb1b0TMgCbrkZAlRcCb7s0ZGV6OGhEjNm34Gj91SbQexx/ZGsG3IfjSX/GwQPq+SgJpqFsMydDO/OkoCNOTeov9KrxhmBfScUBk59cN+Kk3qOWzXPxLOvai2hAw3hJGYcOCTpr8CIyMHHJD3UpHxHk4Y88KlfnePOzJHwmoEMGToKxpLqiSz+7vswULJKLgO3IZRvUateF4OMQ1l7lHcqhJOvaXbswP5LTymKfND3VRtSJ5ZyqWEeyh7tVMIrEHNO2nri2uzFTHmHn2bLPsgEUCMznTa7YjTORtCkzKUSuXhyT3GcJe89+INy+ndSDm3TBFO6aAG3R8IXcgyKvAaYSjaiByNv3adO7yeLFz78KHpzPTvmavv7+3xTGFrbwWNkcDndVslzTYRUiJr03bMlOV42UPAtFvuzM1AmiXYMpmges6QFDR9e4dya6YrReuhboCOOd5BiuGw9wS5X0kfBH0OihK7giXnwaAkwIhcjDW3UHjawUSCK1Q/i3Dz3DVebM2a1Dnu2f9N+yABfZS2ZFaEXVByHsfwWLRYG0A1TpiZ8JttHco4TDps2qiOlL29SzHiVymB08cHzpgd3DkFT60NG0o369+c8EZ6Ork0OSpA8o2JrdKaaQoI12RchqEox54ryL6WWXFFLU/ZSAdD7HjxBKdvKQ3ETBazlkrmg1zlhesCDVtBr3dCUXsEmSE3CLSdshZ4kW0gR5tMS4AIqyAihRqD+8ZPs=",
        "X-Forefront-Antispam-Report": "CIP:216.228.112.34; CTRY:US; LANG:en; SCL:1;\n SRV:;\n IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:schybrid03.nvidia.com; CAT:NONE;\n SFS:(4636009)(376002)(346002)(396003)(136003)(39860400002)(36840700001)(46966006)(426003)(70206006)(5660300002)(7696005)(6286002)(8676002)(70586007)(8936002)(4326008)(336012)(55016002)(26005)(16526019)(450100002)(186003)(82740400003)(36860700001)(6916009)(82310400003)(2906002)(478600001)(47076005)(83380400001)(7636003)(6666004)(43170500006)(54906003)(316002)(36756003)(356005)(1076003)(86362001)(2616005)(15650500001);\n DIR:OUT; SFP:1101;",
        "X-OriginatorOrg": "Nvidia.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "01 Jul 2021 07:31:54.1406 (UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n b452c328-9b00-4140-b4b8-08d93c624cd4",
        "X-MS-Exchange-CrossTenant-Id": "43083d15-7273-40c1-b7db-39efd9ccc17a",
        "X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp": "\n TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.112.34];\n Helo=[mail.nvidia.com]",
        "X-MS-Exchange-CrossTenant-AuthSource": "\n BN8NAM11FT036.eop-nam11.prod.protection.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "DM4PR12MB5360",
        "Subject": "[dpdk-dev] [PATCH] common/mlx5: fix Netlink receive message buffer\n size",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <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 <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "If there are many VFs the Netlink message length sent by kernel\nin reply to RTM_GETLINK request can be large. We should query\nthe size of message being received in advance and allocate\nthe large enough buffer to handle these large messages.\n\nFixes: ccdcba53a3f4 (\"net/mlx5: use Netlink to add/remove MAC addresses\")\nCc: stable@dpdk.org\n\nSigned-off-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>\n---\n drivers/common/mlx5/linux/mlx5_nl.c | 69 +++++++++++++++++++++++------\n 1 file changed, 55 insertions(+), 14 deletions(-)",
    "diff": "diff --git a/drivers/common/mlx5/linux/mlx5_nl.c b/drivers/common/mlx5/linux/mlx5_nl.c\nindex 3f1912d078..dc8dafd0a8 100644\n--- a/drivers/common/mlx5/linux/mlx5_nl.c\n+++ b/drivers/common/mlx5/linux/mlx5_nl.c\n@@ -189,8 +189,8 @@ int\n mlx5_nl_init(int protocol)\n {\n \tint fd;\n-\tint sndbuf_size = MLX5_SEND_BUF_SIZE;\n-\tint rcvbuf_size = MLX5_RECV_BUF_SIZE;\n+\tint buf_size;\n+\tsocklen_t opt_size;\n \tstruct sockaddr_nl local = {\n \t\t.nl_family = AF_NETLINK,\n \t};\n@@ -201,16 +201,36 @@ mlx5_nl_init(int protocol)\n \t\trte_errno = errno;\n \t\treturn -rte_errno;\n \t}\n-\tret = setsockopt(fd, SOL_SOCKET, SO_SNDBUF, &sndbuf_size, sizeof(int));\n+\topt_size = sizeof(buf_size);\n+\tret = getsockopt(fd, SOL_SOCKET, SO_SNDBUF, &buf_size, &opt_size);\n \tif (ret == -1) {\n \t\trte_errno = errno;\n \t\tgoto error;\n \t}\n-\tret = setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &rcvbuf_size, sizeof(int));\n+\tDRV_LOG(DEBUG, \"Netlink socket send buffer: %d\", buf_size);\n+\tif (buf_size < MLX5_SEND_BUF_SIZE) {\n+\t\tret = setsockopt(fd, SOL_SOCKET, SO_SNDBUF,\n+\t\t\t\t &buf_size, sizeof(buf_size));\n+\t\tif (ret == -1) {\n+\t\t\trte_errno = errno;\n+\t\t\tgoto error;\n+\t\t}\n+\t}\n+\topt_size = sizeof(buf_size);\n+\tret = getsockopt(fd, SOL_SOCKET, SO_RCVBUF, &buf_size, &opt_size);\n \tif (ret == -1) {\n \t\trte_errno = errno;\n \t\tgoto error;\n \t}\n+\tDRV_LOG(DEBUG, \"Netlink socket recv buffer: %d\", buf_size);\n+\tif (buf_size < MLX5_RECV_BUF_SIZE) {\n+\t\tret = setsockopt(fd, SOL_SOCKET, SO_RCVBUF,\n+\t\t\t\t &buf_size, sizeof(buf_size));\n+\t\tif (ret == -1) {\n+\t\t\trte_errno = errno;\n+\t\t\tgoto error;\n+\t\t}\n+\t}\n \tret = bind(fd, (struct sockaddr *)&local, sizeof(local));\n \tif (ret == -1) {\n \t\trte_errno = errno;\n@@ -332,11 +352,7 @@ mlx5_nl_recv(int nlsk_fd, uint32_t sn, int (*cb)(struct nlmsghdr *, void *arg),\n \t     void *arg)\n {\n \tstruct sockaddr_nl sa;\n-\tvoid *buf = mlx5_malloc(0, MLX5_RECV_BUF_SIZE, 0, SOCKET_ID_ANY);\n-\tstruct iovec iov = {\n-\t\t.iov_base = buf,\n-\t\t.iov_len = MLX5_RECV_BUF_SIZE,\n-\t};\n+\tstruct iovec iov;\n \tstruct msghdr msg = {\n \t\t.msg_name = &sa,\n \t\t.msg_namelen = sizeof(sa),\n@@ -344,18 +360,43 @@ mlx5_nl_recv(int nlsk_fd, uint32_t sn, int (*cb)(struct nlmsghdr *, void *arg),\n \t\t/* One message at a time */\n \t\t.msg_iovlen = 1,\n \t};\n+\tvoid *buf = NULL;\n \tint multipart = 0;\n \tint ret = 0;\n \n-\tif (!buf) {\n-\t\trte_errno = ENOMEM;\n-\t\treturn -rte_errno;\n-\t}\n \tdo {\n \t\tstruct nlmsghdr *nh;\n-\t\tint recv_bytes = 0;\n+\t\tint recv_bytes;\n \n \t\tdo {\n+\t\t\t/* Query length of incoming message. */\n+\t\t\tiov.iov_base = NULL;\n+\t\t\tiov.iov_len = 0;\n+\t\t\trecv_bytes = recvmsg(nlsk_fd, &msg,\n+\t\t\t\t\t     MSG_PEEK | MSG_TRUNC);\n+\t\t\tif (recv_bytes < 0) {\n+\t\t\t\trte_errno = errno;\n+\t\t\t\tret = -rte_errno;\n+\t\t\t\tgoto exit;\n+\t\t\t}\n+\t\t\tif (recv_bytes == 0) {\n+\t\t\t\trte_errno = ENODATA;\n+\t\t\t\tret = -rte_errno;\n+\t\t\t\tgoto exit;\n+\t\t\t}\n+\t\t\t/* Allocate buffer to fetch the message. */\n+\t\t\tif (recv_bytes < MLX5_RECV_BUF_SIZE)\n+\t\t\t\trecv_bytes = MLX5_RECV_BUF_SIZE;\n+\t\t\tmlx5_free(buf);\n+\t\t\tbuf = mlx5_malloc(0, recv_bytes, 0, SOCKET_ID_ANY);\n+\t\t\tif (!buf) {\n+\t\t\t\trte_errno = ENOMEM;\n+\t\t\t\tret = -rte_errno;\n+\t\t\t\tgoto exit;\n+\t\t\t}\n+\t\t\t/* Fetch the message. */\n+\t\t\tiov.iov_base = buf;\n+\t\t\tiov.iov_len = recv_bytes;\n \t\t\trecv_bytes = recvmsg(nlsk_fd, &msg, 0);\n \t\t\tif (recv_bytes == -1) {\n \t\t\t\trte_errno = errno;\n",
    "prefixes": []
}