Author: rwatson
Date: Thu Jan  5 17:30:15 2012
New Revision: 229606
URL: http://svn.freebsd.org/changeset/base/229606

Log:
  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

Modified:
  head/sys/dev/e1000/if_em.c
  head/sys/dev/e1000/if_lem.c

Modified: head/sys/dev/e1000/if_em.c
==============================================================================
--- head/sys/dev/e1000/if_em.c  Thu Jan  5 17:28:05 2012        (r229605)
+++ head/sys/dev/e1000/if_em.c  Thu Jan  5 17:30:15 2012        (r229606)
@@ -4480,8 +4480,7 @@ em_rxeof(struct rx_ring *rxr, int count,
 #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

Modified: head/sys/dev/e1000/if_lem.c
==============================================================================
--- head/sys/dev/e1000/if_lem.c Thu Jan  5 17:28:05 2012        (r229605)
+++ head/sys/dev/e1000/if_lem.c Thu Jan  5 17:30:15 2012        (r229606)
@@ -3591,8 +3591,7 @@ lem_rxeof(struct adapter *adapter, int c
 #endif
                                if (status & E1000_RXD_STAT_VP) {
                                        adapter->fmp->m_pkthdr.ether_vtag =
-                                           (le16toh(current_desc->special) &
-                                           E1000_RXD_SPC_VLAN_MASK);
+                                           le16toh(current_desc->special);
                                        adapter->fmp->m_flags |= M_VLANTAG;
                                }
 #ifndef __NO_STRICT_ALIGNMENT
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to