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