From patchwork Sat Sep 2 09:37:08 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: zhoumin X-Patchwork-Id: 131098 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id A5F00422DC; Sat, 2 Sep 2023 11:38:20 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id DA485402A8; Sat, 2 Sep 2023 11:38:19 +0200 (CEST) Received: from mail.loongson.cn (mail.loongson.cn [114.242.206.163]) by mails.dpdk.org (Postfix) with ESMTP id EA8FA402A1; Sat, 2 Sep 2023 11:38:16 +0200 (CEST) Received: from loongson.cn (unknown [10.2.5.185]) by gateway (Coremail) with SMTP id _____8CxNvGFAvNkWwEeAA--.60977S3; Sat, 02 Sep 2023 17:38:14 +0800 (CST) Received: from localhost.localdomain (unknown [10.2.5.185]) by localhost.localdomain (Coremail) with SMTP id AQAAf8AxX89_AvNk9ZJpAA--.58133S2; Sat, 02 Sep 2023 17:38:13 +0800 (CST) From: Min Zhou 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, zhoumin@loongson.cn Cc: dev@dpdk.org, stable@dpdk.org, maobibo@loongson.cn Subject: [PATCH 1/1] drivers/net: fix checking for Tx simple Date: Sat, 2 Sep 2023 17:37:08 +0800 Message-Id: <20230902093708.2474711-1-zhoumin@loongson.cn> X-Mailer: git-send-email 2.39.1 MIME-Version: 1.0 X-CM-TRANSID: AQAAf8AxX89_AvNk9ZJpAA--.58133S2 X-CM-SenderInfo: 52kr3ztlq6z05rqj20fqof0/1tbiAQACAWTytjUABwA5sp X-Coremail-Antispam: 1Uk129KBjDUn29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7KY7 ZEXasCq-sGcSsGvfJ3UbIjqfuFe4nvWSU5nxnvy29KBjDU0xBIdaVrnUUvcSsGvfC2Kfnx nUUI43ZEXa7xR_UUUUUUUUU== 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 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)