Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/95106/?format=api
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": [] }{ "id": 95106, "url": "