DPDK patches and discussions
 help / color / mirror / Atom feed
From: "Wei Hu (Xavier)" <huwei013@chinasoftinc.com>
To: <dev@dpdk.org>
Cc: <xavier.huwei@huawei.com>
Subject: [dpdk-dev] [PATCH v4 3/6] app/testpmd: remove restriction on txpkts set
Date: Fri, 25 Sep 2020 20:47:16 +0800
Message-ID: <20200925124719.26001-4-huwei013@chinasoftinc.com> (raw)
In-Reply-To: <20200925124719.26001-1-huwei013@chinasoftinc.com>

From: Chengchang Tang <tangchengchang@huawei.com>

Currently, if nb_txd is not set, the txpkts is not allowed to be set
because the nb_txd is used to avoid the numer 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")
Cc: stable@dpdk.org

Signed-off-by: Chengchang Tang <tangchengchang@huawei.com>
Signed-off-by: Wei Hu (Xavier) <xavier.huwei@huawei.com>
---
v3 -> v4:
	 add check 'rte_eth_rx_queue_info_get()' return value and
	 if it is '-ENOSTUP' calculate the 'ring_size'.
v3:      initial version.
---
 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 6496d2f..8ebb927 100644
--- a/app/test-pmd/config.c
+++ b/app/test-pmd/config.c
@@ -1893,6 +1893,38 @@ tx_queue_id_is_invalid(queueid_t txq_id)
 }
 
 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)
 {
 	if (rxdesc_id < nb_rxd)
@@ -2986,17 +3018,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.9.5


  parent reply	other threads:[~2020-09-25 12:48 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-18 12:02 [dpdk-dev] [PATCH 0/4] minor fixes for testpmd Wei Hu (Xavier)
2020-08-18 12:02 ` [dpdk-dev] [PATCH 1/4] app/testpmd: fix missing verification of port id Wei Hu (Xavier)
2020-08-18 12:02 ` [dpdk-dev] [PATCH 2/4] app/testpmd: fix VLAN offload configuration when config fail Wei Hu (Xavier)
2020-08-18 12:02 ` [dpdk-dev] [PATCH 3/4] app/testpmd: fix packet header in txonly mode Wei Hu (Xavier)
2020-08-18 12:02 ` [dpdk-dev] [PATCH 4/4] app/testpmd: fix displaying Rx Tx queues information Wei Hu (Xavier)
2020-08-20  1:42 ` [dpdk-dev] [PATCH v2 0/4] minor fixes for testpmd Wei Hu (Xavier)
2020-08-20  1:42   ` [dpdk-dev] [PATCH v2 1/4] app/testpmd: fix missing verification of port id Wei Hu (Xavier)
2020-09-14 16:13     ` Ferruh Yigit
2020-08-20  1:42   ` [dpdk-dev] [PATCH v2 2/4] app/testpmd: fix VLAN offload configuration when config fail Wei Hu (Xavier)
2020-09-14 16:13     ` Ferruh Yigit
2020-08-20  1:42   ` [dpdk-dev] [PATCH v2 3/4] app/testpmd: fix packet header in txonly mode Wei Hu (Xavier)
2020-09-14 16:23     ` Ferruh Yigit
2020-09-17  7:10       ` Chengchang Tang
2020-09-17 11:16         ` Ferruh Yigit
2020-09-17 11:48           ` Chengchang Tang
2020-08-20  1:42   ` [dpdk-dev] [PATCH v2 4/4] app/testpmd: fix displaying Rx Tx queues information Wei Hu (Xavier)
2020-09-14 16:31     ` Ferruh Yigit
2020-09-16  9:23       ` Wei Hu (Xavier)
2020-09-16 15:58         ` Ferruh Yigit
2020-09-03  3:19   ` [dpdk-dev] [PATCH v2 0/4] minor fixes for testpmd Wei Hu (Xavier)
2020-09-19 10:47 ` [dpdk-dev] [PATCH v3 0/6] " Wei Hu (Xavier)
2020-09-19 10:47   ` [dpdk-dev] [PATCH v3 1/6] app/testpmd: fix missing verification of port id Wei Hu (Xavier)
2020-09-22 14:49     ` Ferruh Yigit
2020-09-19 10:47   ` [dpdk-dev] [PATCH v3 2/6] app/testpmd: fix VLAN offload configuration when config fail Wei Hu (Xavier)
2020-09-19 10:47   ` [dpdk-dev] [PATCH v3 3/6] app/testpmd: remove restriction on txpkts set Wei Hu (Xavier)
2020-09-22 14:51     ` Ferruh Yigit
2020-09-23  3:14       ` Wei Hu (Xavier)
2020-09-23 11:57         ` Wei Hu (Xavier)
2020-09-23 16:59           ` Ferruh Yigit
2020-09-24  6:08             ` Chengchang Tang
2020-09-24 12:19               ` Ferruh Yigit
2020-09-19 10:47   ` [dpdk-dev] [PATCH v3 4/6] app/testpmd: fix packet header in txonly mode Wei Hu (Xavier)
2020-09-19 10:47   ` [dpdk-dev] [PATCH v3 5/6] app/testpmd: fix valid desc id check Wei Hu (Xavier)
2020-09-22 14:53     ` Ferruh Yigit
2020-09-19 10:47   ` [dpdk-dev] [PATCH v3 6/6] app/testpmd: fix displaying Rx Tx queues information Wei Hu (Xavier)
2020-09-25 12:47 ` [dpdk-dev] [PATCH v4 0/6] minor fixes for testpmd Wei Hu (Xavier)
2020-09-25 12:47   ` [dpdk-dev] [PATCH v4 1/6] app/testpmd: fix missing verification of port id Wei Hu (Xavier)
2020-09-25 12:47   ` [dpdk-dev] [PATCH v4 2/6] app/testpmd: fix VLAN offload configuration when config fail Wei Hu (Xavier)
2020-09-25 12:47   ` Wei Hu (Xavier) [this message]
2020-11-23 11:50     ` [dpdk-dev] [PATCH v4 3/6] app/testpmd: remove restriction on txpkts set Slava Ovsiienko
2020-11-24 10:27       ` Thomas Monjalon
2020-11-24 12:23         ` Ferruh Yigit
2020-11-24 13:01           ` Kevin Traynor
2020-11-25 14:06           ` Ferruh Yigit
2020-11-26  7:24             ` Slava Ovsiienko
2020-11-26 12:38               ` Ferruh Yigit
2020-11-27 13:05                 ` Slava Ovsiienko
2020-12-02 12:07                   ` Ferruh Yigit
2020-12-03  9:45                     ` Slava Ovsiienko
2020-12-03 10:18                       ` Ferruh Yigit
2020-12-11 15:07                         ` [dpdk-dev] [PATCH] app/testpmd: fix segment number check Viacheslav Ovsiienko
2020-12-11 16:00                           ` Andrew Boyer
2020-12-11 16:14                             ` Slava Ovsiienko
2020-12-16 12:12                               ` Ferruh Yigit
2020-12-16 12:33                                 ` Slava Ovsiienko
2020-12-16 12:36                           ` Ferruh Yigit
2021-04-23 16:09                           ` [dpdk-dev] [PATCH v2] " Ferruh Yigit
2021-04-26 11:23                             ` Li, Xiaoyun
2021-04-27 11:42                               ` Ferruh Yigit
2020-09-25 12:47   ` [dpdk-dev] [PATCH v4 4/6] app/testpmd: fix packet header in txonly mode Wei Hu (Xavier)
2020-09-29 15:40     ` Ferruh Yigit
2020-09-25 12:47   ` [dpdk-dev] [PATCH v4 5/6] app/testpmd: fix valid desc id check Wei Hu (Xavier)
2020-09-25 12:47   ` [dpdk-dev] [PATCH v4 6/6] app/testpmd: fix displaying Rx Tx queues information Wei Hu (Xavier)
2020-09-29 15:40   ` [dpdk-dev] [PATCH v4 0/6] minor fixes for testpmd Ferruh Yigit

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200925124719.26001-4-huwei013@chinasoftinc.com \
    --to=huwei013@chinasoftinc.com \
    --cc=dev@dpdk.org \
    --cc=xavier.huwei@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

DPDK patches and discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://inbox.dpdk.org/dev/0 dev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 dev dev/ https://inbox.dpdk.org/dev \
		dev@dpdk.org
	public-inbox-index dev

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.dev


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git