diff options
author | rwatson <rwatson@FreeBSD.org> | 2012-01-05 17:30:15 +0000 |
---|---|---|
committer | rwatson <rwatson@FreeBSD.org> | 2012-01-05 17:30:15 +0000 |
commit | f3e5fe871847a53747d7120dd4762ee4311662f2 (patch) | |
tree | 66bb30156c3141ab27370ef6bf028315a73b0539 /sys/dev/e1000/if_em.c | |
parent | 501817ac5ecf2fc947d7fbacf2db18c647e59efb (diff) | |
download | FreeBSD-src-f3e5fe871847a53747d7120dd4762ee4311662f2.zip FreeBSD-src-f3e5fe871847a53747d7120dd4762ee4311662f2.tar.gz |
When extracting the VLAN tag from if_em and if_lem receive descriptor
rings, copy the whole VLAN tag, not just the VLAN ID. This fixes a
problem in which VLAN priority information was dropped when using
offloaded VLAN processing with these drivers.
Discussed with: jfv, rrs
Sponsored by: ADARA Networks, Inc.
MFC after: 3 days
Diffstat (limited to 'sys/dev/e1000/if_em.c')
-rw-r--r-- | sys/dev/e1000/if_em.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/sys/dev/e1000/if_em.c b/sys/dev/e1000/if_em.c index 3d21da3..f6cc363 100644 --- a/sys/dev/e1000/if_em.c +++ b/sys/dev/e1000/if_em.c @@ -4480,8 +4480,7 @@ em_rxeof(struct rx_ring *rxr, int count, int *done) #endif if (status & E1000_RXD_STAT_VP) { sendmp->m_pkthdr.ether_vtag = - (le16toh(cur->special) & - E1000_RXD_SPC_VLAN_MASK); + le16toh(cur->special); sendmp->m_flags |= M_VLANTAG; } #ifndef __NO_STRICT_ALIGNMENT |