All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dekel Peled <dekelp@mellanox.com>
To: wenzhuo.lu@intel.com, jingjing.wu@intel.com,
	bernard.iremonger@intel.com, dev@dpdk.org,
	olivier.matz@6wind.com, adrien.mazarguil@6wind.com,
	thomas@monjalon.net, ferruh.yigit@intel.com,
	arybchenko@solarflare.com
Cc: shahafs@mellanox.com, orika@mellanox.com
Subject: [PATCH 3/3] app/testpmd: add debug command tx_metadata set <port-id> <value>
Date: Sun, 16 Sep 2018 16:33:55 +0300	[thread overview]
Message-ID: <1537104835-9034-3-git-send-email-dekelp@mellanox.com> (raw)
In-Reply-To: <1537104835-9034-1-git-send-email-dekelp@mellanox.com>

As described in [1],[2] this series adds option to set metadata value as
match pattern when creating a new flow rule.

This patch introduces code for debug porpuse only.
The new debug command takes a 32 bit value and stores it per port.
testpmd will add to any Tx packet sent from this port the metadata
value, and set ol_flags accordingly.

[1] "ethdev: support metadata as flow rule criteria"
[2] "app/testpmd: support metadata as flow rule criteria"

Signed-off-by: Dekel Peled <dekelp@mellanox.com>
---
 app/test-pmd/cmdline.c                      | 46 +++++++++++++++++++++++++++++
 app/test-pmd/config.c                       |  6 ++++
 app/test-pmd/testpmd.c                      |  1 +
 app/test-pmd/testpmd.h                      |  3 ++
 app/test-pmd/txonly.c                       | 10 +++++++
 doc/guides/testpmd_app_ug/testpmd_funcs.rst |  7 +++++
 6 files changed, 73 insertions(+)

diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 4559d59..83ed2b2 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -17604,6 +17604,51 @@ struct cmd_config_per_queue_tx_offload_result {
 	}
 };
 
+/* *** ENABLE METADATA INSERTION IN TX PACKETS SENT TO PMD *** */
+struct cmd_tx_metadata_set_result {
+	cmdline_fixed_string_t tx_metadata;
+	cmdline_fixed_string_t set;
+	portid_t port_id;
+	uint32_t metadata;
+};
+
+static void
+cmd_tx_metadata_set_parsed(void *parsed_result,
+		       __attribute__((unused)) struct cmdline *cl,
+		       __attribute__((unused)) void *data)
+{
+	struct cmd_tx_metadata_set_result *res = parsed_result;
+
+	tx_metadata_set(res->port_id, res->metadata);
+}
+
+cmdline_parse_token_string_t cmd_tx_metadata_set_tx_metadata =
+	TOKEN_STRING_INITIALIZER(struct cmd_tx_metadata_set_result,
+				tx_metadata, "tx_metadata");
+cmdline_parse_token_string_t cmd_tx_metadata_set_set =
+	TOKEN_STRING_INITIALIZER(struct cmd_tx_metadata_set_result,
+				 set, "set");
+cmdline_parse_token_num_t cmd_tx_metadata_set_portid =
+	TOKEN_NUM_INITIALIZER(struct cmd_tx_metadata_set_result,
+			      port_id, UINT16);
+cmdline_parse_token_num_t cmd_tx_metadata_set_metadata =
+	TOKEN_NUM_INITIALIZER(struct cmd_tx_metadata_set_result,
+			      metadata, UINT32);
+
+cmdline_parse_inst_t cmd_tx_metadata_set = {
+	.f = cmd_tx_metadata_set_parsed,
+	.data = NULL,
+	.help_str = "tx_metadata set <port_id> <metadata>: "
+		    "Enable metadata insertion in packets sent to PMD",
+	.tokens = {
+		(void *)&cmd_tx_metadata_set_tx_metadata,
+		(void *)&cmd_tx_metadata_set_set,
+		(void *)&cmd_tx_metadata_set_portid,
+		(void *)&cmd_tx_metadata_set_metadata,
+		NULL,
+	},
+};
+
 /* ******************************************************************************** */
 
 /* list of instructions */
