Date: Fri, 26 Mar 2004 18:44:52 -0800 From: "Jacob S. Barrett" <jbarrett@amduat.net> To: Ruslan Ermilov <ru@freebsd.org> Cc: freebsd-net@freebsd.org Subject: Re: Disabling VLAN_HWTAGGING Message-ID: <200403261844.52324.jbarrett@amduat.net> In-Reply-To: <20040325234527.GC85417@ip.net.ua> References: <200403251118.40718.jbarrett@amduat.net> <20040325234527.GC85417@ip.net.ua>
next in thread | previous in thread | raw e-mail | index | archive | help
I did a little more debugging and placed some printf statements before and after: /* * If we received a packet with a vlan tag, pass it * to vlan_input() instead of ether_input(). */ if (extsts & NGE_RXEXTSTS_VLANPKT) { VLAN_INPUT_TAG(ifp, m, extsts & NGE_RXEXTSTS_VTCI, continue); } What I found is that VLAN tagged frames sent to the interface never get to this line at all. I figured the NIC must be droping it or something before it even gets to the driver. So I commented out the following line: /* * Tell the chip to detect and strip VLAN tag info from * received frames. The tag will be provided in the extsts * field in the RX descriptors. */ NGE_SETBIT(sc, NGE_VLAN_IP_RXCTL, NGE_VIPRXCTL_TAG_DETECT_ENB|NGE_VIPRXCTL_TAG_STRIP_ENB); Now the driver gets the frame but the conditional about is false, presumable because I comment out that line which says it will detect and set the extsts. It does however get delivered to the ng lower hook and therefor the ng_vlan gets it. The ng_eiface tied to vlan2 replies to the arp requests. Strangely though when an ICMP ping request gets to ng_eiface it ignores it. 02:27:16.658526 0:90:27:f4:58:1d ff:ff:ff:ff:ff:ff 0806 56: arp who-has 10.2.0.1 tell 10.2.0.2 02:27:16.658633 11:22:33:44:55:66 0:90:27:f4:58:1d 0806 42: arp reply 10.2.0.1 is-at 11:22:33:44:55:66 02:27:16.659132 0:90:27:f4:58:1d 11:22:33:44:55:66 0800 98: 10.2.0.2 > 10.2.0.1: icmp: echo request 02:27:16.664321 0:90:27:f4:58:1d 11:22:33:44:55:66 0800 98: 10.2.0.2 > 10.2.0.1: icmp: echo request Even more odd, I can ping from the ng_eiface interface and it makes it tagged all the way out and back just fine. The ng_eiface gets the ICMP response just fine. Does any of this make sense to you? Is there possibly something wrong with the logic in that detect and stip flag? Am I just a total tool and missing someting completely obvious here, because it wouldn't be the first time. Does anyone have a 1Gbit fiber NIC that they have tested in and out with VLAN tagging that they could recommend. -- Jacob S. Barrett jbarrett@amduat.net www.amduat.net "I don't suffer from insanity, I enjoy every minute of it."
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200403261844.52324.jbarrett>