Petko Manolov wrote:


Definitly a good idea to set that - although nothing in the driver accesses it :-)


Well, not directly. However, pegasus_get/set_settings() is doing so through mii_ethtool_gset() for example. Look at drivers/net/mii.c;

ahh, it all makes sense now :) and yes, the original set_carrier now works fine on my SMC adapter.

It was also accessing MII_BMSR (0x01) where the manufacturer's driver accesses register 0x45

I did just modify my version of set_carrier() a little -

-       __u8 data[4] = { 0x01, 0x00, 0x04, 0x45 };
+       __u8 data[4] = { pegasus->phy, 0x00, 0x04, 0x45 };

and

-       if (regdi & 0x20)
+       if (le16_to_cpu(regdi) & 0x20)

set_carrier was using pegasus->phy which should be set correctly.....

This sequence didn't look correct to me while i was staring at the ADMTek's documents, but didn't have the time to verify that either.

mmmm... there are more get|set_register calls in read_mii_word, and I did wonder, but at the time the intention was to emulate the SMC driver's code.... Now that the real bug is squashed, the above is obsolete anyway.

--
WA Network Maintenance            I can tell a computer
http://www.wanm.com.au            to do anything!
PO Box 492,                       I just wish they'd
Bridgetown 6255.                  listen to me!
Phone: 04-1798-1973   Fax: 04-0929-1138



-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to