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.