[v2] eventdev/eth_rx: update adapter create APIs

Message ID 20230801135149.135550-1-s.v.naga.harish.k@intel.com (mailing list archive)
State Changes Requested, archived
Delegated to: Jerin Jacob
Headers
Series [v2] eventdev/eth_rx: update adapter create APIs |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/loongarch-compilation success Compilation OK
ci/loongarch-unit-testing success Unit Testing PASS
ci/Intel-compilation success Compilation OK
ci/intel-Testing success Testing PASS
ci/github-robot: build success github build: passed
ci/intel-Functional success Functional PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-aarch-unit-testing success Testing PASS
ci/iol-unit-testing success Testing PASS
ci/iol-aarch64-compile-testing success Testing PASS
ci/iol-x86_64-compile-testing success Testing PASS
ci/iol-testing success Testing PASS
ci/iol-x86_64-unit-testing success Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-broadcom-Performance success Performance Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-broadcom-Functional success Functional Testing PASS

Commit Message

Naga Harish K, S V Aug. 1, 2023, 1:51 p.m. UTC
  The adapter create APIs such as rte_event_eth_rx_adapter_create_ext() and
rte_event_eth_rx_adapter_create() are updated to take additional argument
as a pointer of type struct rte_event_eth_rx_adapter_params.

The API rte_event_eth_rx_adapter_create_with_params() is
deprecated.

Signed-off-by: Naga Harish K S V <s.v.naga.harish.k@intel.com>
---
v2:
*  Fix doxygen compile issue and warning
---
---
 app/test-eventdev/test_perf_common.c          |   2 +-
 app/test-eventdev/test_pipeline_common.c      |   2 +-
 app/test/test_event_eth_rx_adapter.c          |  22 ++--
 app/test/test_security_inline_proto.c         |   2 +-
 .../pipeline_worker_generic.c                 |   2 +-
 .../eventdev_pipeline/pipeline_worker_tx.c    |   2 +-
 examples/ipsec-secgw/event_helper.c           |   2 +-
 examples/l2fwd-event/l2fwd_event_generic.c    |   2 +-
 .../l2fwd-event/l2fwd_event_internal_port.c   |   2 +-
 examples/l3fwd/l3fwd_event_generic.c          |   2 +-
 examples/l3fwd/l3fwd_event_internal_port.c    |   2 +-
 lib/eventdev/rte_event_eth_rx_adapter.c       | 100 ++++++++----------
 lib/eventdev/rte_event_eth_rx_adapter.h       |  36 ++-----
 lib/eventdev/version.map                      |   1 -
 14 files changed, 74 insertions(+), 105 deletions(-)
  

Comments

Jerin Jacob Aug. 1, 2023, 3:23 p.m. UTC | #1
On Tue, Aug 1, 2023 at 7:22 PM Naga Harish K S V
<s.v.naga.harish.k@intel.com> wrote:
>
> The adapter create APIs such as rte_event_eth_rx_adapter_create_ext() and
> rte_event_eth_rx_adapter_create() are updated to take additional argument
> as a pointer of type struct rte_event_eth_rx_adapter_params.
>
> The API rte_event_eth_rx_adapter_create_with_params() is
> deprecated.
>
> Signed-off-by: Naga Harish K S V <s.v.naga.harish.k@intel.com>

Pleas check v1 comment
http://mails.dpdk.org/archives/dev/2023-August/273602.html

