Subject: Re: vge not working on bigendian, either (was Re: CVS commit: src/sys/dev/pci)
To: None <riz@NetBSD.org>
From: Izumi Tsutsui <tsutsui@ceres.dti.ne.jp>
List: tech-net
Date: 12/01/2005 18:07:16
In article <438E51FF.5050501@NetBSD.org>
riz@NetBSD.org wrote:
> The MAC address was fixed by the first patch, yes.
Thanks for confirmation.
> Your second patch
> (to if_vgereg.h) caused the machine to hang when vge0 was brought up.
Ah, I was confused and the patch against if_vgereg.h is completly wrong.
Such reordering is only needed if device itself handles byteswap.
> However, brad@openbsd sent me a private email saying vge(4) works on
> macppc in OpenBSD, so I derived the attached patch from there, and I can
> successfully ping over vge0 on macppc with it when combined with your
> patch to if_vge.c.
:
> --- if_vge.c 21 Nov 2005 20:25:15 -0000 1.7
> +++ if_vge.c 1 Dec 2005 01:12:21 -0000
> @@ -738,11 +707,11 @@
> */
> i++;
>
> - d->vge_sts = sz << 16;
> - d->vge_ctl = flags|(i << 28)|VGE_TD_LS_NORM;
> + d->vge_sts = htole32(sz << 16);
> + d->vge_ctl = htole32(flags|(i << 28)|VGE_TD_LS_NORM);
>
> if (sz > ETHERMTU + ETHER_HDR_LEN)
> - d->vge_ctl |= VGE_TDCTL_JUMBO;
> + d->vge_ctl |= htole32(VGE_TDCTL_JUMBO);
> }
>
> static int
Looks correct (umm, I missed these members). Is it okay to commit them?
---
Izumi Tsutsui