kern/165296: Fix EVL_APPLY_VLID, update EVL_APPLY_PRI macro

rozhuk.im at gmail.com rozhuk.im at gmail.com
Sun Feb 19 18:20:08 UTC 2012


The following reply was made to PR kern/165296; it has been noted by GNATS.

From: rozhuk.im at gmail.com
To: <bug-followup at FreeBSD.org>,
	<rozhuk.im at gmail.com>
Cc:  
Subject: Re: kern/165296: Fix EVL_APPLY_VLID, update EVL_APPLY_PRI macro
Date: Mon, 20 Feb 2012 03:16:00 +0900

 This is a multi-part message in MIME format.
 
 ------=_NextPart_000_0046_01CCEF7D.FB03C320
 Content-Type: text/plain;
 	charset="US-ASCII"
 Content-Transfer-Encoding: 7bit
 
 -             (m)->m_pkthdr.ether_vtag |= (((pri) & 7) << 1);            \
 +             (m)->m_pkthdr.ether_vtag |= (((pri) & 7) << 13);           \
 
 ------=_NextPart_000_0046_01CCEF7D.FB03C320
 Content-Type: application/octet-stream;
 	name="if_vlan_var.h.patch"
 Content-Transfer-Encoding: quoted-printable
 Content-Disposition: attachment;
 	filename="if_vlan_var.h.patch"
 
 --- ./if_vlan_var.h.orig	2011-09-23 09:51:37.000000000 +0900=0A=
 +++ ./if_vlan_var.h	2012-02-20 03:11:20.000000000 +0900=0A=
 @@ -52,27 +52,24 @@=0A=
  #define EVL_APPLY_VLID(m, vlid)						\=0A=
  	do {								\=0A=
  		if ((m)->m_flags & M_VLANTAG) {				\=0A=
 -			(m)->m_pkthdr.ether_vtag &=3D EVL_VLID_MASK;	\=0A=
 -			(m)->m_pkthdr.ether_vtag |=3D (vlid);		\=0A=
 +			(m)->m_pkthdr.ether_vtag &=3D ~EVL_VLID_MASK;	\=0A=
  		} else {						\=0A=
 -			(m)->m_pkthdr.ether_vtag =3D (vlid);		\=0A=
 +			(m)->m_pkthdr.ether_vtag =3D 0;			\=0A=
  			(m)->m_flags |=3D M_VLANTAG;			\=0A=
  		}							\=0A=
 +		(m)->m_pkthdr.ether_vtag |=3D ((vlid) & EVL_VLID_MASK);	\=0A=
  	} while (0)=0A=
  =0A=
  /* Set the priority ID in an mbuf packet header non-destructively. */=0A=
  #define EVL_APPLY_PRI(m, pri)						\=0A=
  	do {								\=0A=
  		if ((m)->m_flags & M_VLANTAG) {				\=0A=
 -			uint16_t __vlantag =3D (m)->m_pkthdr.ether_vtag;	\=0A=
 -			(m)->m_pkthdr.ether_vtag |=3D EVL_MAKETAG(	\=0A=
 -			    EVL_VLANOFTAG(__vlantag), (pri),		\=0A=
 -			    EVL_CFIOFTAG(__vlantag));			\=0A=
 +			(m)->m_pkthdr.ether_vtag &=3D ~EVL_PRI_MASK;	\=0A=
  		} else {						\=0A=
 -			(m)->m_pkthdr.ether_vtag =3D			\=0A=
 -			    EVL_MAKETAG(0, (pri), 0);			\=0A=
 +			(m)->m_pkthdr.ether_vtag =3D 0;			\=0A=
  			(m)->m_flags |=3D M_VLANTAG;			\=0A=
  		}							\=0A=
 +		(m)->m_pkthdr.ether_vtag |=3D (((pri) & 7) << 13);	\=0A=
  	} while (0)=0A=
  =0A=
  /* sysctl(3) tags, for compatibility purposes */=0A=
 
 ------=_NextPart_000_0046_01CCEF7D.FB03C320--
 


More information about the freebsd-bugs mailing list