On 04/11/15(Wed) 12:25, Armin Wolfermann wrote: > * Martin Pieuchot <m...@openbsd.org> [03.11.2015 17:55]: > > I'm not sure it applies on 5.8 though... > > Nope, but I found the following changes to be sufficient on 5.8. It just > keeps the vlan tagged packets away from the bridge.
This only works because your underlying drivers supports hardware vlan. This is not a proper fix. I'd appreciate if you could test my diff and report back. > > Index: net/if.c > =================================================================== > RCS file: /cvs/src/sys/net/if.c,v > retrieving revision 1.357 > diff -u -p -u -r1.357 if.c > --- net/if.c 13 Aug 2015 07:19:58 -0000 1.357 > +++ net/if.c 4 Nov 2015 10:35:07 -0000 > @@ -432,7 +432,7 @@ if_enqueue(struct ifnet *ifp, struct mbu > unsigned short mflags; > > #if NBRIDGE > 0 > - if (ifp->if_bridgeport && (m->m_flags & M_PROTO1) == 0) > + if (ifp->if_bridgeport && (m->m_flags & (M_PROTO1 | M_VLANTAG)) == 0) > return (bridge_output(ifp, m, NULL, NULL)); > m->m_flags &= ~M_PROTO1; /* Loop prevention */ > #endif > @@ -522,7 +522,8 @@ if_input_process(void *xmq) > } > > #if NBRIDGE > 0 > - if (ifp->if_bridgeport && (m->m_flags & M_PROTO1) == 0) { > + if (ifp->if_bridgeport && > + (m->m_flags & (M_PROTO1 | M_VLANTAG)) == 0) { > m = bridge_input(ifp, m); > if (m == NULL) > continue; >