From 3c35acb2a39aca2b2cfe13f807545c2a7f6e21a3 Mon Sep 17 00:00:00 2001 From: Aaron Bernardino Date: Sun, 5 Jul 2026 17:16:54 +0000 Subject: [PATCH] vm_set: disable virtio-net ctrl_vlan filtering on VPP DUTs qemu virtio-net defaults ctrl_vlan=on, which drops all VLAN-tagged frames before they reach VPP (VPP/DPDK registers no VLANs with the virtio device). Add -global virtio-net-pci.ctrl_vlan=off for asic_type==vpp DUTs so tagged L3 sub-interface traffic is delivered; fixes VLAN sub-port RIF forwarding on t1-lag-vpp. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: Aaron Bernardino --- ansible/roles/vm_set/templates/sonic.xml.j2 | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/ansible/roles/vm_set/templates/sonic.xml.j2 b/ansible/roles/vm_set/templates/sonic.xml.j2 index 2e68977d503..b5f37a29def 100644 --- a/ansible/roles/vm_set/templates/sonic.xml.j2 +++ b/ansible/roles/vm_set/templates/sonic.xml.j2 @@ -133,4 +133,18 @@ {% endif %} +{% if asic_type == 'vpp' %} + {# + Disable the virtio-net control-VQ VLAN filter for VPP DUTs. VPP/DPDK drives the + NIC directly and never registers VLANs with the virtio control plane, so with the + qemu default (ctrl_vlan=on) qemu silently drops every VLAN-tagged frame before it + reaches VPP. That breaks any VLAN sub-interface / L3 sub-port dataplane test (e.g. + iface_loopback_action) while leaving untagged traffic working. libvirt has no + attribute for this control, so it is set via a qemu -global override. + #} + + + + +{% endif %}