From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8C69BA04DD for ; Wed, 28 Oct 2020 11:50:50 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 850504C90; Wed, 28 Oct 2020 11:50:49 +0100 (CET) Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) by dpdk.org (Postfix) with ESMTP id A66164C90 for ; Wed, 28 Oct 2020 11:50:46 +0100 (CET) Received: by mail-wm1-f51.google.com with SMTP id a72so4082071wme.5 for ; Wed, 28 Oct 2020 03:50:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=4kKilLebUVdDyExTLzOBflhociZiF48lHTUgQMzOpxk=; b=ENr0lHkLZtQYCukh91kEM24/b+nrj0pZRsi37gOMQbnBRDVrJh6ZkofAT1K342QfCG ANV4zs9mUtYR1wm4kku3RSbryJGmNkMLjEJOygHpHZowbeoUp7Z/6DrwIlZm8PZpkGI6 6IwIAtbQYXnMF4NblUb4RZtpOQXZpGDLHEGem2qNtMkxPYNaZf6dDQfQ3xqdzC9cMZ57 J4EJLHgtjOPc2vEupbkRDEcUZ3Fda63Ptefm15vSX0TqlkuvWUMIGSLLRi/XdQbrYFPv L68fOUbk/SBYOCuHNiBAxYIQ4LRcmXOSVYKpdV/GfLm5wAMHEYNlxruDu9FnJFfOdZHf PYXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=4kKilLebUVdDyExTLzOBflhociZiF48lHTUgQMzOpxk=; b=aNamTDU6HaJpfsDmHMweJKzZJBi8Ug5biTF5XqR3It6waZES3W4u0nWxAGWZrWq2Cv c7eIRMWRkpFOsVMwM0GfEiEBpKWAPpdh8PHWILz+h06TQ8qKUH96loQ04mVp1/vvJVwR C6XZS8bsLSSHPDwEDLm8oy5+FXn2x8MMmVtvik/HqW9g+xMHqGInh1dZP03TIFAf+ClQ 4Q/geLUcjjVqZxw3D4a0cwAxntDiL68hgUqP+cRMIB6ETynAgHU9kso7KhGzetRAZMbZ Fo6AKolFwKKiyDrksv+mkJXB1ErWd3WC6X4JKU4Nar38cjcHqpMZHms+iIGDR9mN4m77 2f5w== X-Gm-Message-State: AOAM532vCE9Lx2YKxtvzGhzh+ijCrtowXHahOdhurW8vXVCe/2VxZ3xJ CW4VzcPYh+u6A6l1lHUFHalksMoBEzZ9MztS X-Google-Smtp-Source: ABdhPJy0lUNZUxLp4GnXzTLcOH2iXaGxI+pqOH7y21sKuPNgXkfvu/zNG6EH6vTo3IbfOzEnNEjJLw== X-Received: by 2002:a1c:4c04:: with SMTP id z4mr7275706wmf.2.1603882246420; Wed, 28 Oct 2020 03:50:46 -0700 (PDT) Received: from localhost ([88.98.246.218]) by smtp.gmail.com with ESMTPSA id l8sm6499528wrn.28.2020.10.28.03.50.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Oct 2020 03:50:45 -0700 (PDT) From: luca.boccassi@gmail.com To: Chengchang Tang Cc: Wei Hu , Ferruh Yigit , dpdk stable Date: Wed, 28 Oct 2020 10:44:06 +0000 Message-Id: <20201028104606.3504127-87-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20201028104606.3504127-1-luca.boccassi@gmail.com> References: <20201028104606.3504127-1-luca.boccassi@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-stable] patch 'app/testpmd: remove restriction on Tx segments set' has been queued to stable release 19.11.6 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" Hi, FYI, your patch has been queued to stable release 19.11.6 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 10/30/20. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Thanks. Luca Boccassi --- >From 592a24a376f091be4d49a92ac25e634154fc4db1 Mon Sep 17 00:00:00 2001 From: Chengchang Tang Date: Fri, 25 Sep 2020 20:47:16 +0800 Subject: [PATCH] app/testpmd: remove restriction on Tx segments set [ upstream commit 8dae835d88b745dee761771513095525adb9ed74 ] Currently, if nb_txd is not set, the txpkts is not allowed to be set because the nb_txd is used to avoid the number of segments exceed the Tx ring size and the default value of nb_txd is 0. And there is a bug that nb_txd is the global configuration for Tx ring size and the ring size could be changed by some command per queue. So these valid check is unreliable and introduced unnecessary constraints. This patch adds a valid check function to use the real Tx ring size to check the validity of txpkts. Fixes: af75078fece3 ("first public release") Signed-off-by: Chengchang Tang Signed-off-by: Wei Hu (Xavier) Reviewed-by: Ferruh Yigit --- app/test-pmd/config.c | 64 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 60 insertions(+), 4 deletions(-) diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index 139475bd6d..67bc18de91 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -1684,6 +1684,38 @@ tx_queue_id_is_invalid(queueid_t txq_id) return 1; } +static int +get_tx_ring_size(portid_t port_id, queueid_t txq_id, uint16_t *ring_size) +{ + struct rte_port *port = &ports[port_id]; + struct rte_eth_txq_info tx_qinfo; + int ret; + + ret = rte_eth_tx_queue_info_get(port_id, txq_id, &tx_qinfo); + if (ret == 0) { + *ring_size = tx_qinfo.nb_desc; + return ret; + } + + if (ret != -ENOTSUP) + return ret; + /* + * If the rte_eth_tx_queue_info_get is not support for this PMD, + * ring_size stored in testpmd will be used for validity verification. + * When configure the txq by rte_eth_tx_queue_setup with nb_tx_desc + * being 0, it will use a default value provided by PMDs to setup this + * txq. If the default value is 0, it will use the + * RTE_ETH_DEV_FALLBACK_TX_RINGSIZE to setup this txq. + */ + if (port->nb_tx_desc[txq_id]) + *ring_size = port->nb_tx_desc[txq_id]; + else if (port->dev_info.default_txportconf.ring_size) + *ring_size = port->dev_info.default_txportconf.ring_size; + else + *ring_size = RTE_ETH_DEV_FALLBACK_TX_RINGSIZE; + return 0; +} + static int rx_desc_id_is_invalid(uint16_t rxdesc_id) { @@ -2726,17 +2758,41 @@ show_tx_pkt_segments(void) printf("Split packet: %s\n", split); } +static bool +nb_segs_is_invalid(unsigned int nb_segs) +{ + uint16_t ring_size; + uint16_t queue_id; + uint16_t port_id; + int ret; + + RTE_ETH_FOREACH_DEV(port_id) { + for (queue_id = 0; queue_id < nb_txq; queue_id++) { + ret = get_tx_ring_size(port_id, queue_id, &ring_size); + + if (ret) + return true; + + if (ring_size < nb_segs) { + printf("nb segments per TX packets=%u >= " + "TX queue(%u) ring_size=%u - ignored\n", + nb_segs, queue_id, ring_size); + return true; + } + } + } + + return false; +} + void set_tx_pkt_segments(unsigned *seg_lengths, unsigned nb_segs) { uint16_t tx_pkt_len; unsigned i; - if (nb_segs >= (unsigned) nb_txd) { - printf("nb segments per TX packets=%u >= nb_txd=%u - ignored\n", - nb_segs, (unsigned int) nb_txd); + if (nb_segs_is_invalid(nb_segs)) return; - } /* * Check that each segment length is greater or equal than -- 2.20.1 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2020-10-28 10:35:14.485447177 +0000 +++ 0087-app-testpmd-remove-restriction-on-Tx-segments-set.patch 2020-10-28 10:35:11.628831849 +0000 @@ -1,8 +1,10 @@ -From 8dae835d88b745dee761771513095525adb9ed74 Mon Sep 17 00:00:00 2001 +From 592a24a376f091be4d49a92ac25e634154fc4db1 Mon Sep 17 00:00:00 2001 From: Chengchang Tang Date: Fri, 25 Sep 2020 20:47:16 +0800 Subject: [PATCH] app/testpmd: remove restriction on Tx segments set +[ upstream commit 8dae835d88b745dee761771513095525adb9ed74 ] + Currently, if nb_txd is not set, the txpkts is not allowed to be set because the nb_txd is used to avoid the number of segments exceed the Tx ring size and the default value of nb_txd is 0. And there is a bug that @@ -14,7 +16,6 @@ check the validity of txpkts. Fixes: af75078fece3 ("first public release") -Cc: stable@dpdk.org Signed-off-by: Chengchang Tang Signed-off-by: Wei Hu (Xavier) @@ -24,10 +25,10 @@ 1 file changed, 60 insertions(+), 4 deletions(-) diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c -index 0bec547f51..8f63b4ea40 100644 +index 139475bd6d..67bc18de91 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c -@@ -2009,6 +2009,38 @@ tx_queue_id_is_invalid(queueid_t txq_id) +@@ -1684,6 +1684,38 @@ tx_queue_id_is_invalid(queueid_t txq_id) return 1; } @@ -66,7 +67,7 @@ static int rx_desc_id_is_invalid(uint16_t rxdesc_id) { -@@ -3103,17 +3135,41 @@ show_tx_pkt_segments(void) +@@ -2726,17 +2758,41 @@ show_tx_pkt_segments(void) printf("Split packet: %s\n", split); }