> ---
> v2:
> *  Fix doxygen compile issue and warning
> ---
> ---
>  app/test-eventdev/test_perf_common.c          |   2 +-
>  app/test-eventdev/test_pipeline_common.c      |   2 +-
>  app/test/test_event_eth_rx_adapter.c          |  22 ++--
>  app/test/test_security_inline_proto.c         |   2 +-
>  .../pipeline_worker_generic.c                 |   2 +-
>  .../eventdev_pipeline/pipeline_worker_tx.c    |   2 +-
>  examples/ipsec-secgw/event_helper.c           |   2 +-
>  examples/l2fwd-event/l2fwd_event_generic.c    |   2 +-
>  .../l2fwd-event/l2fwd_event_internal_port.c   |   2 +-
>  examples/l3fwd/l3fwd_event_generic.c          |   2 +-
>  examples/l3fwd/l3fwd_event_internal_port.c    |   2 +-
>  lib/eventdev/rte_event_eth_rx_adapter.c       | 100 ++++++++----------
>  lib/eventdev/rte_event_eth_rx_adapter.h       |  36 ++-----
>  lib/eventdev/version.map                      |   1 -
>  14 files changed, 74 insertions(+), 105 deletions(-)
>
> diff --git a/app/test-eventdev/test_perf_common.c b/app/test-eventdev/test_perf_common.c
> index 5e0255cfeb..0c6c252f7d 100644
> --- a/app/test-eventdev/test_perf_common.c
> +++ b/app/test-eventdev/test_perf_common.c
> @@ -1002,7 +1002,7 @@ perf_event_rx_adapter_setup(struct evt_options *opt, uint8_t stride,
>                 }
>                 queue_conf.ev.queue_id = prod * stride;
>                 ret = rte_event_eth_rx_adapter_create(prod, opt->dev_id,
> -                               &prod_conf);
> +                               &prod_conf, NULL);
>                 if (ret) {
>                         evt_err("failed to create rx adapter[%d]", prod);
>                         return ret;
> diff --git a/app/test-eventdev/test_pipeline_common.c b/app/test-eventdev/test_pipeline_common.c
> index b111690b7c..5ae175f2c7 100644
> --- a/app/test-eventdev/test_pipeline_common.c
> +++ b/app/test-eventdev/test_pipeline_common.c
> @@ -571,7 +571,7 @@ pipeline_event_rx_adapter_setup(struct evt_options *opt, uint8_t stride,
>                 }
>                 queue_conf.ev.queue_id = prod * stride;
>                 ret = rte_event_eth_rx_adapter_create(prod, opt->dev_id,
> -                               &prod_conf);
> +                               &prod_conf, NULL);
>                 if (ret) {
>                         evt_err("failed to create rx adapter[%d]", prod);
>                         return ret;
> diff --git a/app/test/test_event_eth_rx_adapter.c b/app/test/test_event_eth_rx_adapter.c
> index 52d146f97c..42edcb625a 100644
> --- a/app/test/test_event_eth_rx_adapter.c
> +++ b/app/test/test_event_eth_rx_adapter.c
> @@ -401,7 +401,7 @@ adapter_create(void)
>         rx_p_conf.dequeue_depth = dev_info.max_event_port_dequeue_depth;
>         rx_p_conf.enqueue_depth = dev_info.max_event_port_enqueue_depth;
>         err = rte_event_eth_rx_adapter_create(TEST_INST_ID, TEST_DEV_ID,
> -                                       &rx_p_conf);
> +                                       &rx_p_conf, NULL);
>         TEST_ASSERT(err == 0, "Expected 0 got %d", err);
>
>         return err;
> @@ -427,17 +427,17 @@ adapter_create_with_params(void)
>         rxa_params.use_queue_event_buf = false;
>         rxa_params.event_buf_size = 0;
>
> -       err = rte_event_eth_rx_adapter_create_with_params(TEST_INST_ID,
> +       err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
>                                 TEST_DEV_ID, &rx_p_conf, &rxa_params);
>         TEST_ASSERT(err == -EINVAL, "Expected -EINVAL got %d", err);
>
>         rxa_params.use_queue_event_buf = true;
>
> -       err = rte_event_eth_rx_adapter_create_with_params(TEST_INST_ID,
> +       err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
>                                 TEST_DEV_ID, &rx_p_conf, &rxa_params);
>         TEST_ASSERT(err == 0, "Expected 0 got %d", err);
>
> -       err = rte_event_eth_rx_adapter_create_with_params(TEST_INST_ID,
> +       err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
>                                 TEST_DEV_ID, &rx_p_conf, &rxa_params);
>         TEST_ASSERT(err == -EEXIST, "Expected -EEXIST got %d", err);
>
> @@ -567,15 +567,15 @@ adapter_create_free(void)
>         };
>
>         err = rte_event_eth_rx_adapter_create(TEST_INST_ID, TEST_DEV_ID,
> -                                       NULL);
> +                                       NULL, NULL);
>         TEST_ASSERT(err == -EINVAL, "Expected -EINVAL got %d", err);
>
>         err = rte_event_eth_rx_adapter_create(TEST_INST_ID, TEST_DEV_ID,
> -                                       &rx_p_conf);
> +                                       &rx_p_conf, NULL);
>         TEST_ASSERT(err == 0, "Expected 0 got %d", err);
>
>         err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
> -                                       TEST_DEV_ID, &rx_p_conf);
> +                                       TEST_DEV_ID, &rx_p_conf, NULL);
>         TEST_ASSERT(err == -EEXIST, "Expected -EEXIST %d got %d", -EEXIST, err);
>
>         err = rte_event_eth_rx_adapter_free(TEST_INST_ID);
> @@ -605,20 +605,20 @@ adapter_create_free_with_params(void)
>                         .event_buf_size = 1024
>         };
>
> -       err = rte_event_eth_rx_adapter_create_with_params(TEST_INST_ID,
> +       err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
>                                 TEST_DEV_ID, NULL, NULL);
>         TEST_ASSERT(err == -EINVAL, "Expected -EINVAL got %d", err);
>
> -       err = rte_event_eth_rx_adapter_create_with_params(TEST_INST_ID,
> +       err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
>                                 TEST_DEV_ID, &rx_p_conf, &rxa_params);
>         TEST_ASSERT(err == 0, "Expected 0 got %d", err);
>
> -       err = rte_event_eth_rx_adapter_create_with_params(TEST_INST_ID,
> +       err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
>                                 TEST_DEV_ID, &rx_p_conf, &rxa_params);
>         TEST_ASSERT(err == -EEXIST, "Expected -EEXIST %d got %d", -EEXIST, err);
>
>         rxa_params.event_buf_size = 0;
> -       err = rte_event_eth_rx_adapter_create_with_params(TEST_INST_ID,
> +       err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
>                                 TEST_DEV_ID, &rx_p_conf, &rxa_params);
>         TEST_ASSERT(err == -EINVAL, "Expected -EINVAL got %d", err);
>
> diff --git a/app/test/test_security_inline_proto.c b/app/test/test_security_inline_proto.c
> index 45aa742c6b..fc240201a3 100644
> --- a/app/test/test_security_inline_proto.c
> +++ b/app/test/test_security_inline_proto.c
> @@ -1872,7 +1872,7 @@ event_inline_ipsec_testsuite_setup(void)
>
>         /* Create Rx adapter */
>         ret = rte_event_eth_rx_adapter_create(rx_adapter_id, eventdev_id,
> -                       &ev_port_conf);
> +                       &ev_port_conf, NULL);
>         if (ret < 0) {
>                 printf("Failed to create rx adapter %d\n", ret);
>                 return ret;
> diff --git a/examples/eventdev_pipeline/pipeline_worker_generic.c b/examples/eventdev_pipeline/pipeline_worker_generic.c
> index 783f68c91e..74510338ba 100644
> --- a/examples/eventdev_pipeline/pipeline_worker_generic.c
> +++ b/examples/eventdev_pipeline/pipeline_worker_generic.c
> @@ -436,7 +436,7 @@ init_adapters(uint16_t nb_ports)
>         init_ports(nb_ports);
>         /* Create one adapter for all the ethernet ports. */
>         ret = rte_event_eth_rx_adapter_create(cdata.rx_adapter_id, evdev_id,
> -                       &adptr_p_conf);
> +                       &adptr_p_conf, NULL);
>         if (ret)
>                 rte_exit(EXIT_FAILURE, "failed to create rx adapter[%d]",
>                                 cdata.rx_adapter_id);
> diff --git a/examples/eventdev_pipeline/pipeline_worker_tx.c b/examples/eventdev_pipeline/pipeline_worker_tx.c
> index 98a52f3892..88619d6c2e 100644
> --- a/examples/eventdev_pipeline/pipeline_worker_tx.c
> +++ b/examples/eventdev_pipeline/pipeline_worker_tx.c
> @@ -793,7 +793,7 @@ init_adapters(uint16_t nb_ports)
>                 uint32_t service_id;
>
>                 ret = rte_event_eth_rx_adapter_create(i, evdev_id,
> -                               &adptr_p_conf);
> +                               &adptr_p_conf, NULL);
>                 if (ret)
>                         rte_exit(EXIT_FAILURE,
>                                         "failed to create rx adapter[%d]", i);
> diff --git a/examples/ipsec-secgw/event_helper.c b/examples/ipsec-secgw/event_helper.c
> index 89fb7e62a5..28d6778134 100644
> --- a/examples/ipsec-secgw/event_helper.c
> +++ b/examples/ipsec-secgw/event_helper.c
> @@ -1035,7 +1035,7 @@ eh_rx_adapter_configure(struct eventmode_conf *em_conf,
>
>         /* Create Rx adapter */
>         ret = rte_event_eth_rx_adapter_create(adapter->adapter_id,
> -                       adapter->eventdev_id, &port_conf);
> +                       adapter->eventdev_id, &port_conf, NULL);
>         if (ret < 0) {
>                 EH_LOG_ERR("Failed to create rx adapter %d", ret);
>                 return ret;
> diff --git a/examples/l2fwd-event/l2fwd_event_generic.c b/examples/l2fwd-event/l2fwd_event_generic.c
> index 1977e23261..4360b20aa0 100644
> --- a/examples/l2fwd-event/l2fwd_event_generic.c
> +++ b/examples/l2fwd-event/l2fwd_event_generic.c
> @@ -235,7 +235,7 @@ l2fwd_rx_tx_adapter_setup_generic(struct l2fwd_resources *rsrc)
>         }
>
>         ret = rte_event_eth_rx_adapter_create(rx_adptr_id, event_d_id,
> -                                             &evt_rsrc->def_p_conf);
> +                                             &evt_rsrc->def_p_conf, NULL);
>         if (ret)
>                 rte_panic("Failed to create rx adapter\n");
>
> diff --git a/examples/l2fwd-event/l2fwd_event_internal_port.c b/examples/l2fwd-event/l2fwd_event_internal_port.c
> index 717a7bceb8..542890f354 100644
> --- a/examples/l2fwd-event/l2fwd_event_internal_port.c
> +++ b/examples/l2fwd-event/l2fwd_event_internal_port.c
> @@ -253,7 +253,7 @@ l2fwd_rx_tx_adapter_setup_internal_port(struct l2fwd_resources *rsrc)
>                 }
>
>                 ret = rte_event_eth_rx_adapter_create(adapter_id, event_d_id,
> -                                               &evt_rsrc->def_p_conf);
> +                                               &evt_rsrc->def_p_conf, NULL);
>                 if (ret)
>                         rte_panic("Failed to create rx adapter[%d]\n",
>                                   adapter_id);
> diff --git a/examples/l3fwd/l3fwd_event_generic.c b/examples/l3fwd/l3fwd_event_generic.c
> index c80573fc58..88e7af538e 100644
> --- a/examples/l3fwd/l3fwd_event_generic.c
> +++ b/examples/l3fwd/l3fwd_event_generic.c
> @@ -217,7 +217,7 @@ l3fwd_rx_tx_adapter_setup_generic(void)
>         }
>
>         ret = rte_event_eth_rx_adapter_create(rx_adptr_id, event_d_id,
> -                                             &evt_rsrc->def_p_conf);
> +                                             &evt_rsrc->def_p_conf, NULL);
>         if (ret)
>                 rte_panic("Failed to create rx adapter\n");
>
> diff --git a/examples/l3fwd/l3fwd_event_internal_port.c b/examples/l3fwd/l3fwd_event_internal_port.c
> index 32cf657148..dc8b5013cb 100644
> --- a/examples/l3fwd/l3fwd_event_internal_port.c
> +++ b/examples/l3fwd/l3fwd_event_internal_port.c
> @@ -246,7 +246,7 @@ l3fwd_rx_tx_adapter_setup_internal_port(void)
>                 }
>
>                 ret = rte_event_eth_rx_adapter_create(adapter_id, event_d_id,
> -                                                     &evt_rsrc->def_p_conf);
> +                                                     &evt_rsrc->def_p_conf, NULL);
>                 if (ret)
>                         rte_panic("Failed to create rx adapter[%d]\n",
>                                   adapter_id);
> diff --git a/lib/eventdev/rte_event_eth_rx_adapter.c b/lib/eventdev/rte_event_eth_rx_adapter.c
> index f7f93ccdfd..ce203a5e4b 100644
> --- a/lib/eventdev/rte_event_eth_rx_adapter.c
> +++ b/lib/eventdev/rte_event_eth_rx_adapter.c
> @@ -2485,90 +2485,78 @@ rxa_create(uint8_t id, uint8_t dev_id,
>         return 0;
>  }
>
> -int
> -rte_event_eth_rx_adapter_create_ext(uint8_t id, uint8_t dev_id,
> -                               rte_event_eth_rx_adapter_conf_cb conf_cb,
> -                               void *conf_arg)
> +static int __rte_cold
> +rxa_config_params_validate(struct rte_event_eth_rx_adapter_params *rxa_params,
> +                          struct rte_event_eth_rx_adapter_params *temp_params)
>  {
> -       struct rte_event_eth_rx_adapter_params rxa_params = {0};
> +       if (rxa_params == NULL) {
> +               /* use default values if rxa_params is NULL */
> +               temp_params->event_buf_size = ETH_EVENT_BUFFER_SIZE;
> +               temp_params->use_queue_event_buf = false;
> +       } else if (!rxa_params->use_queue_event_buf &&
> +                   rxa_params->event_buf_size == 0) {
> +               RTE_EDEV_LOG_ERR("event buffer size can't be zero\n");
> +               return -EINVAL;
> +       } else if (rxa_params->use_queue_event_buf &&
> +                  rxa_params->event_buf_size != 0) {
> +               RTE_EDEV_LOG_ERR("event buffer size needs to be configured "
> +                                "as part of queue add\n");
> +               return -EINVAL;
> +       }
>
> -       /* use default values for adapter params */
> -       rxa_params.event_buf_size = ETH_EVENT_BUFFER_SIZE;
> -       rxa_params.use_queue_event_buf = false;
> +       *temp_params = *rxa_params;
> +       /* adjust event buff size with BATCH_SIZE used for fetching
> +        * packets from NIC rx queues to get full buffer utilization
> +        * and prevent unnecessary rollovers.
> +        */
> +       if (!temp_params->use_queue_event_buf) {
> +               temp_params->event_buf_size =
> +                       RTE_ALIGN(temp_params->event_buf_size, BATCH_SIZE);
> +               temp_params->event_buf_size += (BATCH_SIZE + BATCH_SIZE);
> +       }
>
> -       return rxa_create(id, dev_id, &rxa_params, conf_cb, conf_arg);
> +       return 0;
>  }
>
>  int
> -rte_event_eth_rx_adapter_create_with_params(uint8_t id, uint8_t dev_id,
> -                       struct rte_event_port_conf *port_config,
> +rte_event_eth_rx_adapter_create_ext(uint8_t id, uint8_t dev_id,
> +                       rte_event_eth_rx_adapter_conf_cb conf_cb,
> +                       void *conf_arg,
>                         struct rte_event_eth_rx_adapter_params *rxa_params)
>  {
> -       struct rte_event_port_conf *pc;
> -       int ret;
>         struct rte_event_eth_rx_adapter_params temp_params = {0};
> +       int ret;
>
> -       if (port_config == NULL)
> -               return -EINVAL;
> -
> -       if (rxa_params == NULL) {
> -               /* use default values if rxa_params is NULL */
> -               rxa_params = &temp_params;
> -               rxa_params->event_buf_size = ETH_EVENT_BUFFER_SIZE;
> -               rxa_params->use_queue_event_buf = false;
> -       } else if ((!rxa_params->use_queue_event_buf &&
> -                   rxa_params->event_buf_size == 0) ||
> -                  (rxa_params->use_queue_event_buf &&
> -                   rxa_params->event_buf_size != 0)) {
> -               RTE_EDEV_LOG_ERR("Invalid adapter params\n");
> -               return -EINVAL;
> -       } else if (!rxa_params->use_queue_event_buf) {
> -               /* adjust event buff size with BATCH_SIZE used for fetching
> -                * packets from NIC rx queues to get full buffer utilization
> -                * and prevent unnecessary rollovers.
> -                */
> -
> -               rxa_params->event_buf_size =
> -                       RTE_ALIGN(rxa_params->event_buf_size, BATCH_SIZE);
> -               rxa_params->event_buf_size += (BATCH_SIZE + BATCH_SIZE);
> -       }
> -
> -       pc = rte_malloc(NULL, sizeof(*pc), 0);
> -       if (pc == NULL)
> -               return -ENOMEM;
> -
> -       *pc = *port_config;
> -
> -       ret = rxa_create(id, dev_id, rxa_params, rxa_default_conf_cb, pc);
> -       if (ret)
> -               rte_free(pc);
> -
> -       rte_eventdev_trace_eth_rx_adapter_create_with_params(id, dev_id,
> -               port_config, rxa_params, ret);
> +       ret = rxa_config_params_validate(rxa_params, &temp_params);
> +       if (ret != 0)
> +               return ret;
>
> -       return ret;
> +       return rxa_create(id, dev_id, &temp_params, conf_cb, conf_arg);
>  }
>
>  int
>  rte_event_eth_rx_adapter_create(uint8_t id, uint8_t dev_id,
> -               struct rte_event_port_conf *port_config)
> +                       struct rte_event_port_conf *port_config,
> +                       struct rte_event_eth_rx_adapter_params *rxa_params)
>  {
>         struct rte_event_port_conf *pc;
>         int ret;
> +       struct rte_event_eth_rx_adapter_params temp_params = {0};
>
>         if (port_config == NULL)
>                 return -EINVAL;
>
> -       RTE_EVENT_ETH_RX_ADAPTER_ID_VALID_OR_ERR_RET(id, -EINVAL);
> +       ret = rxa_config_params_validate(rxa_params, &temp_params);
> +       if (ret != 0)
> +               return ret;
>
>         pc = rte_malloc(NULL, sizeof(*pc), 0);
>         if (pc == NULL)
>                 return -ENOMEM;
> +
>         *pc = *port_config;
>
> -       ret = rte_event_eth_rx_adapter_create_ext(id, dev_id,
> -                                       rxa_default_conf_cb,
> -                                       pc);
> +       ret = rxa_create(id, dev_id, &temp_params, rxa_default_conf_cb, pc);
>         if (ret)
>                 rte_free(pc);
>         return ret;
> diff --git a/lib/eventdev/rte_event_eth_rx_adapter.h b/lib/eventdev/rte_event_eth_rx_adapter.h
> index fe2a6bdd2c..793e3cedad 100644
> --- a/lib/eventdev/rte_event_eth_rx_adapter.h
> +++ b/lib/eventdev/rte_event_eth_rx_adapter.h
> @@ -26,7 +26,6 @@
>   * The ethernet Rx event adapter's functions are:
>   *  - rte_event_eth_rx_adapter_create_ext()
>   *  - rte_event_eth_rx_adapter_create()
> - *  - rte_event_eth_rx_adapter_create_with_params()
>   *  - rte_event_eth_rx_adapter_free()
>   *  - rte_event_eth_rx_adapter_queue_add()
>   *  - rte_event_eth_rx_adapter_queue_del()
> @@ -45,7 +44,7 @@
>   *
>   * The application creates an ethernet to event adapter using
>   * rte_event_eth_rx_adapter_create_ext() or rte_event_eth_rx_adapter_create()
> - * or rte_event_eth_rx_adapter_create_with_params() functions.
> + * functions.
>   *
>   * The adapter needs to know which ethernet rx queues to poll for mbufs as well
>   * as event device parameters such as the event queue identifier, event
> @@ -394,13 +393,18 @@ typedef uint16_t (*rte_event_eth_rx_adapter_cb_fn)(uint16_t eth_dev_id,
>   * @param conf_arg
>   *  Argument that is passed to the conf_cb function.
>   *
> + * @param rxa_params
> + *  Pointer to struct rte_event_eth_rx_adapter_params.
> + *  In case of NULL, default values are used.
> + *
>   * @return
>   *   - 0: Success
>   *   - <0: Error code on failure
>   */
>  int rte_event_eth_rx_adapter_create_ext(uint8_t id, uint8_t dev_id,
> -                               rte_event_eth_rx_adapter_conf_cb conf_cb,
> -                               void *conf_arg);
> +                       rte_event_eth_rx_adapter_conf_cb conf_cb,
> +                       void *conf_arg,
> +                       struct rte_event_eth_rx_adapter_params *rxa_params);
>
>  /**
>   * Create a new ethernet Rx event adapter with the specified identifier.
> @@ -435,27 +439,6 @@ int rte_event_eth_rx_adapter_create_ext(uint8_t id, uint8_t dev_id,
>   *  Argument of type *rte_event_port_conf* that is passed to the conf_cb
>   *  function.
>   *
> - * @return
> - *   - 0: Success
> - *   - <0: Error code on failure
> - */
> -int rte_event_eth_rx_adapter_create(uint8_t id, uint8_t dev_id,
> -                               struct rte_event_port_conf *port_config);
> -
> -/**
> - * This is a variant of rte_event_eth_rx_adapter_create() with additional
> - * adapter params specified in ``struct rte_event_eth_rx_adapter_params``.
> - *
> - * @param id
> - *  The identifier of the ethernet Rx event adapter.
> - *
> - * @param dev_id
> - *  The identifier of the event device to configure.
> - *
> - * @param port_config
> - *  Argument of type *rte_event_port_conf* that is passed to the conf_cb
> - *  function.
> - *
>   * @param rxa_params
>   *  Pointer to struct rte_event_eth_rx_adapter_params.
>   *  In case of NULL, default values are used.
> @@ -464,8 +447,7 @@ int rte_event_eth_rx_adapter_create(uint8_t id, uint8_t dev_id,
>   *   - 0: Success
>   *   - <0: Error code on failure
>   */
> -__rte_experimental
> -int rte_event_eth_rx_adapter_create_with_params(uint8_t id, uint8_t dev_id,
> +int rte_event_eth_rx_adapter_create(uint8_t id, uint8_t dev_id,
>                         struct rte_event_port_conf *port_config,
>                         struct rte_event_eth_rx_adapter_params *rxa_params);
>
> diff --git a/lib/eventdev/version.map b/lib/eventdev/version.map
> index b03c10d99f..1cf58f0d6c 100644
> --- a/lib/eventdev/version.map
> +++ b/lib/eventdev/version.map
> @@ -101,7 +101,6 @@ EXPERIMENTAL {
>         global:
>
>         # added in 21.11
> -       rte_event_eth_rx_adapter_create_with_params;
>         rte_event_eth_rx_adapter_queue_conf_get;
>         rte_event_eth_rx_adapter_queue_stats_get;
>         rte_event_eth_rx_adapter_queue_stats_reset;
> --
> 2.25.1
>
  
Naga Harish K, S V Aug. 2, 2023, 2:19 p.m. UTC | #2
Hi Jerin,
     
The API “rte_event_eth_rx_adapter_create_with_params()” is an extension to rte_event_eth_rx_adapter_create() with an additional adapter configuration params structure.
There is no equivalent API existing today for the “rte_event_eth_rx_adapter_create_ext()” API which takes additional adapter params. 
There are use cases where create_ext() version of create API with additional parameters is needed. We may need to have one more adapter create API for this.
That makes so many Adapter create APIs (4 in number) and will be confusing for the user.

   That's why proposed the following changes to the Rx adapter create APIs which will consolidate the create APIs to 2 in number with all possible combinations.
The applications that are currently using rte_event_eth_rx_adapter_create_ext() or rte_event_eth_rx_adapter_create() APIs for creating Rx Adapter can pass NULL argument for the
newly added argument which will behave the same as before.

Trying to understand what are the concerns from your perspective with this consolidated API approach.

-Harish

> -----Original Message-----
> From: Jerin Jacob <jerinjacobk@gmail.com>
> Sent: Tuesday, August 1, 2023 8:54 PM
> To: Naga Harish K, S V <s.v.naga.harish.k@intel.com>
> Cc: dev@dpdk.org; Jayatheerthan, Jay <jay.jayatheerthan@intel.com>
> Subject: Re: [PATCH v2] eventdev/eth_rx: update adapter create APIs
> 
> On Tue, Aug 1, 2023 at 7:22 PM Naga Harish K S V
> <s.v.naga.harish.k@intel.com> wrote:
> >
> > The adapter create APIs such as rte_event_eth_rx_adapter_create_ext()
> > and
> > rte_event_eth_rx_adapter_create() are updated to take additional
> > argument as a pointer of type struct rte_event_eth_rx_adapter_params.
> >
> > The API rte_event_eth_rx_adapter_create_with_params() is deprecated.
> >
> > Signed-off-by: Naga Harish K S V <s.v.naga.harish.k@intel.com>
> 
> Pleas check v1 comment
> http://mails.dpdk.org/archives/dev/2023-August/273602.html
> 
> > ---
> > v2:
> > *  Fix doxygen compile issue and warning
> > ---
> > ---
> >  app/test-eventdev/test_perf_common.c          |   2 +-
> >  app/test-eventdev/test_pipeline_common.c      |   2 +-
> >  app/test/test_event_eth_rx_adapter.c          |  22 ++--
> >  app/test/test_security_inline_proto.c         |   2 +-
> >  .../pipeline_worker_generic.c                 |   2 +-
> >  .../eventdev_pipeline/pipeline_worker_tx.c    |   2 +-
> >  examples/ipsec-secgw/event_helper.c           |   2 +-
> >  examples/l2fwd-event/l2fwd_event_generic.c    |   2 +-
> >  .../l2fwd-event/l2fwd_event_internal_port.c   |   2 +-
> >  examples/l3fwd/l3fwd_event_generic.c          |   2 +-
> >  examples/l3fwd/l3fwd_event_internal_port.c    |   2 +-
> >  lib/eventdev/rte_event_eth_rx_adapter.c       | 100 ++++++++----------
> >  lib/eventdev/rte_event_eth_rx_adapter.h       |  36 ++-----
> >  lib/eventdev/version.map                      |   1 -
> >  14 files changed, 74 insertions(+), 105 deletions(-)
> >
> > diff --git a/app/test-eventdev/test_perf_common.c
> > b/app/test-eventdev/test_perf_common.c
> > index 5e0255cfeb..0c6c252f7d 100644
> > --- a/app/test-eventdev/test_perf_common.c
> > +++ b/app/test-eventdev/test_perf_common.c
> > @@ -1002,7 +1002,7 @@ perf_event_rx_adapter_setup(struct
> evt_options *opt, uint8_t stride,
> >                 }
> >                 queue_conf.ev.queue_id = prod * stride;
> >                 ret = rte_event_eth_rx_adapter_create(prod, opt->dev_id,
> > -                               &prod_conf);
> > +                               &prod_conf, NULL);
> >                 if (ret) {
> >                         evt_err("failed to create rx adapter[%d]", prod);
> >                         return ret;
> > diff --git a/app/test-eventdev/test_pipeline_common.c
> > b/app/test-eventdev/test_pipeline_common.c
> > index b111690b7c..5ae175f2c7 100644
> > --- a/app/test-eventdev/test_pipeline_common.c
> > +++ b/app/test-eventdev/test_pipeline_common.c
> > @@ -571,7 +571,7 @@ pipeline_event_rx_adapter_setup(struct
> evt_options *opt, uint8_t stride,
> >                 }
> >                 queue_conf.ev.queue_id = prod * stride;
> >                 ret = rte_event_eth_rx_adapter_create(prod, opt->dev_id,
> > -                               &prod_conf);
> > +                               &prod_conf, NULL);
> >                 if (ret) {
> >                         evt_err("failed to create rx adapter[%d]", prod);
> >                         return ret;
> > diff --git a/app/test/test_event_eth_rx_adapter.c
> > b/app/test/test_event_eth_rx_adapter.c
> > index 52d146f97c..42edcb625a 100644
> > --- a/app/test/test_event_eth_rx_adapter.c
> > +++ b/app/test/test_event_eth_rx_adapter.c
> > @@ -401,7 +401,7 @@ adapter_create(void)
> >         rx_p_conf.dequeue_depth =
> dev_info.max_event_port_dequeue_depth;
> >         rx_p_conf.enqueue_depth =
> dev_info.max_event_port_enqueue_depth;
> >         err = rte_event_eth_rx_adapter_create(TEST_INST_ID, TEST_DEV_ID,
> > -                                       &rx_p_conf);
> > +                                       &rx_p_conf, NULL);
> >         TEST_ASSERT(err == 0, "Expected 0 got %d", err);
> >
> >         return err;
> > @@ -427,17 +427,17 @@ adapter_create_with_params(void)
> >         rxa_params.use_queue_event_buf = false;
> >         rxa_params.event_buf_size = 0;
> >
> > -       err = rte_event_eth_rx_adapter_create_with_params(TEST_INST_ID,
> > +       err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
> >                                 TEST_DEV_ID, &rx_p_conf, &rxa_params);
> >         TEST_ASSERT(err == -EINVAL, "Expected -EINVAL got %d", err);
> >
> >         rxa_params.use_queue_event_buf = true;
> >
> > -       err = rte_event_eth_rx_adapter_create_with_params(TEST_INST_ID,
> > +       err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
> >                                 TEST_DEV_ID, &rx_p_conf, &rxa_params);
> >         TEST_ASSERT(err == 0, "Expected 0 got %d", err);
> >
> > -       err = rte_event_eth_rx_adapter_create_with_params(TEST_INST_ID,
> > +       err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
> >                                 TEST_DEV_ID, &rx_p_conf, &rxa_params);
> >         TEST_ASSERT(err == -EEXIST, "Expected -EEXIST got %d", err);
> >
> > @@ -567,15 +567,15 @@ adapter_create_free(void)
> >         };
> >
> >         err = rte_event_eth_rx_adapter_create(TEST_INST_ID, TEST_DEV_ID,
> > -                                       NULL);
> > +                                       NULL, NULL);
> >         TEST_ASSERT(err == -EINVAL, "Expected -EINVAL got %d", err);
> >
> >         err = rte_event_eth_rx_adapter_create(TEST_INST_ID, TEST_DEV_ID,
> > -                                       &rx_p_conf);
> > +                                       &rx_p_conf, NULL);
> >         TEST_ASSERT(err == 0, "Expected 0 got %d", err);
> >
> >         err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
> > -                                       TEST_DEV_ID, &rx_p_conf);
> > +                                       TEST_DEV_ID, &rx_p_conf,
> > + NULL);
> >         TEST_ASSERT(err == -EEXIST, "Expected -EEXIST %d got %d",
> > -EEXIST, err);
> >
> >         err = rte_event_eth_rx_adapter_free(TEST_INST_ID);
> > @@ -605,20 +605,20 @@ adapter_create_free_with_params(void)
> >                         .event_buf_size = 1024
> >         };
> >
> > -       err = rte_event_eth_rx_adapter_create_with_params(TEST_INST_ID,
> > +       err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
> >                                 TEST_DEV_ID, NULL, NULL);
> >         TEST_ASSERT(err == -EINVAL, "Expected -EINVAL got %d", err);
> >
> > -       err = rte_event_eth_rx_adapter_create_with_params(TEST_INST_ID,
> > +       err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
> >                                 TEST_DEV_ID, &rx_p_conf, &rxa_params);
> >         TEST_ASSERT(err == 0, "Expected 0 got %d", err);
> >
> > -       err = rte_event_eth_rx_adapter_create_with_params(TEST_INST_ID,
> > +       err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
> >                                 TEST_DEV_ID, &rx_p_conf, &rxa_params);
> >         TEST_ASSERT(err == -EEXIST, "Expected -EEXIST %d got %d",
> > -EEXIST, err);
> >
> >         rxa_params.event_buf_size = 0;
> > -       err = rte_event_eth_rx_adapter_create_with_params(TEST_INST_ID,
> > +       err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
> >                                 TEST_DEV_ID, &rx_p_conf, &rxa_params);
> >         TEST_ASSERT(err == -EINVAL, "Expected -EINVAL got %d", err);
> >
> > diff --git a/app/test/test_security_inline_proto.c
> > b/app/test/test_security_inline_proto.c
> > index 45aa742c6b..fc240201a3 100644
> > --- a/app/test/test_security_inline_proto.c
> > +++ b/app/test/test_security_inline_proto.c
> > @@ -1872,7 +1872,7 @@ event_inline_ipsec_testsuite_setup(void)
> >
> >         /* Create Rx adapter */
> >         ret = rte_event_eth_rx_adapter_create(rx_adapter_id, eventdev_id,
> > -                       &ev_port_conf);
> > +                       &ev_port_conf, NULL);
> >         if (ret < 0) {
> >                 printf("Failed to create rx adapter %d\n", ret);
> >                 return ret;
> > diff --git a/examples/eventdev_pipeline/pipeline_worker_generic.c
> > b/examples/eventdev_pipeline/pipeline_worker_generic.c
> > index 783f68c91e..74510338ba 100644
> > --- a/examples/eventdev_pipeline/pipeline_worker_generic.c
> > +++ b/examples/eventdev_pipeline/pipeline_worker_generic.c
> > @@ -436,7 +436,7 @@ init_adapters(uint16_t nb_ports)
> >         init_ports(nb_ports);
> >         /* Create one adapter for all the ethernet ports. */
> >         ret = rte_event_eth_rx_adapter_create(cdata.rx_adapter_id,
> evdev_id,
> > -                       &adptr_p_conf);
> > +                       &adptr_p_conf, NULL);
> >         if (ret)
> >                 rte_exit(EXIT_FAILURE, "failed to create rx adapter[%d]",
> >                                 cdata.rx_adapter_id); diff --git
> > a/examples/eventdev_pipeline/pipeline_worker_tx.c
> > b/examples/eventdev_pipeline/pipeline_worker_tx.c
> > index 98a52f3892..88619d6c2e 100644
> > --- a/examples/eventdev_pipeline/pipeline_worker_tx.c
> > +++ b/examples/eventdev_pipeline/pipeline_worker_tx.c
> > @@ -793,7 +793,7 @@ init_adapters(uint16_t nb_ports)
> >                 uint32_t service_id;
> >
> >                 ret = rte_event_eth_rx_adapter_create(i, evdev_id,
> > -                               &adptr_p_conf);
> > +                               &adptr_p_conf, NULL);
> >                 if (ret)
> >                         rte_exit(EXIT_FAILURE,
> >                                         "failed to create rx
> > adapter[%d]", i); diff --git a/examples/ipsec-secgw/event_helper.c
> > b/examples/ipsec-secgw/event_helper.c
> > index 89fb7e62a5..28d6778134 100644
> > --- a/examples/ipsec-secgw/event_helper.c
> > +++ b/examples/ipsec-secgw/event_helper.c
> > @@ -1035,7 +1035,7 @@ eh_rx_adapter_configure(struct
> eventmode_conf
> > *em_conf,
> >
> >         /* Create Rx adapter */
> >         ret = rte_event_eth_rx_adapter_create(adapter->adapter_id,
> > -                       adapter->eventdev_id, &port_conf);
> > +                       adapter->eventdev_id, &port_conf, NULL);
> >         if (ret < 0) {
> >                 EH_LOG_ERR("Failed to create rx adapter %d", ret);
> >                 return ret;
> > diff --git a/examples/l2fwd-event/l2fwd_event_generic.c
> > b/examples/l2fwd-event/l2fwd_event_generic.c
> > index 1977e23261..4360b20aa0 100644
> > --- a/examples/l2fwd-event/l2fwd_event_generic.c
> > +++ b/examples/l2fwd-event/l2fwd_event_generic.c
> > @@ -235,7 +235,7 @@ l2fwd_rx_tx_adapter_setup_generic(struct
> l2fwd_resources *rsrc)
> >         }
> >
> >         ret = rte_event_eth_rx_adapter_create(rx_adptr_id, event_d_id,
> > -                                             &evt_rsrc->def_p_conf);
> > +                                             &evt_rsrc->def_p_conf,
> > + NULL);
> >         if (ret)
> >                 rte_panic("Failed to create rx adapter\n");
> >
> > diff --git a/examples/l2fwd-event/l2fwd_event_internal_port.c
> > b/examples/l2fwd-event/l2fwd_event_internal_port.c
> > index 717a7bceb8..542890f354 100644
> > --- a/examples/l2fwd-event/l2fwd_event_internal_port.c
> > +++ b/examples/l2fwd-event/l2fwd_event_internal_port.c
> > @@ -253,7 +253,7 @@ l2fwd_rx_tx_adapter_setup_internal_port(struct
> l2fwd_resources *rsrc)
> >                 }
> >
> >                 ret = rte_event_eth_rx_adapter_create(adapter_id, event_d_id,
> > -                                               &evt_rsrc->def_p_conf);
> > +                                               &evt_rsrc->def_p_conf,
> > + NULL);
> >                 if (ret)
> >                         rte_panic("Failed to create rx adapter[%d]\n",
> >                                   adapter_id); diff --git
> > a/examples/l3fwd/l3fwd_event_generic.c
> > b/examples/l3fwd/l3fwd_event_generic.c
> > index c80573fc58..88e7af538e 100644
> > --- a/examples/l3fwd/l3fwd_event_generic.c
> > +++ b/examples/l3fwd/l3fwd_event_generic.c
> > @@ -217,7 +217,7 @@ l3fwd_rx_tx_adapter_setup_generic(void)
> >         }
> >
> >         ret = rte_event_eth_rx_adapter_create(rx_adptr_id, event_d_id,
> > -                                             &evt_rsrc->def_p_conf);
> > +                                             &evt_rsrc->def_p_conf,
> > + NULL);
> >         if (ret)
> >                 rte_panic("Failed to create rx adapter\n");
> >
> > diff --git a/examples/l3fwd/l3fwd_event_internal_port.c
> > b/examples/l3fwd/l3fwd_event_internal_port.c
> > index 32cf657148..dc8b5013cb 100644
> > --- a/examples/l3fwd/l3fwd_event_internal_port.c
> > +++ b/examples/l3fwd/l3fwd_event_internal_port.c
> > @@ -246,7 +246,7 @@ l3fwd_rx_tx_adapter_setup_internal_port(void)
> >                 }
> >
> >                 ret = rte_event_eth_rx_adapter_create(adapter_id, event_d_id,
> > -                                                     &evt_rsrc->def_p_conf);
> > +
> > + &evt_rsrc->def_p_conf, NULL);
> >                 if (ret)
> >                         rte_panic("Failed to create rx adapter[%d]\n",
> >                                   adapter_id); diff --git
> > a/lib/eventdev/rte_event_eth_rx_adapter.c
> > b/lib/eventdev/rte_event_eth_rx_adapter.c
> > index f7f93ccdfd..ce203a5e4b 100644
> > --- a/lib/eventdev/rte_event_eth_rx_adapter.c
> > +++ b/lib/eventdev/rte_event_eth_rx_adapter.c
> > @@ -2485,90 +2485,78 @@ rxa_create(uint8_t id, uint8_t dev_id,
> >         return 0;
> >  }
> >
> > -int
> > -rte_event_eth_rx_adapter_create_ext(uint8_t id, uint8_t dev_id,
> > -                               rte_event_eth_rx_adapter_conf_cb conf_cb,
> > -                               void *conf_arg)
> > +static int __rte_cold
> > +rxa_config_params_validate(struct rte_event_eth_rx_adapter_params
> *rxa_params,
> > +                          struct rte_event_eth_rx_adapter_params
> > +*temp_params)
> >  {
> > -       struct rte_event_eth_rx_adapter_params rxa_params = {0};
> > +       if (rxa_params == NULL) {
> > +               /* use default values if rxa_params is NULL */
> > +               temp_params->event_buf_size = ETH_EVENT_BUFFER_SIZE;
> > +               temp_params->use_queue_event_buf = false;
> > +       } else if (!rxa_params->use_queue_event_buf &&
> > +                   rxa_params->event_buf_size == 0) {
> > +               RTE_EDEV_LOG_ERR("event buffer size can't be zero\n");
> > +               return -EINVAL;
> > +       } else if (rxa_params->use_queue_event_buf &&
> > +                  rxa_params->event_buf_size != 0) {
> > +               RTE_EDEV_LOG_ERR("event buffer size needs to be configured "
> > +                                "as part of queue add\n");
> > +               return -EINVAL;
> > +       }
> >
> > -       /* use default values for adapter params */
> > -       rxa_params.event_buf_size = ETH_EVENT_BUFFER_SIZE;
> > -       rxa_params.use_queue_event_buf = false;
> > +       *temp_params = *rxa_params;
> > +       /* adjust event buff size with BATCH_SIZE used for fetching
> > +        * packets from NIC rx queues to get full buffer utilization
> > +        * and prevent unnecessary rollovers.
> > +        */
> > +       if (!temp_params->use_queue_event_buf) {
> > +               temp_params->event_buf_size =
> > +                       RTE_ALIGN(temp_params->event_buf_size, BATCH_SIZE);
> > +               temp_params->event_buf_size += (BATCH_SIZE + BATCH_SIZE);
> > +       }
> >
> > -       return rxa_create(id, dev_id, &rxa_params, conf_cb, conf_arg);
> > +       return 0;
> >  }
> >
> >  int
> > -rte_event_eth_rx_adapter_create_with_params(uint8_t id, uint8_t
> dev_id,
> > -                       struct rte_event_port_conf *port_config,
> > +rte_event_eth_rx_adapter_create_ext(uint8_t id, uint8_t dev_id,
> > +                       rte_event_eth_rx_adapter_conf_cb conf_cb,
> > +                       void *conf_arg,
> >                         struct rte_event_eth_rx_adapter_params
> > *rxa_params)  {
> > -       struct rte_event_port_conf *pc;
> > -       int ret;
> >         struct rte_event_eth_rx_adapter_params temp_params = {0};
> > +       int ret;
> >
> > -       if (port_config == NULL)
> > -               return -EINVAL;
> > -
> > -       if (rxa_params == NULL) {
> > -               /* use default values if rxa_params is NULL */
> > -               rxa_params = &temp_params;
> > -               rxa_params->event_buf_size = ETH_EVENT_BUFFER_SIZE;
> > -               rxa_params->use_queue_event_buf = false;
> > -       } else if ((!rxa_params->use_queue_event_buf &&
> > -                   rxa_params->event_buf_size == 0) ||
> > -                  (rxa_params->use_queue_event_buf &&
> > -                   rxa_params->event_buf_size != 0)) {
> > -               RTE_EDEV_LOG_ERR("Invalid adapter params\n");
> > -               return -EINVAL;
> > -       } else if (!rxa_params->use_queue_event_buf) {
> > -               /* adjust event buff size with BATCH_SIZE used for fetching
> > -                * packets from NIC rx queues to get full buffer utilization
> > -                * and prevent unnecessary rollovers.
> > -                */
> > -
> > -               rxa_params->event_buf_size =
> > -                       RTE_ALIGN(rxa_params->event_buf_size, BATCH_SIZE);
> > -               rxa_params->event_buf_size += (BATCH_SIZE + BATCH_SIZE);
> > -       }
> > -
> > -       pc = rte_malloc(NULL, sizeof(*pc), 0);
> > -       if (pc == NULL)
> > -               return -ENOMEM;
> > -
> > -       *pc = *port_config;
> > -
> > -       ret = rxa_create(id, dev_id, rxa_params, rxa_default_conf_cb, pc);
> > -       if (ret)
> > -               rte_free(pc);
> > -
> > -       rte_eventdev_trace_eth_rx_adapter_create_with_params(id, dev_id,
> > -               port_config, rxa_params, ret);
> > +       ret = rxa_config_params_validate(rxa_params, &temp_params);
> > +       if (ret != 0)
> > +               return ret;
> >
> > -       return ret;
> > +       return rxa_create(id, dev_id, &temp_params, conf_cb,
> > + conf_arg);
> >  }
> >
> >  int
> >  rte_event_eth_rx_adapter_create(uint8_t id, uint8_t dev_id,
> > -               struct rte_event_port_conf *port_config)
> > +                       struct rte_event_port_conf *port_config,
> > +                       struct rte_event_eth_rx_adapter_params
> > + *rxa_params)
> >  {
> >         struct rte_event_port_conf *pc;
> >         int ret;
> > +       struct rte_event_eth_rx_adapter_params temp_params = {0};
> >
> >         if (port_config == NULL)
> >                 return -EINVAL;
> >
> > -       RTE_EVENT_ETH_RX_ADAPTER_ID_VALID_OR_ERR_RET(id, -EINVAL);
> > +       ret = rxa_config_params_validate(rxa_params, &temp_params);
> > +       if (ret != 0)
> > +               return ret;
> >
> >         pc = rte_malloc(NULL, sizeof(*pc), 0);
> >         if (pc == NULL)
> >                 return -ENOMEM;
> > +
> >         *pc = *port_config;
> >
> > -       ret = rte_event_eth_rx_adapter_create_ext(id, dev_id,
> > -                                       rxa_default_conf_cb,
> > -                                       pc);
> > +       ret = rxa_create(id, dev_id, &temp_params,
> > + rxa_default_conf_cb, pc);
> >         if (ret)
> >                 rte_free(pc);
> >         return ret;
> > diff --git a/lib/eventdev/rte_event_eth_rx_adapter.h
> > b/lib/eventdev/rte_event_eth_rx_adapter.h
> > index fe2a6bdd2c..793e3cedad 100644
> > --- a/lib/eventdev/rte_event_eth_rx_adapter.h
> > +++ b/lib/eventdev/rte_event_eth_rx_adapter.h
> > @@ -26,7 +26,6 @@
> >   * The ethernet Rx event adapter's functions are:
> >   *  - rte_event_eth_rx_adapter_create_ext()
> >   *  - rte_event_eth_rx_adapter_create()
> > - *  - rte_event_eth_rx_adapter_create_with_params()
> >   *  - rte_event_eth_rx_adapter_free()
> >   *  - rte_event_eth_rx_adapter_queue_add()
> >   *  - rte_event_eth_rx_adapter_queue_del()
> > @@ -45,7 +44,7 @@
> >   *
> >   * The application creates an ethernet to event adapter using
> >   * rte_event_eth_rx_adapter_create_ext() or
> > rte_event_eth_rx_adapter_create()
> > - * or rte_event_eth_rx_adapter_create_with_params() functions.
> > + * functions.
> >   *
> >   * The adapter needs to know which ethernet rx queues to poll for mbufs
> as well
> >   * as event device parameters such as the event queue identifier,
> > event @@ -394,13 +393,18 @@ typedef uint16_t
> (*rte_event_eth_rx_adapter_cb_fn)(uint16_t eth_dev_id,
> >   * @param conf_arg
> >   *  Argument that is passed to the conf_cb function.
> >   *
> > + * @param rxa_params
> > + *  Pointer to struct rte_event_eth_rx_adapter_params.
> > + *  In case of NULL, default values are used.
> > + *
> >   * @return
> >   *   - 0: Success
> >   *   - <0: Error code on failure
> >   */
> >  int rte_event_eth_rx_adapter_create_ext(uint8_t id, uint8_t dev_id,
> > -                               rte_event_eth_rx_adapter_conf_cb conf_cb,
> > -                               void *conf_arg);
> > +                       rte_event_eth_rx_adapter_conf_cb conf_cb,
> > +                       void *conf_arg,
> > +                       struct rte_event_eth_rx_adapter_params
> > + *rxa_params);
> >
> >  /**
> >   * Create a new ethernet Rx event adapter with the specified identifier.
> > @@ -435,27 +439,6 @@ int rte_event_eth_rx_adapter_create_ext(uint8_t
> id, uint8_t dev_id,
> >   *  Argument of type *rte_event_port_conf* that is passed to the conf_cb
> >   *  function.
> >   *
> > - * @return
> > - *   - 0: Success
> > - *   - <0: Error code on failure
> > - */
> > -int rte_event_eth_rx_adapter_create(uint8_t id, uint8_t dev_id,
> > -                               struct rte_event_port_conf *port_config);
> > -
> > -/**
> > - * This is a variant of rte_event_eth_rx_adapter_create() with
> > additional
> > - * adapter params specified in ``struct
> rte_event_eth_rx_adapter_params``.
> > - *
> > - * @param id
> > - *  The identifier of the ethernet Rx event adapter.
> > - *
> > - * @param dev_id
> > - *  The identifier of the event device to configure.
> > - *
> > - * @param port_config
> > - *  Argument of type *rte_event_port_conf* that is passed to the
> > conf_cb
> > - *  function.
> > - *
> >   * @param rxa_params
> >   *  Pointer to struct rte_event_eth_rx_adapter_params.
> >   *  In case of NULL, default values are used.
> > @@ -464,8 +447,7 @@ int rte_event_eth_rx_adapter_create(uint8_t id,
> uint8_t dev_id,
> >   *   - 0: Success
> >   *   - <0: Error code on failure
> >   */
> > -__rte_experimental
> > -int rte_event_eth_rx_adapter_create_with_params(uint8_t id, uint8_t
> > dev_id,
> > +int rte_event_eth_rx_adapter_create(uint8_t id, uint8_t dev_id,
> >                         struct rte_event_port_conf *port_config,
> >                         struct rte_event_eth_rx_adapter_params
> > *rxa_params);
> >
> > diff --git a/lib/eventdev/version.map b/lib/eventdev/version.map index
> > b03c10d99f..1cf58f0d6c 100644
> > --- a/lib/eventdev/version.map
> > +++ b/lib/eventdev/version.map
> > @@ -101,7 +101,6 @@ EXPERIMENTAL {
> >         global:
> >
> >         # added in 21.11
> > -       rte_event_eth_rx_adapter_create_with_params;
> >         rte_event_eth_rx_adapter_queue_conf_get;
> >         rte_event_eth_rx_adapter_queue_stats_get;
> >         rte_event_eth_rx_adapter_queue_stats_reset;
> > --
> > 2.25.1
> >
  
Jerin Jacob Aug. 2, 2023, 4:12 p.m. UTC | #3
On Wed, Aug 2, 2023 at 7:58 PM Naga Harish K, S V
<s.v.naga.harish.k@intel.com> wrote:
>
> Hi Jerin,


Hi Harish,

>
> The API “rte_event_eth_rx_adapter_create_with_params()” is an extension to rte_event_eth_rx_adapter_create() with an additional adapter configuration params structure.
> There is no equivalent API existing today for the “rte_event_eth_rx_adapter_create_ext()” API which takes additional adapter params.
> There are use cases where create_ext() version of create API with additional parameters is needed. We may need to have one more adapter create API for this.
> That makes so many Adapter create APIs (4 in number) and will be confusing for the user.
>
>    That's why proposed the following changes to the Rx adapter create APIs which will consolidate the create APIs to 2 in number with all possible combinations.
> The applications that are currently using rte_event_eth_rx_adapter_create_ext() or rte_event_eth_rx_adapter_create() APIs for creating Rx Adapter can pass NULL argument for the
> newly added argument which will behave the same as before.
>
> Trying to understand what are the concerns from your perspective with this consolidated API approach.

If single application code base needs to support both version of DPDK
then they need have #ifdef clutter based on DPDK version check as we
are changing the function prototype.
IMO, We should do API prototype change as last resort. It is quite
common have two APIs versions of single operation with more
specialized parameters.



>
> -Harish
>
> > -----Original Message-----
> > From: Jerin Jacob <jerinjacobk@gmail.com>
> > Sent: Tuesday, August 1, 2023 8:54 PM
> > To: Naga Harish K, S V <s.v.naga.harish.k@intel.com>
> > Cc: dev@dpdk.org; Jayatheerthan, Jay <jay.jayatheerthan@intel.com>
> > Subject: Re: [PATCH v2] eventdev/eth_rx: update adapter create APIs
> >
> > On Tue, Aug 1, 2023 at 7:22 PM Naga Harish K S V
> > <s.v.naga.harish.k@intel.com> wrote:
> > >
> > > The adapter create APIs such as rte_event_eth_rx_adapter_create_ext()
> > > and
> > > rte_event_eth_rx_adapter_create() are updated to take additional
> > > argument as a pointer of type struct rte_event_eth_rx_adapter_params.
> > >
> > > The API rte_event_eth_rx_adapter_create_with_params() is deprecated.
> > >
> > > Signed-off-by: Naga Harish K S V <s.v.naga.harish.k@intel.com>
> >
> > Pleas check v1 comment
> > http://mails.dpdk.org/archives/dev/2023-August/273602.html
> >
> > > ---
> > > v2:
> > > *  Fix doxygen compile issue and warning
> > > ---
> > > ---
> > >  app/test-eventdev/test_perf_common.c          |   2 +-
> > >  app/test-eventdev/test_pipeline_common.c      |   2 +-
> > >  app/test/test_event_eth_rx_adapter.c          |  22 ++--
> > >  app/test/test_security_inline_proto.c         |   2 +-
> > >  .../pipeline_worker_generic.c                 |   2 +-
> > >  .../eventdev_pipeline/pipeline_worker_tx.c    |   2 +-
> > >  examples/ipsec-secgw/event_helper.c           |   2 +-
> > >  examples/l2fwd-event/l2fwd_event_generic.c    |   2 +-
> > >  .../l2fwd-event/l2fwd_event_internal_port.c   |   2 +-
> > >  examples/l3fwd/l3fwd_event_generic.c          |   2 +-
> > >  examples/l3fwd/l3fwd_event_internal_port.c    |   2 +-
> > >  lib/eventdev/rte_event_eth_rx_adapter.c       | 100 ++++++++----------
> > >  lib/eventdev/rte_event_eth_rx_adapter.h       |  36 ++-----
> > >  lib/eventdev/version.map                      |   1 -
> > >  14 files changed, 74 insertions(+), 105 deletions(-)
> > >
> > > diff --git a/app/test-eventdev/test_perf_common.c
> > > b/app/test-eventdev/test_perf_common.c
> > > index 5e0255cfeb..0c6c252f7d 100644
> > > --- a/app/test-eventdev/test_perf_common.c
> > > +++ b/app/test-eventdev/test_perf_common.c
> > > @@ -1002,7 +1002,7 @@ perf_event_rx_adapter_setup(struct
> > evt_options *opt, uint8_t stride,
> > >                 }
> > >                 queue_conf.ev.queue_id = prod * stride;
> > >                 ret = rte_event_eth_rx_adapter_create(prod, opt->dev_id,
> > > -                               &prod_conf);
> > > +                               &prod_conf, NULL);
> > >                 if (ret) {
> > >                         evt_err("failed to create rx adapter[%d]", prod);
> > >                         return ret;
> > > diff --git a/app/test-eventdev/test_pipeline_common.c
> > > b/app/test-eventdev/test_pipeline_common.c
> > > index b111690b7c..5ae175f2c7 100644
> > > --- a/app/test-eventdev/test_pipeline_common.c
> > > +++ b/app/test-eventdev/test_pipeline_common.c
> > > @@ -571,7 +571,7 @@ pipeline_event_rx_adapter_setup(struct
> > evt_options *opt, uint8_t stride,
> > >                 }
> > >                 queue_conf.ev.queue_id = prod * stride;
> > >                 ret = rte_event_eth_rx_adapter_create(prod, opt->dev_id,
> > > -                               &prod_conf);
> > > +                               &prod_conf, NULL);
> > >                 if (ret) {
> > >                         evt_err("failed to create rx adapter[%d]", prod);
> > >                         return ret;
> > > diff --git a/app/test/test_event_eth_rx_adapter.c
> > > b/app/test/test_event_eth_rx_adapter.c
> > > index 52d146f97c..42edcb625a 100644
> > > --- a/app/test/test_event_eth_rx_adapter.c
> > > +++ b/app/test/test_event_eth_rx_adapter.c
> > > @@ -401,7 +401,7 @@ adapter_create(void)
> > >         rx_p_conf.dequeue_depth =
> > dev_info.max_event_port_dequeue_depth;
> > >         rx_p_conf.enqueue_depth =
> > dev_info.max_event_port_enqueue_depth;
> > >         err = rte_event_eth_rx_adapter_create(TEST_INST_ID, TEST_DEV_ID,
> > > -                                       &rx_p_conf);
> > > +                                       &rx_p_conf, NULL);
> > >         TEST_ASSERT(err == 0, "Expected 0 got %d", err);
> > >
> > >         return err;
> > > @@ -427,17 +427,17 @@ adapter_create_with_params(void)
> > >         rxa_params.use_queue_event_buf = false;
> > >         rxa_params.event_buf_size = 0;
> > >
> > > -       err = rte_event_eth_rx_adapter_create_with_params(TEST_INST_ID,
> > > +       err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
> > >                                 TEST_DEV_ID, &rx_p_conf, &rxa_params);
> > >         TEST_ASSERT(err == -EINVAL, "Expected -EINVAL got %d", err);
> > >
> > >         rxa_params.use_queue_event_buf = true;
> > >
> > > -       err = rte_event_eth_rx_adapter_create_with_params(TEST_INST_ID,
> > > +       err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
> > >                                 TEST_DEV_ID, &rx_p_conf, &rxa_params);
> > >         TEST_ASSERT(err == 0, "Expected 0 got %d", err);
> > >
> > > -       err = rte_event_eth_rx_adapter_create_with_params(TEST_INST_ID,
> > > +       err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
> > >                                 TEST_DEV_ID, &rx_p_conf, &rxa_params);
> > >         TEST_ASSERT(err == -EEXIST, "Expected -EEXIST got %d", err);
> > >
> > > @@ -567,15 +567,15 @@ adapter_create_free(void)
> > >         };
> > >
> > >         err = rte_event_eth_rx_adapter_create(TEST_INST_ID, TEST_DEV_ID,
> > > -                                       NULL);
> > > +                                       NULL, NULL);
> > >         TEST_ASSERT(err == -EINVAL, "Expected -EINVAL got %d", err);
> > >
> > >         err = rte_event_eth_rx_adapter_create(TEST_INST_ID, TEST_DEV_ID,
> > > -                                       &rx_p_conf);
> > > +                                       &rx_p_conf, NULL);
> > >         TEST_ASSERT(err == 0, "Expected 0 got %d", err);
> > >
> > >         err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
> > > -                                       TEST_DEV_ID, &rx_p_conf);
> > > +                                       TEST_DEV_ID, &rx_p_conf,
> > > + NULL);
> > >         TEST_ASSERT(err == -EEXIST, "Expected -EEXIST %d got %d",
> > > -EEXIST, err);
> > >
> > >         err = rte_event_eth_rx_adapter_free(TEST_INST_ID);
> > > @@ -605,20 +605,20 @@ adapter_create_free_with_params(void)
> > >                         .event_buf_size = 1024
> > >         };
> > >
> > > -       err = rte_event_eth_rx_adapter_create_with_params(TEST_INST_ID,
> > > +       err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
> > >                                 TEST_DEV_ID, NULL, NULL);
> > >         TEST_ASSERT(err == -EINVAL, "Expected -EINVAL got %d", err);
> > >
> > > -       err = rte_event_eth_rx_adapter_create_with_params(TEST_INST_ID,
> > > +       err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
> > >                                 TEST_DEV_ID, &rx_p_conf, &rxa_params);
> > >         TEST_ASSERT(err == 0, "Expected 0 got %d", err);
> > >
> > > -       err = rte_event_eth_rx_adapter_create_with_params(TEST_INST_ID,
> > > +       err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
> > >                                 TEST_DEV_ID, &rx_p_conf, &rxa_params);
> > >         TEST_ASSERT(err == -EEXIST, "Expected -EEXIST %d got %d",
> > > -EEXIST, err);
> > >
> > >         rxa_params.event_buf_size = 0;
> > > -       err = rte_event_eth_rx_adapter_create_with_params(TEST_INST_ID,
> > > +       err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
> > >                                 TEST_DEV_ID, &rx_p_conf, &rxa_params);
> > >         TEST_ASSERT(err == -EINVAL, "Expected -EINVAL got %d", err);
> > >
> > > diff --git a/app/test/test_security_inline_proto.c
> > > b/app/test/test_security_inline_proto.c
> > > index 45aa742c6b..fc240201a3 100644
> > > --- a/app/test/test_security_inline_proto.c
> > > +++ b/app/test/test_security_inline_proto.c
> > > @@ -1872,7 +1872,7 @@ event_inline_ipsec_testsuite_setup(void)
> > >
> > >         /* Create Rx adapter */
> > >         ret = rte_event_eth_rx_adapter_create(rx_adapter_id, eventdev_id,
> > > -                       &ev_port_conf);
> > > +                       &ev_port_conf, NULL);
> > >         if (ret < 0) {
> > >                 printf("Failed to create rx adapter %d\n", ret);
> > >                 return ret;
> > > diff --git a/examples/eventdev_pipeline/pipeline_worker_generic.c
> > > b/examples/eventdev_pipeline/pipeline_worker_generic.c
> > > index 783f68c91e..74510338ba 100644
> > > --- a/examples/eventdev_pipeline/pipeline_worker_generic.c
> > > +++ b/examples/eventdev_pipeline/pipeline_worker_generic.c
> > > @@ -436,7 +436,7 @@ init_adapters(uint16_t nb_ports)
> > >         init_ports(nb_ports);
> > >         /* Create one adapter for all the ethernet ports. */
> > >         ret = rte_event_eth_rx_adapter_create(cdata.rx_adapter_id,
> > evdev_id,
> > > -                       &adptr_p_conf);
> > > +                       &adptr_p_conf, NULL);
> > >         if (ret)
> > >                 rte_exit(EXIT_FAILURE, "failed to create rx adapter[%d]",
> > >                                 cdata.rx_adapter_id); diff --git
> > > a/examples/eventdev_pipeline/pipeline_worker_tx.c
> > > b/examples/eventdev_pipeline/pipeline_worker_tx.c
> > > index 98a52f3892..88619d6c2e 100644
> > > --- a/examples/eventdev_pipeline/pipeline_worker_tx.c
> > > +++ b/examples/eventdev_pipeline/pipeline_worker_tx.c
> > > @@ -793,7 +793,7 @@ init_adapters(uint16_t nb_ports)
> > >                 uint32_t service_id;
> > >
> > >                 ret = rte_event_eth_rx_adapter_create(i, evdev_id,
> > > -                               &adptr_p_conf);
> > > +                               &adptr_p_conf, NULL);
> > >                 if (ret)
> > >                         rte_exit(EXIT_FAILURE,
> > >                                         "failed to create rx
> > > adapter[%d]", i); diff --git a/examples/ipsec-secgw/event_helper.c
> > > b/examples/ipsec-secgw/event_helper.c
> > > index 89fb7e62a5..28d6778134 100644
> > > --- a/examples/ipsec-secgw/event_helper.c
> > > +++ b/examples/ipsec-secgw/event_helper.c
> > > @@ -1035,7 +1035,7 @@ eh_rx_adapter_configure(struct
> > eventmode_conf
> > > *em_conf,
> > >
> > >         /* Create Rx adapter */
> > >         ret = rte_event_eth_rx_adapter_create(adapter->adapter_id,
> > > -                       adapter->eventdev_id, &port_conf);
> > > +                       adapter->eventdev_id, &port_conf, NULL);
> > >         if (ret < 0) {
> > >                 EH_LOG_ERR("Failed to create rx adapter %d", ret);
> > >                 return ret;
> > > diff --git a/examples/l2fwd-event/l2fwd_event_generic.c
> > > b/examples/l2fwd-event/l2fwd_event_generic.c
> > > index 1977e23261..4360b20aa0 100644
> > > --- a/examples/l2fwd-event/l2fwd_event_generic.c
> > > +++ b/examples/l2fwd-event/l2fwd_event_generic.c
> > > @@ -235,7 +235,7 @@ l2fwd_rx_tx_adapter_setup_generic(struct
> > l2fwd_resources *rsrc)
> > >         }
> > >
> > >         ret = rte_event_eth_rx_adapter_create(rx_adptr_id, event_d_id,
> > > -                                             &evt_rsrc->def_p_conf);
> > > +                                             &evt_rsrc->def_p_conf,
> > > + NULL);
> > >         if (ret)
> > >                 rte_panic("Failed to create rx adapter\n");
> > >
> > > diff --git a/examples/l2fwd-event/l2fwd_event_internal_port.c
> > > b/examples/l2fwd-event/l2fwd_event_internal_port.c
> > > index 717a7bceb8..542890f354 100644
> > > --- a/examples/l2fwd-event/l2fwd_event_internal_port.c
> > > +++ b/examples/l2fwd-event/l2fwd_event_internal_port.c
> > > @@ -253,7 +253,7 @@ l2fwd_rx_tx_adapter_setup_internal_port(struct
> > l2fwd_resources *rsrc)
> > >                 }
> > >
> > >                 ret = rte_event_eth_rx_adapter_create(adapter_id, event_d_id,
> > > -                                               &evt_rsrc->def_p_conf);
> > > +                                               &evt_rsrc->def_p_conf,
> > > + NULL);
> > >                 if (ret)
> > >                         rte_panic("Failed to create rx adapter[%d]\n",
> > >                                   adapter_id); diff --git
> > > a/examples/l3fwd/l3fwd_event_generic.c
> > > b/examples/l3fwd/l3fwd_event_generic.c
> > > index c80573fc58..88e7af538e 100644
> > > --- a/examples/l3fwd/l3fwd_event_generic.c
> > > +++ b/examples/l3fwd/l3fwd_event_generic.c
> > > @@ -217,7 +217,7 @@ l3fwd_rx_tx_adapter_setup_generic(void)
> > >         }
> > >
> > >         ret = rte_event_eth_rx_adapter_create(rx_adptr_id, event_d_id,
> > > -                                             &evt_rsrc->def_p_conf);
> > > +                                             &evt_rsrc->def_p_conf,
> > > + NULL);
> > >         if (ret)
> > >                 rte_panic("Failed to create rx adapter\n");
> > >
> > > diff --git a/examples/l3fwd/l3fwd_event_internal_port.c
> > > b/examples/l3fwd/l3fwd_event_internal_port.c
> > > index 32cf657148..dc8b5013cb 100644
> > > --- a/examples/l3fwd/l3fwd_event_internal_port.c
> > > +++ b/examples/l3fwd/l3fwd_event_internal_port.c
> > > @@ -246,7 +246,7 @@ l3fwd_rx_tx_adapter_setup_internal_port(void)
> > >                 }
> > >
> > >                 ret = rte_event_eth_rx_adapter_create(adapter_id, event_d_id,
> > > -                                                     &evt_rsrc->def_p_conf);
> > > +
> > > + &evt_rsrc->def_p_conf, NULL);
> > >                 if (ret)
> > >                         rte_panic("Failed to create rx adapter[%d]\n",
> > >                                   adapter_id); diff --git
> > > a/lib/eventdev/rte_event_eth_rx_adapter.c
> > > b/lib/eventdev/rte_event_eth_rx_adapter.c
> > > index f7f93ccdfd..ce203a5e4b 100644
> > > --- a/lib/eventdev/rte_event_eth_rx_adapter.c
> > > +++ b/lib/eventdev/rte_event_eth_rx_adapter.c
> > > @@ -2485,90 +2485,78 @@ rxa_create(uint8_t id, uint8_t dev_id,
> > >         return 0;
> > >  }
> > >
> > > -int
> > > -rte_event_eth_rx_adapter_create_ext(uint8_t id, uint8_t dev_id,
> > > -                               rte_event_eth_rx_adapter_conf_cb conf_cb,
> > > -                               void *conf_arg)
> > > +static int __rte_cold
> > > +rxa_config_params_validate(struct rte_event_eth_rx_adapter_params
> > *rxa_params,
> > > +                          struct rte_event_eth_rx_adapter_params
> > > +*temp_params)
> > >  {
> > > -       struct rte_event_eth_rx_adapter_params rxa_params = {0};
> > > +       if (rxa_params == NULL) {
> > > +               /* use default values if rxa_params is NULL */
> > > +               temp_params->event_buf_size = ETH_EVENT_BUFFER_SIZE;
> > > +               temp_params->use_queue_event_buf = false;
> > > +       } else if (!rxa_params->use_queue_event_buf &&
> > > +                   rxa_params->event_buf_size == 0) {
> > > +               RTE_EDEV_LOG_ERR("event buffer size can't be zero\n");
> > > +               return -EINVAL;
> > > +       } else if (rxa_params->use_queue_event_buf &&
> > > +                  rxa_params->event_buf_size != 0) {
> > > +               RTE_EDEV_LOG_ERR("event buffer size needs to be configured "
> > > +                                "as part of queue add\n");
> > > +               return -EINVAL;
> > > +       }
> > >
> > > -       /* use default values for adapter params */
> > > -       rxa_params.event_buf_size = ETH_EVENT_BUFFER_SIZE;
> > > -       rxa_params.use_queue_event_buf = false;
> > > +       *temp_params = *rxa_params;
> > > +       /* adjust event buff size with BATCH_SIZE used for fetching
> > > +        * packets from NIC rx queues to get full buffer utilization
> > > +        * and prevent unnecessary rollovers.
> > > +        */
> > > +       if (!temp_params->use_queue_event_buf) {
> > > +               temp_params->event_buf_size =
> > > +                       RTE_ALIGN(temp_params->event_buf_size, BATCH_SIZE);
> > > +               temp_params->event_buf_size += (BATCH_SIZE + BATCH_SIZE);
> > > +       }
> > >
> > > -       return rxa_create(id, dev_id, &rxa_params, conf_cb, conf_arg);
> > > +       return 0;
> > >  }
> > >
> > >  int
> > > -rte_event_eth_rx_adapter_create_with_params(uint8_t id, uint8_t
> > dev_id,
> > > -                       struct rte_event_port_conf *port_config,
> > > +rte_event_eth_rx_adapter_create_ext(uint8_t id, uint8_t dev_id,
> > > +                       rte_event_eth_rx_adapter_conf_cb conf_cb,
> > > +                       void *conf_arg,
> > >                         struct rte_event_eth_rx_adapter_params
> > > *rxa_params)  {
> > > -       struct rte_event_port_conf *pc;
> > > -       int ret;
> > >         struct rte_event_eth_rx_adapter_params temp_params = {0};
> > > +       int ret;
> > >
> > > -       if (port_config == NULL)
> > > -               return -EINVAL;
> > > -
> > > -       if (rxa_params == NULL) {
> > > -               /* use default values if rxa_params is NULL */
> > > -               rxa_params = &temp_params;
> > > -               rxa_params->event_buf_size = ETH_EVENT_BUFFER_SIZE;
> > > -               rxa_params->use_queue_event_buf = false;
> > > -       } else if ((!rxa_params->use_queue_event_buf &&
> > > -                   rxa_params->event_buf_size == 0) ||
> > > -                  (rxa_params->use_queue_event_buf &&
> > > -                   rxa_params->event_buf_size != 0)) {
> > > -               RTE_EDEV_LOG_ERR("Invalid adapter params\n");
> > > -               return -EINVAL;
> > > -       } else if (!rxa_params->use_queue_event_buf) {
> > > -               /* adjust event buff size with BATCH_SIZE used for fetching
> > > -                * packets from NIC rx queues to get full buffer utilization
> > > -                * and prevent unnecessary rollovers.
> > > -                */
> > > -
> > > -               rxa_params->event_buf_size =
> > > -                       RTE_ALIGN(rxa_params->event_buf_size, BATCH_SIZE);
> > > -               rxa_params->event_buf_size += (BATCH_SIZE + BATCH_SIZE);
> > > -       }
> > > -
> > > -       pc = rte_malloc(NULL, sizeof(*pc), 0);
> > > -       if (pc == NULL)
> > > -               return -ENOMEM;
> > > -
> > > -       *pc = *port_config;
> > > -
> > > -       ret = rxa_create(id, dev_id, rxa_params, rxa_default_conf_cb, pc);
> > > -       if (ret)
> > > -               rte_free(pc);
> > > -
> > > -       rte_eventdev_trace_eth_rx_adapter_create_with_params(id, dev_id,
> > > -               port_config, rxa_params, ret);
> > > +       ret = rxa_config_params_validate(rxa_params, &temp_params);
> > > +       if (ret != 0)
> > > +               return ret;
> > >
> > > -       return ret;
> > > +       return rxa_create(id, dev_id, &temp_params, conf_cb,
> > > + conf_arg);
> > >  }
> > >
> > >  int
> > >  rte_event_eth_rx_adapter_create(uint8_t id, uint8_t dev_id,
> > > -               struct rte_event_port_conf *port_config)
> > > +                       struct rte_event_port_conf *port_config,
> > > +                       struct rte_event_eth_rx_adapter_params
> > > + *rxa_params)
> > >  {
> > >         struct rte_event_port_conf *pc;
> > >         int ret;
> > > +       struct rte_event_eth_rx_adapter_params temp_params = {0};
> > >
> > >         if (port_config == NULL)
> > >                 return -EINVAL;
> > >
> > > -       RTE_EVENT_ETH_RX_ADAPTER_ID_VALID_OR_ERR_RET(id, -EINVAL);
> > > +       ret = rxa_config_params_validate(rxa_params, &temp_params);
> > > +       if (ret != 0)
> > > +               return ret;
> > >
> > >         pc = rte_malloc(NULL, sizeof(*pc), 0);
> > >         if (pc == NULL)
> > >                 return -ENOMEM;
> > > +
> > >         *pc = *port_config;
> > >
> > > -       ret = rte_event_eth_rx_adapter_create_ext(id, dev_id,
> > > -                                       rxa_default_conf_cb,
> > > -                                       pc);
> > > +       ret = rxa_create(id, dev_id, &temp_params,
> > > + rxa_default_conf_cb, pc);
> > >         if (ret)
> > >                 rte_free(pc);
> > >         return ret;
> > > diff --git a/lib/eventdev/rte_event_eth_rx_adapter.h
> > > b/lib/eventdev/rte_event_eth_rx_adapter.h
> > > index fe2a6bdd2c..793e3cedad 100644
> > > --- a/lib/eventdev/rte_event_eth_rx_adapter.h
> > > +++ b/lib/eventdev/rte_event_eth_rx_adapter.h
> > > @@ -26,7 +26,6 @@
> > >   * The ethernet Rx event adapter's functions are:
> > >   *  - rte_event_eth_rx_adapter_create_ext()
> > >   *  - rte_event_eth_rx_adapter_create()
> > > - *  - rte_event_eth_rx_adapter_create_with_params()
> > >   *  - rte_event_eth_rx_adapter_free()
> > >   *  - rte_event_eth_rx_adapter_queue_add()
> > >   *  - rte_event_eth_rx_adapter_queue_del()
> > > @@ -45,7 +44,7 @@
> > >   *
> > >   * The application creates an ethernet to event adapter using
> > >   * rte_event_eth_rx_adapter_create_ext() or
> > > rte_event_eth_rx_adapter_create()
> > > - * or rte_event_eth_rx_adapter_create_with_params() functions.
> > > + * functions.
> > >   *
> > >   * The adapter needs to know which ethernet rx queues to poll for mbufs
> > as well
> > >   * as event device parameters such as the event queue identifier,
> > > event @@ -394,13 +393,18 @@ typedef uint16_t
> > (*rte_event_eth_rx_adapter_cb_fn)(uint16_t eth_dev_id,
> > >   * @param conf_arg
> > >   *  Argument that is passed to the conf_cb function.
> > >   *
> > > + * @param rxa_params
> > > + *  Pointer to struct rte_event_eth_rx_adapter_params.
> > > + *  In case of NULL, default values are used.
> > > + *
> > >   * @return
> > >   *   - 0: Success
> > >   *   - <0: Error code on failure
> > >   */
> > >  int rte_event_eth_rx_adapter_create_ext(uint8_t id, uint8_t dev_id,
> > > -                               rte_event_eth_rx_adapter_conf_cb conf_cb,
> > > -                               void *conf_arg);
> > > +                       rte_event_eth_rx_adapter_conf_cb conf_cb,
> > > +                       void *conf_arg,
> > > +                       struct rte_event_eth_rx_adapter_params
> > > + *rxa_params);
> > >
> > >  /**
> > >   * Create a new ethernet Rx event adapter with the specified identifier.
> > > @@ -435,27 +439,6 @@ int rte_event_eth_rx_adapter_create_ext(uint8_t
> > id, uint8_t dev_id,
> > >   *  Argument of type *rte_event_port_conf* that is passed to the conf_cb
> > >   *  function.
> > >   *
> > > - * @return
> > > - *   - 0: Success
> > > - *   - <0: Error code on failure
> > > - */
> > > -int rte_event_eth_rx_adapter_create(uint8_t id, uint8_t dev_id,
> > > -                               struct rte_event_port_conf *port_config);
> > > -
> > > -/**
> > > - * This is a variant of rte_event_eth_rx_adapter_create() with
> > > additional
> > > - * adapter params specified in ``struct
> > rte_event_eth_rx_adapter_params``.
> > > - *
> > > - * @param id
> > > - *  The identifier of the ethernet Rx event adapter.
> > > - *
> > > - * @param dev_id
> > > - *  The identifier of the event device to configure.
> > > - *
> > > - * @param port_config
> > > - *  Argument of type *rte_event_port_conf* that is passed to the
> > > conf_cb
> > > - *  function.
> > > - *
> > >   * @param rxa_params
> > >   *  Pointer to struct rte_event_eth_rx_adapter_params.
> > >   *  In case of NULL, default values are used.
> > > @@ -464,8 +447,7 @@ int rte_event_eth_rx_adapter_create(uint8_t id,
> > uint8_t dev_id,
> > >   *   - 0: Success
> > >   *   - <0: Error code on failure
> > >   */
> > > -__rte_experimental
> > > -int rte_event_eth_rx_adapter_create_with_params(uint8_t id, uint8_t
> > > dev_id,
> > > +int rte_event_eth_rx_adapter_create(uint8_t id, uint8_t dev_id,
> > >                         struct rte_event_port_conf *port_config,
> > >                         struct rte_event_eth_rx_adapter_params
> > > *rxa_params);
> > >
> > > diff --git a/lib/eventdev/version.map b/lib/eventdev/version.map index
> > > b03c10d99f..1cf58f0d6c 100644
> > > --- a/lib/eventdev/version.map
> > > +++ b/lib/eventdev/version.map
> > > @@ -101,7 +101,6 @@ EXPERIMENTAL {
> > >         global:
> > >
> > >         # added in 21.11
> > > -       rte_event_eth_rx_adapter_create_with_params;
> > >         rte_event_eth_rx_adapter_queue_conf_get;
> > >         rte_event_eth_rx_adapter_queue_stats_get;
> > >         rte_event_eth_rx_adapter_queue_stats_reset;
> > > --
> > > 2.25.1
> > >
  
Naga Harish K, S V Aug. 10, 2023, 7:38 a.m. UTC | #4
Hi Jerin,
     As per DPDK Guidelines, API changes or ABI breakage is allowed during LTS releases
	 (https://doc.dpdk.org/guides/contributing/abi_policy.html#abi-breakages)

Also, there are previous instances where API changes happened, some of them are mentioned below.

   In DPDK 22.11, the cryptodev library had undergone the following API changes.
* rte_cryptodev_sym_session_create() and rte_cryptodev_asym_session_create() API parameters changed.
   rte_cryptodev_sym_session_free() and rte_cryptodev_asym_session_free() API parameters changed.
   rte_cryptodev_sym_session_init() and rte_cryptodev_asym_session_init() APIs are removed.
 
* eventdev: The function ``rte_event_crypto_adapter_queue_pair_add`` was updated
   to accept configuration of type ``rte_event_crypto_adapter_queue_conf``
   instead of ``rte_event``,
   similar to ``rte_event_eth_rx_adapter_queue_add`` signature.
   Event will be one of the configuration fields,
   together with additional vector parameters.

 Applications have to change to accommodate the above API changes.

As discussed earlier, fewer adapter-create APIs are useful for the application design.
Please let us know your thoughts on the same.

-Harish

> -----Original Message-----
> From: Jerin Jacob <jerinjacobk@gmail.com>
> Sent: Wednesday, August 2, 2023 9:42 PM
> To: Naga Harish K, S V <s.v.naga.harish.k@intel.com>
> Cc: dev@dpdk.org; Jayatheerthan, Jay <jay.jayatheerthan@intel.com>
> Subject: Re: [PATCH v2] eventdev/eth_rx: update adapter create APIs
> 
> On Wed, Aug 2, 2023 at 7:58 PM Naga Harish K, S V
> <s.v.naga.harish.k@intel.com> wrote:
> >
> > Hi Jerin,
> 
> 
> Hi Harish,
> 
> >
> > The API “rte_event_eth_rx_adapter_create_with_params()” is an extension to
> rte_event_eth_rx_adapter_create() with an additional adapter configuration
> params structure.
> > There is no equivalent API existing today for the
> “rte_event_eth_rx_adapter_create_ext()” API which takes additional adapter
> params.
> > There are use cases where create_ext() version of create API with additional
> parameters is needed. We may need to have one more adapter create API for
> this.
> > That makes so many Adapter create APIs (4 in number) and will be confusing
> for the user.
> >
> >    That's why proposed the following changes to the Rx adapter create APIs
> which will consolidate the create APIs to 2 in number with all possible
> combinations.
> > The applications that are currently using
> > rte_event_eth_rx_adapter_create_ext() or rte_event_eth_rx_adapter_create()
> APIs for creating Rx Adapter can pass NULL argument for the newly added
> argument which will behave the same as before.
> >
> > Trying to understand what are the concerns from your perspective with this
> consolidated API approach.
> 
> If single application code base needs to support both version of DPDK then they
> need have #ifdef clutter based on DPDK version check as we are changing the
> function prototype.
> IMO, We should do API prototype change as last resort. It is quite common have
> two APIs versions of single operation with more specialized parameters.
> 
> 
> 
> >
> > -Harish
> >
> > > -----Original Message-----
> > > From: Jerin Jacob <jerinjacobk@gmail.com>
> > > Sent: Tuesday, August 1, 2023 8:54 PM
> > > To: Naga Harish K, S V <s.v.naga.harish.k@intel.com>
> > > Cc: dev@dpdk.org; Jayatheerthan, Jay <jay.jayatheerthan@intel.com>
> > > Subject: Re: [PATCH v2] eventdev/eth_rx: update adapter create APIs
> > >
> > > On Tue, Aug 1, 2023 at 7:22 PM Naga Harish K S V
> > > <s.v.naga.harish.k@intel.com> wrote:
> > > >
> > > > The adapter create APIs such as
> > > > rte_event_eth_rx_adapter_create_ext()
> > > > and
> > > > rte_event_eth_rx_adapter_create() are updated to take additional
> > > > argument as a pointer of type struct rte_event_eth_rx_adapter_params.
> > > >
> > > > The API rte_event_eth_rx_adapter_create_with_params() is deprecated.
> > > >
> > > > Signed-off-by: Naga Harish K S V <s.v.naga.harish.k@intel.com>
> > >
> > > Pleas check v1 comment
> > > http://mails.dpdk.org/archives/dev/2023-August/273602.html
> > >
> > > > ---
> > > > v2:
> > > > *  Fix doxygen compile issue and warning
> > > > ---
> > > > ---
> > > >  app/test-eventdev/test_perf_common.c          |   2 +-
> > > >  app/test-eventdev/test_pipeline_common.c      |   2 +-
> > > >  app/test/test_event_eth_rx_adapter.c          |  22 ++--
> > > >  app/test/test_security_inline_proto.c         |   2 +-
> > > >  .../pipeline_worker_generic.c                 |   2 +-
> > > >  .../eventdev_pipeline/pipeline_worker_tx.c    |   2 +-
> > > >  examples/ipsec-secgw/event_helper.c           |   2 +-
> > > >  examples/l2fwd-event/l2fwd_event_generic.c    |   2 +-
> > > >  .../l2fwd-event/l2fwd_event_internal_port.c   |   2 +-
> > > >  examples/l3fwd/l3fwd_event_generic.c          |   2 +-
> > > >  examples/l3fwd/l3fwd_event_internal_port.c    |   2 +-
> > > >  lib/eventdev/rte_event_eth_rx_adapter.c       | 100 ++++++++----------
> > > >  lib/eventdev/rte_event_eth_rx_adapter.h       |  36 ++-----
> > > >  lib/eventdev/version.map                      |   1 -
> > > >  14 files changed, 74 insertions(+), 105 deletions(-)
> > > >
> > > > diff --git a/app/test-eventdev/test_perf_common.c
> > > > b/app/test-eventdev/test_perf_common.c
> > > > index 5e0255cfeb..0c6c252f7d 100644
> > > > --- a/app/test-eventdev/test_perf_common.c
> > > > +++ b/app/test-eventdev/test_perf_common.c
> > > > @@ -1002,7 +1002,7 @@ perf_event_rx_adapter_setup(struct
> > > evt_options *opt, uint8_t stride,
> > > >                 }
> > > >                 queue_conf.ev.queue_id = prod * stride;
> > > >                 ret = rte_event_eth_rx_adapter_create(prod, opt->dev_id,
> > > > -                               &prod_conf);
> > > > +                               &prod_conf, NULL);
> > > >                 if (ret) {
> > > >                         evt_err("failed to create rx adapter[%d]", prod);
> > > >                         return ret; diff --git
> > > > a/app/test-eventdev/test_pipeline_common.c
> > > > b/app/test-eventdev/test_pipeline_common.c
> > > > index b111690b7c..5ae175f2c7 100644
> > > > --- a/app/test-eventdev/test_pipeline_common.c
> > > > +++ b/app/test-eventdev/test_pipeline_common.c
> > > > @@ -571,7 +571,7 @@ pipeline_event_rx_adapter_setup(struct
> > > evt_options *opt, uint8_t stride,
> > > >                 }
> > > >                 queue_conf.ev.queue_id = prod * stride;
> > > >                 ret = rte_event_eth_rx_adapter_create(prod, opt->dev_id,
> > > > -                               &prod_conf);
> > > > +                               &prod_conf, NULL);
> > > >                 if (ret) {
> > > >                         evt_err("failed to create rx adapter[%d]", prod);
> > > >                         return ret; diff --git
> > > > a/app/test/test_event_eth_rx_adapter.c
> > > > b/app/test/test_event_eth_rx_adapter.c
> > > > index 52d146f97c..42edcb625a 100644
> > > > --- a/app/test/test_event_eth_rx_adapter.c
> > > > +++ b/app/test/test_event_eth_rx_adapter.c
> > > > @@ -401,7 +401,7 @@ adapter_create(void)
> > > >         rx_p_conf.dequeue_depth =
> > > dev_info.max_event_port_dequeue_depth;
> > > >         rx_p_conf.enqueue_depth =
> > > dev_info.max_event_port_enqueue_depth;
> > > >         err = rte_event_eth_rx_adapter_create(TEST_INST_ID, TEST_DEV_ID,
> > > > -                                       &rx_p_conf);
> > > > +                                       &rx_p_conf, NULL);
> > > >         TEST_ASSERT(err == 0, "Expected 0 got %d", err);
> > > >
> > > >         return err;
> > > > @@ -427,17 +427,17 @@ adapter_create_with_params(void)
> > > >         rxa_params.use_queue_event_buf = false;
> > > >         rxa_params.event_buf_size = 0;
> > > >
> > > > -       err = rte_event_eth_rx_adapter_create_with_params(TEST_INST_ID,
> > > > +       err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
> > > >                                 TEST_DEV_ID, &rx_p_conf, &rxa_params);
> > > >         TEST_ASSERT(err == -EINVAL, "Expected -EINVAL got %d",
> > > > err);
> > > >
> > > >         rxa_params.use_queue_event_buf = true;
> > > >
> > > > -       err = rte_event_eth_rx_adapter_create_with_params(TEST_INST_ID,
> > > > +       err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
> > > >                                 TEST_DEV_ID, &rx_p_conf, &rxa_params);
> > > >         TEST_ASSERT(err == 0, "Expected 0 got %d", err);
> > > >
> > > > -       err = rte_event_eth_rx_adapter_create_with_params(TEST_INST_ID,
> > > > +       err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
> > > >                                 TEST_DEV_ID, &rx_p_conf, &rxa_params);
> > > >         TEST_ASSERT(err == -EEXIST, "Expected -EEXIST got %d",
> > > > err);
> > > >
> > > > @@ -567,15 +567,15 @@ adapter_create_free(void)
> > > >         };
> > > >
> > > >         err = rte_event_eth_rx_adapter_create(TEST_INST_ID, TEST_DEV_ID,
> > > > -                                       NULL);
> > > > +                                       NULL, NULL);
> > > >         TEST_ASSERT(err == -EINVAL, "Expected -EINVAL got %d",
> > > > err);
> > > >
> > > >         err = rte_event_eth_rx_adapter_create(TEST_INST_ID, TEST_DEV_ID,
> > > > -                                       &rx_p_conf);
> > > > +                                       &rx_p_conf, NULL);
> > > >         TEST_ASSERT(err == 0, "Expected 0 got %d", err);
> > > >
> > > >         err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
> > > > -                                       TEST_DEV_ID, &rx_p_conf);
> > > > +                                       TEST_DEV_ID, &rx_p_conf,
> > > > + NULL);
> > > >         TEST_ASSERT(err == -EEXIST, "Expected -EEXIST %d got %d",
> > > > -EEXIST, err);
> > > >
> > > >         err = rte_event_eth_rx_adapter_free(TEST_INST_ID);
> > > > @@ -605,20 +605,20 @@ adapter_create_free_with_params(void)
> > > >                         .event_buf_size = 1024
> > > >         };
> > > >
> > > > -       err = rte_event_eth_rx_adapter_create_with_params(TEST_INST_ID,
> > > > +       err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
> > > >                                 TEST_DEV_ID, NULL, NULL);
> > > >         TEST_ASSERT(err == -EINVAL, "Expected -EINVAL got %d",
> > > > err);
> > > >
> > > > -       err = rte_event_eth_rx_adapter_create_with_params(TEST_INST_ID,
> > > > +       err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
> > > >                                 TEST_DEV_ID, &rx_p_conf, &rxa_params);
> > > >         TEST_ASSERT(err == 0, "Expected 0 got %d", err);
> > > >
> > > > -       err = rte_event_eth_rx_adapter_create_with_params(TEST_INST_ID,
> > > > +       err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
> > > >                                 TEST_DEV_ID, &rx_p_conf, &rxa_params);
> > > >         TEST_ASSERT(err == -EEXIST, "Expected -EEXIST %d got %d",
> > > > -EEXIST, err);
> > > >
> > > >         rxa_params.event_buf_size = 0;
> > > > -       err = rte_event_eth_rx_adapter_create_with_params(TEST_INST_ID,
> > > > +       err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
> > > >                                 TEST_DEV_ID, &rx_p_conf, &rxa_params);
> > > >         TEST_ASSERT(err == -EINVAL, "Expected -EINVAL got %d",
> > > > err);
> > > >
> > > > diff --git a/app/test/test_security_inline_proto.c
> > > > b/app/test/test_security_inline_proto.c
> > > > index 45aa742c6b..fc240201a3 100644
> > > > --- a/app/test/test_security_inline_proto.c
> > > > +++ b/app/test/test_security_inline_proto.c
> > > > @@ -1872,7 +1872,7 @@ event_inline_ipsec_testsuite_setup(void)
> > > >
> > > >         /* Create Rx adapter */
> > > >         ret = rte_event_eth_rx_adapter_create(rx_adapter_id, eventdev_id,
> > > > -                       &ev_port_conf);
> > > > +                       &ev_port_conf, NULL);
> > > >         if (ret < 0) {
> > > >                 printf("Failed to create rx adapter %d\n", ret);
> > > >                 return ret;
> > > > diff --git a/examples/eventdev_pipeline/pipeline_worker_generic.c
> > > > b/examples/eventdev_pipeline/pipeline_worker_generic.c
> > > > index 783f68c91e..74510338ba 100644
> > > > --- a/examples/eventdev_pipeline/pipeline_worker_generic.c
> > > > +++ b/examples/eventdev_pipeline/pipeline_worker_generic.c
> > > > @@ -436,7 +436,7 @@ init_adapters(uint16_t nb_ports)
> > > >         init_ports(nb_ports);
> > > >         /* Create one adapter for all the ethernet ports. */
> > > >         ret = rte_event_eth_rx_adapter_create(cdata.rx_adapter_id,
> > > evdev_id,
> > > > -                       &adptr_p_conf);
> > > > +                       &adptr_p_conf, NULL);
> > > >         if (ret)
> > > >                 rte_exit(EXIT_FAILURE, "failed to create rx adapter[%d]",
> > > >                                 cdata.rx_adapter_id); diff --git
> > > > a/examples/eventdev_pipeline/pipeline_worker_tx.c
> > > > b/examples/eventdev_pipeline/pipeline_worker_tx.c
> > > > index 98a52f3892..88619d6c2e 100644
> > > > --- a/examples/eventdev_pipeline/pipeline_worker_tx.c
> > > > +++ b/examples/eventdev_pipeline/pipeline_worker_tx.c
> > > > @@ -793,7 +793,7 @@ init_adapters(uint16_t nb_ports)
> > > >                 uint32_t service_id;
> > > >
> > > >                 ret = rte_event_eth_rx_adapter_create(i, evdev_id,
> > > > -                               &adptr_p_conf);
> > > > +                               &adptr_p_conf, NULL);
> > > >                 if (ret)
> > > >                         rte_exit(EXIT_FAILURE,
> > > >                                         "failed to create rx
> > > > adapter[%d]", i); diff --git a/examples/ipsec-secgw/event_helper.c
> > > > b/examples/ipsec-secgw/event_helper.c
> > > > index 89fb7e62a5..28d6778134 100644
> > > > --- a/examples/ipsec-secgw/event_helper.c
> > > > +++ b/examples/ipsec-secgw/event_helper.c
> > > > @@ -1035,7 +1035,7 @@ eh_rx_adapter_configure(struct
> > > eventmode_conf
> > > > *em_conf,
> > > >
> > > >         /* Create Rx adapter */
> > > >         ret = rte_event_eth_rx_adapter_create(adapter->adapter_id,
> > > > -                       adapter->eventdev_id, &port_conf);
> > > > +                       adapter->eventdev_id, &port_conf, NULL);
> > > >         if (ret < 0) {
> > > >                 EH_LOG_ERR("Failed to create rx adapter %d", ret);
> > > >                 return ret;
> > > > diff --git a/examples/l2fwd-event/l2fwd_event_generic.c
> > > > b/examples/l2fwd-event/l2fwd_event_generic.c
> > > > index 1977e23261..4360b20aa0 100644
> > > > --- a/examples/l2fwd-event/l2fwd_event_generic.c
> > > > +++ b/examples/l2fwd-event/l2fwd_event_generic.c
> > > > @@ -235,7 +235,7 @@ l2fwd_rx_tx_adapter_setup_generic(struct
> > > l2fwd_resources *rsrc)
> > > >         }
> > > >
> > > >         ret = rte_event_eth_rx_adapter_create(rx_adptr_id, event_d_id,
> > > > -                                             &evt_rsrc->def_p_conf);
> > > > +
> > > > + &evt_rsrc->def_p_conf, NULL);
> > > >         if (ret)
> > > >                 rte_panic("Failed to create rx adapter\n");
> > > >
> > > > diff --git a/examples/l2fwd-event/l2fwd_event_internal_port.c
> > > > b/examples/l2fwd-event/l2fwd_event_internal_port.c
> > > > index 717a7bceb8..542890f354 100644
> > > > --- a/examples/l2fwd-event/l2fwd_event_internal_port.c
> > > > +++ b/examples/l2fwd-event/l2fwd_event_internal_port.c
> > > > @@ -253,7 +253,7 @@ l2fwd_rx_tx_adapter_setup_internal_port(struct
> > > l2fwd_resources *rsrc)
> > > >                 }
> > > >
> > > >                 ret = rte_event_eth_rx_adapter_create(adapter_id, event_d_id,
> > > > -                                               &evt_rsrc->def_p_conf);
> > > > +
> > > > + &evt_rsrc->def_p_conf, NULL);
> > > >                 if (ret)
> > > >                         rte_panic("Failed to create rx adapter[%d]\n",
> > > >                                   adapter_id); diff --git
> > > > a/examples/l3fwd/l3fwd_event_generic.c
> > > > b/examples/l3fwd/l3fwd_event_generic.c
> > > > index c80573fc58..88e7af538e 100644
> > > > --- a/examples/l3fwd/l3fwd_event_generic.c
> > > > +++ b/examples/l3fwd/l3fwd_event_generic.c
> > > > @@ -217,7 +217,7 @@ l3fwd_rx_tx_adapter_setup_generic(void)
> > > >         }
> > > >
> > > >         ret = rte_event_eth_rx_adapter_create(rx_adptr_id, event_d_id,
> > > > -                                             &evt_rsrc->def_p_conf);
> > > > +
> > > > + &evt_rsrc->def_p_conf, NULL);
> > > >         if (ret)
> > > >                 rte_panic("Failed to create rx adapter\n");
> > > >
> > > > diff --git a/examples/l3fwd/l3fwd_event_internal_port.c
> > > > b/examples/l3fwd/l3fwd_event_internal_port.c
> > > > index 32cf657148..dc8b5013cb 100644
> > > > --- a/examples/l3fwd/l3fwd_event_internal_port.c
> > > > +++ b/examples/l3fwd/l3fwd_event_internal_port.c
> > > > @@ -246,7 +246,7 @@ l3fwd_rx_tx_adapter_setup_internal_port(void)
> > > >                 }
> > > >
> > > >                 ret = rte_event_eth_rx_adapter_create(adapter_id, event_d_id,
> > > > -                                                     &evt_rsrc->def_p_conf);
> > > > +
> > > > + &evt_rsrc->def_p_conf, NULL);
> > > >                 if (ret)
> > > >                         rte_panic("Failed to create rx adapter[%d]\n",
> > > >                                   adapter_id); diff --git
> > > > a/lib/eventdev/rte_event_eth_rx_adapter.c
> > > > b/lib/eventdev/rte_event_eth_rx_adapter.c
> > > > index f7f93ccdfd..ce203a5e4b 100644
> > > > --- a/lib/eventdev/rte_event_eth_rx_adapter.c
> > > > +++ b/lib/eventdev/rte_event_eth_rx_adapter.c
> > > > @@ -2485,90 +2485,78 @@ rxa_create(uint8_t id, uint8_t dev_id,
> > > >         return 0;
> > > >  }
> > > >
> > > > -int
> > > > -rte_event_eth_rx_adapter_create_ext(uint8_t id, uint8_t dev_id,
> > > > -                               rte_event_eth_rx_adapter_conf_cb conf_cb,
> > > > -                               void *conf_arg)
> > > > +static int __rte_cold
> > > > +rxa_config_params_validate(struct rte_event_eth_rx_adapter_params
> > > *rxa_params,
> > > > +                          struct rte_event_eth_rx_adapter_params
> > > > +*temp_params)
> > > >  {
> > > > -       struct rte_event_eth_rx_adapter_params rxa_params = {0};
> > > > +       if (rxa_params == NULL) {
> > > > +               /* use default values if rxa_params is NULL */
> > > > +               temp_params->event_buf_size = ETH_EVENT_BUFFER_SIZE;
> > > > +               temp_params->use_queue_event_buf = false;
> > > > +       } else if (!rxa_params->use_queue_event_buf &&
> > > > +                   rxa_params->event_buf_size == 0) {
> > > > +               RTE_EDEV_LOG_ERR("event buffer size can't be zero\n");
> > > > +               return -EINVAL;
> > > > +       } else if (rxa_params->use_queue_event_buf &&
> > > > +                  rxa_params->event_buf_size != 0) {
> > > > +               RTE_EDEV_LOG_ERR("event buffer size needs to be configured "
> > > > +                                "as part of queue add\n");
> > > > +               return -EINVAL;
> > > > +       }
> > > >
> > > > -       /* use default values for adapter params */
> > > > -       rxa_params.event_buf_size = ETH_EVENT_BUFFER_SIZE;
> > > > -       rxa_params.use_queue_event_buf = false;
> > > > +       *temp_params = *rxa_params;
> > > > +       /* adjust event buff size with BATCH_SIZE used for fetching
> > > > +        * packets from NIC rx queues to get full buffer utilization
> > > > +        * and prevent unnecessary rollovers.
> > > > +        */
> > > > +       if (!temp_params->use_queue_event_buf) {
> > > > +               temp_params->event_buf_size =
> > > > +                       RTE_ALIGN(temp_params->event_buf_size, BATCH_SIZE);
> > > > +               temp_params->event_buf_size += (BATCH_SIZE + BATCH_SIZE);
> > > > +       }
> > > >
> > > > -       return rxa_create(id, dev_id, &rxa_params, conf_cb, conf_arg);
> > > > +       return 0;
> > > >  }
> > > >
> > > >  int
> > > > -rte_event_eth_rx_adapter_create_with_params(uint8_t id, uint8_t
> > > dev_id,
> > > > -                       struct rte_event_port_conf *port_config,
> > > > +rte_event_eth_rx_adapter_create_ext(uint8_t id, uint8_t dev_id,
> > > > +                       rte_event_eth_rx_adapter_conf_cb conf_cb,
> > > > +                       void *conf_arg,
> > > >                         struct rte_event_eth_rx_adapter_params
> > > > *rxa_params)  {
> > > > -       struct rte_event_port_conf *pc;
> > > > -       int ret;
> > > >         struct rte_event_eth_rx_adapter_params temp_params = {0};
> > > > +       int ret;
> > > >
> > > > -       if (port_config == NULL)
> > > > -               return -EINVAL;
> > > > -
> > > > -       if (rxa_params == NULL) {
> > > > -               /* use default values if rxa_params is NULL */
> > > > -               rxa_params = &temp_params;
> > > > -               rxa_params->event_buf_size = ETH_EVENT_BUFFER_SIZE;
> > > > -               rxa_params->use_queue_event_buf = false;
> > > > -       } else if ((!rxa_params->use_queue_event_buf &&
> > > > -                   rxa_params->event_buf_size == 0) ||
> > > > -                  (rxa_params->use_queue_event_buf &&
> > > > -                   rxa_params->event_buf_size != 0)) {
> > > > -               RTE_EDEV_LOG_ERR("Invalid adapter params\n");
> > > > -               return -EINVAL;
> > > > -       } else if (!rxa_params->use_queue_event_buf) {
> > > > -               /* adjust event buff size with BATCH_SIZE used for fetching
> > > > -                * packets from NIC rx queues to get full buffer utilization
> > > > -                * and prevent unnecessary rollovers.
> > > > -                */
> > > > -
> > > > -               rxa_params->event_buf_size =
> > > > -                       RTE_ALIGN(rxa_params->event_buf_size, BATCH_SIZE);
> > > > -               rxa_params->event_buf_size += (BATCH_SIZE + BATCH_SIZE);
> > > > -       }
> > > > -
> > > > -       pc = rte_malloc(NULL, sizeof(*pc), 0);
> > > > -       if (pc == NULL)
> > > > -               return -ENOMEM;
> > > > -
> > > > -       *pc = *port_config;
> > > > -
> > > > -       ret = rxa_create(id, dev_id, rxa_params, rxa_default_conf_cb, pc);
> > > > -       if (ret)
> > > > -               rte_free(pc);
> > > > -
> > > > -       rte_eventdev_trace_eth_rx_adapter_create_with_params(id, dev_id,
> > > > -               port_config, rxa_params, ret);
> > > > +       ret = rxa_config_params_validate(rxa_params, &temp_params);
> > > > +       if (ret != 0)
> > > > +               return ret;
> > > >
> > > > -       return ret;
> > > > +       return rxa_create(id, dev_id, &temp_params, conf_cb,
> > > > + conf_arg);
> > > >  }
> > > >
> > > >  int
> > > >  rte_event_eth_rx_adapter_create(uint8_t id, uint8_t dev_id,
> > > > -               struct rte_event_port_conf *port_config)
> > > > +                       struct rte_event_port_conf *port_config,
> > > > +                       struct rte_event_eth_rx_adapter_params
> > > > + *rxa_params)
> > > >  {
> > > >         struct rte_event_port_conf *pc;
> > > >         int ret;
> > > > +       struct rte_event_eth_rx_adapter_params temp_params = {0};
> > > >
> > > >         if (port_config == NULL)
> > > >                 return -EINVAL;
> > > >
> > > > -       RTE_EVENT_ETH_RX_ADAPTER_ID_VALID_OR_ERR_RET(id, -EINVAL);
> > > > +       ret = rxa_config_params_validate(rxa_params, &temp_params);
> > > > +       if (ret != 0)
> > > > +               return ret;
> > > >
> > > >         pc = rte_malloc(NULL, sizeof(*pc), 0);
> > > >         if (pc == NULL)
> > > >                 return -ENOMEM;
> > > > +
> > > >         *pc = *port_config;
> > > >
> > > > -       ret = rte_event_eth_rx_adapter_create_ext(id, dev_id,
> > > > -                                       rxa_default_conf_cb,
> > > > -                                       pc);
> > > > +       ret = rxa_create(id, dev_id, &temp_params,
> > > > + rxa_default_conf_cb, pc);
> > > >         if (ret)
> > > >                 rte_free(pc);
> > > >         return ret;
> > > > diff --git a/lib/eventdev/rte_event_eth_rx_adapter.h
> > > > b/lib/eventdev/rte_event_eth_rx_adapter.h
> > > > index fe2a6bdd2c..793e3cedad 100644
> > > > --- a/lib/eventdev/rte_event_eth_rx_adapter.h
> > > > +++ b/lib/eventdev/rte_event_eth_rx_adapter.h
> > > > @@ -26,7 +26,6 @@
> > > >   * The ethernet Rx event adapter's functions are:
> > > >   *  - rte_event_eth_rx_adapter_create_ext()
> > > >   *  - rte_event_eth_rx_adapter_create()
> > > > - *  - rte_event_eth_rx_adapter_create_with_params()
> > > >   *  - rte_event_eth_rx_adapter_free()
> > > >   *  - rte_event_eth_rx_adapter_queue_add()
> > > >   *  - rte_event_eth_rx_adapter_queue_del()
> > > > @@ -45,7 +44,7 @@
> > > >   *
> > > >   * The application creates an ethernet to event adapter using
> > > >   * rte_event_eth_rx_adapter_create_ext() or
> > > > rte_event_eth_rx_adapter_create()
> > > > - * or rte_event_eth_rx_adapter_create_with_params() functions.
> > > > + * functions.
> > > >   *
> > > >   * The adapter needs to know which ethernet rx queues to poll for
> > > > mbufs
> > > as well
> > > >   * as event device parameters such as the event queue identifier,
> > > > event @@ -394,13 +393,18 @@ typedef uint16_t
> > > (*rte_event_eth_rx_adapter_cb_fn)(uint16_t eth_dev_id,
> > > >   * @param conf_arg
> > > >   *  Argument that is passed to the conf_cb function.
> > > >   *
> > > > + * @param rxa_params
> > > > + *  Pointer to struct rte_event_eth_rx_adapter_params.
> > > > + *  In case of NULL, default values are used.
> > > > + *
> > > >   * @return
> > > >   *   - 0: Success
> > > >   *   - <0: Error code on failure
> > > >   */
> > > >  int rte_event_eth_rx_adapter_create_ext(uint8_t id, uint8_t dev_id,
> > > > -                               rte_event_eth_rx_adapter_conf_cb conf_cb,
> > > > -                               void *conf_arg);
> > > > +                       rte_event_eth_rx_adapter_conf_cb conf_cb,
> > > > +                       void *conf_arg,
> > > > +                       struct rte_event_eth_rx_adapter_params
> > > > + *rxa_params);
> > > >
> > > >  /**
> > > >   * Create a new ethernet Rx event adapter with the specified identifier.
> > > > @@ -435,27 +439,6 @@ int
> > > > rte_event_eth_rx_adapter_create_ext(uint8_t
> > > id, uint8_t dev_id,
> > > >   *  Argument of type *rte_event_port_conf* that is passed to the conf_cb
> > > >   *  function.
> > > >   *
> > > > - * @return
> > > > - *   - 0: Success
> > > > - *   - <0: Error code on failure
> > > > - */
> > > > -int rte_event_eth_rx_adapter_create(uint8_t id, uint8_t dev_id,
> > > > -                               struct rte_event_port_conf *port_config);
> > > > -
> > > > -/**
> > > > - * This is a variant of rte_event_eth_rx_adapter_create() with
> > > > additional
> > > > - * adapter params specified in ``struct
> > > rte_event_eth_rx_adapter_params``.
> > > > - *
> > > > - * @param id
> > > > - *  The identifier of the ethernet Rx event adapter.
> > > > - *
> > > > - * @param dev_id
> > > > - *  The identifier of the event device to configure.
> > > > - *
> > > > - * @param port_config
> > > > - *  Argument of type *rte_event_port_conf* that is passed to the
> > > > conf_cb
> > > > - *  function.
> > > > - *
> > > >   * @param rxa_params
> > > >   *  Pointer to struct rte_event_eth_rx_adapter_params.
> > > >   *  In case of NULL, default values are used.
> > > > @@ -464,8 +447,7 @@ int rte_event_eth_rx_adapter_create(uint8_t
> > > > id,
> > > uint8_t dev_id,
> > > >   *   - 0: Success
> > > >   *   - <0: Error code on failure
> > > >   */
> > > > -__rte_experimental
> > > > -int rte_event_eth_rx_adapter_create_with_params(uint8_t id,
> > > > uint8_t dev_id,
> > > > +int rte_event_eth_rx_adapter_create(uint8_t id, uint8_t dev_id,
> > > >                         struct rte_event_port_conf *port_config,
> > > >                         struct rte_event_eth_rx_adapter_params
> > > > *rxa_params);
> > > >
> > > > diff --git a/lib/eventdev/version.map b/lib/eventdev/version.map
> > > > index b03c10d99f..1cf58f0d6c 100644
> > > > --- a/lib/eventdev/version.map
> > > > +++ b/lib/eventdev/version.map
> > > > @@ -101,7 +101,6 @@ EXPERIMENTAL {
> > > >         global:
> > > >
> > > >         # added in 21.11
> > > > -       rte_event_eth_rx_adapter_create_with_params;
> > > >         rte_event_eth_rx_adapter_queue_conf_get;
> > > >         rte_event_eth_rx_adapter_queue_stats_get;
> > > >         rte_event_eth_rx_adapter_queue_stats_reset;
> > > > --
> > > > 2.25.1
> > > >
  
Jerin Jacob Aug. 10, 2023, 8:07 a.m. UTC | #5
On Thu, Aug 10, 2023 at 1:09 PM Naga Harish K, S V
<s.v.naga.harish.k@intel.com> wrote:
>
> Hi Jerin,
>      As per DPDK Guidelines, API changes or ABI breakage is allowed during LTS releases
>          (https://doc.dpdk.org/guides/contributing/abi_policy.html#abi-breakages)

Yes. Provided if depreciation notice has sent, approved and changes
absolutely needed.

>
> Also, there are previous instances where API changes happened, some of them are mentioned below.

These are not the cases where existing APIs removed and changed
prototype to cover up the removed function.

>
>    In DPDK 22.11, the cryptodev library had undergone the following API changes.
> * rte_cryptodev_sym_session_create() and rte_cryptodev_asym_session_create() API parameters changed.
>    rte_cryptodev_sym_session_free() and rte_cryptodev_asym_session_free() API parameters changed.
>    rte_cryptodev_sym_session_init() and rte_cryptodev_asym_session_init() APIs are removed.
>
> * eventdev: The function ``rte_event_crypto_adapter_queue_pair_add`` was updated
>    to accept configuration of type ``rte_event_crypto_adapter_queue_conf``
>    instead of ``rte_event``,
>    similar to ``rte_event_eth_rx_adapter_queue_add`` signature.
>    Event will be one of the configuration fields,
>    together with additional vector parameters.
>
>  Applications have to change to accommodate the above API changes.
>
> As discussed earlier, fewer adapter-create APIs are useful for the application design.
> Please let us know your thoughts on the same.


mempool have different variants of create API. IMO, Different variants
of _create API is OK and application
can pick the correct one based on the needed.
It is OK to break the API prototype if absolutely needed, in this case
it is not.
  
Naga Harish K, S V Aug. 10, 2023, 11:58 a.m. UTC | #6
Hi Jerin,
     Thinking of another approach for this patch.
Instead of changing all create APIs,  update rte_event_eth_rx_adapter_create_ext() alone with additional parameters.
rte_event_eth_rx_adapter_create() and rte_event_eth_rx_adapter_create_with_params() APIs will be untouched.

How about this approach?

-Harish

> -----Original Message-----
> From: Jerin Jacob <jerinjacobk@gmail.com>
> Sent: Thursday, August 10, 2023 1:37 PM
> To: Naga Harish K, S V <s.v.naga.harish.k@intel.com>
> Cc: dev@dpdk.org; Jayatheerthan, Jay <jay.jayatheerthan@intel.com>
> Subject: Re: [PATCH v2] eventdev/eth_rx: update adapter create APIs
> 
> On Thu, Aug 10, 2023 at 1:09 PM Naga Harish K, S V
> <s.v.naga.harish.k@intel.com> wrote:
> >
> > Hi Jerin,
> >      As per DPDK Guidelines, API changes or ABI breakage is allowed during LTS
> releases
> >
> > (https://doc.dpdk.org/guides/contributing/abi_policy.html#abi-breakage
> > s)
> 
> Yes. Provided if depreciation notice has sent, approved and changes absolutely
> needed.
> 
> >
> > Also, there are previous instances where API changes happened, some of them
> are mentioned below.
> 
> These are not the cases where existing APIs removed and changed prototype to
> cover up the removed function.
> 
> >
> >    In DPDK 22.11, the cryptodev library had undergone the following API
> changes.
> > * rte_cryptodev_sym_session_create() and
> rte_cryptodev_asym_session_create() API parameters changed.
> >    rte_cryptodev_sym_session_free() and rte_cryptodev_asym_session_free()
> API parameters changed.
> >    rte_cryptodev_sym_session_init() and rte_cryptodev_asym_session_init()
> APIs are removed.
> >
> > * eventdev: The function ``rte_event_crypto_adapter_queue_pair_add`` was
> updated
> >    to accept configuration of type ``rte_event_crypto_adapter_queue_conf``
> >    instead of ``rte_event``,
> >    similar to ``rte_event_eth_rx_adapter_queue_add`` signature.
> >    Event will be one of the configuration fields,
> >    together with additional vector parameters.
> >
> >  Applications have to change to accommodate the above API changes.
> >
> > As discussed earlier, fewer adapter-create APIs are useful for the application
> design.
> > Please let us know your thoughts on the same.
> 
> 
> mempool have different variants of create API. IMO, Different variants of
> _create API is OK and application can pick the correct one based on the needed.
> It is OK to break the API prototype if absolutely needed, in this case it is not.
  
Jerin Jacob Aug. 10, 2023, 1:25 p.m. UTC | #7
On Thu, Aug 10, 2023 at 5:28 PM Naga Harish K, S V
<s.v.naga.harish.k@intel.com> wrote:
>
> Hi Jerin,
>      Thinking of another approach for this patch.
> Instead of changing all create APIs,  update rte_event_eth_rx_adapter_create_ext() alone with additional parameters.
> rte_event_eth_rx_adapter_create() and rte_event_eth_rx_adapter_create_with_params() APIs will be untouched.

I am not sure if that is for any help to existing application which is
using rte_event_eth_rx_adapter_create_ext() and
it needs to support two DPDK versions.

Also, rte_event_eth_rx_adapter_create_ext() is not experimental API,
we need depreciation notice to change API.
  

Patch

diff --git a/app/test-eventdev/test_perf_common.c b/app/test-eventdev/test_perf_common.c
index 5e0255cfeb..0c6c252f7d 100644
--- a/app/test-eventdev/test_perf_common.c
+++ b/app/test-eventdev/test_perf_common.c
@@ -1002,7 +1002,7 @@  perf_event_rx_adapter_setup(struct evt_options *opt, uint8_t stride,
 		}
 		queue_conf.ev.queue_id = prod * stride;
 		ret = rte_event_eth_rx_adapter_create(prod, opt->dev_id,
-				&prod_conf);
+				&prod_conf, NULL);
 		if (ret) {
 			evt_err("failed to create rx adapter[%d]", prod);
 			return ret;
diff --git a/app/test-eventdev/test_pipeline_common.c b/app/test-eventdev/test_pipeline_common.c
index b111690b7c..5ae175f2c7 100644
--- a/app/test-eventdev/test_pipeline_common.c
+++ b/app/test-eventdev/test_pipeline_common.c
@@ -571,7 +571,7 @@  pipeline_event_rx_adapter_setup(struct evt_options *opt, uint8_t stride,
 		}
 		queue_conf.ev.queue_id = prod * stride;
 		ret = rte_event_eth_rx_adapter_create(prod, opt->dev_id,
-				&prod_conf);
+				&prod_conf, NULL);
 		if (ret) {
 			evt_err("failed to create rx adapter[%d]", prod);
 			return ret;
diff --git a/app/test/test_event_eth_rx_adapter.c b/app/test/test_event_eth_rx_adapter.c
index 52d146f97c..42edcb625a 100644
--- a/app/test/test_event_eth_rx_adapter.c
+++ b/app/test/test_event_eth_rx_adapter.c
@@ -401,7 +401,7 @@  adapter_create(void)
 	rx_p_conf.dequeue_depth = dev_info.max_event_port_dequeue_depth;
 	rx_p_conf.enqueue_depth = dev_info.max_event_port_enqueue_depth;
 	err = rte_event_eth_rx_adapter_create(TEST_INST_ID, TEST_DEV_ID,
-					&rx_p_conf);
+					&rx_p_conf, NULL);
 	TEST_ASSERT(err == 0, "Expected 0 got %d", err);
 
 	return err;
@@ -427,17 +427,17 @@  adapter_create_with_params(void)
 	rxa_params.use_queue_event_buf = false;
 	rxa_params.event_buf_size = 0;
 
-	err = rte_event_eth_rx_adapter_create_with_params(TEST_INST_ID,
+	err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
 				TEST_DEV_ID, &rx_p_conf, &rxa_params);
 	TEST_ASSERT(err == -EINVAL, "Expected -EINVAL got %d", err);
 
 	rxa_params.use_queue_event_buf = true;
 
-	err = rte_event_eth_rx_adapter_create_with_params(TEST_INST_ID,
+	err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
 				TEST_DEV_ID, &rx_p_conf, &rxa_params);
 	TEST_ASSERT(err == 0, "Expected 0 got %d", err);
 
-	err = rte_event_eth_rx_adapter_create_with_params(TEST_INST_ID,
+	err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
 				TEST_DEV_ID, &rx_p_conf, &rxa_params);
 	TEST_ASSERT(err == -EEXIST, "Expected -EEXIST got %d", err);
 
@@ -567,15 +567,15 @@  adapter_create_free(void)
 	};
 
 	err = rte_event_eth_rx_adapter_create(TEST_INST_ID, TEST_DEV_ID,
-					NULL);
+					NULL, NULL);
 	TEST_ASSERT(err == -EINVAL, "Expected -EINVAL got %d", err);
 
 	err = rte_event_eth_rx_adapter_create(TEST_INST_ID, TEST_DEV_ID,
-					&rx_p_conf);
+					&rx_p_conf, NULL);
 	TEST_ASSERT(err == 0, "Expected 0 got %d", err);
 
 	err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
