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 624E5A00E6 for ; Tue, 11 Jun 2019 12:55:31 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 255B11C3AB; Tue, 11 Jun 2019 12:55:31 +0200 (CEST) Received: from mail.lysator.liu.se (mail.lysator.liu.se [130.236.254.3]) by dpdk.org (Postfix) with ESMTP id 0B9111C3A6 for ; Tue, 11 Jun 2019 12:55:30 +0200 (CEST) Received: from mail.lysator.liu.se (localhost [127.0.0.1]) by mail.lysator.liu.se (Postfix) with ESMTP id B760D4000A for ; Tue, 11 Jun 2019 12:55:29 +0200 (CEST) Received: by mail.lysator.liu.se (Postfix, from userid 1004) id A2E8940009; Tue, 11 Jun 2019 12:55:29 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on bernadotte.lysator.liu.se X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=ALL_TRUSTED,AWL autolearn=disabled version=3.4.1 X-Spam-Score: -0.9 Received: from [192.168.1.59] (host-90-232-229-62.mobileonline.telia.com [90.232.229.62]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.lysator.liu.se (Postfix) with ESMTPSA id A290140002; Tue, 11 Jun 2019 12:55:28 +0200 (CEST) To: Nikhil Rao , jerinj@marvell.com Cc: dev@dpdk.org References: <1558475573-34837-1-git-send-email-nikhil.rao@intel.com> From: =?UTF-8?Q?Mattias_R=c3=b6nnblom?= Message-ID: <94f5667e-6539-a91c-36d3-8d890cab4e51@ericsson.com> Date: Tue, 11 Jun 2019 12:55:28 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.7.0 MIME-Version: 1.0 In-Reply-To: <1558475573-34837-1-git-send-email-nikhil.rao@intel.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit X-Virus-Scanned: ClamAV using ClamSMTP Subject: Re: [dpdk-dev] [PATCH] eventdev: remove event copy in Rx adapter 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" On 2019-05-21 23:52, Nikhil Rao wrote: > Remove copy from temporary event array on the stack to the > enqueue buffer event array entry, instead initialize event in the > enqueue buffer event array entry. > > Suggested-by: Mattias Rönnblom > Signed-off-by: Nikhil Rao > --- > > Hi Mattias, > > This patch eliminates the event copy as you previously mentioned > (https://patches.dpdk.org/patch/53350/), the enqueue buffer > array is still retained in the rx_adapter struct, since the Rx adapter > service function can return with events in the enqueue buffer > that have not yet been shipped to the event device. > > Let me know your comments. > > Thanks, > Nikhil Looks good to me. Sorry about the late reply. > > lib/librte_eventdev/rte_event_eth_rx_adapter.c | 20 ++++---------------- > 1 file changed, 4 insertions(+), 16 deletions(-) > > diff --git a/lib/librte_eventdev/rte_event_eth_rx_adapter.c b/lib/librte_eventdev/rte_event_eth_rx_adapter.c > index 8d178be..a201668 100644 > --- a/lib/librte_eventdev/rte_event_eth_rx_adapter.c > +++ b/lib/librte_eventdev/rte_event_eth_rx_adapter.c > @@ -715,18 +715,6 @@ static uint16_t rxa_gcd_u16(uint16_t a, uint16_t b) > } > } > > -/* Add event to buffer, free space check is done prior to calling > - * this function > - */ > -static inline void > -rxa_buffer_event(struct rte_event_eth_rx_adapter *rx_adapter, > - struct rte_event *ev) > -{ > - struct rte_eth_event_enqueue_buffer *buf = > - &rx_adapter->event_enqueue_buffer; > - rte_memcpy(&buf->events[buf->count++], ev, sizeof(struct rte_event)); > -} > - > /* Enqueue buffered events to event device */ > static inline uint16_t > rxa_flush_event_buffer(struct rte_event_eth_rx_adapter *rx_adapter) > @@ -769,11 +757,11 @@ static uint16_t rxa_gcd_u16(uint16_t a, uint16_t b) > &dev_info->rx_queue[rx_queue_id]; > struct rte_eth_event_enqueue_buffer *buf = > &rx_adapter->event_enqueue_buffer; > + struct rte_event *ev = &buf->events[buf->count]; > int32_t qid = eth_rx_queue_info->event_queue_id; > uint8_t sched_type = eth_rx_queue_info->sched_type; > uint8_t priority = eth_rx_queue_info->priority; > uint32_t flow_id; > - struct rte_event events[BATCH_SIZE]; > struct rte_mbuf *m = mbufs[0]; > uint32_t rss_mask; > uint32_t rss; > @@ -811,7 +799,6 @@ static uint16_t rxa_gcd_u16(uint16_t a, uint16_t b) > > for (i = 0; i < num; i++) { > m = mbufs[i]; > - struct rte_event *ev = &events[i]; > > rss = do_rss ? > rxa_do_softrss(m, rx_adapter->rss_key_be) : > @@ -828,9 +815,10 @@ static uint16_t rxa_gcd_u16(uint16_t a, uint16_t b) > ev->sub_event_type = 0; > ev->priority = priority; > ev->mbuf = m; > - > - rxa_buffer_event(rx_adapter, ev); > + ev++; > } > + > + buf->count += num; > } > > /* Enqueue packets from to event buffer */ >