DPDK patches and discussions
 help / color / mirror / Atom feed
* [RFC] eventdev/eth_rx: update adapter create APIs
@ 2023-08-01  9:40 Naga Harish K S V
  2023-08-01 10:28 ` Jerin Jacob
  2023-08-01 13:51 ` [PATCH v2] " Naga Harish K S V
  0 siblings, 2 replies; 10+ messages in thread
From: Naga Harish K S V @ 2023-08-01  9:40 UTC (permalink / raw)
  To: jerinjacobk; +Cc: dev, jay.jayatheerthan

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>
---
 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       | 96 ++++++++-----------
 lib/eventdev/rte_event_eth_rx_adapter.h       | 34 +------
 lib/eventdev/version.map                      |  1 -
 14 files changed, 67 insertions(+), 106 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..263d6f54b7 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};
-
-	/* use default values for adapter params */
-	rxa_params.event_buf_size = ETH_EVENT_BUFFER_SIZE;
-	rxa_params.use_queue_event_buf = false;
-
-	return rxa_create(id, dev_id, &rxa_params, conf_cb, conf_arg);
-}
-
-int
-rte_event_eth_rx_adapter_create_with_params(uint8_t id, uint8_t dev_id,
-			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;
-
 	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");
+		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) {
+	} 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;
+	} else  {
+		*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.
 		 */
-
-		rxa_params->event_buf_size =
-			RTE_ALIGN(rxa_params->event_buf_size, BATCH_SIZE);
-		rxa_params->event_buf_size += (BATCH_SIZE + BATCH_SIZE);
+		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);
+		}
 	}
 
-	pc = rte_malloc(NULL, sizeof(*pc), 0);
-	if (pc == NULL)
-		return -ENOMEM;
-
-	*pc = *port_config;
+	return 0;
+}
 
