Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 05 Nov 2002 17:51:33 -0800
From:      "Jacob S. Barrett" <jbarrett@amduat.net>
To:        "Jacob S. Barrett" <jbarrett@amduat.net>
Cc:        freebsd-net@FreeBSD.ORG
Subject:   Re: VLAN tag byte swap and chop problem??
Message-ID:  <3DC875A5.8010408@amduat.net>
In-Reply-To: <3DC7F88B.8090602@amduat.net>
References:  <3DC7F88B.8090602@amduat.net>

next in thread | previous in thread | raw e-mail | index | archive | help
Well it is a bug in the em driver.  It works fine on the fxp device.  I 
am trying to debug and patch myself, but I am not familiar with the 
driver code so it is slow going.  If anyone has any pointers on where 
exactly to focus or anything at all please let me know.

For the short term I have worked around this by setting the vlan ids to 
values that are the same when the fist nibble is masked and the bytes 
are swapped.  For example 0, 257, 517 an 1028.

-Jake

Jacob S. Barrett wrote:

> I am not sure if I am doing something completely wrong of if I have
> found some sort of bug here, but I thought I would toss it out to see if
> anyone else has ever seen this.
>
> I have two ports on my switch configured for vlan id 5.  Port 1 is
> untagged and port 2 is tagged.  The machine A is on port 1 and machine B
> is on port 2.  Machine B's card is configure with multiple vlan nodes
> attached to it, including vlan id 5.  I couldn't ping B from A so I
> attached tcpdump to the parent interface on B to see what was happening.
>   So here is the strange part.  The arp request from A to find B says
> that it is on vlan 1280.  So I set the vlan id on the switch to 1280 and
> tcpdump says 5.  So, id 0x0005 on the switch becomes 0x0500 on the host
> and 0x0500 on the switch becomes 0x0005 on the host.  So I thought maybe
> a byte order problem until I tried setting the id on the switch to 18.
> So the id on the switch was 0x0012 and tcpdump reported it on vlan
> 0x0200.  Trying other vlan IDs shows the same behavior.  The id on the
> framed that is delivered is byte swapped with the first nibble chopped 
> off.
>
> 0x0005 -> 0x0500
> 0x0500 -> 0x0005
> 0x0002 -> 0x0200
> 0x0200 -> 0x0002
> 0x0012 -> 0x0200
>
> Here is my tcpdump from machine B (.1).  Machine be is attempting to
> ping machine A (.2).  It shows the frame leaving as vlan 2 (0x0020)
> (correct) and the reply coming back from A on vlan 512 (0x0200).
>
> 11:35:16.982435 802.1Q vlan#2 P0 arp who-has 10.126.0.2
> (2e:2f:30:31:32:33) tell 10.126.0.1
> 11:35:16.982593 802.1Q vlan#512 P0 arp reply 10.126.0.2 is-at
> 0:90:27:f4:3c:9f
> 11:35:17.992434 802.1Q vlan#2 P0 arp who-has 10.126.0.2
> (2e:2f:30:31:32:33) tell 10.126.0.1
> 11:35:17.992604 802.1Q vlan#512 P0 arp reply 10.126.0.2 is-at
> 0:90:27:f4:3c:9f
> 11:35:19.002467 802.1Q vlan#2 P0 arp who-has 10.126.0.2
> (2e:2f:30:31:32:33) tell 10.126.0.1
> 11:35:19.002627 802.1Q vlan#512 P0 arp reply 10.126.0.2 is-at
> 0:90:27:f4:3c:9f
>
> So does anyone have any ideas?  I am assuming this is either a
> configuration issue on my part with my boxes or a bug in the vlan code
> for if_em.  I doubt that it is a problem with the switch firmware since
> this came from a production site where vlans were used extensively.
> Also, it correctly transmits the frame on the ports tagged for that
> vlan. My guess is that it is in the if_em driver somewhere.  If anyone
> wants to tackle this let me know.
>
> Hardware Involved:
> (1) Extreme Networks Summit 4
> (2) HP LPr Dual PIII 600MHz
>     (1) Intel Pro 10/100B/100+ Ethernet
>     (2) Intel(R) PRO/1000
>
> -Jake
>

-- 
Jacob S. Barrett
jbarrett@amduat.net
www.amduat.net

"I don't suffer from insanity, I enjoy every minute of it."


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-net" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3DC875A5.8010408>