On Fri, Feb 10, 2023 at 11:08 PM Naga Harish K S V <s.v.naga.haris...@intel.com> wrote: > > The adapter runtime configuration parameters defined in the > struct rte_event_crypto_adapter_runtime_params can be configured > and retrieved using rte_event_crypto_adapter_runtime_params_set() > and rte_event_eth_rx_adapter_runtime_params_get() respectively.
Typo: rte_event_crypto_adapter_runtime_params_get() Series-Acked-by: Jerin Jacob <jer...@marvell.com> Updated the git commit as follows and series applied to dpdk-next-net-eventdev/for-main. Thanks commit 44fe1187305af8ac6d31c46113c1ca35405de77b (HEAD -> for-main, origin/for-main, origin/HEAD) Author: Naga Harish K S V <s.v.naga.haris...@intel.com> Date: Fri Feb 10 11:37:44 2023 -0600 eventdev/crypto: support runtime set/get parameters The adapter runtime configuration parameters defined in the struct rte_event_crypto_adapter_runtime_params can be configured and retrieved using rte_event_crypto_adapter_runtime_params_set() and rte_event_crypto_adapter_runtime_params_get() respectively. Signed-off-by: Naga Harish K S V <s.v.naga.haris...@intel.com> Acked-by: Jerin Jacob <jer...@marvell.com> commit 122812d1586437a6a09da132c23b6b6b41e90bef Author: Naga Harish K S V <s.v.naga.haris...@intel.com> Date: Fri Feb 10 11:37:43 2023 -0600 eventdev/eth_tx: support runtime set/get parameters The adapter runtime configuration parameters defined in the struct rte_event_eth_tx_adapter_runtime_params can be configured and retrieved using rte_event_eth_tx_adapter_runtime_params_set() and rte_event_eth_tx_adapter_runtime_params_get() respectively. Signed-off-by: Naga Harish K S V <s.v.naga.haris...@intel.com> Acked-by: Jerin Jacob <jer...@marvell.com> commit 496f7d5567ecb3c480ede0a90a3b4e987f6c7359 Author: Naga Harish K S V <s.v.naga.haris...@intel.com> Date: Fri Feb 10 11:37:42 2023 -0600 eventdev/eth_rx: support runtime set/get parameters The adapter runtime configuration parameters defined in the struct rte_event_eth_rx_adapter_runtime_params can be configured and retrieved using rte_event_eth_rx_adapter_runtime_params_set() and rte_event_eth_rx_adapter_runtime_params_get() respectively. Signed-off-by: Naga Harish K S V <s.v.naga.haris...@intel.com> Acked-by: Jerin Jacob <jer...@marvell.com> > > Signed-off-by: Naga Harish K S V <s.v.naga.haris...@intel.com> > --- > v6: > * updated doxygen comments as per review comments > --- > --- > app/test/test_event_crypto_adapter.c | 109 ++++++++++++++++++ > .../prog_guide/event_crypto_adapter.rst | 8 ++ > lib/eventdev/rte_event_crypto_adapter.c | 101 ++++++++++++++++ > lib/eventdev/rte_event_crypto_adapter.h | 85 ++++++++++++++ > lib/eventdev/version.map | 3 + > 5 files changed, 306 insertions(+) > > diff --git a/app/test/test_event_crypto_adapter.c > b/app/test/test_event_crypto_adapter.c > index a38e389abd..264d6f731e 100644 > --- a/app/test/test_event_crypto_adapter.c > +++ b/app/test/test_event_crypto_adapter.c > @@ -272,6 +272,111 @@ test_crypto_adapter_stats(void) > return TEST_SUCCESS; > } > > +static int > +test_crypto_adapter_params(void) > +{ > + int err; > + struct rte_event_crypto_adapter_runtime_params in_params; > + struct rte_event_crypto_adapter_runtime_params out_params; > + uint32_t cap; > + struct rte_event_crypto_adapter_queue_conf queue_conf = { > + .ev = response_info, > + }; > + > + err = rte_event_crypto_adapter_caps_get(evdev, TEST_CDEV_ID, &cap); > + TEST_ASSERT_SUCCESS(err, "Failed to get adapter capabilities\n"); > + > + if (cap & RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_QP_EV_BIND) { > + err = rte_event_crypto_adapter_queue_pair_add(TEST_ADAPTER_ID, > + TEST_CDEV_ID, TEST_CDEV_QP_ID, &queue_conf); > + } else > + err = rte_event_crypto_adapter_queue_pair_add(TEST_ADAPTER_ID, > + TEST_CDEV_ID, TEST_CDEV_QP_ID, NULL); > + > + TEST_ASSERT_SUCCESS(err, "Failed to add queue pair\n"); > + > + err = rte_event_crypto_adapter_runtime_params_init(&in_params); > + TEST_ASSERT(err == 0, "Expected 0 got %d", err); > + err = rte_event_crypto_adapter_runtime_params_init(&out_params); > + TEST_ASSERT(err == 0, "Expected 0 got %d", err); > + > + /* Case 1: Get the default value of mbufs processed by adapter */ > + err = rte_event_crypto_adapter_runtime_params_get(TEST_ADAPTER_ID, > + &out_params); > + TEST_ASSERT(err == 0, "Expected 0 got %d", err); > + > + /* Case 2: Set max_nb = 32 (=BATCH_SEIZE) */ > + in_params.max_nb = 32; > + > + err = rte_event_crypto_adapter_runtime_params_set(TEST_ADAPTER_ID, > + &in_params); > + TEST_ASSERT(err == 0, "Expected 0 got %d", err); > + > + err = rte_event_crypto_adapter_runtime_params_get(TEST_ADAPTER_ID, > + &out_params); > + TEST_ASSERT(err == 0, "Expected 0 got %d", err); > + TEST_ASSERT(in_params.max_nb == out_params.max_nb, "Expected %u got > %u", > + in_params.max_nb, out_params.max_nb); > + > + /* Case 3: Set max_nb = 192 */ > + in_params.max_nb = 192; > + > + err = rte_event_crypto_adapter_runtime_params_set(TEST_ADAPTER_ID, > + &in_params); > + TEST_ASSERT(err == 0, "Expected 0 got %d", err); > + > + err = rte_event_crypto_adapter_runtime_params_get(TEST_ADAPTER_ID, > + &out_params); > + TEST_ASSERT(err == 0, "Expected 0 got %d", err); > + TEST_ASSERT(in_params.max_nb == out_params.max_nb, "Expected %u got > %u", > + in_params.max_nb, out_params.max_nb); > + > + /* Case 4: Set max_nb = 256 */ > + in_params.max_nb = 256; > + > + err = rte_event_crypto_adapter_runtime_params_set(TEST_ADAPTER_ID, > + &in_params); > + TEST_ASSERT(err == 0, "Expected 0 got %d", err); > + > + err = rte_event_crypto_adapter_runtime_params_get(TEST_ADAPTER_ID, > + &out_params); > + TEST_ASSERT(err == 0, "Expected 0 got %d", err); > + TEST_ASSERT(in_params.max_nb == out_params.max_nb, "Expected %u got > %u", > + in_params.max_nb, out_params.max_nb); > + > + /* Case 5: Set max_nb = 30(<BATCH_SIZE) */ > + in_params.max_nb = 30; > + > + err = rte_event_crypto_adapter_runtime_params_set(TEST_ADAPTER_ID, > + &in_params); > + TEST_ASSERT(err == 0, "Expected 0 got %d", err); > + > + err = rte_event_crypto_adapter_runtime_params_get(TEST_ADAPTER_ID, > + &out_params); > + TEST_ASSERT(err == 0, "Expected 0 got %d", err); > + TEST_ASSERT(in_params.max_nb == out_params.max_nb, "Expected %u got > %u", > + in_params.max_nb, out_params.max_nb); > + > + /* Case 6: Set max_nb = 512 */ > + in_params.max_nb = 512; > + > + err = rte_event_crypto_adapter_runtime_params_set(TEST_ADAPTER_ID, > + &in_params); > + TEST_ASSERT(err == 0, "Expected 0 got %d", err); > + > + err = rte_event_crypto_adapter_runtime_params_get(TEST_ADAPTER_ID, > + &out_params); > + TEST_ASSERT(err == 0, "Expected 0 got %d", err); > + TEST_ASSERT(in_params.max_nb == out_params.max_nb, "Expected %u got > %u", > + in_params.max_nb, out_params.max_nb); > + > + err = rte_event_crypto_adapter_queue_pair_del(TEST_ADAPTER_ID, > + TEST_CDEV_ID, TEST_CDEV_QP_ID); > + TEST_ASSERT_SUCCESS(err, "Failed to delete add queue pair\n"); > + > + return TEST_SUCCESS; > +} > + > static int > test_op_forward_mode(uint8_t session_less) > { > @@ -1454,6 +1559,10 @@ static struct unit_test_suite functional_testsuite = { > test_crypto_adapter_free, > test_crypto_adapter_stats), > > + TEST_CASE_ST(test_crypto_adapter_create, > + test_crypto_adapter_free, > + test_crypto_adapter_params), > + > TEST_CASE_ST(test_crypto_adapter_conf_op_forward_mode, > test_crypto_adapter_stop, > test_session_with_op_forward_mode), > diff --git a/doc/guides/prog_guide/event_crypto_adapter.rst > b/doc/guides/prog_guide/event_crypto_adapter.rst > index 46b3dc2f1c..1b6d4a0966 100644 > --- a/doc/guides/prog_guide/event_crypto_adapter.rst > +++ b/doc/guides/prog_guide/event_crypto_adapter.rst > @@ -350,3 +350,11 @@ in struct ``rte_event_crypto_adapter_stats``. The > received packet and > enqueued event counts are a sum of the counts from the eventdev PMD callbacks > if the callback is supported, and the counts maintained by the service > function, > if one exists. > + > +Set/Get adapter runtime configuration parameters > +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > + > +The runtime configuration parameters of adapter can be set/get using > +``rte_event_crypto_adapter_runtime_params_set()`` and > +``rte_event_crypto_adapter_runtime_params_get()`` respectively. The > parameters that > +can be set/get are defined in ``struct > rte_event_crypto_adapter_runtime_params``. > diff --git a/lib/eventdev/rte_event_crypto_adapter.c > b/lib/eventdev/rte_event_crypto_adapter.c > index 7f0a25a4cc..f6c1e5380d 100644 > --- a/lib/eventdev/rte_event_crypto_adapter.c > +++ b/lib/eventdev/rte_event_crypto_adapter.c > @@ -1335,6 +1335,107 @@ rte_event_crypto_adapter_stats_reset(uint8_t id) > return 0; > } > > +int > +rte_event_crypto_adapter_runtime_params_init( > + struct rte_event_crypto_adapter_runtime_params *params) > +{ > + if (params == NULL) > + return -EINVAL; > + > + memset(params, 0, sizeof(*params)); > + params->max_nb = DEFAULT_MAX_NB; > + > + return 0; > +} > + > +static int > +crypto_adapter_cap_check(struct event_crypto_adapter *adapter) > +{ > + int ret; > + uint32_t caps; > + > + if (!adapter->nb_qps) > + return -EINVAL; > + ret = rte_event_crypto_adapter_caps_get(adapter->eventdev_id, > + adapter->next_cdev_id, > + &caps); > + if (ret) { > + RTE_EDEV_LOG_ERR("Failed to get adapter caps dev %" PRIu8 > + " cdev %" PRIu8, adapter->eventdev_id, > + adapter->next_cdev_id); > + return ret; > + } > + > + if ((caps & RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_OP_FWD) || > + (caps & RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_OP_NEW)) > + return -ENOTSUP; > + > + return 0; > +} > + > +int > +rte_event_crypto_adapter_runtime_params_set(uint8_t id, > + struct rte_event_crypto_adapter_runtime_params *params) > +{ > + struct event_crypto_adapter *adapter; > + int ret; > + > + if (eca_memzone_lookup()) > + return -ENOMEM; > + > + EVENT_CRYPTO_ADAPTER_ID_VALID_OR_ERR_RET(id, -EINVAL); > + > + if (params == NULL) { > + RTE_EDEV_LOG_ERR("params pointer is NULL\n"); > + return -EINVAL; > + } > + > + adapter = eca_id_to_adapter(id); > + if (adapter == NULL) > + return -EINVAL; > + > + ret = crypto_adapter_cap_check(adapter); > + if (ret) > + return ret; > + > + rte_spinlock_lock(&adapter->lock); > + adapter->max_nb = params->max_nb; > + rte_spinlock_unlock(&adapter->lock); > + > + return 0; > +} > + > +int > +rte_event_crypto_adapter_runtime_params_get(uint8_t id, > + struct rte_event_crypto_adapter_runtime_params *params) > +{ > + struct event_crypto_adapter *adapter; > + int ret; > + > + if (eca_memzone_lookup()) > + return -ENOMEM; > + > + > + EVENT_CRYPTO_ADAPTER_ID_VALID_OR_ERR_RET(id, -EINVAL); > + > + if (params == NULL) { > + RTE_EDEV_LOG_ERR("params pointer is NULL\n"); > + return -EINVAL; > + } > + > + adapter = eca_id_to_adapter(id); > + if (adapter == NULL) > + return -EINVAL; > + > + ret = crypto_adapter_cap_check(adapter); > + if (ret) > + return ret; > + > + params->max_nb = adapter->max_nb; > + > + return 0; > +} > + > int > rte_event_crypto_adapter_service_id_get(uint8_t id, uint32_t *service_id) > { > diff --git a/lib/eventdev/rte_event_crypto_adapter.h > b/lib/eventdev/rte_event_crypto_adapter.h > index fad4543506..4e1f1bb3a8 100644 > --- a/lib/eventdev/rte_event_crypto_adapter.h > +++ b/lib/eventdev/rte_event_crypto_adapter.h > @@ -138,6 +138,9 @@ > * - rte_event_crypto_adapter_stop() > * - rte_event_crypto_adapter_stats_get() > * - rte_event_crypto_adapter_stats_reset() > + * - rte_event_crypto_adapter_runtime_params_get() > + * - rte_event_crypto_adapter_runtime_params_init() > + * - rte_event_crypto_adapter_runtime_params_set() > > * The application creates an instance using > rte_event_crypto_adapter_create() > * or rte_event_crypto_adapter_create_ext(). > @@ -253,6 +256,31 @@ struct rte_event_crypto_adapter_conf { > */ > }; > > +/** > + * Adapter runtime configuration parameters > + */ > +struct rte_event_crypto_adapter_runtime_params { > + uint32_t max_nb; > + /**< The adapter can return early if it has processed at least > + * max_nb crypto ops. This isn't treated as a requirement; batching > + * may cause the adapter to process more than max_nb crypto ops. > + * > + * rte_event_crypto_adapter_create() configures the > + * adapter with default value of max_nb. > + * rte_event_crypto_adapter_create_ext() configures the adapter with > + * user provided value of max_nb through > + * rte_event_crypto_adapter_conf::max_nb parameter. > + * rte_event_cryptoadapter_runtime_params_set() allows to re-configure > + * max_nb during runtime (after adding at least one queue pair) > + * > + * This is valid for the devices without > + * RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_OP_FWD or > + * RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_OP_NEW capability. > + */ > + uint32_t rsvd[15]; > + /**< Reserved fields for future expansion */ > +}; > + > #define RTE_EVENT_CRYPTO_ADAPTER_EVENT_VECTOR 0x1 > /**< This flag indicates that crypto operations processed on the crypto > * adapter need to be vectorized > @@ -608,6 +636,63 @@ rte_event_crypto_adapter_service_id_get(uint8_t id, > uint32_t *service_id); > int > rte_event_crypto_adapter_event_port_get(uint8_t id, uint8_t *event_port_id); > > +/** > + * Initialize the adapter runtime configuration parameters > + * > + * @param params > + * A pointer to structure of type struct > rte_event_crypto_adapter_runtime_params > + * > + * @return > + * - 0: Success > + * - <0: Error code on failure > + */ > +__rte_experimental > +int > +rte_event_crypto_adapter_runtime_params_init( > + struct rte_event_crypto_adapter_runtime_params *params); > + > +/** > + * Set the adapter runtime configuration parameters > + * > + * @param id > + * Adapter identifier > + * > + * @param params > + * A pointer to structure of type struct > rte_event_crypto_adapter_runtime_params > + * with configuration parameter values. The reserved fields of this > structure > + * must be initialized to zero and the valid fields need to be set > appropriately. > + * This struct can be initialized using > + * rte_event_crypto_adapter_runtime_params_init() API to default values or > + * application may reset this struct and update required fields. > + * > + * @return > + * - 0: Success > + * - <0: Error code on failure > + */ > +__rte_experimental > +int > +rte_event_crypto_adapter_runtime_params_set(uint8_t id, > + struct rte_event_crypto_adapter_runtime_params *params); > + > +/** > + * Get the adapter runtime configuration parameters > + * > + * @param id > + * Adapter identifier > + * > + * @param[out] params > + * A pointer to structure of type struct > rte_event_crypto_adapter_runtime_params > + * containing valid adapter parameters when return value is 0. > + * > + * @return > + * - 0: Success > + * - <0: Error code on failure > + */ > +__rte_experimental > +int > +rte_event_crypto_adapter_runtime_params_get(uint8_t id, > + struct rte_event_crypto_adapter_runtime_params *params); > + > /** > * @warning > * @b EXPERIMENTAL: this API may change without prior notice > diff --git a/lib/eventdev/version.map b/lib/eventdev/version.map > index 7b93736dff..3b17c84eae 100644 > --- a/lib/eventdev/version.map > +++ b/lib/eventdev/version.map > @@ -121,6 +121,9 @@ EXPERIMENTAL { > rte_event_eth_tx_adapter_queue_stop; > > # added in 23.03 > + rte_event_crypto_adapter_runtime_params_get; > + rte_event_crypto_adapter_runtime_params_init; > + rte_event_crypto_adapter_runtime_params_set; > rte_event_eth_rx_adapter_runtime_params_get; > rte_event_eth_rx_adapter_runtime_params_init; > rte_event_eth_rx_adapter_runtime_params_set; > -- > 2.25.1 >