@@ -17869,6 +17914,7 @@ struct cmd_config_per_queue_tx_offload_result {
 	(cmdline_parse_inst_t *)&cmd_operate_bpf_ld_parse,
 	(cmdline_parse_inst_t *)&cmd_operate_bpf_unld_parse,
 #endif
+	(cmdline_parse_inst_t *)&cmd_tx_metadata_set,
 	NULL,
 };
 
diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
index 70b2cce..b87c691 100644
--- a/app/test-pmd/config.c
+++ b/app/test-pmd/config.c
@@ -3828,3 +3828,9 @@ struct igb_ring_desc_16_bytes {
 
 	printf("\n\n");
 }
+
+void
+tx_metadata_set(portid_t port_id, uint32_t metadata)
+{
+	ports[port_id].metadata = metadata;
+}
diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
index 969eb7c..cd6823d 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -776,6 +776,7 @@ static void eth_dev_event_callback(char *device_name,
 		/* set flag to initialize port/queue */
 		port->need_reconfig = 1;
 		port->need_reconfig_queues = 1;
+		port->metadata = 0;
 	}
 
 	/*
diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h
index a1f6614..10b0cd3 100644
--- a/app/test-pmd/testpmd.h
+++ b/app/test-pmd/testpmd.h
@@ -183,6 +183,7 @@ struct rte_port {
 #ifdef SOFTNIC
 	struct softnic_port     softport;  /**< softnic params */
 #endif
