aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKristof Provost <kp@FreeBSD.org>2023-05-10 16:26:29 +0000
committerKristof Provost <kp@FreeBSD.org>2023-05-11 07:48:50 +0000
commit0229fab2fe0eed843ebec98fd31b7d49bb2e8438 (patch)
tree95d58dcc8dc6ee6356719acaebb72fd5ebbe773e
parent27e74c8fff358c113b1afdd3abfc58dca902180c (diff)
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
-rw-r--r--sys/dev/e1000/if_em.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/dev/e1000/if_em.c b/sys/dev/e1000/if_em.c
index 89186767bc60..0b664b155872 100644
--- a/sys/dev/e1000/if_em.c
+++ b/sys/dev/e1000/if_em.c
@@ -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);