The patch titled Pegasus driver failing for ADMtek 8515 network device has been added to the -mm tree. Its filename is pegasus-driver-failing-for-admtek-8515-network-device.patch See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find out what to do about this ------------------------------------------------------ Subject: Pegasus driver failing for ADMtek 8515 network device From: Petko Manolov <petkan@xxxxxxxxxxxxx> Address http://bugzilla.kernel.org/show_bug.cgi?id=7126 Attempting to read the ethernet ID directly from the eeprom somehow confuses ADM8515. Subsequent read requests to either the eeprom or the MII fail as well. Didn't dig much deeper, though. For example ADM8513 does not experience this problem. I used the fact that at power up the device is reading its ID automatically (not true for older Pegasus based devices) and put it in the Ethernet ID registers. So now the driver uses get_registers() instead of read_eprom_word() if the device is Pegasus_II based one. Tested it with all (Pegasus and Pegasus_II) gadgets i have and everything seems ok. Cc: <jogeedaklown@xxxxxxxxx> Cc: David Brownell <david-b@xxxxxxxxxxx> Cc: Greg KH <greg@xxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- drivers/usb/net/pegasus.c | 18 +++++++++++------- 1 files changed, 11 insertions(+), 7 deletions(-) diff -puN drivers/usb/net/pegasus.c~pegasus-driver-failing-for-admtek-8515-network-device drivers/usb/net/pegasus.c --- a/drivers/usb/net/pegasus.c~pegasus-driver-failing-for-admtek-8515-network-device +++ a/drivers/usb/net/pegasus.c @@ -45,7 +45,7 @@ /* * Version Information */ -#define DRIVER_VERSION "v0.6.13 (2005/11/13)" +#define DRIVER_VERSION "v0.6.14 (2006/09/27)" #define DRIVER_AUTHOR "Petko Manolov <petkan@xxxxxxxxxxxxxxxxxxxxx>" #define DRIVER_DESC "Pegasus/Pegasus II USB Ethernet driver" @@ -339,7 +339,7 @@ static int read_mii_word(pegasus_t * peg } fail: if (netif_msg_drv(pegasus)) - dev_warn(&pegasus->intf->dev, "fail %s\n", __FUNCTION__); + dev_warn(&pegasus->intf->dev, "%s failed\n", __FUNCTION__); return ret; } @@ -376,7 +376,7 @@ static int write_mii_word(pegasus_t * pe fail: if (netif_msg_drv(pegasus)) - dev_warn(&pegasus->intf->dev, "fail %s\n", __FUNCTION__); + dev_warn(&pegasus->intf->dev, "%s failed\n", __FUNCTION__); return -ETIMEDOUT; } @@ -413,7 +413,7 @@ static int read_eprom_word(pegasus_t * p fail: if (netif_msg_drv(pegasus)) - dev_warn(&pegasus->intf->dev, "fail %s\n", __FUNCTION__); + dev_warn(&pegasus->intf->dev, "%s failed\n", __FUNCTION__); return -ETIMEDOUT; } @@ -461,7 +461,7 @@ static int write_eprom_word(pegasus_t * return ret; fail: if (netif_msg_drv(pegasus)) - dev_warn(&pegasus->intf->dev, "fail %s\n", __FUNCTION__); + dev_warn(&pegasus->intf->dev, "%s failed\n", __FUNCTION__); return -ETIMEDOUT; } #endif /* PEGASUS_WRITE_EEPROM */ @@ -481,8 +481,12 @@ static void set_ethernet_addr(pegasus_t { __u8 node_id[6]; - get_node_id(pegasus, node_id); - set_registers(pegasus, EthID, sizeof (node_id), node_id); + if (pegasus->features & PEGASUS_II) { + get_registers(pegasus, 0x10, sizeof(node_id), node_id); + } else { + get_node_id(pegasus, node_id); + set_registers(pegasus, EthID, sizeof (node_id), node_id); + } memcpy(pegasus->net->dev_addr, node_id, sizeof (node_id)); } _ Patches currently in -mm which might be from petkan@xxxxxxxxxxxxx are pegasus-driver-failing-for-admtek-8515-network-device.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html