rtw88 icon indicating copy to clipboard operation
rtw88 copied to clipboard

macvtap networking broken with `rtw88_8812au` driver (works with legacy `8812au` driver)

Open walmis opened this issue 6 months ago • 4 comments

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:

  1. Use a Realtek RTL8812AU-based Wi-Fi adapter with rtw88_8812au driver loaded.
  2. Create a libvirt VM with a macvtap interface bridged to the Wi-Fi interface.
  3. 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 8812au immediately restores macvtap functionality.
  • Issue seems specific to how rtw88 handles packet bridging or frame forwarding.
  • May be related to driver not allowing certain frame types or not supporting promiscuous mode properly.

walmis avatar Oct 07 '25 06:10 walmis

Create a libvirt VM with a macvtap interface bridged to the Wi-Fi interface.

More specifically, what commands do I need to run?

dubhater avatar Oct 07 '25 10:10 dubhater

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: Image

walmis avatar Oct 07 '25 13:10 walmis

What application is that? Assume I know nothing about qemu.

dubhater avatar Oct 07 '25 13:10 dubhater

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.

walmis avatar Oct 07 '25 14:10 walmis