-					TEST_DEV_ID, &rx_p_conf);
+					TEST_DEV_ID, &rx_p_conf, NULL);
 	TEST_ASSERT(err == -EEXIST, "Expected -EEXIST %d got %d", -EEXIST, err);
 
 	err = rte_event_eth_rx_adapter_free(TEST_INST_ID);
@@ -605,20 +605,20 @@  adapter_create_free_with_params(void)
 			.event_buf_size = 1024
 	};
 
-	err = rte_event_eth_rx_adapter_create_with_params(TEST_INST_ID,
+	err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
 				TEST_DEV_ID, NULL, NULL);
 	TEST_ASSERT(err == -EINVAL, "Expected -EINVAL got %d", err);
 
-	err = rte_event_eth_rx_adapter_create_with_params(TEST_INST_ID,
+	err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
 				TEST_DEV_ID, &rx_p_conf, &rxa_params);
 	TEST_ASSERT(err == 0, "Expected 0 got %d", err);
 
-	err = rte_event_eth_rx_adapter_create_with_params(TEST_INST_ID,
+	err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
 				TEST_DEV_ID, &rx_p_conf, &rxa_params);
 	TEST_ASSERT(err == -EEXIST, "Expected -EEXIST %d got %d", -EEXIST, err);
 
 	rxa_params.event_buf_size = 0;
