[Solved] Manjaro + KVM Bridge - Unable to perminately disable STP

Whenever I reboot the host or a VM, I have to wait for STP to finish. I’m able to disable it via
brctl stp virbr0 off
but after a reboot, it’s enabled again. I’ve been unable to find what is causing it to re-enable.

virbr1 is the default bridge created by KVM/QEMU, and virbr0 is the bridge I’d like to disable STP on.

# Uname -a 
Linux Manja 6.0.8-1-MANJARO #1 SMP PREEMPT_DYNAMIC Thu Nov 10 20:52:34 UTC 2022 x86_64 GNU/Linux

# nmcli con show
NAME                UUID                                  TYPE      DEVICE   
virbr0              c1bc5919-c4cc-4178-96e8-4bc7c0fe284e  bridge    virbr0   
virbr1              a2a395c7-181a-490f-af4b-0339601a0404  bridge    virbr1   
enp4s0f0            8b5211f0-28ae-453a-8b6e-84f770eced01  ethernet  enp4s0f0  

# brctl show
bridge name	bridge id		STP enabled	interfaces
virbr0		8000.3abd6fdaff4a	yes		enp4s0f0
virbr1		8000.525400a7d340	yes		

# lscpi -nnv ###Network Card for enp4s0f0
04:00.1 Ethernet controller [0200]: Broadcom Inc. and subsidiaries NetXtreme II BCM57810 10 Gigabit Ethernet [14e4:168e] (rev 10)
	Subsystem: Hewlett-Packard Company Ethernet 10Gb 2-port 530SFP+ Adapter [103c:339d]
	Flags: bus master, fast devsel, latency 0, IRQ 40, IOMMU group 24
	Memory at 7c03000000 (64-bit, prefetchable) [size=8M]
	Memory at 7c02800000 (64-bit, prefetchable) [size=8M]
	Memory at 7c04800000 (64-bit, prefetchable) [size=64K]
	Expansion ROM at fc900000 [disabled] [size=512K]
	Capabilities: <access denied>
	Kernel driver in use: bnx2x
	Kernel modules: bnx2x
XML confirm for virbr0
<network>
  <name>virbr0</name>
  <uuid>c3919038-9e31-4883-89e2-270efc573170</uuid>
  <forward mode="bridge"/>
  <bridge name="virbr0"/>
</network>

I’ve tried adding stp=off to the XML, but it says that it isn’t allowed for “Forward mode=bridge”

If anything else would be helpful, please let me know. Thanks in advance for any assistance.

not really a fix - more of a workaround.

You can create the bridge ahead of time in systemd

vm_bridge.netdev
[NetDev]
Name=vm_bridge
Kind=bridge

[Bridge]
STP=no
...
enp4s0f0.network
[Match]
Name=enp4s0f0

[Network]
Bridge=vm_bridge
...

not sure OTOH how you’d refer to it in libvirt xml

looks suspiciosly like what you already have

There a particular reason to turn off STP? In almost every case I’ve seen somebody do it; it wasn’t a good idea.

I would like to avoid the delay. I assumed there was a setting/config I missed since I can successfully disable it, but it reverts on reboot. This is just a gaming desktop with VMs for Gaming and Blue Iris. I can’t think of an instance where there would be a loop with my setup.

Ah. Yeah, that’s fair. If you can’t get it disabled properly on reboot are there any options for RSTP?

I believe I was able to fix it. Running the following command seems to stick after reboot.

nmcli con modify virbr0 bridge.stp no
1 Like