Updated: 10/2/04; 11:45:27 AM.
cremes' blog
An online journal covering my experiences with I/OKit, CoreAudio and OpenDarwin.
        

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    comment []



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    comment []



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    comment []



© Copyright 2004 Chuck Remes.
 
February 2004
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29            
Jan   Mar


My Programming Project Home Pages:

Helpful Radio Links:

Click here to visit the Radio UserLand website.

Click to see the XML version of this web page.

Click here to send an email to the editor of this weblog.