Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 6 Apr 2001 18:05:49 +1000 (EST)
From:      Tony Griffiths <tonyg@OntheNet.com.au>
To:        Matthew Rezny <mrezny@umr.edu>
Cc:        "alpha@freebsd.org" <alpha@FreeBSD.ORG>
Subject:   Re: Intel Gigabit driver (if_wx)
Message-ID:  <Pine.BSF.4.30.0104061754280.19941-100000@lancia.onthenet.com.au>
In-Reply-To: <200104060625.BAA06288@mrelay.cc.umr.edu>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 6 Apr 2001, Matthew Rezny wrote:

> I got a few gigabit network cards that use the Intel 82542 chip. They work find
> in FreeBSD/i386, Linux, and Win2000. However, under FreeBSD/alpha there is a
> serious problem. When connected, the Alpha box has no problem, but the oter box
> has its CPU pegged at 100% kernel/system usage and is barely responsive at the
> console.

My guess is that the card has not been configured quite correctly.  GBit
Ethernet has the concept of "control" packets which can flow back and forth even
when you are not transmitting any data.  My guess is that the FreeBSD/Alpha
system is spewing these out as GBit rate and flooding the other machine with
spurious interrupt handling!


> A ping results in very few returned packets, and with times vary from a
> few humdred ms to several seconds. When the other box is FreeBSD/alpha is see
> "wx0: receive sequence error" repeated MANY MANY times.

This is consistent with the above comment...

> I suspected platform
> differences are the problem so I searched for "long" in the driver files. I
> found "long" and "u_long" in use in both if_wx.c and if_wxvar.h, so I replaced
> them with "int" and "unsigned int" respectively. I know long and int are 4bytes
> on i386, however long is 8 bytes on Alpha. u_long is something I'm not familiar
> with so assume its short for unsigned long and thus unsugned int would be the


long/u_long are indeed 8 bytes on FreeBSD Alpha.  When they refer to a 32-bit
device register you should change them to int32_t and uint32_t (see
sys/inttypes.h) variables to be EXPLICIT about the size!

> proper replacement. I recompiled after my changed and got a few warnings about
> wrong pointer size so it would appear so other file linked against has a similar
> problem. Once I booted with the modified driver I got MUCH better results. A few
> packets are dropped (14% packet loss on a 540 packet ping), but those returned
> average 0.263ms. Its about half that when its FreeBSD/i386 connecting to NT, and
> without packet loss. The NT box has about 80% kernel CPU usage when the link is
> up, which should not be teh case, but at least the box is responsive. Is there
> anyone on this mailing list that would be in the position to look into this in
> more detail? As it is, the Intel gigabit driver is useless on Alpha until this
> is fixed.

Looks like the MAC/PHY setup is still not right!  Probably something being
mangled still w.r.t 32-bit/64-bit operation.  A closer examination of the
MAX/PHY setup code is in order...

Tony


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-alpha" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.30.0104061754280.19941-100000>