If VLAN_HWTAGGING is disabled, we tell the chip not to strip the
authornaddy <naddy@openbsd.org>
Tue, 22 Apr 2014 11:54:46 +0000 (11:54 +0000)
committernaddy <naddy@openbsd.org>
Tue, 22 Apr 2014 11:54:46 +0000 (11:54 +0000)
tag from the received frame.  Do not add the tag from the receive
descriptor in this case so that the packet isn't tagged twice.
Matches FreeBSD.
ok brad@

sys/dev/pci/if_bge.c

index 7ee9fc5..e31ae3e 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: if_bge.c,v 1.353 2014/02/24 20:00:48 brad Exp $       */
+/*     $OpenBSD: if_bge.c,v 1.354 2014/04/22 11:54:46 naddy Exp $      */
 
 /*
  * Copyright (c) 2001 Wind River Systems
@@ -3502,7 +3502,8 @@ bge_rxeof(struct bge_softc *sc)
                bge_rxcsum(sc, cur_rx, m);
 
 #if NVLAN > 0
-               if (cur_rx->bge_flags & BGE_RXBDFLAG_VLAN_TAG) {
+               if (ifp->if_capabilities & IFCAP_VLAN_HWTAGGING &&
+                   cur_rx->bge_flags & BGE_RXBDFLAG_VLAN_TAG) {
                        m->m_pkthdr.ether_vtag = cur_rx->bge_vlan_tag;
                        m->m_flags |= M_VLANTAG;
                }