-	err = rte_event_eth_rx_adapter_create_with_params(TEST_INST_ID,
+	err = rte_event_eth_rx_adapter_create(TEST_INST_ID,
 				TEST_DEV_ID, &rx_p_conf, &rxa_params);
 	TEST_ASSERT(err == -EINVAL, "Expected -EINVAL got %d", err);
 
diff --git a/app/test/test_security_inline_proto.c b/app/test/test_security_inline_proto.c
index 45aa742c6b..fc240201a3 100644
--- a/app/test/test_security_inline_proto.c
+++ b/app/test/test_security_inline_proto.c
@@ -1872,7 +1872,7 @@  event_inline_ipsec_testsuite_setup(void)
 
 	/* Create Rx adapter */
 	ret = rte_event_eth_rx_adapter_create(rx_adapter_id, eventdev_id,
-			&ev_port_conf);
+			&ev_port_conf, NULL);
 	if (ret < 0) {
 		printf("Failed to create rx adapter %d\n", ret);
 		return ret;
diff --git a/examples/eventdev_pipeline/pipeline_worker_generic.c b/examples/eventdev_pipeline/pipeline_worker_generic.c
index 783f68c91e..74510338ba 100644
--- a/examples/eventdev_pipeline/pipeline_worker_generic.c
+++ b/examples/eventdev_pipeline/pipeline_worker_generic.c
@@ -436,7 +436,7 @@  init_adapters(uint16_t nb_ports)
 	init_ports(nb_ports);
 	/* Create one adapter for all the ethernet ports. */
 	ret = rte_event_eth_rx_adapter_create(cdata.rx_adapter_id, evdev_id,
-			&adptr_p_conf);
+			&adptr_p_conf, NULL);
 	if (ret)
 		rte_exit(EXIT_FAILURE, "failed to create rx adapter[%d]",
 				cdata.rx_adapter_id);
