get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 117576,
    "url": "http://patchwork.dpdk.org/api/patches/117576/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/20221007172921.3325250-2-andrew.rybchenko@oktetlabs.ru/",
    "project": {
        "id": 1,
        "url": "http://patchwork.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": "<20221007172921.3325250-2-andrew.rybchenko@oktetlabs.ru>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20221007172921.3325250-2-andrew.rybchenko@oktetlabs.ru",
    "date": "2022-10-07T17:29:18",
    "name": "[v8,1/4] ethdev: factor out helper function to check Rx mempool",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "89785acf5380fa848dc08279ee5d03463bc38d05",
    "submitter": {
        "id": 2013,
        "url": "http://patchwork.dpdk.org/api/people/2013/?format=api",
        "name": "Andrew Rybchenko",
        "email": "Andrew.Rybchenko@oktetlabs.ru"
    },
    "delegate": {
        "id": 1,
        "url": "http://patchwork.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/20221007172921.3325250-2-andrew.rybchenko@oktetlabs.ru/mbox/",
    "series": [
        {
            "id": 25036,
            "url": "http://patchwork.dpdk.org/api/series/25036/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=25036",
            "date": "2022-10-07T17:29:17",
            "name": "ethdev: support mulitiple mbuf pools per Rx queue",
            "version": 8,
            "mbox": "http://patchwork.dpdk.org/series/25036/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/117576/comments/",
    "check": "warning",
    "checks": "http://patchwork.dpdk.org/api/patches/117576/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 3B797A00C4;\n\tFri,  7 Oct 2022 19:29:29 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 8337C42685;\n\tFri,  7 Oct 2022 19:29:25 +0200 (CEST)",
            "from shelob.oktetlabs.ru (shelob.oktetlabs.ru [91.220.146.113])\n by mails.dpdk.org (Postfix) with ESMTP id 5276140151\n for <dev@dpdk.org>; Fri,  7 Oct 2022 19:29:24 +0200 (CEST)",
            "by shelob.oktetlabs.ru (Postfix, from userid 115)\n id 11B3A92; Fri,  7 Oct 2022 20:29:24 +0300 (MSK)",
            "from aros.oktetlabs.ru (aros.oktetlabs.ru [192.168.38.17])\n by shelob.oktetlabs.ru (Postfix) with ESMTP id C70557D;\n Fri,  7 Oct 2022 20:29:22 +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 C70557D",
        "Authentication-Results": "shelob.oktetlabs.ru/C70557D; 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 v8 1/4] ethdev: factor out helper function to check Rx mempool",
        "Date": "Fri,  7 Oct 2022 20:29:18 +0300",
        "Message-Id": "<20221007172921.3325250-2-andrew.rybchenko@oktetlabs.ru>",
        "X-Mailer": "git-send-email 2.30.2",
        "In-Reply-To": "<20221007172921.3325250-1-andrew.rybchenko@oktetlabs.ru>",
        "References": "<20221006170126.1322852-1-hpothula@marvell.com>\n <20221007172921.3325250-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": [
        "v8",
        "1/4"
    ]
}