DPDK patches and discussions
 help / color / mirror / Atom feed
From: "Naga Harish K, S V" <s.v.naga.harish.k@intel.com>
To: Jerin Jacob <jerinjacobk@gmail.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>,
	"Jayatheerthan, Jay" <jay.jayatheerthan@intel.com>
Subject: RE: [PATCH v2] eventdev/eth_rx: update adapter create APIs
Date: Thu, 10 Aug 2023 07:38:33 +0000	[thread overview]
Message-ID: <DM6PR11MB3868187FED91C34EB12DD246A113A@DM6PR11MB3868.namprd11.prod.outlook.com> (raw)
In-Reply-To: <CALBAE1Mx6+_8Yzak7tRHfQgPUGQ75xKtvMrpn2rZti-hnPHmiA@mail.gmail.com>

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

  reply	other threads:[~2023-08-10  7:39 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-01  9:40 [RFC] " 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 [this message]
2023-08-10  8:07           ` Jerin Jacob
2023-08-10 11:58             ` Naga Harish K, S V
2023-08-10 13:25               ` Jerin Jacob

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=DM6PR11MB3868187FED91C34EB12DD246A113A@DM6PR11MB3868.namprd11.prod.outlook.com \
    --to=s.v.naga.harish.k@intel.com \
    --cc=dev@dpdk.org \
    --cc=jay.jayatheerthan@intel.com \
    --cc=jerinjacobk@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).