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 CA24641BAB; Thu, 2 Feb 2023 11:30:34 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B50CD42D65; Thu, 2 Feb 2023 11:30:34 +0100 (CET) Received: from shelob.oktetlabs.ru (shelob.oktetlabs.ru [91.220.146.113]) by mails.dpdk.org (Postfix) with ESMTP id 60815406A2 for ; Thu, 2 Feb 2023 11:30:33 +0100 (CET) Received: from [192.168.38.17] (aros.oktetlabs.ru [192.168.38.17]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by shelob.oktetlabs.ru (Postfix) with ESMTPSA id 6E01F50; Thu, 2 Feb 2023 13:30:32 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 shelob.oktetlabs.ru 6E01F50 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=oktetlabs.ru; s=default; t=1675333832; bh=DOAPpQ04PiPOSsfrvKodoDj0KclI/0WJEaAxuoVJWew=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=giXVJ2goIsmTbiZ5g1oymWQsZT7n/gGWaDogBhME+y+Zbcpxhd0VeI2sia2qUBSmX 8zEc95lPM41r7CjZTvvvU8F9+XkkrwUgzGS1YKx3sL1ug+Jy7ndmYwqFul/zJSJ/nz iw/w+59KU/sVfEwmCrfkvXRPLV91xrvfl/cs4aZU= Message-ID: <8cd35215-a114-3ac4-4dc8-8f69df360833@oktetlabs.ru> Date: Thu, 2 Feb 2023 13:30:32 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0 Subject: Re: [PATCH v8 1/2] ethdev: add query_update sync and async function calls Content-Language: en-US To: Gregory Etelson , "dev@dpdk.org" Cc: Matan Azrad , Raslan Darawsheh , Ori Kam , "NBU-Contact-Thomas Monjalon (EXTERNAL)" , Ferruh Yigit References: <20221221073547.988-1-getelson@nvidia.com> <20230201151646.3500-1-getelson@nvidia.com> <0a24a07c-6d36-2f5e-5f24-1501bcc41c1e@oktetlabs.ru> From: Andrew Rybchenko Organization: OKTET Labs In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit 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 2/2/23 13:24, Gregory Etelson wrote: >> On 2/1/23 18:16, Gregory Etelson wrote: >>> + ops = rte_flow_ops_get(port_id, error); >>> + if (!ops || !ops->action_handle_query_update) >>> + return -ENOTSUP; >> >> May be it makes sense to use single-operation callbacks if >> another operation input is NULL. I guess it could be >> convenient in some cases. Just an idea. >> > > There is a plan to deprecate indirect query and update functions > and replace them with a single query_update. So, will you add corresponding code? Just want to clarify. >>> +/** >>> + * @warning >>> + * @b EXPERIMENTAL: this API may change without prior notice. >>> + * >>> + * Query and update operational mode. >>> + * >>> + * RTE_FLOW_QU_QUERY_FIRST >>> + * Force port to query action before update. >>> + * RTE_FLOW_QU_UPDATE_FIRST >>> + * Force port to update action before query. >> >> I'm sorry, but I strongly dislike enum members duplication >> here. I don't understand why we need to duplicate it and why >> we can't document it in a right way below. >> > > I don't understand where the duplication is. > Query and update operations are atomic for application, > but in hardware these are 2 separate operations that reference hardware object. > The operations execution order can have different results on object state. > When application asks both actions it must explicitly specify execution order for hardware. No-no, simpler. Just remove RTE_FLOW_QU_QUERY_FIRST and RTE_FLOW_QU_UPDATE_FIRST above and update comments below to use comments from above. That's it. >>> + * >>> + * @see rte_flow_action_handle_query_update() >>> + * @see rte_flow_async_action_handle_query_update() >>> + */ >>> +enum rte_flow_query_update_mode { >>> + RTE_FLOW_QU_QUERY_FIRST, /**< Query before update. */ >>> + RTE_FLOW_QU_UPDATE_FIRST, /**< Query after update. */ >>> +};