add VLVF bypass to ixgbe core
We need to update parts of our ixgbe core code to implement HW VLAN acceleration as part of the 11490 work (also see RFD-97). Intel made a large drop to the FreeBSD codebase in 2017; the details of which can be found under review D11232. My initial plan was to perform a full sync of the core code but after spending some time with this diff I decided it would be too disruptive and I'd likely break something. It's safer and quicker to cherry pick only the changes needed to support this new VLAN work.
We need to pull the "VLVF bypass" changes to support HW VLANs. The vlvf_bypass flag allows the caller to set the VFTA without setting the VLVFB. The VFTA is the VLAN filter table and controls VLAN L2 filtering; traffic will not pass L2 filtering if the packet's VID is not enabled in this table. The VLVFB controls VLAN pool switching: if the packet contains VID V then send it to pool P. There are a finite number of VLVFB registers. We want to dedicate those registers to reserved MAC groups so that MAC can guarantee that a reserved group has access to HW filtering (otherwise we'd have to SW classify thus nullifying the benefit of a reserved group). To make this guarantee, any MAC clients sharing a MAC address are placed on the default group (VLAN VNICs can share the same MAC addr across unique VLANs, though I would hope that's a very unlikely scenario in practice). In this case we don't need to set the VLVFB as the ixgbe Rx logic will route packets to the default pool/group if no other pool has a match. But we still need to set the VFTA to allow this traffic to pass L2 filtering. This is the purpose of VLVF bypass.
Updated by Electric Monk over 2 years ago
- Status changed from New to Closed
commit 84de666edc7f7d835057ae4807a387447c086bcf Author: Ryan Zezeski <email@example.com> Date: 2020-03-02T07:24:09.000Z 11490 SRS ring polling disabled for VLANs 11491 Want DLS bypass for VLAN traffic 11492 add VLVF bypass to ixgbe core 2869 duplicate packets with vnics over aggrs 11489 DLS stat delete and aggr kstat can deadlock Portions contributed by: Theo Schlossnagle <firstname.lastname@example.org> Reviewed by: Patrick Mooney <email@example.com> Reviewed by: Robert Mustacchi <firstname.lastname@example.org> Reviewed by: Dan McDonald <email@example.com> Reviewed by: Paul Winder <firstname.lastname@example.org> Approved by: Gordon Ross <email@example.com>