From: Damjan Marion Date: Mon, 6 Oct 2025 15:06:02 +0000 (+0200) Subject: armada: add swtich to force DSA parsing on or off X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F43%2F43843%2F2;p=vpp.git armada: add swtich to force DSA parsing on or off Type: improvement Change-Id: I5eaa8e1d2f6b3ca45ead106cdbc1db580ceb4f41 Signed-off-by: Damjan Marion --- diff --git a/src/plugins/dev_armada/pp2/init.c b/src/plugins/dev_armada/pp2/init.c index 4333dbb352f..cbbb1b2a719 100644 --- a/src/plugins/dev_armada/pp2/init.c +++ b/src/plugins/dev_armada/pp2/init.c @@ -346,6 +346,18 @@ mvpp2_init (vlib_main_t *vm, vnet_dev_t *dev) .max_supported_rx_frame_size = 9216, .caps.secondary_interfaces = mvpp2_port.is_dsa != 0, }, + .args = VNET_DEV_ARGS ({ + .id = MVPP2_PORT_ARG_DSA_ENABLED, + .type = VNET_DEV_ARG_TYPE_ENUM, + .name = "dsa_enable", + .desc = "DSA header parsing (on, off, auto)", + .default_val.enum_val = MVPP2_PORT_DSA_ENABLED_AUTO, + .enum_vals = VNET_DEV_ARG_ENUM_VALS( + { .val = MVPP2_PORT_DSA_ENABLED_OFF, .name = "off", }, + { .val = MVPP2_PORT_DSA_ENABLED_ON, .name = "on", }, + { .val = MVPP2_PORT_DSA_ENABLED_AUTO, .name = "auto", }, + ), + }), .ops = { .init = mvpp2_port_init, .deinit = mvpp2_port_deinit, diff --git a/src/plugins/dev_armada/pp2/port.c b/src/plugins/dev_armada/pp2/port.c index 63a212e80c2..489b2bf9cfe 100644 --- a/src/plugins/dev_armada/pp2/port.c +++ b/src/plugins/dev_armada/pp2/port.c @@ -30,6 +30,23 @@ mvpp2_port_init (vlib_main_t *vm, vnet_dev_port_t *port) log_debug (port->dev, ""); + foreach_vnet_dev_args (arg, port) + if (arg->id == MVPP2_PORT_ARG_DSA_ENABLED) + switch (vnet_dev_arg_get_enum (arg)) + { + case MVPP2_PORT_DSA_ENABLED_ON: + mp->is_dsa = 1; + break; + case MVPP2_PORT_DSA_ENABLED_OFF: + mp->is_dsa = 0; + break; + case MVPP2_PORT_DSA_ENABLED_AUTO: + break; + default: + ASSERT (0); + break; + } + snprintf (match, sizeof (match), "ppio-%d:%d", md->pp_id, port->port_id); struct pp2_ppio_params ppio_params = { diff --git a/src/plugins/dev_armada/pp2/pp2.h b/src/plugins/dev_armada/pp2/pp2.h index 160bfd20c5c..05a9f511c88 100644 --- a/src/plugins/dev_armada/pp2/pp2.h +++ b/src/plugins/dev_armada/pp2/pp2.h @@ -52,6 +52,18 @@ typedef enum MV_DSA_TAG_TYPE_FORWARD = 3 } mv_dsa_tag_type_t; +typedef enum +{ + MVPP2_PORT_DSA_ENABLED_OFF = 0, + MVPP2_PORT_DSA_ENABLED_ON = 1, + MVPP2_PORT_DSA_ENABLED_AUTO = 2, +} mvpp2_port_dsa_enabled_t; + +typedef enum +{ + MVPP2_PORT_ARG_DSA_ENABLED, +} mvpp2_port_args_t; + typedef enum { MVPP2_SEC_IF_ARG_DSA_SWITCH,