From owner-freebsd-net@FreeBSD.ORG Fri Mar 26 18:44:55 2004 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 2F36316A4CE; Fri, 26 Mar 2004 18:44:55 -0800 (PST) Received: from bes.amduat.net (bes.amduat.net [206.124.149.190]) by mx1.FreeBSD.org (Postfix) with ESMTP id 417AB43D41; Fri, 26 Mar 2004 18:44:54 -0800 (PST) (envelope-from jbarrett@amduat.net) Received: from [10.0.0.236] ([10.0.0.236]) (AUTH: LOGIN jbarrett, SSL: TLSv1/SSLv3,128bits,RC4-MD5) by bes.amduat.net with esmtp; Fri, 26 Mar 2004 18:44:53 -0800 From: "Jacob S. Barrett" To: Ruslan Ermilov Date: Fri, 26 Mar 2004 18:44:52 -0800 User-Agent: KMail/1.6.1 References: <200403251118.40718.jbarrett@amduat.net> <20040325234527.GC85417@ip.net.ua> In-Reply-To: <20040325234527.GC85417@ip.net.ua> MIME-Version: 1.0 Content-Disposition: inline Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <200403261844.52324.jbarrett@amduat.net> cc: freebsd-net@freebsd.org Subject: Re: Disabling VLAN_HWTAGGING X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 27 Mar 2004 02:44:55 -0000 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."