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.
Signed-off-by: Vasily Philipov <vasi...@mellanox.com> --- 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; /**<set by "--no-flush-rx" parameter */ +extern uint8_t isolated_mode; /**<set by "--isolated-mode */ extern uint8_t mp_anon; /**< set by "--mp-anon" parameter */ extern uint8_t no_link_check; /**<set by "--disable-link-check" parameter */ extern volatile int test_done; /* stop packet forwarding when set to 1. */ -- 1.8.3.1