[dpdk-dev,v7,1/4] app/testpmd: add isolated mode parameter
Checks
Commit Message
Providing this parameter requests flow API isolated mode on all ports at
initialization time. It ensures all traffic is received through the
configured flow rules only (see flow command).
Ports that do not support this mode are automatically discarded.
Signed-off-by: Vasily Philipov <vasilyf@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(+)
Comments
On Tue, Jul 04, 2017 at 11:22:48AM +0000, Vasily Philipov wrote:
> Providing this parameter requests flow API isolated mode on all ports at
> initialization time. It ensures all traffic is received through the
> configured flow rules only (see flow command).
>
> Ports that do not support this mode are automatically discarded.
>
> Signed-off-by: Vasily Philipov <vasilyf@mellanox.com>
Thanks for reordering the series. For this commit:
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
@@ -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,
@@ -270,6 +270,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 */
@@ -1425,6 +1430,15 @@ static int 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 */
@@ -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. */