An issue with a pair of wi-fi adapters in a guest OS

Igor Pavlov igor.arabesc.pavlov at gmail.com
Tue Jul 28 00:16:23 UTC 2015


Hello,

I'm trying to configure a wi-fi AP in a guest OS.
The guest OS is the OpenWRT v15.05-RC3 (I also tried current version of the
Arch Linux with the same result), it runs in the bhyve and the host OS is:
#uname -msr
FreeBSD 10.1-RELEASE-p14 amd64

The system CPU is: # sysctl hw.model
hw.model: Intel(R) Xeon(R) CPU E3-1265L v3 @ 2.50GHz
(it supports VT-d)

There are two miniPCIe wi-fi adapters which are installed in a PCIe switch
card and passed to the guest OS:

//It's the PCIe switch adapter
# pciconf -lvbc pci0:1:0:0
pcib2 at pci0:1:0:0:    class=0x060400 card=0xd01d19b6 chip=0x860610b5
rev=0xba hdr=0x01
    vendor     = 'PLX Technology, Inc.'
    device     = 'PEX 8606 6 Lane, 6 Port PCI Express Gen 2 (5.0 GT/s)
Switch'
    class      = bridge
    subclass   = PCI-PCI
    bar   [10] = type Memory, range 32, base 0xf7a00000, size 131072,
enabled
    cap 01[40] = powerspec 3  supports D0 D3  current D0
    cap 05[48] = MSI supports 4 messages, 64 bit, vector masks
    cap 10[68] = PCI-Express 2 upstream port max data 128(512) link x1(x1)
                 speed 5.0(5.0) ASPM disabled(L0s/L1)
    cap 0d[a4] = PCI Bridge card=0xd01d19b6
    ecap 0003[100] = Serial 1 ba860110b5df0e00
    ecap 0001[fb4] = AER 1 0 fatal 0 non-fatal 1 corrected
    ecap 0004[138] = Power Budgeting 1
    ecap 0002[148] = VC 1 max VC1 lowpri VC0-VC1
    ecap 000b[448] = Vendor 1 ID 0
    ecap 000b[950] = Vendor 1 ID 1

//It's an ethernet adapter, it's used in the host OS
# pciconf -lvbc pci0:5:0:0
igb0 at pci0:5:0:0:    class=0x020000 card=0x0000ffff chip=0x15338086 rev=0x03
hdr=0x00
    vendor     = 'Intel Corporation'
    device     = 'I210 Gigabit Network Connection'
    class      = network
    subclass   = ethernet
    bar   [10] = type Memory, range 32, base 0xf7700000, size 1048576,
enabled
    bar   [18] = type I/O Port, range 32, base 0xe000, size 32, enabled
    bar   [1c] = type Memory, range 32, base 0xf7800000, size 16384, enabled
    cap 01[40] = powerspec 3  supports D0 D3  current D0
    cap 05[50] = MSI supports 1 message, 64 bit, vector masks
    cap 11[70] = MSI-X supports 5 messages, enabled
                 Table in map 0x1c[0x0], PBA in map 0x1c[0x2000]
    cap 10[a0] = PCI-Express 2 endpoint max data 128(512) FLR link x1(x1)
                 speed 2.5(2.5) ASPM disabled(L0s/L1)
    ecap 0001[100] = AER 2 0 fatal 0 non-fatal 1 corrected
    ecap 0003[140] = Serial 1 00031dffff0f5039
    ecap 0017[1a0] = TPH Requester 1

//It's the QCA9880, 1-st wi-fi adapter, it's used in the PCI device
passthrough to the guest OS
# pciconf -lvbc pci0:6:0:0
ppt0 at pci0:6:0:0:    class=0x028000 card=0x00000000 chip=0x003c168c rev=0x00
hdr=0x00
    vendor     = 'Atheros Communications Inc.'
    class      = network
    bar   [10] = type Memory, range 64, base 0xf7200000, size 2097152,
enabled
    cap 01[40] = powerspec 3  supports D0 D1 D3  current D0
    cap 05[50] = MSI supports 8 messages, vector masks enabled with 1
message
    cap 10[70] = PCI-Express 2 endpoint max data 128(256) link x1(x1)
                 speed 2.5(2.5) ASPM disabled(L0s/L1)
    ecap 0001[100] = AER 1 0 fatal 0 non-fatal 1 corrected
    ecap 0002[140] = VC 1 max VC0
    ecap 0003[160] = Serial 1 0000000000000000

// It's the AR9380, 2-nd wi-fi adapter, it's used in the PCI device
passthrough to the guest OS
# pciconf -lvbc pci0:7:0:0
ppt1 at pci0:7:0:0:    class=0x028000 card=0x3114168c chip=0x0030168c rev=0x01
hdr=0x00
    vendor     = 'Atheros Communications Inc.'
    device     = 'AR9300 Wireless LAN adaptor'
    class      = network
    bar   [10] = type Memory, range 64, base 0xf7900000, size 131072,
enabled
    cap 01[40] = powerspec 3  supports D0 D1 D3  current D0
    cap 05[50] = MSI supports 4 messages, 64 bit, vector masks
    cap 10[70] = PCI-Express 2 endpoint max data 128(128) link x1(x1)
                 speed 2.5(2.5) ASPM disabled(L0s/L1)
    ecap 0001[100] = AER 1 0 fatal 0 non-fatal 1 corrected
    ecap 0002[140] = VC 1 max VC0
    ecap 0003[300] = Serial 1 0000000000000000

Well, the QCA9880 works more or less without issues, but there is the issue
with the AR9380 - it doesn't work properly. I can see it in the guest OS, I
can configure it, I can scan environment for networks, but when I start it
in the AP mode there is no corresponding SSID in the air.
I see following messages in the guest OS boot log: # dmesg | grep ath9k
[    7.410394] ath9k 0000:00:07.0: can't derive routing for PCI INT A
[    7.411012] ath9k 0000:00:07.0: PCI INT A: no GSI
It sounds not good.
I don't know if it relates to the FreeBSD/bhyve or a guest OS. In my
opinion, the former is more likely.

Is it possible to resolve this issue?

--
Igor


More information about the freebsd-virtualization mailing list