From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.droids-corp.org (zoll.droids-corp.org [94.23.50.67]) by dpdk.org (Postfix) with ESMTP id A821A2BF4; Fri, 29 Mar 2019 15:18:11 +0100 (CET) Received: from lfbn-1-5920-128.w90-110.abo.wanadoo.fr ([90.110.126.128] helo=droids-corp.org) by mail.droids-corp.org with esmtpsa (TLS1.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1h9sMp-0002Ik-88; Fri, 29 Mar 2019 15:20:24 +0100 Received: by droids-corp.org (sSMTP sendmail emulation); Fri, 29 Mar 2019 15:17:55 +0100 Date: Fri, 29 Mar 2019 15:17:55 +0100 From: Olivier Matz To: Gavin Hu Cc: dev@dpdk.org, nd@arm.com, thomas@monjalon.net, jerinj@marvell.com, hemant.agrawal@nxp.com, nipun.gupta@nxp.com, Honnappa.Nagarahalli@arm.com, i.maximets@samsung.com, stable@dpdk.org Message-ID: <20190329141755.ziopuvhepdi372aa@platinum> References: <20181212062404.30243-1-gavin.hu@arm.com> <1552620686-10347-2-git-send-email-gavin.hu@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1552620686-10347-2-git-send-email-gavin.hu@arm.com> User-Agent: NeoMutt/20170113 (1.7.2) Subject: Re: [dpdk-dev] [PATCH v7 1/2] ring: add reset API to flush the ring when not in use X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 Mar 2019 14:18:11 -0000 Hi, On Fri, Mar 15, 2019 at 11:31:25AM +0800, Gavin Hu wrote: > Currently, the flush is done by dequeuing the ring in a while loop. It is > much simpler to flush the queue by resetting the head and tail indices. > > Fixes: af75078fece3 ("first public release") > Cc: stable@dpdk.org > > Signed-off-by: Gavin Hu > Reviewed-by: Ruifeng Wang > Reviewed-by: Honnappa Nagarahalli > --- > lib/librte_ring/rte_ring.h | 20 ++++++++++++++++++++ > lib/librte_ring/rte_ring_version.map | 7 +++++++ > 2 files changed, 27 insertions(+) > > diff --git a/lib/librte_ring/rte_ring.h b/lib/librte_ring/rte_ring.h > index af5444a..2830300 100644 > --- a/lib/librte_ring/rte_ring.h > +++ b/lib/librte_ring/rte_ring.h > @@ -671,6 +671,26 @@ rte_ring_dequeue(struct rte_ring *r, void **obj_p) > } > > /** > + * Flush a ring. > + * > + * This function flush all the elements in a ring > + * > + * @b EXPERIMENTAL: this API may change without prior notice > + * > + * @warning > + * Make sure the ring is not in use while calling this function. > + * > + * @param r > + * A pointer to the ring structure. > + */ > +static inline void __rte_experimental > +rte_ring_reset(struct rte_ring *r) > +{ > + r->prod.head = r->cons.head = 0; > + r->prod.tail = r->cons.tail = 0; > +} > + > +/** > * Return the number of entries in a ring. > * > * @param r > diff --git a/lib/librte_ring/rte_ring_version.map b/lib/librte_ring/rte_ring_version.map > index d935efd..581d9ca 100644 > --- a/lib/librte_ring/rte_ring_version.map > +++ b/lib/librte_ring/rte_ring_version.map > @@ -17,3 +17,10 @@ DPDK_2.2 { > rte_ring_free; > > } DPDK_2.0; > + > +EXPERIMENTAL { > + global: > + > + rte_ring_reset; > + > +}; > -- > 2.7.4 > To me, a static inline function does not need to be added in rte_ring_version.map (or is it due to a check script checking the __rte_experimental tag ?). I found at least one commit where it is not the case: c277b34c1b3b ("mbuf: add function returning buffer address") There are 2 options: 1- remove the rte_ring_version.map part of the patch. 2- change the static inline function into a standard function. I would prefer 2-, because it allows to keep an api/abi compat layer in the future. Regards Olivier From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by dpdk.space (Postfix) with ESMTP id EB1A9A05D3 for ; Fri, 29 Mar 2019 15:18:13 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 945B33256; Fri, 29 Mar 2019 15:18:12 +0100 (CET) Received: from mail.droids-corp.org (zoll.droids-corp.org [94.23.50.67]) by dpdk.org (Postfix) with ESMTP id A821A2BF4; Fri, 29 Mar 2019 15:18:11 +0100 (CET) Received: from lfbn-1-5920-128.w90-110.abo.wanadoo.fr ([90.110.126.128] helo=droids-corp.org) by mail.droids-corp.org with esmtpsa (TLS1.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1h9sMp-0002Ik-88; Fri, 29 Mar 2019 15:20:24 +0100 Received: by droids-corp.org (sSMTP sendmail emulation); Fri, 29 Mar 2019 15:17:55 +0100 Date: Fri, 29 Mar 2019 15:17:55 +0100 From: Olivier Matz To: Gavin Hu Cc: dev@dpdk.org, nd@arm.com, thomas@monjalon.net, jerinj@marvell.com, hemant.agrawal@nxp.com, nipun.gupta@nxp.com, Honnappa.Nagarahalli@arm.com, i.maximets@samsung.com, stable@dpdk.org Message-ID: <20190329141755.ziopuvhepdi372aa@platinum> References: <20181212062404.30243-1-gavin.hu@arm.com> <1552620686-10347-2-git-send-email-gavin.hu@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Disposition: inline In-Reply-To: <1552620686-10347-2-git-send-email-gavin.hu@arm.com> User-Agent: NeoMutt/20170113 (1.7.2) Subject: Re: [dpdk-dev] [PATCH v7 1/2] ring: add reset API to flush the ring when not in use X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Message-ID: <20190329141755.IyrK76L9fJTQLsU3vNW13bhdLM2oBzgMZYb-c8RJuxE@z> Hi, On Fri, Mar 15, 2019 at 11:31:25AM +0800, Gavin Hu wrote: > Currently, the flush is done by dequeuing the ring in a while loop. It is > much simpler to flush the queue by resetting the head and tail indices. > > Fixes: af75078fece3 ("first public release") > Cc: stable@dpdk.org > > Signed-off-by: Gavin Hu > Reviewed-by: Ruifeng Wang > Reviewed-by: Honnappa Nagarahalli > --- > lib/librte_ring/rte_ring.h | 20 ++++++++++++++++++++ > lib/librte_ring/rte_ring_version.map | 7 +++++++ > 2 files changed, 27 insertions(+) > > diff --git a/lib/librte_ring/rte_ring.h b/lib/librte_ring/rte_ring.h > index af5444a..2830300 100644 > --- a/lib/librte_ring/rte_ring.h > +++ b/lib/librte_ring/rte_ring.h > @@ -671,6 +671,26 @@ rte_ring_dequeue(struct rte_ring *r, void **obj_p) > } > > /** > + * Flush a ring. > + * > + * This function flush all the elements in a ring > + * > + * @b EXPERIMENTAL: this API may change without prior notice > + * > + * @warning > + * Make sure the ring is not in use while calling this function. > + * > + * @param r > + * A pointer to the ring structure. > + */ > +static inline void __rte_experimental > +rte_ring_reset(struct rte_ring *r) > +{ > + r->prod.head = r->cons.head = 0; > + r->prod.tail = r->cons.tail = 0; > +} > + > +/** > * Return the number of entries in a ring. > * > * @param r > diff --git a/lib/librte_ring/rte_ring_version.map b/lib/librte_ring/rte_ring_version.map > index d935efd..581d9ca 100644 > --- a/lib/librte_ring/rte_ring_version.map > +++ b/lib/librte_ring/rte_ring_version.map > @@ -17,3 +17,10 @@ DPDK_2.2 { > rte_ring_free; > > } DPDK_2.0; > + > +EXPERIMENTAL { > + global: > + > + rte_ring_reset; > + > +}; > -- > 2.7.4 > To me, a static inline function does not need to be added in rte_ring_version.map (or is it due to a check script checking the __rte_experimental tag ?). I found at least one commit where it is not the case: c277b34c1b3b ("mbuf: add function returning buffer address") There are 2 options: 1- remove the rte_ring_version.map part of the patch. 2- change the static inline function into a standard function. I would prefer 2-, because it allows to keep an api/abi compat layer in the future. Regards Olivier