e1000: fix VLAN 0

VLAN 0 essentially means "Treat as untagged, but with priority bits",
and is used by some ISPs.

On igb/em interfaces we did not receive packets with VLAN tag 0 unless
vlanhwfilter was disabled.

This can be fixed by explicitly listing VLAN 0 in the hardware VLAN
filter (VFTA). Do this from em_setup_vlan_hw_support(), where we already
(re-)write the VFTA.

Reviewed by:	kbowling
Sponsored by:   Rubicon Communications, LLC ("Netgate")
Differential Revision:	https://reviews.freebsd.org/D40046
This commit is contained in:
Kristof Provost 2023-05-10 18:26:29 +02:00
parent 27e74c8fff
commit 0229fab2fe

View File

@ -3681,8 +3681,10 @@ em_setup_vlan_hw_support(if_ctx_t ctx)
/*
* A soft reset zero's out the VFTA, so
* we need to repopulate it now.
* We also insert VLAN 0 in the filter list, so we pass VLAN 0 tagged
* traffic through. This will write the entire table.
*/
em_if_vlan_filter_write(sc);
em_if_vlan_register(ctx, 0);
/* Enable the Filter Table */
em_if_vlan_filter_enable(sc);