diff --git a/examples/eventdev_pipeline/pipeline_worker_tx.c b/examples/eventdev_pipeline/pipeline_worker_tx.c
index 98a52f3892..88619d6c2e 100644
--- a/examples/eventdev_pipeline/pipeline_worker_tx.c
+++ b/examples/eventdev_pipeline/pipeline_worker_tx.c
@@ -793,7 +793,7 @@  init_adapters(uint16_t nb_ports)
 		uint32_t service_id;
 
 		ret = rte_event_eth_rx_adapter_create(i, evdev_id,
-				&adptr_p_conf);
+				&adptr_p_conf, NULL);
 		if (ret)
 			rte_exit(EXIT_FAILURE,
 					"failed to create rx adapter[%d]", i);
diff --git a/examples/ipsec-secgw/event_helper.c b/examples/ipsec-secgw/event_helper.c
index 89fb7e62a5..28d6778134 100644
--- a/examples/ipsec-secgw/event_helper.c
+++ b/examples/ipsec-secgw/event_helper.c
@@ -1035,7 +1035,7 @@  eh_rx_adapter_configure(struct eventmode_conf *em_conf,
 
 	/* Create Rx adapter */
 	ret = rte_event_eth_rx_adapter_create(adapter->adapter_id,
-			adapter->eventdev_id, &port_conf);
+			adapter->eventdev_id, &port_conf, NULL);
 	if (ret < 0) {
 		EH_LOG_ERR("Failed to create rx adapter %d", ret);
 		return ret;
diff --git a/examples/l2fwd-event/l2fwd_event_generic.c b/examples/l2fwd-event/l2fwd_event_generic.c
index 1977e23261..4360b20aa0 100644
--- a/examples/l2fwd-event/l2fwd_event_generic.c
+++ b/examples/l2fwd-event/l2fwd_event_generic.c
@@ -235,7 +235,7 @@  l2fwd_rx_tx_adapter_setup_generic(struct l2fwd_resources *rsrc)
 	}
 
 	ret = rte_event_eth_rx_adapter_create(rx_adptr_id, event_d_id,
-					      &evt_rsrc->def_p_conf);
+					      &evt_rsrc->def_p_conf, NULL);
 	if (ret)
 		rte_panic("Failed to create rx adapter\n");
 