-	ret = rxa_create(id, dev_id, rxa_params, rxa_default_conf_cb, pc);
-	if (ret)
-		rte_free(pc);
+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,
+			struct rte_event_eth_rx_adapter_params *rxa_params)
+{
+	struct rte_event_eth_rx_adapter_params temp_params = {0};
+	int ret;
 
-	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..35bf303079 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
@@ -399,8 +398,9 @@ typedef uint16_t (*rte_event_eth_rx_adapter_cb_fn)(uint16_t eth_dev_id,
  *   - <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.
@@ -440,32 +440,6 @@ int rte_event_eth_rx_adapter_create_ext(uint8_t id, uint8_t dev_id,
  *   - <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.
- *
- * @return
- *   - 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,
 			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


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [RFC] eventdev/eth_rx: update adapter create APIs
  2023-08-01  9:40 [RFC] eventdev/eth_rx: update adapter create APIs Naga Harish K S V
@ 2023-08-01 10:28 ` Jerin Jacob
  2023-08-01 13:51 ` [PATCH v2] " Naga Harish K S V
  1 sibling, 0 replies; 10+ messages in thread
From: Jerin Jacob @ 2023-08-01 10:28 UTC (permalink / raw)
  To: Naga Harish K S V; +Cc: dev, jay.jayatheerthan

On Tue, Aug 1, 2023 at 3:10 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.

Please avod API prototype changes . It will be pain for application
which needs to manage both. IMO, It is not worth it.



>
> 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>
> ---
>  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       | 96 ++++++++-----------
>  lib/eventdev/rte_event_eth_rx_adapter.h       | 34 +------
>  lib/eventdev/version.map                      |  1 -
>  14 files changed, 67 insertions(+), 106 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..263d6f54b7 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};
> -
> -       /* use default values for adapter params */
> -       rxa_params.event_buf_size = ETH_EVENT_BUFFER_SIZE;
> -       rxa_params.use_queue_event_buf = false;
> -
> -       return rxa_create(id, dev_id, &rxa_params, conf_cb, conf_arg);
> -}
> -
> -int
> -rte_event_eth_rx_adapter_create_with_params(uint8_t id, uint8_t dev_id,
> -                       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;
> -
>         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");
> +               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) {
> +       } 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;
> +       } else  {
> +               *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.
>                  */
> -
> -               rxa_params->event_buf_size =
> -                       RTE_ALIGN(rxa_params->event_buf_size, BATCH_SIZE);
> -               rxa_params->event_buf_size += (BATCH_SIZE + BATCH_SIZE);
> +               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);
> +               }
>         }
>
> -       pc = rte_malloc(NULL, sizeof(*pc), 0);
> -       if (pc == NULL)
> -               return -ENOMEM;
> -
> -       *pc = *port_config;
> +       return 0;
> +}
>
> -       ret = rxa_create(id, dev_id, rxa_params, rxa_default_conf_cb, pc);
> -       if (ret)
> -               rte_free(pc);
> +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,
> +                       struct rte_event_eth_rx_adapter_params *rxa_params)
> +{
> +       struct rte_event_eth_rx_adapter_params temp_params = {0};
> +       int ret;
>
> -       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..35bf303079 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
> @@ -399,8 +398,9 @@ typedef uint16_t (*rte_event_eth_rx_adapter_cb_fn)(uint16_t eth_dev_id,
>   *   - <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.
> @@ -440,32 +440,6 @@ int rte_event_eth_rx_adapter_create_ext(uint8_t id, uint8_t dev_id,
>   *   - <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.
> - *
> - * @return
> - *   - 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,
>                         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
>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH v2] eventdev/eth_rx: update adapter create APIs
  2023-08-01  9:40 [RFC] eventdev/eth_rx: update adapter create APIs Naga Harish K S V
  2023-08-01 10:28 ` Jerin Jacob
@ 2023-08-01 13:51 ` Naga Harish K S V
  2023-08-01 15:23   ` Jerin Jacob
  1 sibling, 1 reply; 10+ messages in thread
From: Naga Harish K S V @ 2023-08-01 13:51 UTC (permalink / raw)
  To: jerinjacobk; +Cc: dev, jay.jayatheerthan

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(-)

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


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v2] eventdev/eth_rx: update adapter create APIs
  2023-08-01 13:51 ` [PATCH v2] " Naga Harish K S V
@ 2023-08-01 15:23   ` Jerin Jacob
  2023-08-02 14:19     ` Naga Harish K, S V
  0 siblings, 1 reply; 10+ messages in thread
From: Jerin Jacob @ 2023-08-01 15:23 UTC (permalink / raw)
  To: Naga Harish K S V; +Cc: dev, jay.jayatheerthan

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
>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* RE: [PATCH v2] eventdev/eth_rx: update adapter create APIs
  2023-08-01 15:23   ` Jerin Jacob
@ 2023-08-02 14:19     ` Naga Harish K, S V
  2023-08-02 16:12       ` Jerin Jacob
  0 siblings, 1 reply; 10+ messages in thread
From: Naga Harish K, S V @ 2023-08-02 14:19 UTC (permalink / raw)
  To: Jerin Jacob; +Cc: dev, Jayatheerthan, Jay

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
> >

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v2] eventdev/eth_rx: update adapter create APIs
  2023-08-02 14:19     ` Naga Harish K, S V
@ 2023-08-02 16:12       ` Jerin Jacob
  2023-08-10  7:38         ` Naga Harish K, S V
  0 siblings, 1 reply; 10+ messages in thread
From: Jerin Jacob @ 2023-08-02 16:12 UTC (permalink / raw)
  To: Naga Harish K, S V; +Cc: dev, Jayatheerthan, Jay

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
> > >

^ permalink raw reply	[flat|nested] 10+ messages in thread

* RE: [PATCH v2] eventdev/eth_rx: update adapter create APIs
  2023-08-02 16:12       ` Jerin Jacob
@ 2023-08-10  7:38         ` Naga Harish K, S V
  2023-08-10  8:07           ` Jerin Jacob
  0 siblings, 1 reply; 10+ messages in thread
From: Naga Harish K, S V @ 2023-08-10  7:38 UTC (permalink / raw)
  To: Jerin Jacob; +Cc: dev, Jayatheerthan, Jay

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
> > > >

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v2] eventdev/eth_rx: update adapter create APIs
  2023-08-10  7:38         ` Naga Harish K, S V
@ 2023-08-10  8:07           ` Jerin Jacob
  2023-08-10 11:58             ` Naga Harish K, S V
  0 siblings, 1 reply; 10+ messages in thread
From: Jerin Jacob @ 2023-08-10  8:07 UTC (permalink / raw)
  To: Naga Harish K, S V; +Cc: dev, Jayatheerthan, Jay

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.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* RE: [PATCH v2] eventdev/eth_rx: update adapter create APIs
  2023-08-10  8:07           ` Jerin Jacob
@ 2023-08-10 11:58             ` Naga Harish K, S V
  2023-08-10 13:25               ` Jerin Jacob
  0 siblings, 1 reply; 10+ messages in thread
From: Naga Harish K, S V @ 2023-08-10 11:58 UTC (permalink / raw)
  To: Jerin Jacob; +Cc: dev, Jayatheerthan, Jay

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.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v2] eventdev/eth_rx: update adapter create APIs
  2023-08-10 11:58             ` Naga Harish K, S V
@ 2023-08-10 13:25               ` Jerin Jacob
  0 siblings, 0 replies; 10+ messages in thread
From: Jerin Jacob @ 2023-08-10 13:25 UTC (permalink / raw)
  To: Naga Harish K, S V; +Cc: dev, Jayatheerthan, Jay

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.

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2023-08-10 13:26 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-08-01  9:40 [RFC] eventdev/eth_rx: update adapter create APIs Naga Harish K S V
2023-08-01 10:28 ` Jerin Jacob
2023-08-01 13:51 ` [PATCH v2] " Naga Harish K S V
2023-08-01 15:23   ` Jerin Jacob
2023-08-02 14:19     ` Naga Harish K, S V
2023-08-02 16:12       ` Jerin Jacob
2023-08-10  7:38         ` Naga Harish K, S V
2023-08-10  8:07           ` Jerin Jacob
2023-08-10 11:58             ` Naga Harish K, S V
2023-08-10 13:25               ` Jerin Jacob

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).