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 = powerspec 3 supports D0 D3 current D0
cap 05 = MSI supports 1 message, 64 bit, vector masks
cap 11 = 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 = AER 2 0 fatal 0 non-fatal 1 corrected
ecap 0003 = Serial 1 188779ffff6b1fac
ecap 000e = ARI 1
ecap 0010 = 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.
Here are some relevant links with similar problems under Linux and how they have handled it.
(In reply to ncrogers from comment #0)
I meant that the Linux driver appears to automatically ENABLE promisc mode...