diff --git a/examples/l2fwd-event/l2fwd_event_internal_port.c b/examples/l2fwd-event/l2fwd_event_internal_port.c
index 717a7bceb8..542890f354 100644
--- a/examples/l2fwd-event/l2fwd_event_internal_port.c
+++ b/examples/l2fwd-event/l2fwd_event_internal_port.c
@@ -253,7 +253,7 @@  l2fwd_rx_tx_adapter_setup_internal_port(struct l2fwd_resources *rsrc)
 		}
 
 		ret = rte_event_eth_rx_adapter_create(adapter_id, event_d_id,
-						&evt_rsrc->def_p_conf);
+						&evt_rsrc->def_p_conf, NULL);
 		if (ret)
 			rte_panic("Failed to create rx adapter[%d]\n",
 				  adapter_id);
diff --git a/examples/l3fwd/l3fwd_event_generic.c b/examples/l3fwd/l3fwd_event_generic.c
index c80573fc58..88e7af538e 100644
--- a/examples/l3fwd/l3fwd_event_generic.c
+++ b/examples/l3fwd/l3fwd_event_generic.c
@@ -217,7 +217,7 @@  l3fwd_rx_tx_adapter_setup_generic(void)
 	}
 
 	ret = rte_event_eth_rx_adapter_create(rx_adptr_id, event_d_id,
-					      &evt_rsrc->def_p_conf);
+					      &evt_rsrc->def_p_conf, NULL);
 	if (ret)
 		rte_panic("Failed to create rx adapter\n");
 
