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

next in thread | previous in thread | raw e-mail | index | archive | help
Well I think I fixed it.  It works for my card atleast.  I am not sure 
the of the correct route to get this checked and corrected in the main 
source tree.  Seems like such a simple fix but it may only work for the 
chipset that I have, 82543, so someone should check on other chipsets.

2020,2021c2020,2021
<                                       VLAN_INPUT_TAG(eh, adapter->fmp,
< 
current_desc->special);
---
 >                                       VLAN_INPUT_TAG(eh, adapter->fmp,
 > 
ntohs(current_desc->special));


Jacob S. Barrett wrote:

> 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?3DC8A243.4070603>