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 A3A98A034C; Thu, 18 Aug 2022 18:28:39 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 45EAB40694; Thu, 18 Aug 2022 18:28:39 +0200 (CEST) Received: from mail.lysator.liu.se (mail.lysator.liu.se [130.236.254.3]) by mails.dpdk.org (Postfix) with ESMTP id D231A40156 for ; Thu, 18 Aug 2022 18:28:37 +0200 (CEST) Received: from mail.lysator.liu.se (localhost [127.0.0.1]) by mail.lysator.liu.se (Postfix) with ESMTP id 3DECE180DD for ; Thu, 18 Aug 2022 18:28:37 +0200 (CEST) Received: by mail.lysator.liu.se (Postfix, from userid 1004) id 3C1D418071; Thu, 18 Aug 2022 18:28:37 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on hermod.lysator.liu.se X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=ALL_TRUSTED, AWL, NICE_REPLY_A, T_SCC_BODY_TEXT_LINE autolearn=disabled version=3.4.6 X-Spam-Score: -1.5 Received: from [192.168.1.59] (unknown [62.63.215.114]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits)) (No client certificate requested) by mail.lysator.liu.se (Postfix) with ESMTPSA id 2C17C182D0; Thu, 18 Aug 2022 18:28:36 +0200 (CEST) Message-ID: <353e3a65-271b-e1bb-6b10-7608aaefa716@lysator.liu.se> Date: Thu, 18 Aug 2022 18:28:35 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 Subject: Re: [PATCH 1/3] eventdev: add element offset to event vector Content-Language: en-US To: pbhagavatula@marvell.com, jerinj@marvell.com, Jay Jayatheerthan Cc: dev@dpdk.org, erik.g.carrillo@intel.com, abhinandan.gujjar@intel.com, timothy.mcdaniel@intel.com, sthotton@marvell.com, hemant.agrawal@nxp.com, nipun.gupta@nxp.com, harry.van.haaren@intel.com, mattias.ronnblom@ericsson.com, liangma@liangbit.com, peter.mccarthy@intel.com References: <20220816154932.10168-1-pbhagavatula@marvell.com> From: =?UTF-8?Q?Mattias_R=c3=b6nnblom?= In-Reply-To: <20220816154932.10168-1-pbhagavatula@marvell.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV using ClamSMTP 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 2022-08-16 17:49, pbhagavatula@marvell.com wrote: > From: Pavan Nikhilesh > > Add ``elem_offset:12`` bit field event vector structure > the bits are taken from ``rsvd:15``. > The element offset defines the offset into the vector array > at which valid elements start. > The valid elements count will be equal to nb_elem - elem_offset. > I'm missing a rationale why this change is a good idea. (I can guess, but I think it's better to spell it out.) > Update Rx/Tx adapter SW implementation to use elem_offset. > > Signed-off-by: Pavan Nikhilesh > --- > lib/eventdev/rte_event_eth_rx_adapter.c | 1 + > lib/eventdev/rte_event_eth_tx_adapter.c | 7 ++++--- > lib/eventdev/rte_eventdev.h | 8 ++++++-- > 3 files changed, 11 insertions(+), 5 deletions(-) > > diff --git a/lib/eventdev/rte_event_eth_rx_adapter.c b/lib/eventdev/rte_event_eth_rx_adapter.c > index bf8741d2ea..bd72f9b845 100644 > --- a/lib/eventdev/rte_event_eth_rx_adapter.c > +++ b/lib/eventdev/rte_event_eth_rx_adapter.c > @@ -855,6 +855,7 @@ rxa_init_vector(struct event_eth_rx_adapter *rx_adapter, > vec->vector_ev->port = vec->port; > vec->vector_ev->queue = vec->queue; > vec->vector_ev->attr_valid = true; > + vec->vector_ev->elem_offset = 0; > TAILQ_INSERT_TAIL(&rx_adapter->vector_list, vec, next); > } > > diff --git a/lib/eventdev/rte_event_eth_tx_adapter.c b/lib/eventdev/rte_event_eth_tx_adapter.c > index b4b37f1cae..da70883e0d 100644 > --- a/lib/eventdev/rte_event_eth_tx_adapter.c > +++ b/lib/eventdev/rte_event_eth_tx_adapter.c > @@ -524,16 +524,17 @@ txa_process_event_vector(struct txa_service_data *txa, > queue = vec->queue; > tqi = txa_service_queue(txa, port, queue); > if (unlikely(tqi == NULL || !tqi->added)) { > - rte_pktmbuf_free_bulk(mbufs, vec->nb_elem); > + rte_pktmbuf_free_bulk(&mbufs[vec->elem_offset], > + vec->nb_elem - vec->elem_offset); > rte_mempool_put(rte_mempool_from_obj(vec), vec); > return 0; > } > - for (i = 0; i < vec->nb_elem; i++) { > + for (i = vec->elem_offset; i < vec->nb_elem; i++) { > nb_tx += rte_eth_tx_buffer(port, queue, tqi->tx_buf, > mbufs[i]); > } > } else { > - for (i = 0; i < vec->nb_elem; i++) { > + for (i = vec->elem_offset; i < vec->nb_elem; i++) { > port = mbufs[i]->port; > queue = rte_event_eth_tx_adapter_txq_get(mbufs[i]); > tqi = txa_service_queue(txa, port, queue); > diff --git a/lib/eventdev/rte_eventdev.h b/lib/eventdev/rte_eventdev.h > index 6a6f6ea4c1..b0698fe748 100644 > --- a/lib/eventdev/rte_eventdev.h > +++ b/lib/eventdev/rte_eventdev.h > @@ -1060,8 +1060,12 @@ rte_event_dev_close(uint8_t dev_id); > */ > struct rte_event_vector { > uint16_t nb_elem; > - /**< Number of elements in this event vector. */ > - uint16_t rsvd : 15; > + /**< Total number of elements in this event vector. */ I'm not sure "total" adds anything here. Didn't the old nb_elem also include the total number of elements? nb_elem doesn't represent the number of elements in the vector any more, does it? Why not just keep the old semantics, and let it represent the number of used slots in the vector array? As opposed to being the + 1. > + uint16_t elem_offset : 12; > + /**< Offset into the vector array where valid elements start from. > + * The valid elements count would be nb_elem - elem_offset. > + */ > + uint16_t rsvd : 3; > /**< Reserved for future use */ > uint16_t attr_valid : 1; > /**< Indicates that the below union attributes have valid information. > -- > 2.25.1 >