diff --git a/examples/l3fwd/l3fwd_event_internal_port.c b/examples/l3fwd/l3fwd_event_internal_port.c
index 32cf657148..dc8b5013cb 100644
--- a/examples/l3fwd/l3fwd_event_internal_port.c
+++ b/examples/l3fwd/l3fwd_event_internal_port.c
@@ -246,7 +246,7 @@  l3fwd_rx_tx_adapter_setup_internal_port(void)
 		}
 
 		ret = rte_event_eth_rx_adapter_create(adapter_id, event_d_id,
-						      &evt_rsrc->def_p_conf);
+						      &evt_rsrc->def_p_conf, NULL);
 		if (ret)
 			rte_panic("Failed to create rx adapter[%d]\n",
 				  adapter_id);
diff --git a/lib/eventdev/rte_event_eth_rx_adapter.c b/lib/eventdev/rte_event_eth_rx_adapter.c
index f7f93ccdfd..ce203a5e4b 100644
--- a/lib/eventdev/rte_event_eth_rx_adapter.c
+++ b/lib/eventdev/rte_event_eth_rx_adapter.c
@@ -2485,90 +2485,78 @@  rxa_create(uint8_t id, uint8_t dev_id,
 	return 0;
 }
 
-int
-rte_event_eth_rx_adapter_create_ext(uint8_t id, uint8_t dev_id,
-				rte_event_eth_rx_adapter_conf_cb conf_cb,
-				void *conf_arg)
+static int __rte_cold
+rxa_config_params_validate(struct rte_event_eth_rx_adapter_params *rxa_params,
+			   struct rte_event_eth_rx_adapter_params *temp_params)
 {
-	struct rte_event_eth_rx_adapter_params rxa_params = {0};
+	if (rxa_params == NULL) {
+		/* use default values if rxa_params is NULL */
+		temp_params->event_buf_size = ETH_EVENT_BUFFER_SIZE;
+		temp_params->use_queue_event_buf = false;
+	} else if (!rxa_params->use_queue_event_buf &&
+		    rxa_params->event_buf_size == 0) {
+		RTE_EDEV_LOG_ERR("event buffer size can't be zero\n");
+		return -EINVAL;
+	} else if (rxa_params->use_queue_event_buf &&
+		   rxa_params->event_buf_size != 0) {
+		RTE_EDEV_LOG_ERR("event buffer size needs to be configured "
+				 "as part of queue add\n");
+		return -EINVAL;
+	}
 
-	/* use default values for adapter params */
-	rxa_params.event_buf_size = ETH_EVENT_BUFFER_SIZE;
-	rxa_params.use_queue_event_buf = false;
+	*temp_params = *rxa_params;
+	/* adjust event buff size with BATCH_SIZE used for fetching
+	 * packets from NIC rx queues to get full buffer utilization
+	 * and prevent unnecessary rollovers.
+	 */
+	if (!temp_params->use_queue_event_buf) {
+		temp_params->event_buf_size =
+			RTE_ALIGN(temp_params->event_buf_size, BATCH_SIZE);
+		temp_params->event_buf_size += (BATCH_SIZE + BATCH_SIZE);
+	}
 
-	return rxa_create(id, dev_id, &rxa_params, conf_cb, conf_arg);
+	return 0;
 }
 
 int
