> -----Original Message----- > From: Ferruh Yigit <ferruh.yi...@amd.com> > Sent: Wednesday, February 7, 2024 12:54 > To: NBU-Contact-Thomas Monjalon (EXTERNAL) <tho...@monjalon.net>; > Dariusz Sosnowski <dsosnow...@nvidia.com>; Mcnamara, John > <john.mcnam...@intel.com> > Cc: Matan Azrad <ma...@nvidia.com>; Slava Ovsiienko > <viachesl...@nvidia.com>; Ori Kam <or...@nvidia.com>; Suanming Mou > <suanmi...@nvidia.com>; Andrew Rybchenko > <andrew.rybche...@oktetlabs.ru>; dev@dpdk.org > Subject: Re: [PATCH v3] ethdev: fast path async flow API > > External email: Use caution opening links or attachments > > > On 2/7/2024 10:56 AM, Ferruh Yigit wrote: > > On 2/7/2024 10:47 AM, Ferruh Yigit wrote: > >> On 2/7/2024 9:27 AM, Thomas Monjalon wrote: > >>> 07/02/2024 01:57, Ferruh Yigit: > >>>> On 2/6/2024 10:21 PM, Thomas Monjalon wrote: > >>>>> 06/02/2024 18:36, Dariusz Sosnowski: > >>>>>> --- a/doc/guides/nics/build_and_test.rst > >>>>>> +++ b/doc/guides/nics/build_and_test.rst > >>>>>> +- ``RTE_FLOW_DEBUG`` (default **disabled**; enabled > >>>>>> +automatically on debug builds) > >>>>>> + > >>>>>> + Build with debug code in asynchronous flow APIs. > >>>>>> + > >>>>>> .. Note:: > >>>>>> > >>>>>> - The ethdev library use above options to wrap debug code to trace > invalid parameters > >>>>>> + The ethdev library uses above options to wrap debug code to > >>>>>> + trace invalid parameters > >>>>>> on data path APIs, so performance downgrade is expected when > enabling those options. > >>>>>> - Each PMD can decide to reuse them to wrap their own debug code > in the Rx/Tx path. > >>>>>> + Each PMD can decide to reuse them to wrap their own debug code > in the Rx/Tx path > >>>>>> + and in asynchronous flow APIs implementation. > >>>>> > >>>>> Good > >>>>> > >>>>>> --- a/doc/guides/rel_notes/release_24_03.rst > >>>>>> +++ b/doc/guides/rel_notes/release_24_03.rst > >>>>>> +* ethdev: PMDs implementing asynchronous flow operations are > >>>>>> +required to provide relevant functions > >>>>>> + implementation through ``rte_flow_fp_ops`` struct, instead of > ``rte_flow_ops`` struct. > >>>>>> + Pointer to device-dependent ``rte_flow_fp_ops`` should be provided > to ``rte_eth_dev.flow_fp_ops``. > >>>>> > >>>>> That's a change only for the driver. > >>>>> If there is no change for the application, it should not appear in the > release notes. > >>>>> BTW, API means Application Programming Interface :) > >>>>> > >>>>>> + This change applies to the following API functions: > >>>>>> + > >>>>>> + * ``rte_flow_async_create`` > >>>>>> + * ``rte_flow_async_create_by_index`` > >>>>>> + * ``rte_flow_async_actions_update`` > >>>>>> + * ``rte_flow_async_destroy`` > >>>>>> + * ``rte_flow_push`` > >>>>>> + * ``rte_flow_pull`` > >>>>>> + * ``rte_flow_async_action_handle_create`` > >>>>>> + * ``rte_flow_async_action_handle_destroy`` > >>>>>> + * ``rte_flow_async_action_handle_update`` > >>>>>> + * ``rte_flow_async_action_handle_query`` > >>>>>> + * ``rte_flow_async_action_handle_query_update`` > >>>>>> + * ``rte_flow_async_action_list_handle_create`` > >>>>>> + * ``rte_flow_async_action_list_handle_destroy`` > >>>>>> + * ``rte_flow_async_action_list_handle_query_update`` > >>>>>> + > >>>>>> +* ethdev: Removed the following fields from ``rte_flow_ops`` struct: > >>>>>> + > >>>>>> + * ``async_create`` > >>>>>> + * ``async_create_by_index`` > >>>>>> + * ``async_actions_update`` > >>>>>> + * ``async_destroy`` > >>>>>> + * ``push`` > >>>>>> + * ``pull`` > >>>>>> + * ``async_action_handle_create`` > >>>>>> + * ``async_action_handle_destroy`` > >>>>>> + * ``async_action_handle_update`` > >>>>>> + * ``async_action_handle_query`` > >>>>>> + * ``async_action_handle_query_update`` > >>>>>> + * ``async_action_list_handle_create`` > >>>>>> + * ``async_action_list_handle_destroy`` > >>>>>> + * ``async_action_list_handle_query_update`` > >>>>> > >>>>> [...] > >>>>>> --- a/lib/ethdev/ethdev_driver.h > >>>>>> +++ b/lib/ethdev/ethdev_driver.h > >>>>>> @@ -71,6 +71,10 @@ struct rte_eth_dev { > >>>>>> struct rte_eth_dev_data *data; > >>>>>> void *process_private; /**< Pointer to per-process device > >>>>>> data */ > >>>>>> const struct eth_dev_ops *dev_ops; /**< Functions > >>>>>> exported by PMD */ > >>>>>> + /** > >>>>>> + * Fast path flow API functions exported by PMD. > >>>>>> + */ > >>>>> > >>>>> This comment may be on one single line. > >>>>> > >>>>>> + const struct rte_flow_fp_ops *flow_fp_ops; > >>>>>> struct rte_device *device; /**< Backing device */ > >>>>>> struct rte_intr_handle *intr_handle; /**< Device > >>>>>> interrupt handle */ > >>>>> > >>>>>> --- a/lib/ethdev/meson.build > >>>>>> +++ b/lib/ethdev/meson.build > >>>>>> +if get_option('buildtype').contains('debug') > >>>>>> + cflags += ['-DRTE_FLOW_DEBUG'] endif > >>>>> > >>>>> This looks OK. > >>>>> > >>>>> Acked-by: Thomas Monjalon <tho...@monjalon.net> > >>>>> > >>>>> > >>>> > >>>> Acked-by: Ferruh Yigit <ferruh.yi...@amd.com> > >>>> > >>>> Applied to dpdk-next-net/main, thanks. > >>> > >>> Ferruh, I was expecting a new version. > >>> Did you address yourself the comments above? > >>> > >>> > >> > >> No, I missed the comment, if it is simple I can apply in next-net, > >> let me sync with Dariusz. > >> > > > > As we synced with Dariusz, there is no good place to document > > ethdev-drivers interfaces in the release notes. > > > > Also this release there were more ethdev-drivers interface changes, > > around get_ptype(), but those also not documented in the release > > notes, so will remove these ones too. > > > > Dariusz, I did the changes in next-net, can you please double check them: > https://git.dpdk.org/next/dpdk-next- > net/commit/?h=main&id=23f1ee71a9c332210aaa5b1ec51160938b5fc50b Looks good. Thank you applying the changes.
Best regards, Dariusz Sosnowski