get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 130589,
    "url": "http://patches.dpdk.org/api/patches/130589/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20230821152857.808884-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": "<20230821152857.808884-1-s.v.naga.harish.k@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20230821152857.808884-1-s.v.naga.harish.k@intel.com",
    "date": "2023-08-21T15:28:57",
    "name": "[v6] eventdev/eth_rx: add new adapter create API",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "c12633e6ee24ea2925161f9c42e438b531993ee7",
    "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/20230821152857.808884-1-s.v.naga.harish.k@intel.com/mbox/",
    "series": [
        {
            "id": 29296,
            "url": "http://patches.dpdk.org/api/series/29296/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=29296",
            "date": "2023-08-21T15:28:57",
            "name": "[v6] eventdev/eth_rx: add new adapter create API",
            "version": 6,
            "mbox": "http://patches.dpdk.org/series/29296/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/130589/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/130589/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 5113E430C3;\n\tMon, 21 Aug 2023 17:29:32 +0200 (CEST)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 235F9427E9;\n\tMon, 21 Aug 2023 17:29:32 +0200 (CEST)",
            "from mgamail.intel.com (mgamail.intel.com [134.134.136.31])\n by mails.dpdk.org (Postfix) with ESMTP id BDF9C40DF5\n for <dev@dpdk.org>; Mon, 21 Aug 2023 17:29:29 +0200 (CEST)",
            "from orsmga003.jf.intel.com ([10.7.209.27])\n by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 21 Aug 2023 08:29:02 -0700",
            "from txandevlnx321.an.intel.com ([10.123.117.43])\n by orsmga003.jf.intel.com with ESMTP; 21 Aug 2023 08:29:00 -0700"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple;\n d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n t=1692631770; x=1724167770;\n h=from:to:cc:subject:date:message-id:in-reply-to:\n references:mime-version:content-transfer-encoding;\n bh=NR6hhNJj5M13N+zBUc+lwlc1C4esYz0LvN8RpTK0+YI=;\n b=jCRvoZFnP2cVbuNxOOXupuh/fj4qNVnYGEMaXIfS9sjna4b4EwGPp7kd\n btcI8IrJdOwxfSyaEdVfCjTkIQY/6NyU1bVwjegYEfPsWXUMwWrfDMQPr\n lWAPjHNwGRoPojdr4EAKQUIeTf75pLL75U5aA+XdppP6T5Q2zQELemZ+g\n lFkE7UevD0m9qjAEHhKsLuO2MukUEScEniAOgdOCaWPh24KzaMU//ZiiL\n 6Lh0W3ZRxzjXbUiP6ClvzyL/xNXXZ1VNfB4cTZh1BY/SPplz9qHZOzfJq\n anCYwnYRuELrSBTWnype8n2KGNnkWh0enKGQkQdmtfQJIDO5kBAFibOKR Q==;",
        "X-IronPort-AV": [
            "E=McAfee;i=\"6600,9927,10809\"; a=\"437550354\"",
            "E=Sophos;i=\"6.01,190,1684825200\"; d=\"scan'208\";a=\"437550354\"",
            "E=McAfee;i=\"6600,9927,10809\"; a=\"685696358\"",
            "E=Sophos;i=\"6.01,190,1684825200\"; d=\"scan'208\";a=\"685696358\""
        ],
        "X-ExtLoop1": "1",
        "From": "Naga Harish K S V <s.v.naga.harish.k@intel.com>",
        "To": "jerinjacobk@gmail.com",
        "Cc": "dev@dpdk.org, erik.g.carrillo@intel.com, abhinandan.gujjar@intel.com,\n timothy.mcdaniel@intel.com, pbhagavatula@marvell.com, sthotton@marvell.com,\n hemant.agrawal@nxp.com, sachin.saxena@oss.nxp.com,\n harry.van.haaren@intel.com, mattias.ronnblom@ericsson.com,\n liangma@liangbit.com, peter.mccarthy@intel.com, jay.jayatheerthan@intel.com",
        "Subject": "[PATCH v6] eventdev/eth_rx:  add new adapter create API",
        "Date": "Mon, 21 Aug 2023 10:28:57 -0500",
        "Message-Id": "<20230821152857.808884-1-s.v.naga.harish.k@intel.com>",
        "X-Mailer": "git-send-email 2.23.0",
        "In-Reply-To": "<20230818093736.454349-1-s.v.naga.harish.k@intel.com>",
        "References": "<20230818093736.454349-1-s.v.naga.harish.k@intel.com>",
        "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": "Add new API \"rte_event_eth_rx_adapter_create_ext_with_params()\" for\ncreating Rx adapter instance. This API is similar to\nrte_event_eth_rx_adapter_create_ext() with an additional input\nargument for adapter configuration parameters of type\n\"struct rte_event_eth_rx_adapter_params\".\n\nSigned-off-by: Naga Harish K S V <s.v.naga.harish.k@intel.com>\n---\nv2:\n * Fix warning\nv3:\n * remove __rte_cold hint as per review comments\nv4:\n * address review comments\nv5:\n * Update release notes document\nv6:\n * incorporate review comments\n---\n---\n app/test/test_event_eth_rx_adapter.c          | 87 +++++++++++++++++++\n .../prog_guide/event_ethernet_rx_adapter.rst  |  3 +\n doc/guides/rel_notes/release_23_11.rst        |  5 ++\n lib/eventdev/rte_event_eth_rx_adapter.c       | 75 +++++++++++-----\n lib/eventdev/rte_event_eth_rx_adapter.h       | 37 +++++++-\n lib/eventdev/version.map                      |  3 +\n 6 files changed, 187 insertions(+), 23 deletions(-)",
    "diff": "diff --git a/app/test/test_event_eth_rx_adapter.c b/app/test/test_event_eth_rx_adapter.c\nindex 52d146f97c..2d5e197666 100644\n--- a/app/test/test_event_eth_rx_adapter.c\n+++ b/app/test/test_event_eth_rx_adapter.c\n@@ -444,6 +444,91 @@ adapter_create_with_params(void)\n \treturn TEST_SUCCESS;\n }\n \n+static int\n+test_port_conf_cb(uint8_t id, uint8_t event_dev_id,\n+\t\t  struct rte_event_eth_rx_adapter_conf *conf,\n+\t\t  void *conf_arg)\n+{\n+\tstruct rte_event_port_conf *port_conf, def_port_conf = {0};\n+\tuint32_t started;\n+\tstatic int port_allocated;\n+\tstatic uint8_t port_id;\n+\tint ret;\n+\n+\tif (port_allocated) {\n+\t\tconf->event_port_id = port_id;\n+\t\tconf->max_nb_rx = 128;\n+\t\treturn 0;\n+\t}\n+\n+\tRTE_SET_USED(id);\n+\n+\tret = rte_event_dev_attr_get(event_dev_id, RTE_EVENT_DEV_ATTR_STARTED,\n+\t\t\t\t     &started);\n+\tif (ret < 0)\n+\t\treturn ret;\n+\n+\tif (started)\n+\t\trte_event_dev_stop(event_dev_id);\n+\n+\tport_id = 1;\n+\n+\tif (conf_arg != NULL)\n+\t\tport_conf = conf_arg;\n+\telse {\n+\t\tport_conf = &def_port_conf;\n+\t\tret = rte_event_port_default_conf_get(event_dev_id, port_id,\n+\t\t\t\t\t\t      port_conf);\n+\t\tif (ret < 0)\n+\t\t\treturn ret;\n+\t}\n+\n+\tret = rte_event_port_setup(event_dev_id, port_id, port_conf);\n+\tif (ret < 0)\n+\t\treturn ret;\n+\n+\tconf->event_port_id = port_id;\n+\tconf->max_nb_rx = 128;\n+\n+\tif (started)\n+\t\trte_event_dev_start(event_dev_id);\n+\n+\t/* Reuse this port number next time this is called */\n+\tport_allocated = 1;\n+\n+\treturn 0;\n+}\n+\n+static int\n+adapter_create_ext_with_params(void)\n+{\n+\tint err;\n+\tstruct rte_event_dev_info dev_info;\n+\tstruct rte_event_eth_rx_adapter_params rxa_params;\n+\n+\terr = rte_event_dev_info_get(TEST_DEV_ID, &dev_info);\n+\tTEST_ASSERT(err == 0, \"Expected 0 got %d\", err);\n+\n+\trxa_params.use_queue_event_buf = false;\n+\trxa_params.event_buf_size = 0;\n+\n+\terr = rte_event_eth_rx_adapter_create_ext_with_params(TEST_INST_ID,\n+\t\t\tTEST_DEV_ID, test_port_conf_cb, NULL, &rxa_params);\n+\tTEST_ASSERT(err == -EINVAL, \"Expected -EINVAL got %d\", err);\n+\n+\trxa_params.event_buf_size = 128;\n+\n+\terr = rte_event_eth_rx_adapter_create_ext_with_params(TEST_INST_ID,\n+\t\t\tTEST_DEV_ID, test_port_conf_cb, NULL, &rxa_params);\n+\tTEST_ASSERT(err == 0, \"Expected 0 got %d\", err);\n+\n+\terr = rte_event_eth_rx_adapter_create_ext_with_params(TEST_INST_ID,\n+\t\t\tTEST_DEV_ID, test_port_conf_cb, NULL, &rxa_params);\n+\tTEST_ASSERT(err == -EEXIST, \"Expected -EEXIST got %d\", err);\n+\n+\treturn TEST_SUCCESS;\n+}\n+\n static int\n adapter_queue_event_buf_test(void)\n {\n@@ -1337,6 +1422,8 @@ static struct unit_test_suite event_eth_rx_tests = {\n \t\t\t     adapter_pollq_instance_get),\n \t\tTEST_CASE_ST(adapter_create, adapter_free,\n \t\t\t     adapter_get_set_params),\n+\t\tTEST_CASE_ST(adapter_create_ext_with_params, adapter_free,\n+\t\t\t     adapter_start_stop),\n \t\tTEST_CASES_END() /**< NULL terminate unit test array */\n \t}\n };\ndiff --git a/doc/guides/prog_guide/event_ethernet_rx_adapter.rst b/doc/guides/prog_guide/event_ethernet_rx_adapter.rst\nindex 7c5e73b9fd..2e68cca798 100644\n--- a/doc/guides/prog_guide/event_ethernet_rx_adapter.rst\n+++ b/doc/guides/prog_guide/event_ethernet_rx_adapter.rst\n@@ -71,6 +71,9 @@ set to true. The function is passed the event device to be associated with\n the adapter and port configuration for the adapter to setup an event port\n if the adapter needs to use a service function.\n \n+If the application desires to control both the event port allocation and event\n+buffer size, ``rte_event_eth_rx_adapter_create_ext_with_params()`` can be used.\n+\n Event device configuration for service based adapter\n ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n \ndiff --git a/doc/guides/rel_notes/release_23_11.rst b/doc/guides/rel_notes/release_23_11.rst\nindex 4411bb32c1..81b629ea2e 100644\n--- a/doc/guides/rel_notes/release_23_11.rst\n+++ b/doc/guides/rel_notes/release_23_11.rst\n@@ -72,6 +72,11 @@ New Features\n      Also, make sure to start the actual text at the margin.\n      =======================================================\n \n+* **Added new Ethernet Rx Adapter create API.**\n+\n+  * Added new API ``rte_event_eth_rx_adapter_create_ext_with_params()``\n+    for creating Rx adapter instance for the applications desire to\n+    control both the event port allocation and event buffer size.\n \n Removed Items\n -------------\ndiff --git a/lib/eventdev/rte_event_eth_rx_adapter.c b/lib/eventdev/rte_event_eth_rx_adapter.c\nindex f7f93ccdfd..1574c89678 100644\n--- a/lib/eventdev/rte_event_eth_rx_adapter.c\n+++ b/lib/eventdev/rte_event_eth_rx_adapter.c\n@@ -2485,6 +2485,39 @@ rxa_create(uint8_t id, uint8_t dev_id,\n \treturn 0;\n }\n \n+static int __rte_cold\n+rxa_config_params_validate(struct rte_event_eth_rx_adapter_params *rxa_params,\n+\t\t\t   struct rte_event_eth_rx_adapter_params *temp_params)\n+{\n+\tif (rxa_params == NULL) {\n+\t\t/* use default values if rxa_params is NULL */\n+\t\ttemp_params->event_buf_size = ETH_EVENT_BUFFER_SIZE;\n+\t\ttemp_params->use_queue_event_buf = false;\n+\t} else if (!rxa_params->use_queue_event_buf &&\n+\t\t    rxa_params->event_buf_size == 0) {\n+\t\tRTE_EDEV_LOG_ERR(\"event buffer size can't be zero\\n\");\n+\t\treturn -EINVAL;\n+\t} else if (rxa_params->use_queue_event_buf &&\n+\t\t   rxa_params->event_buf_size != 0) {\n+\t\tRTE_EDEV_LOG_ERR(\"event buffer size needs to be configured \"\n+\t\t\t\t \"as part of queue add\\n\");\n+\t\treturn -EINVAL;\n+\t}\n+\n+\t*temp_params = *rxa_params;\n+\t/* adjust event buff size with BATCH_SIZE used for fetching\n+\t * packets from NIC rx queues to get full buffer utilization\n+\t * and prevent unnecessary rollovers.\n+\t */\n+\tif (!temp_params->use_queue_event_buf) {\n+\t\ttemp_params->event_buf_size =\n+\t\t\tRTE_ALIGN(temp_params->event_buf_size, BATCH_SIZE);\n+\t\ttemp_params->event_buf_size += (BATCH_SIZE + BATCH_SIZE);\n+\t}\n+\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@@ -2511,27 +2544,9 @@ rte_event_eth_rx_adapter_create_with_params(uint8_t id, uint8_t dev_id,\n \tif (port_config == NULL)\n \t\treturn -EINVAL;\n \n-\tif (rxa_params == NULL) {\n-\t\t/* use default values if rxa_params is NULL */\n-\t\trxa_params = &temp_params;\n-\t\trxa_params->event_buf_size = ETH_EVENT_BUFFER_SIZE;\n-\t\trxa_params->use_queue_event_buf = false;\n-\t} else if ((!rxa_params->use_queue_event_buf &&\n-\t\t    rxa_params->event_buf_size == 0) ||\n-\t\t   (rxa_params->use_queue_event_buf &&\n-\t\t    rxa_params->event_buf_size != 0)) {\n-\t\tRTE_EDEV_LOG_ERR(\"Invalid adapter params\\n\");\n-\t\treturn -EINVAL;\n-\t} else if (!rxa_params->use_queue_event_buf) {\n-\t\t/* adjust event buff size with BATCH_SIZE used for fetching\n-\t\t * packets from NIC rx queues to get full buffer utilization\n-\t\t * and prevent unnecessary rollovers.\n-\t\t */\n-\n-\t\trxa_params->event_buf_size =\n-\t\t\tRTE_ALIGN(rxa_params->event_buf_size, BATCH_SIZE);\n-\t\trxa_params->event_buf_size += (BATCH_SIZE + BATCH_SIZE);\n-\t}\n+\tret = rxa_config_params_validate(rxa_params, &temp_params);\n+\tif (ret != 0)\n+\t\treturn ret;\n \n \tpc = rte_malloc(NULL, sizeof(*pc), 0);\n \tif (pc == NULL)\n@@ -2539,7 +2554,7 @@ rte_event_eth_rx_adapter_create_with_params(uint8_t id, uint8_t dev_id,\n \n \t*pc = *port_config;\n \n-\tret = rxa_create(id, dev_id, rxa_params, rxa_default_conf_cb, pc);\n+\tret = rxa_create(id, dev_id, &temp_params, rxa_default_conf_cb, pc);\n \tif (ret)\n \t\trte_free(pc);\n \n@@ -2549,6 +2564,22 @@ rte_event_eth_rx_adapter_create_with_params(uint8_t id, uint8_t dev_id,\n \treturn ret;\n }\n \n+int\n+rte_event_eth_rx_adapter_create_ext_with_params(uint8_t id, uint8_t dev_id,\n+\t\t\trte_event_eth_rx_adapter_conf_cb conf_cb,\n+\t\t\tvoid *conf_arg,\n+\t\t\tstruct rte_event_eth_rx_adapter_params *rxa_params)\n+{\n+\tstruct rte_event_eth_rx_adapter_params temp_params = {0};\n+\tint ret;\n+\n+\tret = rxa_config_params_validate(rxa_params, &temp_params);\n+\tif (ret != 0)\n+\t\treturn ret;\n+\n+\treturn rxa_create(id, dev_id, &temp_params, conf_cb, conf_arg);\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)\ndiff --git a/lib/eventdev/rte_event_eth_rx_adapter.h b/lib/eventdev/rte_event_eth_rx_adapter.h\nindex fe2a6bdd2c..842581e87e 100644\n--- a/lib/eventdev/rte_event_eth_rx_adapter.h\n+++ b/lib/eventdev/rte_event_eth_rx_adapter.h\n@@ -27,6 +27,7 @@\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_create_ext_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@@ -45,7 +46,8 @@\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- * or rte_event_eth_rx_adapter_create_with_params() functions.\n+ * or rte_event_eth_rx_adapter_create_with_params() or\n+ * rte_event_eth_rx_adapter_create_ext_with_params() functions.\n  *\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@@ -469,6 +471,39 @@ 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+ * This is a variant of rte_event_eth_rx_adapter_create_ext() 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 conf_cb\n+ *  Callback function that fills in members of a\n+ *  struct rte_event_eth_rx_adapter_conf struct passed into\n+ *  it.\n+ *\n+ * @param conf_arg\n+ *  Argument that is passed to the conf_cb 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\n+rte_event_eth_rx_adapter_create_ext_with_params(uint8_t id, uint8_t dev_id,\n+\t\t\trte_event_eth_rx_adapter_conf_cb conf_cb,\n+\t\t\tvoid *conf_arg,\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 b03c10d99f..7ce09a87bb 100644\n--- a/lib/eventdev/version.map\n+++ b/lib/eventdev/version.map\n@@ -131,6 +131,9 @@ EXPERIMENTAL {\n \trte_event_eth_tx_adapter_runtime_params_init;\n \trte_event_eth_tx_adapter_runtime_params_set;\n \trte_event_timer_remaining_ticks_get;\n+\n+\t# added in 23.11\n+\trte_event_eth_rx_adapter_create_ext_with_params;\n };\n \n INTERNAL {\n",
    "prefixes": [
        "v6"
    ]
}