From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from dpdk.org (dpdk.org [92.243.14.124])
	by inbox.dpdk.org (Postfix) with ESMTP id 27337A32A4
	for <public@inbox.dpdk.org>; Fri, 25 Oct 2019 16:34:28 +0200 (CEST)
Received: from [92.243.14.124] (localhost [127.0.0.1])
	by dpdk.org (Postfix) with ESMTP id B52DC1C2A2;
	Fri, 25 Oct 2019 16:34:11 +0200 (CEST)
Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com
 [67.231.156.173]) by dpdk.org (Postfix) with ESMTP id 21CFA1C230
 for <dev@dpdk.org>; Fri, 25 Oct 2019 16:33:53 +0200 (CEST)
Received: from pps.filterd (m0045851.ppops.net [127.0.0.1])
 by mx0b-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id
 x9PEOthc021948; Fri, 25 Oct 2019 07:33:53 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com;
 h=from : to : cc :
 subject : date : message-id : in-reply-to : references : mime-version :
 content-transfer-encoding : content-type; s=pfpt0818;
 bh=gOgqnzhB9py1xwKG4lA01Bv/BRdeGctKMm71eU5VLjo=;
 b=UbwOD6u/NiwuWWWZIjf3+RaG1aHeWcP3rqp+EajZG8wZYQRKsC9/fDk+Y45SipHluDwE
 TgLpw20IMwTi1S5oaQRtz3SnBQ8VsVbkSygWp+WXg8gFD1EekrzNcYN0fJt0+NpFtYwk
 3IkIzagohtgSDEgYfBI9rUXIY2Q85A7mPNFOqWjsBLBAOGlhCmv410K31lN7nC15/4JG
 JcyWv87fF5OvXEycZHaP92L9ucPfqbEPHvPmrxFFR3fxwYzwIqtYARvj8lApU1LFB0Iq
 HXFrvQW6huGVqnHPhcFWXWgbWg/UwYoPDPE9VBKeujnqzBy/6mpbuvB/P4dPQ/ol2k7N uQ== 
Received: from sc-exch01.marvell.com ([199.233.58.181])
 by mx0b-0016f401.pphosted.com with ESMTP id 2vt9ujv6vx-1
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT);
 Fri, 25 Oct 2019 07:33:53 -0700
Received: from SC-EXCH01.marvell.com (10.93.176.81) by SC-EXCH01.marvell.com
 (10.93.176.81) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Fri, 25 Oct
 2019 07:33:51 -0700
Received: from maili.marvell.com (10.93.176.43) by SC-EXCH01.marvell.com
 (10.93.176.81) with Microsoft SMTP Server id 15.0.1367.3 via Frontend
 Transport; Fri, 25 Oct 2019 07:33:51 -0700
Received: from BG-LT7430.marvell.com (unknown [10.28.17.85])
 by maili.marvell.com (Postfix) with ESMTP id E38413F7041;
 Fri, 25 Oct 2019 07:33:47 -0700 (PDT)
From: <pbhagavatula@marvell.com>
To: <ferruh.yigit@intel.com>, <arybchenko@solarflare.com>,
 <jerinj@marvell.com>, Wenzhuo Lu <wenzhuo.lu@intel.com>, Jingjing Wu
 <jingjing.wu@intel.com>, Bernard Iremonger <bernard.iremonger@intel.com>,
 John McNamara <john.mcnamara@intel.com>, Marko Kovacevic
 <marko.kovacevic@intel.com>
CC: <dev@dpdk.org>, Pavan Nikhilesh <pbhagavatula@marvell.com>
Date: Fri, 25 Oct 2019 20:03:13 +0530
Message-ID: <20191025143314.11162-7-pbhagavatula@marvell.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20191025143314.11162-1-pbhagavatula@marvell.com>
References: <20191017120245.984-1-pbhagavatula@marvell.com>
 <20191025143314.11162-1-pbhagavatula@marvell.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,1.0.8
 definitions=2019-10-25_08:2019-10-25,2019-10-25 signatures=0
Subject: [dpdk-dev] [PATCH v13 6/6] app/testpmd: add command to set
	supported ptype mask
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
Errors-To: dev-bounces@dpdk.org
Sender: "dev" <dev-bounces@dpdk.org>

From: Pavan Nikhilesh <pbhagavatula@marvell.com>

Add command to set supported ptype mask.
Usage:
	set port <port_id> ptype_mask <ptype_mask>

Disable ptype parsing by default.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
---
 app/test-pmd/cmdline.c                      | 80 +++++++++++++++++++++
 app/test-pmd/testpmd.c                      |  6 ++
 doc/guides/testpmd_app_ug/testpmd_funcs.rst |  7 ++
 3 files changed, 93 insertions(+)

diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 447806991..9f0356b50 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -18915,6 +18915,85 @@ cmdline_parse_inst_t cmd_show_port_supported_ptypes = {
 	},
 };
 
