Skip site navigation (1)Skip section navigation (2)
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>