In trying out the driver, I noticed that, no matter what I did, I could not get a 1000FD connection. Even if I forced it and my switch is advertising it, the PHY would only set to half-duplex. I would see this in the output of ifconfig:
media: autoselect (1000baseT <half-duplex>)
media: 1000baseT <full-duplex> (1000baseT <half-duplex>)
I took at look at the code and found spots in Register.h that look to have accidentally had HD and FD bits swapped according to the BCM5722 Programmer's Guide (I found some in 10, 100, and 1000 modes for advertisement and negotiation, as well as mode set), and the section of PHY.cpp that sets the PHY mode was setting 1000HD register bits for both 1000HD and 1000FD mode. I fixed those and added my network controller to the model list (0x1691). Upon testing the modifications, the card is recognized and model name is output in the system logs, and 1000FD appears to be set correctly.
media: autoselect (1000baseT <full-duplex>)
My switch also reports 1000baseT FDX operation.
I attached the modified files below in a zip.
Please feel free to double check any changes I made. I'm not really a programmer, but I know enough to be able to follow what's happening in source code, so hopefully I didn't break anything. But it appears to work correctly. Thanks so much for creating this driver! I was ripping my hair out trying to get my card to work in Lion with AppleBCM5701Ethernet to no avail, as the previously hex edited driver that worked in SL had unresolved symbol linking errors in Lion.
oh thanks! I've confirmed with the programmer's guide on those registers.
damn, silly mistakes, how could I get those things mixed,
I'll review the changes, and bring it in after testing it.
again, thanks for your time and effort on this
* p/s: I have less time for this right now and actually didn't boot osx for over 2 months now, sorry if it takes a long time for my reply, I do check the forum regularly though