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 385C8424E5; Mon, 4 Sep 2023 03:59:13 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C1606402AE; Mon, 4 Sep 2023 03:59:12 +0200 (CEST) Received: from mail.loongson.cn (mail.loongson.cn [114.242.206.163]) by mails.dpdk.org (Postfix) with ESMTP id 8E68F402A9; Mon, 4 Sep 2023 03:59:10 +0200 (CEST) Received: from loongson.cn (unknown [10.20.42.144]) by gateway (Coremail) with SMTP id _____8Dx_+vsOfVkpbQeAA--.61209S3; Mon, 04 Sep 2023 09:59:08 +0800 (CST) Received: from [10.20.42.144] (unknown [10.20.42.144]) by localhost.localdomain (Coremail) with SMTP id AQAAf8DxJ83qOfVkN8VqAA--.59497S3; Mon, 04 Sep 2023 09:59:08 +0800 (CST) Subject: Re: [PATCH 1/1] drivers/net: fix checking for Tx simple To: liudongdong3@huawei.com, yisen.zhuang@huawei.com, Yuying.Zhang@intel.com, beilei.xing@intel.com, qiming.yang@intel.com, qi.z.zhang@intel.com, ferruh.yigit@intel.com, roretzla@linux.microsoft.com, chenbo.xia@intel.com, ajit.khaparde@broadcom.com, jerinj@marvell.com Cc: dev@dpdk.org, stable@dpdk.org, maobibo@loongson.cn References: <20230902093708.2474711-1-zhoumin@loongson.cn> From: zhoumin Message-ID: <93519a1d-4153-623e-220a-0fd36d4ec085@loongson.cn> Date: Mon, 4 Sep 2023 09:59:06 +0800 User-Agent: Mozilla/5.0 (X11; Linux loongarch64; rv:68.0) Gecko/20100101 Thunderbird/68.7.0 MIME-Version: 1.0 In-Reply-To: <20230902093708.2474711-1-zhoumin@loongson.cn> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-US X-CM-TRANSID: AQAAf8DxJ83qOfVkN8VqAA--.59497S3 X-CM-SenderInfo: 52kr3ztlq6z05rqj20fqof0/1tbiAQAEAWT0B7UB5AABsC X-Coremail-Antispam: 1Uk129KBj93XoWxXrW3Zryktw4DKF1xZrW3twc_yoW5ur4UpF Z0gFW8Ar48Jr4UXw15Za1kCFZxXw4DAryUKa4rt398ua4qyF17KF1DKa43ZF97Ar45ua1a vF1DAr1fua98uacCm3ZEXasCq-sJn29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7KY7ZEXa sCq-sGcSsGvfJ3Ic02F40EFcxC0VAKzVAqx4xG6I80ebIjqfuFe4nvWSU5nxnvy29KBjDU 0xBIdaVrnRJUUUvYb4IE77IF4wAFF20E14v26r1j6r4UM7CY07I20VC2zVCF04k26cxKx2 IYs7xG6rWj6s0DM7CIcVAFz4kK6r106r15M28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48v e4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_Gr0_Xr1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI 0_Gr0_Cr1l84ACjcxK6I8E87Iv67AKxVWxJVW8Jr1l84ACjcxK6I8E87Iv6xkF7I0E14v2 6r4j6r4UJwAS0I0E0xvYzxvE52x082IY62kv0487Mc804VCY07AIYIkI8VC2zVCFFI0UMc 02F40EFcxC0VAKzVAqx4xG6I80ewAv7VC0I7IYx2IY67AKxVWUJVWUGwAv7VC2z280aVAF wI0_Jr0_Gr1lOx8S6xCaFVCjc4AY6r1j6r4UM4x0Y48IcVAKI48JMxk0xIA0c2IEe2xFo4 CEbIxvr21l42xK82IYc2Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAqx4xG 67AKxVWUJVWUGwC20s026x8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r1q6r43MI IYrxkI7VAKI48JMIIF0xvE2Ix0cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2IY6xkF7I0E 14v26r1j6r4UMIIF0xvE42xK8VAvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv67AKxVWUJV W8JwCI42IY6I8E87Iv6xkF7I0E14v26r1j6r4UYxBIdaVFxhVjvjDU0xZFpf9x07j8yCJU UUUU= 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 I'm sorry, I think the checking logic is certainly right after I read more codes in other drivers. I just wanted to use the i40e_xmit_pkts() function to send packets via testpmd. I noticed that the tx_simple_allowed should be false if I want to use the function to send packets. So, I'm studying how to set the offload in testpmd cmdline to achieve it. On Sat, Sep 2, 2023 at 5:37PM, Min Zhou wrote: > We have such checking logic for Tx simple in some drivers, such as > i40e, ice and hns3: > /* Use a simple Tx queue if possible (only fast free is allowed) */ > ad->tx_simple_allowed = > (txq->offloads == > (txq->offloads & RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE) && > txq->tx_rs_thresh >= RTE_PMD_I40E_TX_MAX_BURST); > > What's confusing is that we will get the same result from above checking if > txq->offloads == 0 or txq->offloads == RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE. > Is this the right checking logic for Tx simple? Besides, I haven't seen the > similar usage to check the offload for RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE. > Fix it if the checking logic is wrong. > > Fixes: 295968d1740 ("ethdev: add namespace") > Cc: stable@dpdk.org > > Signed-off-by: Min Zhou > --- > drivers/net/hns3/hns3_rxtx.c | 2 +- > drivers/net/i40e/i40e_rxtx.c | 3 +-- > drivers/net/ice/ice_rxtx.c | 3 +-- > 3 files changed, 3 insertions(+), 5 deletions(-) > > diff --git a/drivers/net/hns3/hns3_rxtx.c b/drivers/net/hns3/hns3_rxtx.c > index f3c3b38c55..4c04187ce7 100644 > --- a/drivers/net/hns3/hns3_rxtx.c > +++ b/drivers/net/hns3/hns3_rxtx.c > @@ -4357,7 +4357,7 @@ hns3_tx_check_simple_support(struct rte_eth_dev *dev) > { > uint64_t offloads = dev->data->dev_conf.txmode.offloads; > > - return (offloads == (offloads & RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE)); > + return !!(offloads & RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE); > } > > static bool > diff --git a/drivers/net/i40e/i40e_rxtx.c b/drivers/net/i40e/i40e_rxtx.c > index d96bbbb677..c706c73880 100644 > --- a/drivers/net/i40e/i40e_rxtx.c > +++ b/drivers/net/i40e/i40e_rxtx.c > @@ -3421,8 +3421,7 @@ i40e_set_tx_function_flag(struct rte_eth_dev *dev, struct i40e_tx_queue *txq) > > /* Use a simple Tx queue if possible (only fast free is allowed) */ > ad->tx_simple_allowed = > - (txq->offloads == > - (txq->offloads & RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE) && > + ((txq->offloads & RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE) && > txq->tx_rs_thresh >= RTE_PMD_I40E_TX_MAX_BURST); > ad->tx_vec_allowed = (ad->tx_simple_allowed && > txq->tx_rs_thresh <= RTE_I40E_TX_MAX_FREE_BUF_SZ); > diff --git a/drivers/net/ice/ice_rxtx.c b/drivers/net/ice/ice_rxtx.c > index e07c6d1f15..3dbf6c592d 100644 > --- a/drivers/net/ice/ice_rxtx.c > +++ b/drivers/net/ice/ice_rxtx.c > @@ -3640,8 +3640,7 @@ ice_set_tx_function_flag(struct rte_eth_dev *dev, struct ice_tx_queue *txq) > > /* Use a simple Tx queue if possible (only fast free is allowed) */ > ad->tx_simple_allowed = > - (txq->offloads == > - (txq->offloads & RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE) && > + ((txq->offloads & RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE) && > txq->tx_rs_thresh >= ICE_TX_MAX_BURST); > > if (ad->tx_simple_allowed)