Bug 245894 - ixl(4) does not support more than 255 VLANs
Summary: ixl(4) does not support more than 255 VLANs
Status: New
Alias: None
Product: Base System
Classification: Unclassified
Component: kern (show other bugs)
Version: 12.1-STABLE
Hardware: amd64 Any
: --- Affects Some People
Assignee: freebsd-net (Nobody)
Keywords: IntelNetworking
Depends on:
Reported: 2020-04-24 22:06 UTC by ncrogers
Modified: 2020-05-29 00:42 UTC (History)
3 users (show)

See Also:


Note You need to log in before you can comment on or make changes to this bug.
Description ncrogers 2020-04-24 22:06:36 UTC
When configuring 256 or more VLAN interfaces on an ixl(4) interface, the adapter drops frames for the 256th and later configured VIDs. Enabling promiscuous mode fixes the problem.

Example dmesg output when this happens:
ixl1: i40e_aq_add_macvlan status I40E_ERR_ADMIN_QUEUE_ERROR, error I40E_AQ_RC_ENOSPC

pciconf -lcv ixl0
ixl0@pci0:183:0:0:	class=0x020000 card=0x37d215d9 chip=0x37d28086 rev=0x04 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = 'Ethernet Connection X722 for 10GBASE-T'
    class      = network
    subclass   = ethernet
    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 129 messages, enabled
                 Table in map 0x1c[0x0], PBA in map 0x1c[0x1000]
    cap 10[a0] = PCI-Express 2 endpoint max data 256(512) FLR RO
                 link x1(x1) speed 2.5(2.5) ASPM disabled(L0s/L1)
    cap 03[e0] = VPD
    ecap 0001[100] = AER 2 0 fatal 0 non-fatal 1 corrected
    ecap 0003[140] = Serial 1 188779ffff6b1fac
    ecap 000e[150] = ARI 1
    ecap 0010[160] = SR-IOV 1 IOV disabled, Memory Space disabled, ARI disabled
                     0 VFs configured out of 32 supported
                     First VF RID Offset 0x0110, VF RID Stride 0x0001
                     VF Device ID 0x37cd
                     Page Sizes: 4096 (enabled), 8192, 65536, 262144, 1048576, 4194304
    ecap 0017[1a0] = TPH Requester 1
    ecap 000d[1b0] = ACS 1

This appears to be a firmware problem, but I am not quite sure. The Linux driver seems to automatically disable promisc mode when the firmware returns I40E_AQ_RC_ENOSPC after adding a MAC/VLAN filter.

I tried toggling vlanhwfilter and/or vlanhwtag to no avail.

Enabling promisc mode fixes the problem.

It would be nice if the driver did this automatically, or I would like to at least understand why the firmware does not support this. Is there a way to disable the MAC/VLAN filtering in the adapter and just rely on the OS?

Thanks for any assistance.
Comment 2 ncrogers 2020-05-04 15:00:23 UTC
(In reply to ncrogers from comment #0)
 I meant that the Linux driver appears to automatically ENABLE promisc mode...