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 85CD1A0032; Thu, 12 May 2022 00:31:06 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 25126410F2; Thu, 12 May 2022 00:31:06 +0200 (CEST) Received: from forward501o.mail.yandex.net (forward501o.mail.yandex.net [37.140.190.203]) by mails.dpdk.org (Postfix) with ESMTP id 2AF8F410EF for ; Thu, 12 May 2022 00:31:04 +0200 (CEST) Received: from myt6-d4eda2ca0046.qloud-c.yandex.net (myt6-d4eda2ca0046.qloud-c.yandex.net [IPv6:2a02:6b8:c12:4e0f:0:640:d4ed:a2ca]) by forward501o.mail.yandex.net (Yandex) with ESMTP id B2C2045C510A; Thu, 12 May 2022 01:31:03 +0300 (MSK) Received: from myt5-01d0fbe499ab.qloud-c.yandex.net (myt5-01d0fbe499ab.qloud-c.yandex.net [2a02:6b8:c12:4619:0:640:1d0:fbe4]) by myt6-d4eda2ca0046.qloud-c.yandex.net (mxback/Yandex) with ESMTP id Tc2fOf1UeS-V3gehric; Thu, 12 May 2022 01:31:03 +0300 X-Yandex-Fwd: 2 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1652308263; bh=S+jKkms24BDJ0C6pZLMu+rY9sBmMH+N8rlu2Kh/zG0Q=; h=In-Reply-To:From:Subject:Cc:References:Date:Message-ID:To; b=dR2YKbk/alOQyVGdPxAtsQtt4n+25zQMKFh4e/SFLbQ6bKg01BpkXqQTRINs79HGw QPyD1SteJdRp08hbxF0ASFpwT4nAaQjEVbRCoyMmC9XYi+lmP72yteU64XotLRRbPD yQ4bMYbJyjxvynwjAIsGlN3MyMA4a32iPI6U2juQ= Authentication-Results: myt6-d4eda2ca0046.qloud-c.yandex.net; dkim=pass header.i=@yandex.ru Received: by myt5-01d0fbe499ab.qloud-c.yandex.net (smtp/Yandex) with ESMTPSA id 9WTewboAWP-V2Mehcj1; Thu, 12 May 2022 01:31:02 +0300 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client certificate not present) Message-ID: <5c795503-71ec-8af0-4950-3711f7f3b7a4@yandex.ru> Date: Wed, 11 May 2022 23:31:01 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.8.0 Subject: Re: [PATCH v1 4/5] net/i40e: add direct rearm mode internal API Content-Language: en-US To: Feifei Wang , Beilei Xing Cc: dev@dpdk.org, nd@arm.com, Honnappa Nagarahalli , Ruifeng Wang References: <20220420081650.2043183-1-feifei.wang2@arm.com> <20220420081650.2043183-5-feifei.wang2@arm.com> From: Konstantin Ananyev In-Reply-To: <20220420081650.2043183-5-feifei.wang2@arm.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit 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 20/04/2022 09:16, Feifei Wang пишет: > For direct rearm mode, add two internal functions. > > One is to enable direct rearm mode in Rx queue. > > The other is to map Tx queue with Rx queue to make Rx queue take > buffers from the specific Tx queue. > > Suggested-by: Honnappa Nagarahalli > Signed-off-by: Feifei Wang > Reviewed-by: Ruifeng Wang > Reviewed-by: Honnappa Nagarahalli > --- > drivers/net/i40e/i40e_ethdev.c | 34 ++++++++++++++++++++++++++++++++++ > 1 file changed, 34 insertions(+) > > diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c > index 755786dc10..9e1a523bcc 100644 > --- a/drivers/net/i40e/i40e_ethdev.c > +++ b/drivers/net/i40e/i40e_ethdev.c > @@ -369,6 +369,13 @@ static int i40e_dev_rx_queue_intr_enable(struct rte_eth_dev *dev, > static int i40e_dev_rx_queue_intr_disable(struct rte_eth_dev *dev, > uint16_t queue_id); > > +static int i40e_dev_rx_queue_direct_rearm_enable(struct rte_eth_dev *dev, > + uint16_t queue_id); > +static int i40e_dev_rx_queue_direct_rearm_map(struct rte_eth_dev *dev, > + uint16_t rx_queue_id, > + uint16_t tx_port_id, > + uint16_t tx_queue_id); > + > static int i40e_get_regs(struct rte_eth_dev *dev, > struct rte_dev_reg_info *regs); > > @@ -477,6 +484,8 @@ static const struct eth_dev_ops i40e_eth_dev_ops = { > .rx_queue_setup = i40e_dev_rx_queue_setup, > .rx_queue_intr_enable = i40e_dev_rx_queue_intr_enable, > .rx_queue_intr_disable = i40e_dev_rx_queue_intr_disable, > + .rx_queue_direct_rearm_enable = i40e_dev_rx_queue_direct_rearm_enable, > + .rx_queue_direct_rearm_map = i40e_dev_rx_queue_direct_rearm_map, > .rx_queue_release = i40e_dev_rx_queue_release, > .tx_queue_setup = i40e_dev_tx_queue_setup, > .tx_queue_release = i40e_dev_tx_queue_release, > @@ -11108,6 +11117,31 @@ i40e_dev_rx_queue_intr_disable(struct rte_eth_dev *dev, uint16_t queue_id) > return 0; > } > > +static int i40e_dev_rx_queue_direct_rearm_enable(struct rte_eth_dev *dev, > + uint16_t queue_id) > +{ > + struct i40e_rx_queue *rxq; > + > + rxq = dev->data->rx_queues[queue_id]; > + rxq->direct_rxrearm_enable = 1; > + > + return 0; > +} > + > +static int i40e_dev_rx_queue_direct_rearm_map(struct rte_eth_dev *dev, > + uint16_t rx_queue_id, uint16_t tx_port_id, > + uint16_t tx_queue_id) > +{ > + struct i40e_rx_queue *rxq; > + > + rxq = dev->data->rx_queues[rx_queue_id]; > + > + rxq->direct_rxrearm_port = tx_port_id; > + rxq->direct_rxrearm_queue = tx_queue_id; I don't think this function should not enable that mode blindly. Instead, it needs to check first that all pre-conditions are met (tx/rx threshold values are equal, etc.). > + > + return 0; > +} > + > /** > * This function is used to check if the register is valid. > * Below is the valid registers list for X722 only: