macvtap networking broken with `rtw88_8812au` driver (works with legacy `8812au` driver)
Description:
When using QEMU/Libvirt VMs configured with macvtap networking, guest systems are unable to access the host network if the host Wi-Fi interface uses the rtw88_8812au driver.
If I switch to the older 8812au driver (from aircrack-ng or similar sources), macvtap networking works as expected - guests can communicate with the LAN and internet normally.
Environment:
- Wi-Fi adapter: Realtek RTL8812AU
- Kernel: 6.17.0-1002-oem (Ubuntu 24.04)
- Driver:
rtw88_8812au - Virtualization: QEMU + Libvirt
- Network type: macvtap (mode=bridge)
- Works fine with:
8812au(legacy DKMS driver)
Steps to reproduce:
- Use a Realtek RTL8812AU-based Wi-Fi adapter with
rtw88_8812audriver loaded. - Create a libvirt VM with a macvtap interface bridged to the Wi-Fi interface.
- Start the VM.
Expected behavior: VM should be able to send and receive packets through the macvtap interface.
Actual behavior: VM starts successfully but cannot reach any network — no packets appear to be transmitted through the host interface.
Additional notes:
- Switching to
8812auimmediately restores macvtap functionality. - Issue seems specific to how
rtw88handles packet bridging or frame forwarding. - May be related to driver not allowing certain frame types or not supporting promiscuous mode properly.
Create a libvirt VM with a macvtap interface bridged to the Wi-Fi interface.
More specifically, what commands do I need to run?
Here's a libvirt xml for the network interface
<interface type="direct">
<mac address="52:54:00:df:d8:a7"/>
<source dev="wlxc4e984090b5b" mode="bridge"/>
<target dev="macvtap1"/>
<model type="virtio"/>
<alias name="net1"/>
<address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/>
</interface>
and GUI reference:
What application is that? Assume I know nothing about qemu.
Ah, ok,
that’s virt-manager – a GUI that manages the virtualization stack (libvirt + QEMU/KVM).
You can set it up quickly with:
sudo apt install virt-manager qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
sudo systemctl enable --now libvirtd
Then run:
virt-manager
For testing, you’d just need to spin up a VM and attach a macvtap (bridged) network interface to the Wi-Fi adapter - that reproduces the setup where the issue occurs and makes it easy to observe how the driver behaves under macvtap bridging.