From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id A2C574246D; Tue, 24 Jan 2023 05:30:04 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A0FBD40150; Tue, 24 Jan 2023 05:30:02 +0100 (CET) Received: from mail-vs1-f48.google.com (mail-vs1-f48.google.com [209.85.217.48]) by mails.dpdk.org (Postfix) with ESMTP id A3868400EF for ; Tue, 24 Jan 2023 05:30:01 +0100 (CET) Received: by mail-vs1-f48.google.com with SMTP id t10so15297384vsr.3 for ; Mon, 23 Jan 2023 20:30:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=TN316ebG2a/KB+v1vXFak3Z/Z6SekCjwsrghkKCa49Y=; b=Cm1REP85n+BoQD98lOjIvHToMgZYHDzYb01NNBjlty80gBlJO0c/7f6KLtvzqdO4WA +LUch+q4obV5hYZFJC7NINuylUTcOYq72/xwWYUQkCV4BSy7tWMMc/C3C15c/ZTvEoB0 oXAWy9Pw61hUkK0GmLsXOfTzC8t/bbGkDC+9LyOYuY6kLT3ERGETryjvv9XFrXiNcwV1 RJKJ6nqcJgm5insXnDmz5fFlpkbU0XF7DA8KVGU+qWdkidNuXt2N4UxWeyr8GpO1ZIo2 U+xPA74D+xkyIaPwsPxpaUTy9jhZ9RtdP9qaOT0kWm2Wncuv4aprL7OnKB70RzQozTNv FxCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=TN316ebG2a/KB+v1vXFak3Z/Z6SekCjwsrghkKCa49Y=; b=Wu14XHwS6Y4abaKsfS5iEkFrQAWLjuwTs55yEe/+lYM9CNJdVTx+K5DwjQh4yJkzau TduVWC6CoWOQvhh7WLoDw6t7h5pXuqDsXmpEdnuU0bi0qn/NWL80IsGXz+Xa4rJHMarG BjCzWx87JzX7j0cWOPmjVM38TOmFaBLTFp/STo+lCQFbFBJLZhYvd+ERmG1jQxE/bXxC cZPJm6rqni3MhTKhCgMXmdAdpsGv3sMgOmzMUFJfSLujMp0C25wagfEZYpGnJcP25EX4 j6tuV/iIEfauLqapBCgz/N/NyglB2jSKwCA7jPJUKWYsOZ45mE8Ov/rO7G979v/GGuUx aMZQ== X-Gm-Message-State: AFqh2kr0AvZEZy6IxO6zHmIdvwlOBoGOKYurkkJGfXHi+gjM9hMwO+2k SGin49hcYPNs8ErmQMVbt3RJPnac7jzYXnJCvaQ= X-Google-Smtp-Source: AMrXdXspaSKn8nH2oZGgA9WZa7ZLWKpiKZrBBShfEg1r6jd546iO/IehFVSOvbgB298daUCTFhQe7XD8sFoquAuEDr8= X-Received: by 2002:a67:ea8f:0:b0:3d0:ee83:9599 with SMTP id f15-20020a67ea8f000000b003d0ee839599mr3919579vso.45.1674534600756; Mon, 23 Jan 2023 20:30:00 -0800 (PST) MIME-Version: 1.0 References: <20230107161852.3708690-1-s.v.naga.harish.k@intel.com> <20230123180458.486189-1-s.v.naga.harish.k@intel.com> In-Reply-To: <20230123180458.486189-1-s.v.naga.harish.k@intel.com> From: Jerin Jacob Date: Tue, 24 Jan 2023 09:59:34 +0530 Message-ID: Subject: Re: [PATCH v2 1/3] eventdev/eth_rx: add params set/get APIs To: Naga Harish K S V Cc: jerinj@marvell.com, erik.g.carrillo@intel.com, abhinandan.gujjar@intel.com, dev@dpdk.org, jay.jayatheerthan@intel.com Content-Type: text/plain; charset="UTF-8" X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org On Mon, Jan 23, 2023 at 11:35 PM Naga Harish K S V wrote: > > The adapter 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_tx_adapter_runtime_params_get`` respectively. > > Signed-off-by: Naga Harish K S V > diff --git a/doc/guides/prog_guide/event_ethernet_rx_adapter.rst b/doc/guides/prog_guide/event_ethernet_rx_adapter.rst > index 461eca566f..2207d6ffc3 100644 > --- a/doc/guides/prog_guide/event_ethernet_rx_adapter.rst > +++ b/doc/guides/prog_guide/event_ethernet_rx_adapter.rst > @@ -185,6 +185,26 @@ flags for handling received packets, event queue identifier, scheduler type, > event priority, polling frequency of the receive queue and flow identifier > in struct ``rte_event_eth_rx_adapter_queue_conf``. > > +Set/Get adapter runtime configuration parameters > +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > + > +The runtime configuration parameters of adapter can be set/read using > +``rte_event_eth_rx_adapter_runtime_params_set()`` and > +``rte_event_eth_rx_adapter_runtime_params_get()`` respectively. The parameters that > +can be set/read are defined in ``struct rte_event_eth_rx_adapter_runtime_params``. Good. > + > +``rte_event_eth_rx_adapter_create()`` or > +``rte_event_eth_rx_adapter_create_with_params()`` configures the adapter with > +default value for maximum packets processed per request to 128. > +``rte_event_eth_rx_adapter_runtime_params_set()`` function allows to reconfigure > +maximum number of packets processed by adapter per service request. This is > +alternative to configuring the maximum packets processed per request by adapter > +by using ``rte_event_eth_rx_adapter_create_ext()`` with parameter > +``rte_event_eth_rx_adapter_conf::max_nb_rx``. This paragraph is not needed IMO. As it is specific to a driver, and we can keep Doxygen comment only. > + > +``rte_event_eth_rx_adapter_runtime_parmas_get()`` function retrieves the configuration > +parameters that are defined in ``struct rte_event_eth_rx_adapter_runtime_params``. Good. > + > Getting and resetting Adapter queue stats > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > diff --git a/lib/eventdev/rte_event_eth_rx_adapter.c b/lib/eventdev/rte_event_eth_rx_adapter.c > index 34aa87379e..d8f3e750b7 100644 > --- a/lib/eventdev/rte_event_eth_rx_adapter.c > +++ b/lib/eventdev/rte_event_eth_rx_adapter.c > @@ -35,6 +35,8 @@ > #define MAX_VECTOR_NS 1E9 > #define MIN_VECTOR_NS 1E5 > > +#define RXA_NB_RX_WORK_DEFAULT 128 > + > #define ETH_RX_ADAPTER_SERVICE_NAME_LEN 32 > #define ETH_RX_ADAPTER_MEM_NAME_LEN 32 > > @@ -1554,7 +1556,7 @@ rxa_default_conf_cb(uint8_t id, uint8_t dev_id, > } > > conf->event_port_id = port_id; > - conf->max_nb_rx = 128; > + conf->max_nb_rx = RXA_NB_RX_WORK_DEFAULT; > if (started) > ret = rte_event_dev_start(dev_id); > rx_adapter->default_cb_arg = 1; > @@ -3436,6 +3438,90 @@ rte_event_eth_rx_adapter_instance_get(uint16_t eth_dev_id, > return -EINVAL; > } > + > +int > +rte_event_eth_rx_adapter_runtime_params_set(uint8_t id, > + struct rte_event_eth_rx_adapter_runtime_params *params) > +{ > + struct event_eth_rx_adapter *rxa; > + int ret; > + > + if (params == NULL) > + return -EINVAL; > + > + if (rxa_memzone_lookup()) > + return -ENOMEM; Introduce an adapter callback and move SW adapter related logic under callback handler. > + > + rxa = rxa_id_to_adapter(id); > + if (rxa == NULL) > + return -EINVAL; > + > + ret = rxa_caps_check(rxa); > + if (ret) > + return ret; > + > + rte_spinlock_lock(&rxa->rx_lock); > + rxa->max_nb_rx = params->max_nb_rx; > + rte_spinlock_unlock(&rxa->rx_lock); > + > + return 0; > +} > + > +int > +rte_event_eth_rx_adapter_runtime_params_get(uint8_t id, > + struct rte_event_eth_rx_adapter_runtime_params *params) > +{ > + struct event_eth_rx_adapter *rxa; > + int ret; > + > + if (params == NULL) > + return -EINVAL; Introduce an adapter callback and move SW adapter related logic under callback handler. > + > + if (rxa_memzone_lookup()) > + return -ENOMEM; + > + rxa = rxa_id_to_adapter(id); > + if (rxa == NULL) > + return -EINVAL; > + > + ret = rxa_caps_check(rxa); > + if (ret) > + return ret; > + > + params->max_nb_rx = rxa->max_nb_rx; > + > + return 0; > +} > + > +/* RX-adapter telemetry callbacks */ > #define RXA_ADD_DICT(stats, s) rte_tel_data_add_dict_u64(d, #s, stats.s) > > static int > diff --git a/lib/eventdev/rte_event_eth_rx_adapter.h b/lib/eventdev/rte_event_eth_rx_adapter.h > index f4652f40e8..214ffd018c 100644 > --- a/lib/eventdev/rte_event_eth_rx_adapter.h > +++ b/lib/eventdev/rte_event_eth_rx_adapter.h > @@ -39,10 +39,21 @@ > * - rte_event_eth_rx_adapter_queue_stats_reset() > * - rte_event_eth_rx_adapter_event_port_get() > * - rte_event_eth_rx_adapter_instance_get() > + * - rte_event_eth_rx_adapter_runtime_params_get() > + * - rte_event_eth_rx_adapter_runtime_params_set() > * > * 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. > + * > + * rte_event_eth_rx_adapter_create() or rte_event_eth_adapter_create_with_params() > + * configures the adapter with default value of maximum packets processed per > + * iteration to RXA_NB_RX_WORK_DEFAULT(128). > + * rte_event_eth_rx_adapter_runtime_params_set() allows to re-configure maximum > + * packets processed per iteration. This is alternative to using > + * rte_event_eth_rx_adapter_create_ext() with parameter > + * rte_event_eth_rx_adapter_conf::max_nb_rx Move this to Doxygen comment against max_nb_rx > + * > * 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 > * priority and scheduling type that the adapter should use when constructing > @@ -299,6 +310,19 @@ struct rte_event_eth_rx_adapter_params { > /**< flag to indicate that event buffer is separate for each queue */ > }; > > +/** > + * Adapter configuration parameters > + */ > +struct rte_event_eth_rx_adapter_runtime_params { > + uint32_t max_nb_rx; > + /**< The adapter can return early if it has processed at least > + * max_nb_rx mbufs. This isn't treated as a requirement; batching may > + * cause the adapter to process more than max_nb_rx mbufs. Also tell it is valid only for INTERNAL PORT capablity is set. > + */ > + uint32_t rsvd[15]; > + /**< Reserved fields for future use */ Introduce rte_event_eth_rx_adapter_runtime_params_init() to make sure rsvd is zero. > +}; > + > /** > * > * Callback function invoked by the SW adapter before it continues > @@ -377,7 +401,7 @@ int rte_event_eth_rx_adapter_create_ext(uint8_t id, uint8_t dev_id, > * Create a new ethernet Rx event adapter with the specified identifier. > * This function uses an internal configuration function that creates an event > * port. This default function reconfigures the event device with an > - * additional event port and setups up the event port using the port_config > + * additional event port and setup the event port using the port_config > * parameter passed into this function. In case the application needs more > * control in configuration of the service, it should use the > * rte_event_eth_rx_adapter_create_ext() version. > @@ -743,6 +767,50 @@ rte_event_eth_rx_adapter_instance_get(uint16_t eth_dev_id, > uint16_t rx_queue_id, > uint8_t *rxa_inst_id); >