Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/117565/?format=api
http://patches.dpdk.org/api/patches/117565/?format=api", "web_url": "http://patches.dpdk.org/project/dpdk/patch/20221007143723.3204575-2-andrew.rybchenko@oktetlabs.ru/", "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": "<20221007143723.3204575-2-andrew.rybchenko@oktetlabs.ru>", "list_archive_url": "https://inbox.dpdk.org/dev/20221007143723.3204575-2-andrew.rybchenko@oktetlabs.ru", "date": "2022-10-07T14:37:20", "name": "[v7,1/4] ethdev: factor out helper function to check Rx mempool", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": true, "hash": "89785acf5380fa848dc08279ee5d03463bc38d05", "submitter": { "id": 2013, "url": "http://patches.dpdk.org/api/people/2013/?format=api", "name": "Andrew Rybchenko", "email": "Andrew.Rybchenko@oktetlabs.ru" }, "delegate": { "id": 3961, "url": "http://patches.dpdk.org/api/users/3961/?format=api", "username": "arybchenko", "first_name": "Andrew", "last_name": "Rybchenko", "email": "andrew.rybchenko@oktetlabs.ru" }, "mbox": "http://patches.dpdk.org/project/dpdk/patch/20221007143723.3204575-2-andrew.rybchenko@oktetlabs.ru/mbox/", "series": [ { "id": 25031, "url": "http://patches.dpdk.org/api/series/25031/?format=api", "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=25031", "date": "2022-10-07T14:37:19", "name": "ethdev: support mulitiple mbuf pools per Rx queue", "version": 7, "mbox": "http://patches.dpdk.org/series/25031/mbox/" } ], "comments": "http://patches.dpdk.org/api/patches/117565/comments/", "check": "warning", "checks": "http://patches.dpdk.org/api/patches/117565/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 7B1BCA00C3;\n\tFri, 7 Oct 2022 16:37:46 +0200 (CEST)", "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id CBBC142B9D;\n\tFri, 7 Oct 2022 16:37:43 +0200 (CEST)", "from shelob.oktetlabs.ru (shelob.oktetlabs.ru [91.220.146.113])\n by mails.dpdk.org (Postfix) with ESMTP id AB7D542B9C\n for <dev@dpdk.org>; Fri, 7 Oct 2022 16:37:42 +0200 (CEST)", "by shelob.oktetlabs.ru (Postfix, from userid 115)\n id 23DA88B; Fri, 7 Oct 2022 17:37:41 +0300 (MSK)", "from aros.oktetlabs.ru (aros.oktetlabs.ru [192.168.38.17])\n by shelob.oktetlabs.ru (Postfix) with ESMTP id D21297D;\n Fri, 7 Oct 2022 17:37:39 +0300 (MSK)" ], "X-Spam-Checker-Version": "SpamAssassin 3.4.6 (2021-04-09) on mail1.oktetlabs.ru", "X-Spam-Level": "", "X-Spam-Status": "No, score=0.8 required=5.0 tests=ALL_TRUSTED, DKIM_ADSP_DISCARD\n autolearn=no autolearn_force=no version=3.4.6", "DKIM-Filter": "OpenDKIM Filter v2.11.0 shelob.oktetlabs.ru D21297D", "Authentication-Results": "shelob.oktetlabs.ru/D21297D; dkim=none;\n dkim-atps=neutral", "From": "Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>", "To": "Thomas Monjalon <thomas@monjalon.net>, Ferruh Yigit <ferruh.yigit@amd.com>", "Cc": "dev@dpdk.org", "Subject": "[PATCH v7 1/4] ethdev: factor out helper function to check Rx mempool", "Date": "Fri, 7 Oct 2022 17:37:20 +0300", "Message-Id": "<20221007143723.3204575-2-andrew.rybchenko@oktetlabs.ru>", "X-Mailer": "git-send-email 2.30.2", "In-Reply-To": "<20221007143723.3204575-1-andrew.rybchenko@oktetlabs.ru>", "References": "<20221006170126.1322852-1-hpothula@marvell.com>\n <20221007143723.3204575-1-andrew.rybchenko@oktetlabs.ru>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "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" }, "content": "Avoid Rx mempool checks duplication logic.\n\nSigned-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>\n---\n lib/ethdev/rte_ethdev.c | 82 +++++++++++++++++++++--------------------\n 1 file changed, 42 insertions(+), 40 deletions(-)", "diff": "diff --git a/lib/ethdev/rte_ethdev.c b/lib/ethdev/rte_ethdev.c\nindex 01fac713a2..b3dba291e7 100644\n--- a/lib/ethdev/rte_ethdev.c\n+++ b/lib/ethdev/rte_ethdev.c\n@@ -1648,6 +1648,36 @@ rte_eth_dev_is_removed(uint16_t port_id)\n \treturn ret;\n }\n \n+static int\n+rte_eth_check_rx_mempool(struct rte_mempool *mp, uint16_t offset,\n+\t\t\t uint16_t min_length)\n+{\n+\tuint16_t data_room_size;\n+\n+\t/*\n+\t * Check the size of the mbuf data buffer, this value\n+\t * must be provided in the private data of the memory pool.\n+\t * First check that the memory pool(s) has a valid private data.\n+\t */\n+\tif (mp->private_data_size <\n+\t\t\tsizeof(struct rte_pktmbuf_pool_private)) {\n+\t\tRTE_ETHDEV_LOG(ERR, \"%s private_data_size %u < %u\\n\",\n+\t\t\tmp->name, mp->private_data_size,\n+\t\t\t(unsigned int)\n+\t\t\tsizeof(struct rte_pktmbuf_pool_private));\n+\t\treturn -ENOSPC;\n+\t}\n+\tdata_room_size = rte_pktmbuf_data_room_size(mp);\n+\tif (data_room_size < offset + min_length) {\n+\t\tRTE_ETHDEV_LOG(ERR,\n+\t\t\t \"%s mbuf_data_room_size %u < %u (%u + %u)\\n\",\n+\t\t\t mp->name, data_room_size,\n+\t\t\t offset + min_length, offset, min_length);\n+\t\treturn -EINVAL;\n+\t}\n+\treturn 0;\n+}\n+\n static int\n rte_eth_rx_queue_check_split(const struct rte_eth_rxseg_split *rx_seg,\n \t\t\t uint16_t n_seg, uint32_t *mbp_buf_size,\n@@ -1657,6 +1687,7 @@ rte_eth_rx_queue_check_split(const struct rte_eth_rxseg_split *rx_seg,\n \tstruct rte_mempool *mp_first;\n \tuint32_t offset_mask;\n \tuint16_t seg_idx;\n+\tint ret;\n \n \tif (n_seg > seg_capa->max_nseg) {\n \t\tRTE_ETHDEV_LOG(ERR,\n@@ -1696,25 +1727,14 @@ rte_eth_rx_queue_check_split(const struct rte_eth_rxseg_split *rx_seg,\n \t\t\t\treturn -EINVAL;\n \t\t\t}\n \t\t}\n-\t\tif (mpl->private_data_size <\n-\t\t\tsizeof(struct rte_pktmbuf_pool_private)) {\n-\t\t\tRTE_ETHDEV_LOG(ERR,\n-\t\t\t\t \"%s private_data_size %u < %u\\n\",\n-\t\t\t\t mpl->name, mpl->private_data_size,\n-\t\t\t\t (unsigned int)sizeof\n-\t\t\t\t\t(struct rte_pktmbuf_pool_private));\n-\t\t\treturn -ENOSPC;\n-\t\t}\n+\n \t\toffset += seg_idx != 0 ? 0 : RTE_PKTMBUF_HEADROOM;\n \t\t*mbp_buf_size = rte_pktmbuf_data_room_size(mpl);\n \t\tlength = length != 0 ? length : *mbp_buf_size;\n-\t\tif (*mbp_buf_size < length + offset) {\n-\t\t\tRTE_ETHDEV_LOG(ERR,\n-\t\t\t\t \"%s mbuf_data_room_size %u < %u (segment length=%u + segment offset=%u)\\n\",\n-\t\t\t\t mpl->name, *mbp_buf_size,\n-\t\t\t\t length + offset, length, offset);\n-\t\t\treturn -EINVAL;\n-\t\t}\n+\n+\t\tret = rte_eth_check_rx_mempool(mpl, offset, length);\n+\t\tif (ret != 0)\n+\t\t\treturn ret;\n \t}\n \treturn 0;\n }\n@@ -1753,31 +1773,13 @@ rte_eth_rx_queue_setup(uint16_t port_id, uint16_t rx_queue_id,\n \t\t\t\t \"Ambiguous segment configuration\\n\");\n \t\t\treturn -EINVAL;\n \t\t}\n-\t\t/*\n-\t\t * Check the size of the mbuf data buffer, this value\n-\t\t * must be provided in the private data of the memory pool.\n-\t\t * First check that the memory pool(s) has a valid private data.\n-\t\t */\n-\t\tif (mp->private_data_size <\n-\t\t\t\tsizeof(struct rte_pktmbuf_pool_private)) {\n-\t\t\tRTE_ETHDEV_LOG(ERR, \"%s private_data_size %u < %u\\n\",\n-\t\t\t\tmp->name, mp->private_data_size,\n-\t\t\t\t(unsigned int)\n-\t\t\t\tsizeof(struct rte_pktmbuf_pool_private));\n-\t\t\treturn -ENOSPC;\n-\t\t}\n+\n+\t\tret = rte_eth_check_rx_mempool(mp, RTE_PKTMBUF_HEADROOM,\n+\t\t\t\t\t dev_info.min_rx_bufsize);\n+\t\tif (ret != 0)\n+\t\t\treturn ret;\n+\n \t\tmbp_buf_size = rte_pktmbuf_data_room_size(mp);\n-\t\tif (mbp_buf_size < dev_info.min_rx_bufsize +\n-\t\t\t\t RTE_PKTMBUF_HEADROOM) {\n-\t\t\tRTE_ETHDEV_LOG(ERR,\n-\t\t\t\t \"%s mbuf_data_room_size %u < %u (RTE_PKTMBUF_HEADROOM=%u + min_rx_bufsize(dev)=%u)\\n\",\n-\t\t\t\t mp->name, mbp_buf_size,\n-\t\t\t\t RTE_PKTMBUF_HEADROOM +\n-\t\t\t\t dev_info.min_rx_bufsize,\n-\t\t\t\t RTE_PKTMBUF_HEADROOM,\n-\t\t\t\t dev_info.min_rx_bufsize);\n-\t\t\treturn -EINVAL;\n-\t\t}\n \t} else {\n \t\tconst struct rte_eth_rxseg_split *rx_seg;\n \t\tuint16_t n_seg;\n", "prefixes": [ "v7", "1/4" ] }{ "id": 117565, "url": "