+/* Common result structure for set port ptypes */
+struct cmd_set_port_supported_ptypes_result {
+	cmdline_fixed_string_t set;
+	cmdline_fixed_string_t port;
+	portid_t port_id;
+	cmdline_fixed_string_t ptype_mask;
+	uint32_t mask;
+};
+
+/* Common CLI fields for set port ptypes */
+cmdline_parse_token_string_t cmd_set_port_supported_ptypes_set =
+	TOKEN_STRING_INITIALIZER
+		(struct cmd_set_port_supported_ptypes_result,
+		 set, "set");
+cmdline_parse_token_string_t cmd_set_port_supported_ptypes_port =
+	TOKEN_STRING_INITIALIZER
+		(struct cmd_set_port_supported_ptypes_result,
+		 port, "port");
+cmdline_parse_token_num_t cmd_set_port_supported_ptypes_port_id =
+	TOKEN_NUM_INITIALIZER
+		(struct cmd_set_port_supported_ptypes_result,
+		 port_id, UINT16);
+cmdline_parse_token_string_t cmd_set_port_supported_ptypes_mask_str =
+	TOKEN_STRING_INITIALIZER
+		(struct cmd_set_port_supported_ptypes_result,
+		 ptype_mask, "ptype_mask");
+cmdline_parse_token_num_t cmd_set_port_supported_ptypes_mask_u32 =
+	TOKEN_NUM_INITIALIZER
+		(struct cmd_set_port_supported_ptypes_result,
+		 mask, UINT32);
+
+static void
+cmd_set_port_supported_ptypes_parsed(
+	void *parsed_result,
+	__attribute__((unused)) struct cmdline *cl,
+	__attribute__((unused)) void *data)
+{
+	struct cmd_set_port_supported_ptypes_result *res = parsed_result;
+#define PTYPE_NAMESIZE        256
+	char ptype_name[PTYPE_NAMESIZE];
+	uint16_t port_id = res->port_id;
+	uint32_t ptype_mask = res->mask;
+	int ret, i;
+
+	ret = rte_eth_dev_get_supported_ptypes(port_id, ptype_mask, NULL, 0);
+	if (ret <= 0) {
+		printf("Port %d doesn't support any ptypes.\n", port_id);
+		return;
+	}
+
+	uint32_t ptypes[ret];
+	ret = rte_eth_dev_set_supported_ptypes(port_id, ptype_mask, ptypes,
+					       ret);
+	if (ret <= 0) {
+		printf("Unable to set requested ptypes for Port %d\n", port_id);
+		return;
+	}
+
+	printf("Successfully set following ptypes for Port %d\n", port_id);
+	for (i = 0; i < ret && ptypes[i] != RTE_PTYPE_UNKNOWN; i++) {
+		rte_get_ptype_name(ptypes[i], ptype_name, sizeof(ptype_name));
+		printf("%s\n", ptype_name);
+	}
+}
+
+cmdline_parse_inst_t cmd_set_port_supported_ptypes = {
+	.f = cmd_set_port_supported_ptypes_parsed,
+	.data = NULL,
+	.help_str = "set port <port_id> ptype_mask <mask>",
+	.tokens = {
+		(void *)&cmd_set_port_supported_ptypes_set,
+		(void *)&cmd_set_port_supported_ptypes_port,
+		(void *)&cmd_set_port_supported_ptypes_port_id,
+		(void *)&cmd_set_port_supported_ptypes_mask_str,
+		(void *)&cmd_set_port_supported_ptypes_mask_u32,
+		NULL,
+	},
+};
+
 /* ******************************************************************************** */
 
 /* list of instructions */
@@ -19154,6 +19233,7 @@ cmdline_parse_ctx_t main_ctx[] = {
 	(cmdline_parse_inst_t *)&cmd_show_vf_stats,
 	(cmdline_parse_inst_t *)&cmd_clear_vf_stats,
 	(cmdline_parse_inst_t *)&cmd_show_port_supported_ptypes,
+	(cmdline_parse_inst_t *)&cmd_set_port_supported_ptypes,
 	(cmdline_parse_inst_t *)&cmd_ptype_mapping_get,
 	(cmdline_parse_inst_t *)&cmd_ptype_mapping_replace,
 	(cmdline_parse_inst_t *)&cmd_ptype_mapping_reset,
diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
index 5701f3141..318a668e6 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -2064,6 +2064,7 @@ start_port(portid_t pid)
 	queueid_t qi;
 	struct rte_port *port;
 	struct rte_ether_addr mac_addr;
+	static uint8_t clr_ptypes = 1;
 
 	if (port_id_is_invalid(pid, ENABLED_WARN))
 		return 0;
@@ -2193,6 +2194,11 @@ start_port(portid_t pid)
 			}
 		}
 		configure_rxtx_dump_callbacks(verbose_level);
+		if (clr_ptypes) {
+			clr_ptypes = 0;
+			rte_eth_dev_set_supported_ptypes(pi, RTE_PTYPE_UNKNOWN,
+					NULL, 0);
+		}
 		/* start port */
 		if (rte_eth_dev_start(pi) < 0) {
 			printf("Fail to start port %d\n", pi);
diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
index c68a742eb..9c4dc92aa 100644
--- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst
+++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
@@ -472,6 +472,13 @@ Show ptypes supported for a specific port::
 
    testpmd> show port (port_id) ptypes
 
+set port supported ptypes
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Inform packet types classification interested in for a specific port::
+
+   testpmd> set port (port_id) ptypes_mask (mask)
+
 show device info
 ~~~~~~~~~~~~~~~~
 
-- 
2.17.1