On 2014-11-04 21:11, sven falempin wrote:
On Tue, Nov 4, 2014 at 12:48 AM, David Gwynne <[email protected]> wrote:
On 4 Nov 2014, at 06:41, Pieter Verberne <[email protected]> wrote:

On 2014-11-02 13:51, Jorge Schrauwen wrote:
Hey All,
TL;DR: traffic leaving a bridge over a vlan does
not get tagged but leaves untagged after upgrade.
Is this by design?
Looks exactly like my problem. Running 5.6 release.

bridge(4) puts frames on the wire by calling the outgoing interfaces start routine, which in this case is vlan_start() because you're bridging vlan(4) interfaces.

mpi@ and weerd@ correctly identified the diff where henning@ changed vlan_start(). he assumed that ether_output is always called before vlan_start, and moved the tagging code into ether_output to make injecting the vlan tag more streamlined.

bridge obviously breaks this assumption cos it just shoves the packet into vlan_start() which then just shoves the packet onto the parent interface.

i have a massive headache and sleep deficit right now so im not going to suggest a way to fix this.

I have revert the all patch
http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/sys/net/if_ethersubr.c.diff?r1=1.170&r2=1.171&f=h
http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/sys/net/if_vlan.c.diff?r1=1.102&r2=1.103&f=h

and rebuilt and test, my 5.6 is sending vlan in the bridge

I strongly suspet this
-       ifp->if_output = vlan_output;
to be the source of headache, the fact there is hardware tagging and
code in vlan make me wonder:

would it be better to break the if

   if ((p->if_capabilities & IFCAP_VLAN_HWTAGGING) &&

put this in if_ethersubr.c.

 and the else in

if_vlan.c

because a virtual iface with hwtagging, it does look strange , doesn'it ?



dlg


for lazy just apply this :
<patch>

I applied the patch. Tagging is back:

$ sudo tcpdump ether host 50:7e:5d:b8:53:22
tcpdump: listening on vr0, link-type EN10MB
19:15:05.223568 802.1Q vid 4 pri 5 213.75.116.130.www > 10.200.52.243.42357: F 2523001864:2523001864(0) ack 2428944966 win 49640 (DF) 19:15:05.224091 802.1Q vid 4 pri 3 10.200.52.243.42357 > 213.75.116.130.www: F 1:1(0) ack 1 win 29200 (DF) 19:15:05.226424 802.1Q vid 4 pri 5 213.75.116.130.www > 10.200.52.243.42359: F 2566425059:2566425059(0) ack 2048883447 win 49640 (DF)

And I can watch TV again :-)

I had a little trouble patching on 5.6 release source, but eventually applied the patch manually. Maybe I'm doing something wrong? Do I need patch(1) options?

Thanks,
 Pieter Verberne

Reply via email to