 |
Saturday, February 21, 2004 |
Got it all working. Tomorrow I'll clean up the code and get rid of
routines that I duped in the subclass for the purposes of testing.
Here's what I discovered...
1. Media selection and setting
I could use all of the standard MII routines that I had already
developed. Originally I was trying to use the built-in NWAY register,
but it was not working well. I could use it to force speed/duplex, but
I could never successfully autonegotiate. So I commented out all those
routines that used the special PNIC NWAY register and just did generic
MII stuff. One gotcha... after the media selection is made, CSR6 and
friends still need to be adjusted appropriately. MII alone isn't enough
to make it work...
2. Transfer stalls
When doing stress tests, the driver kept stalling. I tracked it down to
the rxHead variable falling out of synch with the descriptor list. The
housekeeping routine that was supposed to keep all of that up-to-date
had a logic bug (two of them, actually). Fixing this routine eliminated
the stalls. This routine lives in the parent class, so it will likely
resolve some stalls I saw with other chipsets.
11:55:55 PM
|
|
I've narrowed down the problem to the "setMedium" routine that handles
setting all the bits for speed and duplex. Works okay for 10/half but
doesn't autoneg a faster connection.
1:27:11 PM
|
|
I've been fighting my code the last few days trying to get the PNIC to
work under darwin-x86. It's been failing in weird ways that my
troubleshooting has only made worse. So what did I do to fix this?
Nothing yet, but I went to some OLD code I had released back in May
2002. It was my first release under darwin-ppc that supported the PNIC.
I copied it over to my darwin 7.x box, edited the makefile to work with
the old directory structure, compiled it for i386 (and fixed lots of
ugly things that gcc 2.95 forgave) and ran it. It works just
beautifully.
So now I have code that works to which I may compare the "new" code
that doesn't work. I'll knock this one out today... I think. :)
11:54:52 AM
|
|
© Copyright 2004 Chuck Remes.
|
|
|