-rte_event_eth_rx_adapter_create_with_params(uint8_t id, uint8_t dev_id,
-			struct rte_event_port_conf *port_config,
+rte_event_eth_rx_adapter_create_ext(uint8_t id, uint8_t dev_id,
+			rte_event_eth_rx_adapter_conf_cb conf_cb,
+			void *conf_arg,
 			struct rte_event_eth_rx_adapter_params *rxa_params)
 {
-	struct rte_event_port_conf *pc;
-	int ret;
 	struct rte_event_eth_rx_adapter_params temp_params = {0};
+	int ret;
 
-	if (port_config == NULL)
-		return -EINVAL;
-
-	if (rxa_params == NULL) {
-		/* use default values if rxa_params is NULL */
-		rxa_params = &temp_params;
-		rxa_params->event_buf_size = ETH_EVENT_BUFFER_SIZE;
-		rxa_params->use_queue_event_buf = false;
-	} else if ((!rxa_params->use_queue_event_buf &&
-		    rxa_params->event_buf_size == 0) ||
-		   (rxa_params->use_queue_event_buf &&
-		    rxa_params->event_buf_size != 0)) {
-		RTE_EDEV_LOG_ERR("Invalid adapter params\n");
-		return -EINVAL;
-	} else if (!rxa_params->use_queue_event_buf) {
-		/* adjust event buff size with BATCH_SIZE used for fetching
-		 * packets from NIC rx queues to get full buffer utilization
-		 * and prevent unnecessary rollovers.
-		 */
-
-		rxa_params->event_buf_size =
-			RTE_ALIGN(rxa_params->event_buf_size, BATCH_SIZE);
-		rxa_params->event_buf_size += (BATCH_SIZE + BATCH_SIZE);
-	}
-
-	pc = rte_malloc(NULL, sizeof(*pc), 0);
-	if (pc == NULL)
-		return -ENOMEM;
-
-	*pc = *port_config;
-
-	ret = rxa_create(id, dev_id, rxa_params, rxa_default_conf_cb, pc);
-	if (ret)
-		rte_free(pc);
-
-	rte_eventdev_trace_eth_rx_adapter_create_with_params(id, dev_id,
-		port_config, rxa_params, ret);
+	ret = rxa_config_params_validate(rxa_params, &temp_params);
+	if (ret != 0)
+		return ret;
 
-	return ret;
+	return rxa_create(id, dev_id, &temp_params, conf_cb, conf_arg);
 }
 
 int
 rte_event_eth_rx_adapter_create(uint8_t id, uint8_t dev_id,
-		struct rte_event_port_conf *port_config)
+			struct rte_event_port_conf *port_config,
+			struct rte_event_eth_rx_adapter_params *rxa_params)
 {
 	struct rte_event_port_conf *pc;
 	int ret;
+	struct rte_event_eth_rx_adapter_params temp_params = {0};
 
 	if (port_config == NULL)
 		return -EINVAL;
 
-	RTE_EVENT_ETH_RX_ADAPTER_ID_VALID_OR_ERR_RET(id, -EINVAL);
+	ret = rxa_config_params_validate(rxa_params, &temp_params);
+	if (ret != 0)
+		return ret;
 
 	pc = rte_malloc(NULL, sizeof(*pc), 0);
 	if (pc == NULL)
 		return -ENOMEM;
+
 	*pc = *port_config;
 
-	ret = rte_event_eth_rx_adapter_create_ext(id, dev_id,
-					rxa_default_conf_cb,
-					pc);
+	ret = rxa_create(id, dev_id, &temp_params, rxa_default_conf_cb, pc);
 	if (ret)
 		rte_free(pc);
 	return ret;
diff --git a/lib/eventdev/rte_event_eth_rx_adapter.h b/lib/eventdev/rte_event_eth_rx_adapter.h
index fe2a6bdd2c..793e3cedad 100644
--- a/lib/eventdev/rte_event_eth_rx_adapter.h
+++ b/lib/eventdev/rte_event_eth_rx_adapter.h
@@ -26,7 +26,6 @@ 
  * The ethernet Rx event adapter's functions are:
  *  - rte_event_eth_rx_adapter_create_ext()
  *  - rte_event_eth_rx_adapter_create()
- *  - rte_event_eth_rx_adapter_create_with_params()
  *  - rte_event_eth_rx_adapter_free()
  *  - rte_event_eth_rx_adapter_queue_add()
  *  - rte_event_eth_rx_adapter_queue_del()
@@ -45,7 +44,7 @@ 
  *
  * The application creates an ethernet to event adapter using
  * rte_event_eth_rx_adapter_create_ext() or rte_event_eth_rx_adapter_create()
- * or rte_event_eth_rx_adapter_create_with_params() functions.
+ * functions.
  *
  * The adapter needs to know which ethernet rx queues to poll for mbufs as well
  * as event device parameters such as the event queue identifier, event
@@ -394,13 +393,18 @@  typedef uint16_t (*rte_event_eth_rx_adapter_cb_fn)(uint16_t eth_dev_id,
  * @param conf_arg
  *  Argument that is passed to the conf_cb function.
  *
+ * @param rxa_params
+ *  Pointer to struct rte_event_eth_rx_adapter_params.
+ *  In case of NULL, default values are used.
+ *
  * @return
  *   - 0: Success
  *   - <0: Error code on failure
  */
 int rte_event_eth_rx_adapter_create_ext(uint8_t id, uint8_t dev_id,
-				rte_event_eth_rx_adapter_conf_cb conf_cb,
-				void *conf_arg);
+			rte_event_eth_rx_adapter_conf_cb conf_cb,
+			void *conf_arg,
+			struct rte_event_eth_rx_adapter_params *rxa_params);
 
 /**
  * Create a new ethernet Rx event adapter with the specified identifier.
@@ -435,27 +439,6 @@  int rte_event_eth_rx_adapter_create_ext(uint8_t id, uint8_t dev_id,
  *  Argument of type *rte_event_port_conf* that is passed to the conf_cb
  *  function.
  *
- * @return
- *   - 0: Success
- *   - <0: Error code on failure
- */
-int rte_event_eth_rx_adapter_create(uint8_t id, uint8_t dev_id,
-				struct rte_event_port_conf *port_config);
-
-/**
- * This is a variant of rte_event_eth_rx_adapter_create() with additional
- * adapter params specified in ``struct rte_event_eth_rx_adapter_params``.
- *
- * @param id
- *  The identifier of the ethernet Rx event adapter.
- *
- * @param dev_id
- *  The identifier of the event device to configure.
- *
- * @param port_config
- *  Argument of type *rte_event_port_conf* that is passed to the conf_cb
- *  function.
- *
  * @param rxa_params
  *  Pointer to struct rte_event_eth_rx_adapter_params.
  *  In case of NULL, default values are used.
@@ -464,8 +447,7 @@  int rte_event_eth_rx_adapter_create(uint8_t id, uint8_t dev_id,
  *   - 0: Success
  *   - <0: Error code on failure
  */
-__rte_experimental
-int rte_event_eth_rx_adapter_create_with_params(uint8_t id, uint8_t dev_id,
+int rte_event_eth_rx_adapter_create(uint8_t id, uint8_t dev_id,
 			struct rte_event_port_conf *port_config,
 			struct rte_event_eth_rx_adapter_params *rxa_params);
 
diff --git a/lib/eventdev/version.map b/lib/eventdev/version.map
index b03c10d99f..1cf58f0d6c 100644
--- a/lib/eventdev/version.map
+++ b/lib/eventdev/version.map
@@ -101,7 +101,6 @@  EXPERIMENTAL {
 	global:
 
 	# added in 21.11
-	rte_event_eth_rx_adapter_create_with_params;
 	rte_event_eth_rx_adapter_queue_conf_get;
 	rte_event_eth_rx_adapter_queue_stats_get;
 	rte_event_eth_rx_adapter_queue_stats_reset;