+	uint32_t                metadata; /**< metadata value to add in tx packets (debug only) */
 };
 
 /**
@@ -743,6 +744,8 @@ enum print_warning {
 queueid_t get_allowed_max_nb_txq(portid_t *pid);
 int check_nb_txq(queueid_t txq);
 
+void tx_metadata_set(portid_t port_id, uint32_t metadata);
+
 /*
  * Work-around of a compilation error with ICC on invocations of the
  * rte_be_to_cpu_16() function.
diff --git a/app/test-pmd/txonly.c b/app/test-pmd/txonly.c
index 1f08b6e..5d55d52 100644
--- a/app/test-pmd/txonly.c
+++ b/app/test-pmd/txonly.c
@@ -253,6 +253,16 @@
 		pkt->l2_len = sizeof(struct ether_hdr);
 		pkt->l3_len = sizeof(struct ipv4_hdr);
 		pkts_burst[nb_pkt] = pkt;
+
+		/*
+		 * If user configured metadata value add it to packet
+		 * and set ol_flags accordingly
+		 */
+		if (ports[fs->tx_port].metadata)
+		{
+			pkt->hash.fdir.hi = ports[fs->tx_port].metadata;
+			pkt->ol_flags |= PKT_TX_METADATA;
+		}
 	}
 	nb_tx = rte_eth_tx_burst(fs->tx_port, fs->tx_queue, pkts_burst, nb_pkt);
 	/*
diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
index 28da560..cfedf2d 100644
--- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst
+++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
@@ -851,6 +851,13 @@ Disable hardware insertion of a VLAN header in packets sent on a port::
 
    testpmd> tx_vlan reset (port_id)
 
+tx_metadata set
+~~~~~~~~~~~~~~~
+
+Set metadata value to insert in packets sent to PMD::
+
+   testpmd> tx_metadata set (port_id) (value)
+
 csum set
 ~~~~~~~~
 
-- 
1.8.3.1

  parent reply	other threads:[~2018-09-16 13:35 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-16 13:33 [PATCH 1/3] ethdev: support metadata as flow rule criteria Dekel Peled
2018-09-16 13:33 ` [PATCH 2/3] app/testpmd: " Dekel Peled
2018-09-16 13:33 ` Dekel Peled [this message]
2018-09-16 14:37 ` [PATCH v2 0/3] *** SUBJECT HERE *** Dekel Peled
2018-09-27 13:57   ` [PATCH v3 0/3] support meadata as flow rule criteria Dekel Peled
2018-10-03 20:46     ` Thomas Monjalon
2018-10-11 10:49     ` [PATCH v4 " Dekel Peled
2018-10-16  8:42       ` Shahaf Shuler
2018-10-17 12:03       ` [PATCH v5 0/3] support metadata " Dekel Peled
2018-10-21 14:22         ` [PATCH v6 0/2] " Dekel Peled
2018-10-22 16:14           ` Ferruh Yigit
2018-10-21 14:22         ` [PATCH v6 1/2] ethdev: " Dekel Peled
2018-10-21 14:22         ` [PATCH v6 2/2] app/testpmd: support metadata as flow rule item Dekel Peled
2018-10-22 16:13           ` Ferruh Yigit
2018-10-17 12:03       ` [PATCH v5 1/3] ethdev: support metadata as flow rule criteria Dekel Peled
2018-10-17 14:04         ` Andrew Rybchenko
2018-10-17 12:03       ` [PATCH v5 2/3] app/testpmd: support metadata as flow rule item Dekel Peled
2018-10-18 12:26         ` Ori Kam
2018-10-21 13:49           ` Dekel Peled
2018-10-17 12:03       ` [PATCH v5 3/3] app/testpmd: add Tx metadata debug commands Dekel Peled
2018-10-18  7:56         ` Ferruh Yigit
2018-10-18  8:30           ` Dekel Peled
2018-10-11 10:49     ` [PATCH v4 1/3] ethdev: support metadata as flow rule criteria Dekel Peled
2018-10-16 14:11       ` Andrew Rybchenko
2018-10-17  5:27         ` Dekel Peled
2018-10-17  6:02           ` Andrew Rybchenko
2018-10-17  7:52             ` Dekel Peled
2018-10-11 10:49     ` [PATCH v4 2/3] app/testpmd: " Dekel Peled
2018-10-11 10:49     ` [PATCH v4 3/3] app/testpmd: add Tx metadata debug commands Dekel Peled
2018-09-27 13:57   ` [PATCH v3 1/3] ethdev: support metadata as flow rule criteria Dekel Peled
2018-10-05 13:31     ` Ferruh Yigit
2018-10-05 13:39       ` Andrew Rybchenko
2018-10-05 18:20         ` Yongseok Koh
2018-10-08 15:10         ` Dekel Peled
2018-10-09 14:46         ` Ferruh Yigit
2018-10-09 14:52           ` Andrew Rybchenko
2018-09-27 13:57   ` [PATCH v3 2/3] app/testpmd: " Dekel Peled
2018-09-27 13:57   ` [PATCH v3 3/3] app/testpmd: add debug command Tx metadata set Dekel Peled
2018-10-05 13:27     ` Ferruh Yigit
2018-09-16 14:37 ` [PATCH v2 1/3] ethdev: support metadata as flow rule criteria Dekel Peled
2018-09-18  7:55   ` Xueming(Steven) Li
2018-09-16 14:37 ` [PATCH v2 2/3] app/testpmd: " Dekel Peled
2018-09-18  8:21   ` Xueming(Steven) Li
2018-09-25 11:32     ` Dekel Peled
2018-09-16 14:37 ` [PATCH v2 3/3] app/testpmd: add debug command Tx metadata set Dekel Peled
2018-09-19  5:39   ` Xueming(Steven) Li
2018-10-05 13:19   ` Ferruh Yigit
2018-10-09 14:30     ` Dekel Peled

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=1537104835-9034-3-git-send-email-dekelp@mellanox.com \
    --to=dekelp@mellanox.com \
    --cc=adrien.mazarguil@6wind.com \
    --cc=arybchenko@solarflare.com \
    --cc=bernard.iremonger@intel.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@intel.com \
    --cc=jingjing.wu@intel.com \
    --cc=olivier.matz@6wind.com \
    --cc=orika@mellanox.com \
    --cc=shahafs@mellanox.com \
    --cc=thomas@monjalon.net \
    --cc=wenzhuo.lu@intel.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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.