Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 27 Mar 2004 09:42:05 +0200
From:      Ruslan Ermilov <ru@freebsd.org>
To:        "Jacob S. Barrett" <jbarrett@amduat.net>
Cc:        freebsd-net@freebsd.org
Subject:   Re: Disabling VLAN_HWTAGGING
Message-ID:  <20040327074205.GA32984@ip.net.ua>
In-Reply-To: <200403261844.52324.jbarrett@amduat.net>
References:  <200403251118.40718.jbarrett@amduat.net> <20040325234527.GC85417@ip.net.ua> <200403261844.52324.jbarrett@amduat.net>

next in thread | previous in thread | raw e-mail | index | archive | help

--bg08WKrSYDhXBjb5
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Fri, Mar 26, 2004 at 06:44:52PM -0800, Jacob S. Barrett wrote:
> I did a little more debugging and placed some printf statements before an=
d=20
> 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);
>                 }
>=20
> What I found is that VLAN tagged frames sent to the interface never get t=
o=20
> this line at all.  I figured the NIC must be droping it or something befo=
re=20
> 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);
>=20
>=20
> Now the driver gets the frame but the conditional about is false, presuma=
ble=20
> because I comment out that line which says it will detect and set the ext=
sts. =20
> It does however get delivered to the ng lower hook and therefor the ng_vl=
an=20
> gets it.  The ng_eiface tied to vlan2 replies to the arp requests.  Stran=
gely=20
> though when an ICMP ping request gets to ng_eiface it ignores it.
>=20
> 02:27:16.658526 0:90:27:f4:58:1d ff:ff:ff:ff:ff:ff 0806 56: arp who-has=
=20
> 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=20
> 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 >=20
> 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 >=20
> 10.2.0.1: icmp: echo request
>=20
> Even more odd, I can ping from the ng_eiface interface and it makes it ta=
gged=20
> all the way out and back just fine. The ng_eiface gets the ICMP response =
just=20
> fine.
>=20
> Does any of this make sense to you?  Is there possibly something wrong wi=
th=20
> the logic in that detect and stip flag?  Am I just a total tool and missi=
ng=20
> someting completely obvious here, because it wouldn't be the first time.
>=20
I think so.  11:22:33:44:55:66 is the wrong MAC address -- the first octet
should be an odd number, otherwise it's treated as a broadcast/multicast.

> Does anyone have a 1Gbit fiber NIC that they have tested in and out with =
VLAN=20
> tagging that they could recommend.
>=20
I'm in the process of obtaining a NIC.  Once I get it, I will look into the
issue.  What's the ``pciconf -lv'' and dmesg(8) outputs corresponding to yo=
ur
NIC?  Also, is it plugged into the 64-bit PCI slot or not?


Cheers,
--=20
Ruslan Ermilov
ru@FreeBSD.org
FreeBSD committer

--bg08WKrSYDhXBjb5
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (FreeBSD)

iD8DBQFAZTBNUkv4P6juNwoRAhNXAJ9Aus3mMRfDaxgt7FuhlVBaNNmoIgCfXIyE
PHWbiOuPO06vOBMBEM0FdlQ=
=LbCp
-----END PGP SIGNATURE-----

--bg08WKrSYDhXBjb5--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040327074205.GA32984>