Date: Sun, 22 Dec 2002 12:38:17 +0100 From: Dan Lukes <dan@obluda.cz> To: Hiten Pandya <hiten@unixdaemons.com> Cc: freebsd-current@FreeBSD.ORG, freebsd-stable@FreeBSD.ORG, dcs@newsguy.com Subject: Re: VLAN v.s. NIC with VLAN hardware support bug. Message-ID: <3E05A429.7080506@obluda.cz> In-Reply-To: <3E038A1A.6070203@obluda.cz> References: <3E038A1A.6070203@obluda.cz> <3E03A86C.6D15F650@newsguy.com> <3E03C706.5060508@obluda.cz> <20021221233424.GA23657@unixdaemons.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Hiten Pandya wrote: > On Sat, Dec 21, 2002 at 02:42:30AM +0100, Dan Lukes wrote the words in > effect of: > > Dan, I believe you submitted a PR about this [1], what does patch try to > solve, regarding VLAN hardware support? > > [1] http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/46405 Hi. May be, I'm doesn't understand fully what you are asked for - my english isn't as good as should be. The problem: NIC with hardware VLAN support pass whole TAG to vlan_input(_tag). The TAG has the following structure: TAG & 0x8000 -> CFI (TAG & 0x7000)>>13 -> priority TAG & 0x0FFF -> VLAN ID The vlan_input(_tag) doesn't extract the VLAN ID from tag, it tried match the whole tag to configured VLAN's. It work - unless CFI or an priority bit has nonzero value. An example: you have configured VLAN 256 on your FreeBSD. The arrived packed has TAG 0x0100 (=256). For this packet it works, as TAG matched configured VLAN. Lets another packet has TAG 0x4100 (=16640). It's dropped because there are no configured vlan with ID 16640 - but should not be dropped, as it IS packed for VLAN 256 with priority 4. In short - vlan_input(_tag) doesn't extract the correct bits from TAG, so it drop packets that shouldn't be dropped. It's the bug fixed by my patches. I tested it on 4.7. The patch for CURRENT isn't tested, but it's simple to analyse that there are the same problem. It's the sufficient answer to your question ? Please note (it's mentioned in my PR also), the vlan code doesn't correctly handle the VLAN ID of "zero" which has special meaning . My patches doesn't solve it. Dan -- Dan Lukes tel: +420 2 21914205, fax: +420 2 21914206 root of FIONet, KolejNET, webmaster of www.freebsd.cz AKA: dan@obluda.cz, dan@freebsd.cz, dan@kolej.mff.cuni.cz To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3E05A429.7080506>