armada: add swtich to force DSA parsing on or off 43/43843/2
authorDamjan Marion <[email protected]>
Mon, 6 Oct 2025 15:06:02 +0000 (17:06 +0200)
committerFlorin Coras <[email protected]>
Mon, 6 Oct 2025 23:40:40 +0000 (23:40 +0000)
Type: improvement
Change-Id: I5eaa8e1d2f6b3ca45ead106cdbc1db580ceb4f41
Signed-off-by: Damjan Marion <[email protected]>
src/plugins/dev_armada/pp2/init.c
src/plugins/dev_armada/pp2/port.c
src/plugins/dev_armada/pp2/pp2.h

index 4333dbb..cbbb1b2 100644 (file)
@@ -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,
index 63a212e..489b2bf 100644 (file)
@@ -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 = {
index 160bfd2..05a9f51 100644 (file)
@@ -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,