get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 100520,
    "url": "http://patches.dpdk.org/api/patches/100520/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20211005143846.1058491-1-s.v.naga.harish.k@intel.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": "<20211005143846.1058491-1-s.v.naga.harish.k@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20211005143846.1058491-1-s.v.naga.harish.k@intel.com",
    "date": "2021-10-05T14:38:42",
    "name": "[v6,1/5] eventdev/rx_adapter: add event buffer size configurability",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "15e09b22479aca28bb1c2d7efc3a2104b6f1a9b4",
    "submitter": {
        "id": 2280,
        "url": "http://patches.dpdk.org/api/people/2280/?format=api",
        "name": "Naga Harish K, S V",
        "email": "s.v.naga.harish.k@intel.com"
    },
    "delegate": {
        "id": 310,
        "url": "http://patches.dpdk.org/api/users/310/?format=api",
        "username": "jerin",
        "first_name": "Jerin",
        "last_name": "Jacob",
        "email": "jerinj@marvell.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20211005143846.1058491-1-s.v.naga.harish.k@intel.com/mbox/",
    "series": [
        {
            "id": 19392,
            "url": "http://patches.dpdk.org/api/series/19392/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=19392",
            "date": "2021-10-05T14:38:43",
            "name": "[v6,1/5] eventdev/rx_adapter: add event buffer size configurability",
            "version": 6,
            "mbox": "http://patches.dpdk.org/series/19392/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/100520/comments/",
    "check": "warning",
    "checks": "http://patches.dpdk.org/api/patches/100520/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 851CEA0C4C;\n\tTue,  5 Oct 2021 16:40:08 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 1CE15413AF;\n\tTue,  5 Oct 2021 16:39:54 +0200 (CEST)",
            "from mga17.intel.com (mga17.intel.com [192.55.52.151])\n by mails.dpdk.org (Postfix) with ESMTP id 10E4C4135E\n for <dev@dpdk.org>; Tue,  5 Oct 2021 16:39:50 +0200 (CEST)",
            "from orsmga008.jf.intel.com ([10.7.209.65])\n by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 05 Oct 2021 07:38:50 -0700",
            "from txandevlnx322.an.intel.com ([10.123.117.44])\n by orsmga008.jf.intel.com with ESMTP; 05 Oct 2021 07:38:49 -0700"
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6200,9189,10128\"; a=\"206572640\"",
            "E=Sophos;i=\"5.85,349,1624345200\"; d=\"scan'208\";a=\"206572640\"",
            "E=Sophos;i=\"5.85,349,1624345200\"; d=\"scan'208\";a=\"488060075\""
        ],
        "X-ExtLoop1": "1",
        "From": "Naga Harish K S V <s.v.naga.harish.k@intel.com>",
        "To": "jerinj@marvell.com,\n\tjay.jayatheerthan@intel.com",
        "Cc": "dev@dpdk.org,\n\tGanapati Kundapura <ganapati.kundapura@intel.com>",
        "Date": "Tue,  5 Oct 2021 09:38:42 -0500",
        "Message-Id": "<20211005143846.1058491-1-s.v.naga.harish.k@intel.com>",
        "X-Mailer": "git-send-email 2.23.0",
        "In-Reply-To": "<20211004054108.3890018-1-s.v.naga.harish.k@intel.com>",
        "References": "<20211004054108.3890018-1-s.v.naga.harish.k@intel.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dpdk-dev] [PATCH v6 1/5] eventdev/rx_adapter: add event buffer\n size configurability",
        "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": "Currently event buffer is static array with a default size defined\ninternally.\n\nTo configure event buffer size from application,\n``rte_event_eth_rx_adapter_create_with_params`` api is added which\ntakes ``struct rte_event_eth_rx_adapter_params`` to configure event\nbuffer size in addition other params . The event buffer size is\nrounded up for better buffer utilization and performance . In case\nof NULL params argument, default event buffer size is used.\n\nSigned-off-by: Naga Harish K S V <s.v.naga.harish.k@intel.com>\nSigned-off-by: Ganapati Kundapura <ganapati.kundapura@intel.com>\n\n---\nv6:\n* address code style related review comments\n\nv5:\n* reverted queue conf get unit test change\n\nv4:\n* rebased with latest dpdk-next-eventdev branch\n* changed queue conf get unit test\n\nv3:\n* updated documentation and code comments as per review comments.\n* updated new create api test case name with suitable one.\n\nv2:\n* Updated header file and rx adapter documentation as per review comments.\n* new api name is modified as rte_event_eth_rx_adapter_create_with_params\n  as per review comments.\n* rxa_params pointer argument Value NULL is allowed to represent the\n  default values\n\nv1:\n* Initial implementation with documentation and unit tests.\n---\n---\n .../prog_guide/event_ethernet_rx_adapter.rst  |  7 ++\n lib/eventdev/rte_event_eth_rx_adapter.c       | 98 +++++++++++++++++--\n lib/eventdev/rte_event_eth_rx_adapter.h       | 41 +++++++-\n lib/eventdev/version.map                      |  2 +\n 4 files changed, 140 insertions(+), 8 deletions(-)",
    "diff": "diff --git a/doc/guides/prog_guide/event_ethernet_rx_adapter.rst b/doc/guides/prog_guide/event_ethernet_rx_adapter.rst\nindex ce23d8a474..8526aecf57 100644\n--- a/doc/guides/prog_guide/event_ethernet_rx_adapter.rst\n+++ b/doc/guides/prog_guide/event_ethernet_rx_adapter.rst\n@@ -62,6 +62,13 @@ service function and needs to create an event port for it. The callback is\n expected to fill the ``struct rte_event_eth_rx_adapter_conf structure``\n passed to it.\n \n+If the application desires to control the event buffer size, it can use the\n+``rte_event_eth_rx_adapter_create_with_params()`` api. The event buffer size is\n+specified using ``struct rte_event_eth_rx_adapter_params::event_buf_size``.\n+The function is passed the event device to be associated with the adapter\n+and port configuration for the adapter to setup an event port if the\n+adapter needs to use a service function.\n+\n Adding Rx Queues to the Adapter Instance\n ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n \ndiff --git a/lib/eventdev/rte_event_eth_rx_adapter.c b/lib/eventdev/rte_event_eth_rx_adapter.c\nindex 10491ca07b..5ccea168ea 100644\n--- a/lib/eventdev/rte_event_eth_rx_adapter.c\n+++ b/lib/eventdev/rte_event_eth_rx_adapter.c\n@@ -85,7 +85,9 @@ struct rte_eth_event_enqueue_buffer {\n \t/* Count of events in this buffer */\n \tuint16_t count;\n \t/* Array of events in this buffer */\n-\tstruct rte_event events[ETH_EVENT_BUFFER_SIZE];\n+\tstruct rte_event *events;\n+\t/* size of event buffer */\n+\tuint16_t events_size;\n \t/* Event enqueue happens from head */\n \tuint16_t head;\n \t/* New packets from rte_eth_rx_burst is enqued from tail */\n@@ -946,7 +948,7 @@ rxa_buffer_mbufs(struct rte_event_eth_rx_adapter *rx_adapter,\n \t\tdropped = 0;\n \t\tnb_cb = dev_info->cb_fn(eth_dev_id, rx_queue_id,\n \t\t\t\t       buf->last |\n-\t\t\t\t       (RTE_DIM(buf->events) & ~buf->last_mask),\n+\t\t\t\t       (buf->events_size & ~buf->last_mask),\n \t\t\t\t       buf->count >= BATCH_SIZE ?\n \t\t\t\t\t\tbuf->count - BATCH_SIZE : 0,\n \t\t\t\t       &buf->events[buf->tail],\n@@ -972,7 +974,7 @@ rxa_pkt_buf_available(struct rte_eth_event_enqueue_buffer *buf)\n \tuint32_t nb_req = buf->tail + BATCH_SIZE;\n \n \tif (!buf->last) {\n-\t\tif (nb_req <= RTE_DIM(buf->events))\n+\t\tif (nb_req <= buf->events_size)\n \t\t\treturn true;\n \n \t\tif (buf->head >= BATCH_SIZE) {\n@@ -2206,12 +2208,15 @@ rxa_ctrl(uint8_t id, int start)\n \treturn 0;\n }\n \n-int\n-rte_event_eth_rx_adapter_create_ext(uint8_t id, uint8_t dev_id,\n-\t\t\t\trte_event_eth_rx_adapter_conf_cb conf_cb,\n-\t\t\t\tvoid *conf_arg)\n+static int\n+rxa_create(uint8_t id, uint8_t dev_id,\n+\t   struct rte_event_eth_rx_adapter_params *rxa_params,\n+\t   rte_event_eth_rx_adapter_conf_cb conf_cb,\n+\t   void *conf_arg)\n {\n \tstruct rte_event_eth_rx_adapter *rx_adapter;\n+\tstruct rte_eth_event_enqueue_buffer *buf;\n+\tstruct rte_event *events;\n \tint ret;\n \tint socket_id;\n \tuint16_t i;\n@@ -2226,6 +2231,7 @@ rte_event_eth_rx_adapter_create_ext(uint8_t id, uint8_t dev_id,\n \n \tRTE_EVENT_ETH_RX_ADAPTER_ID_VALID_OR_ERR_RET(id, -EINVAL);\n \tRTE_EVENTDEV_VALID_DEVID_OR_ERR_RET(dev_id, -EINVAL);\n+\n \tif (conf_cb == NULL)\n \t\treturn -EINVAL;\n \n@@ -2273,11 +2279,30 @@ rte_event_eth_rx_adapter_create_ext(uint8_t id, uint8_t dev_id,\n \t\trte_free(rx_adapter);\n \t\treturn -ENOMEM;\n \t}\n+\n \trte_spinlock_init(&rx_adapter->rx_lock);\n+\n \tfor (i = 0; i < RTE_MAX_ETHPORTS; i++)\n \t\trx_adapter->eth_devices[i].dev = &rte_eth_devices[i];\n \n+\t/* Rx adapter event buffer allocation */\n+\tbuf = &rx_adapter->event_enqueue_buffer;\n+\tbuf->events_size = rxa_params->event_buf_size;\n+\n+\tevents = rte_zmalloc_socket(rx_adapter->mem_name,\n+\t\t\t\t    buf->events_size * sizeof(*events),\n+\t\t\t\t    0, socket_id);\n+\tif (events == NULL) {\n+\t\tRTE_EDEV_LOG_ERR(\"Failed to allocate mem for event buffer\\n\");\n+\t\trte_free(rx_adapter->eth_devices);\n+\t\trte_free(rx_adapter);\n+\t\treturn -ENOMEM;\n+\t}\n+\n+\trx_adapter->event_enqueue_buffer.events = events;\n+\n \tevent_eth_rx_adapter[id] = rx_adapter;\n+\n \tif (conf_cb == rxa_default_conf_cb)\n \t\trx_adapter->default_cb_arg = 1;\n \n@@ -2293,6 +2318,61 @@ rte_event_eth_rx_adapter_create_ext(uint8_t id, uint8_t dev_id,\n \treturn 0;\n }\n \n+int\n+rte_event_eth_rx_adapter_create_ext(uint8_t id, uint8_t dev_id,\n+\t\t\t\trte_event_eth_rx_adapter_conf_cb conf_cb,\n+\t\t\t\tvoid *conf_arg)\n+{\n+\tstruct rte_event_eth_rx_adapter_params rxa_params = {0};\n+\n+\t/* use default values for adapter params */\n+\trxa_params.event_buf_size = ETH_EVENT_BUFFER_SIZE;\n+\n+\treturn rxa_create(id, dev_id, &rxa_params, conf_cb, conf_arg);\n+}\n+\n+int\n+rte_event_eth_rx_adapter_create_with_params(uint8_t id, uint8_t dev_id,\n+\t\t\tstruct rte_event_port_conf *port_config,\n+\t\t\tstruct rte_event_eth_rx_adapter_params *rxa_params)\n+{\n+\tstruct rte_event_port_conf *pc;\n+\tint ret;\n+\tstruct rte_event_eth_rx_adapter_params temp_params = {0};\n+\n+\tif (port_config == NULL)\n+\t\treturn -EINVAL;\n+\n+\t/* use default values if rxa_params is NULL */\n+\tif (rxa_params == NULL) {\n+\t\trxa_params = &temp_params;\n+\t\trxa_params->event_buf_size = ETH_EVENT_BUFFER_SIZE;\n+\t}\n+\n+\tif (rxa_params->event_buf_size == 0)\n+\t\treturn -EINVAL;\n+\n+\tpc = rte_malloc(NULL, sizeof(*pc), 0);\n+\tif (pc == NULL)\n+\t\treturn -ENOMEM;\n+\n+\t*pc = *port_config;\n+\n+\t/* adjust event buff size with BATCH_SIZE used for fetching packets\n+\t * from NIC rx queues to get full buffer utilization and prevent\n+\t * unnecessary rollovers.\n+\t */\n+\trxa_params->event_buf_size = RTE_ALIGN(rxa_params->event_buf_size,\n+\t\t\t\t\t       BATCH_SIZE);\n+\trxa_params->event_buf_size += (BATCH_SIZE + BATCH_SIZE);\n+\n+\tret = rxa_create(id, dev_id, rxa_params, rxa_default_conf_cb, pc);\n+\tif (ret)\n+\t\trte_free(pc);\n+\n+\treturn ret;\n+}\n+\n int\n rte_event_eth_rx_adapter_create(uint8_t id, uint8_t dev_id,\n \t\tstruct rte_event_port_conf *port_config)\n@@ -2302,12 +2382,14 @@ rte_event_eth_rx_adapter_create(uint8_t id, uint8_t dev_id,\n \n \tif (port_config == NULL)\n \t\treturn -EINVAL;\n+\n \tRTE_EVENT_ETH_RX_ADAPTER_ID_VALID_OR_ERR_RET(id, -EINVAL);\n \n \tpc = rte_malloc(NULL, sizeof(*pc), 0);\n \tif (pc == NULL)\n \t\treturn -ENOMEM;\n \t*pc = *port_config;\n+\n \tret = rte_event_eth_rx_adapter_create_ext(id, dev_id,\n \t\t\t\t\trxa_default_conf_cb,\n \t\t\t\t\tpc);\n@@ -2336,6 +2418,7 @@ rte_event_eth_rx_adapter_free(uint8_t id)\n \tif (rx_adapter->default_cb_arg)\n \t\trte_free(rx_adapter->conf_arg);\n \trte_free(rx_adapter->eth_devices);\n+\trte_free(rx_adapter->event_enqueue_buffer.events);\n \trte_free(rx_adapter);\n \tevent_eth_rx_adapter[id] = NULL;\n \n@@ -2711,6 +2794,7 @@ rte_event_eth_rx_adapter_stats_get(uint8_t id,\n \n \tstats->rx_packets += dev_stats_sum.rx_packets;\n \tstats->rx_enq_count += dev_stats_sum.rx_enq_count;\n+\n \treturn 0;\n }\n \ndiff --git a/lib/eventdev/rte_event_eth_rx_adapter.h b/lib/eventdev/rte_event_eth_rx_adapter.h\nindex 470543e434..846ca569e9 100644\n--- a/lib/eventdev/rte_event_eth_rx_adapter.h\n+++ b/lib/eventdev/rte_event_eth_rx_adapter.h\n@@ -26,6 +26,7 @@\n  * The ethernet Rx event adapter's functions are:\n  *  - rte_event_eth_rx_adapter_create_ext()\n  *  - rte_event_eth_rx_adapter_create()\n+ *  - rte_event_eth_rx_adapter_create_with_params()\n  *  - rte_event_eth_rx_adapter_free()\n  *  - rte_event_eth_rx_adapter_queue_add()\n  *  - rte_event_eth_rx_adapter_queue_del()\n@@ -37,7 +38,7 @@\n  *\n  * The application creates an ethernet to event adapter using\n  * rte_event_eth_rx_adapter_create_ext() or rte_event_eth_rx_adapter_create()\n- * functions.\n+ * or rte_event_eth_rx_adapter_create_with_params() functions.\n  * The adapter needs to know which ethernet rx queues to poll for mbufs as well\n  * as event device parameters such as the event queue identifier, event\n  * priority and scheduling type that the adapter should use when constructing\n@@ -257,6 +258,17 @@ struct rte_event_eth_rx_adapter_vector_limits {\n \t */\n };\n \n+/**\n+ * A structure to hold adapter config params\n+ */\n+struct rte_event_eth_rx_adapter_params {\n+\tuint16_t event_buf_size;\n+\t/**< size of event buffer for the adapter.\n+\t * This value is rounded up for better buffer utilization\n+\t * and performance.\n+\t */\n+};\n+\n /**\n  *\n  * Callback function invoked by the SW adapter before it continues\n@@ -357,6 +369,33 @@ int rte_event_eth_rx_adapter_create_ext(uint8_t id, uint8_t dev_id,\n int rte_event_eth_rx_adapter_create(uint8_t id, uint8_t dev_id,\n \t\t\t\tstruct rte_event_port_conf *port_config);\n \n+/**\n+ * This is a variant of rte_event_eth_rx_adapter_create() with additional\n+ * adapter params specified in ``struct rte_event_eth_rx_adapter_params``.\n+ *\n+ * @param id\n+ *  The identifier of the ethernet Rx event adapter.\n+ *\n+ * @param dev_id\n+ *  The identifier of the event device to configure.\n+ *\n+ * @param port_config\n+ *  Argument of type *rte_event_port_conf* that is passed to the conf_cb\n+ *  function.\n+ *\n+ * @param rxa_params\n+ *  Pointer to struct rte_event_eth_rx_adapter_params.\n+ *  In case of NULL, default values are used.\n+ *\n+ * @return\n+ *   - 0: Success\n+ *   - <0: Error code on failure\n+ */\n+__rte_experimental\n+int rte_event_eth_rx_adapter_create_with_params(uint8_t id, uint8_t dev_id,\n+\t\t\tstruct rte_event_port_conf *port_config,\n+\t\t\tstruct rte_event_eth_rx_adapter_params *rxa_params);\n+\n /**\n  * Free an event adapter\n  *\ndiff --git a/lib/eventdev/version.map b/lib/eventdev/version.map\nindex 9f280160fa..7de18497a6 100644\n--- a/lib/eventdev/version.map\n+++ b/lib/eventdev/version.map\n@@ -138,6 +138,8 @@ EXPERIMENTAL {\n \t__rte_eventdev_trace_port_setup;\n \t# added in 20.11\n \trte_event_pmd_pci_probe_named;\n+\t# added in 21.11\n+\trte_event_eth_rx_adapter_create_with_params;\n \n \t#added in 21.05\n \trte_event_vector_pool_create;\n",
    "prefixes": [
        "v6",
        "1/5"
    ]
}