From patchwork Sun Jun 4 13:35:02 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasily Philipov X-Patchwork-Id: 25046 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id CF8DD7D17; Sun, 4 Jun 2017 15:35:15 +0200 (CEST) Received: from mellanox.co.il (mail-il-dmz.mellanox.com [193.47.165.129]) by dpdk.org (Postfix) with ESMTP id AA90C7D26 for ; Sun, 4 Jun 2017 15:35:12 +0200 (CEST) Received: from Internal Mail-Server by MTLPINE1 (envelope-from vasilyf@mellanox.com) with ESMTPS (AES256-SHA encrypted); 4 Jun 2017 16:35:11 +0300 Received: from hpchead.mtr.labs.mlnx. (hpchead.mtr.labs.mlnx [10.209.44.59]) by labmailer.mlnx (8.13.8/8.13.8) with ESMTP id v54DZBwp031128; Sun, 4 Jun 2017 16:35:11 +0300 Received: from hpchead.mtr.labs.mlnx. (localhost.localdomain [127.0.0.1]) by hpchead.mtr.labs.mlnx. (8.14.7/8.14.7) with ESMTP id v54DZB7u017109; Sun, 4 Jun 2017 16:35:11 +0300 Received: (from vasilyf@localhost) by hpchead.mtr.labs.mlnx. (8.14.7/8.14.7/Submit) id v54DZBZ7017108; Sun, 4 Jun 2017 16:35:11 +0300 From: Vasily Philipov To: dev@dpdk.org Cc: Vasily Philipov , Adrien Mazarguil , Nelio Laranjeiro Date: Sun, 4 Jun 2017 16:35:02 +0300 Message-Id: <96c3dca8015a755afb37bf35ae85e6fa16282c0c.1496583000.git.vasilyf@mellanox.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <4b75c8257ec0ccce0b685a2257cf688364a64ed3.1496583000.git.vasilyf@mellanox.com> References: <4b75c8257ec0ccce0b685a2257cf688364a64ed3.1496583000.git.vasilyf@mellanox.com> In-Reply-To: <0dca86aa1372d6ff09d0aff01d522c580e0e24ab.1495717153.git.vasilyf@mellanox.com> References: <0dca86aa1372d6ff09d0aff01d522c580e0e24ab.1495717153.git.vasilyf@mellanox.com> Subject: [dpdk-dev] [PATCH v4 4/4] app/testpmd: add isolated mode parameter X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" In case if --isolated-mode parameter was added to the command line the rte flow isolate action will be applied on each port before the device configuring. Providing this parameter requests isolated mode from the flow API on all ports at initialization time in order to ensure that all traffic is received through the configured flow rules only (see flow command). This automatically discards ports that do not support this mode. Signed-off-by: Vasily Philipov --- app/test-pmd/parameters.c | 3 +++ app/test-pmd/testpmd.c | 14 ++++++++++++++ app/test-pmd/testpmd.h | 1 + 3 files changed, 18 insertions(+) diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c index fbe6284..e313871 100644 --- a/app/test-pmd/parameters.c +++ b/app/test-pmd/parameters.c @@ -623,6 +623,7 @@ { "tx-queue-stats-mapping", 1, 0, 0 }, { "rx-queue-stats-mapping", 1, 0, 0 }, { "no-flush-rx", 0, 0, 0 }, + { "isolated-mode", 0, 0, 0 }, { "txpkts", 1, 0, 0 }, { "disable-link-check", 0, 0, 0 }, { "no-lsc-interrupt", 0, 0, 0 }, @@ -1081,6 +1082,8 @@ lsc_interrupt = 0; if (!strcmp(lgopts[opt_idx].name, "no-rmv-interrupt")) rmv_interrupt = 0; + if (!strcmp(lgopts[opt_idx].name, "isolated-mode")) + isolated_mode = 1; if (!strcmp(lgopts[opt_idx].name, "print-event")) if (parse_event_printing_config(optarg, 1)) { rte_exit(EXIT_FAILURE, diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index d1041af..610e675 100644 --- a/app/test-pmd/testpmd.c +++ b/app/test-pmd/testpmd.c @@ -267,6 +267,11 @@ struct fwd_engine * fwd_engines[] = { uint8_t no_flush_rx = 0; /* flush by default */ /* + * Flow API isolated mode. + */ +uint8_t isolated_mode; + +/* * Avoids to check link status when starting/stopping a port. */ uint8_t no_link_check = 0; /* check by default */ @@ -1422,6 +1427,15 @@ static void eth_event_callback(uint8_t port_id, if (port->need_reconfig > 0) { port->need_reconfig = 0; + if (isolated_mode) { + int ret = port_flow_isolate(pi, 1); + if (ret) { + printf("Failed to apply isolated" + " mode on port %d\n", pi); + return -1; + } + } + printf("Configuring Port %d (socket %u)\n", pi, port->socket_id); /* configure port */ diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h index e6c43ba..dbe9898 100644 --- a/app/test-pmd/testpmd.h +++ b/app/test-pmd/testpmd.h @@ -303,6 +303,7 @@ struct queue_stats_mappings { extern uint8_t numa_support; /**< set by "--numa" parameter */ extern uint16_t port_topology; /**< set by "--port-topology" parameter */ extern uint8_t no_flush_rx; /**