Bug 7126 - Pegasus driver failing for ADMtek 8515 network device
Pegasus driver failing for ADMtek 8515 network device
Status: RESOLVED CODE_FIX
Product: Drivers
Classification: Unclassified
Component: USB
i386 Linux
: P2 normal
Assigned To: Greg Kroah-Hartman
:
Depends on:
Blocks: USB
  Show dependency treegraph
 
Reported: 2006-09-08 12:34 UTC by Jose Gilberto Torres
Modified: 2008-08-08 04:01 UTC (History)
2 users (show)

See Also:
Kernel Version: 2.6.17-1.2174_FC5
Tree: Mainline
Regression: ---


Attachments

Description Jose Gilberto Torres 2006-09-08 12:34:08 UTC
Most recent kernel where this bug did not occur: Never
Distribution: Fedora Core 5
Hardware Environment:Fujitsu 2210 laptop with Targus Universal docking station
using a ADMtek 8515 network card
Software Environment:
Problem Description:
When attempting to run the pegasus driver on the ADMtek 8515 USB network card at
boot up I get these errors in dmesg.

pegasus 3-2.6:1.0: fail read_mii_word 

And returns my MAC address as 00:50:00:50:00:50 but the modules is loaded.

When I restarted the module I get these errors in the my logs
Sep  8 12:32:34 cheopa-laptop kernel: pegasus 3-2.6:1.0: fail read_eprom_word
Sep  8 12:32:34 cheopa-laptop kernel: pegasus 3-2.6:1.0: can't reset MAC
Sep  8 12:32:34 cheopa-laptop kernel: pegasus: probe of 3-2.6:1.0 failed with
error -5


Steps to reproduce:
Connect the Targus ACP50US Universal to one of the usb ports.
Boot up computer.
After bootup see the output from dmesg and /var/log/messages.
ifconfig -a , to see the MAC addresss.
lsmod | grep pegasus , to see the module is loaded in memory.
modprobe -r pegasus.
modprobe pegasus.
See the output from dmesg and /var/log/messages.
lsmod | grep pegasus , to see the module is loaded in memory.
Comment 1 Greg Kroah-Hartman 2006-09-09 00:33:17 UTC
Are you sure this device works properly?  Have you tried it in other machines?
Comment 2 Jose Gilberto Torres 2006-09-11 09:33:02 UTC
I found a Dell 360 precision workstation.  Hook it up and I got the exact
problem as my Fujitsu laptop.
Comment 3 Jose Gilberto Torres 2006-09-11 16:27:28 UTC
After poking around the driver code (pegasus.c) it seems like the driver is
unable to get the MAC address.  Within the mii_phy_probe it calls the
read_mii_word function to get the MAC address(I think).  It is called by the
following, around line number 1469 in pegasus.c.

read_mii_word(pegasus, i, MII_BMSR, &tmp);

Where pegasus is a stucture storing all the network card stuff.
i is a loop from 0 to 31.
MII_BMSR is the value it is looking for?
tmp is where the data is stored to.  

Maybe this is the problem or I'm looking in the wrong place?

Jose Torres
Comment 4 Sonic 275 2006-09-22 08:42:48 UTC
I encountered a very similar problem with my Dicota Replicator 2.0 (USB hub with
PS/2, serial, USB and Ethernet ports) containing an ADMTek 8515 as well.

I'm using a 2.6.15-26-386 kernel.
My device is well detected, everything works fine except for my Ethernet port,
which appears up and running in ifconfig and device management tools but doesn't
actually work and has a weird MAC address 00:05:00:05:00:05

This is an extract of my kernel log as I plug my device in my USB port :

Sep 22 17:04:22 localhost kernel: [17179656.040000] usb 1-1: new high speed USB
device using ehci_hcd and address 2
Sep 22 17:04:22 localhost kernel: [17179656.172000] hub 1-1:1.0: USB hub found
Sep 22 17:04:22 localhost kernel: [17179656.172000] hub 1-1:1.0: 7 ports detected
Sep 22 17:04:22 localhost kernel: [17179656.492000] usb 1-1.1: new low speed USB
device using ehci_hcd and address 3
Sep 22 17:04:23 localhost kernel: [17179656.828000] usb 1-1.2: new high speed
USB device using ehci_hcd and address 4
Sep 22 17:04:23 localhost kernel: [17179657.124000] pegasus: v0.6.12
(2005/01/13), Pegasus/Pegasus II USB Ethernet driver
Sep 22 17:04:23 localhost kernel: [17179657.156000] usb 1-1.7: new full speed
USB device using ehci_hcd and address 5
Sep 22 17:04:23 localhost kernel: [17179657.264000] usbcore: registered new
driver hiddev
Sep 22 17:04:23 localhost kernel: [17179657.292000] pegasus 1-1.2:1.0:
ctrl_callback, status -71
--(this message repeated thousands of times)
--(...)
Sep 22 17:04:23 localhost kernel: [17179657.360000] pegasus 1-1.2:1.0: fail
read_eprom_word
--(...)
Sep 22 17:04:24 localhost kernel: [17179657.516000] pegasus 1-1.2:1.0: fail
read_eprom_word
--(...)
Sep 22 17:04:24 localhost kernel: [17179657.516000] pegasus 1-1.2:1.0: setup
Pegasus II specific registers
Sep 22 17:04:24 localhost kernel: [17179657.688000] pegasus 1-1.2:1.0: fail
read_mii_word
Sep 22 17:04:24 localhost kernel: [17179657.688000] pegasus 1-1.2:1.0:
ctrl_callback, status -71
Sep 22 17:04:24 localhost kernel: [17179657.688000] pegasus 1-1.2:1.0: eth1,
ADMtek ADM8515 "Pegasus II" USB-2.0 Ethernet, 0$Sep 22 17:04:24 localhost
kernel: [17179657.688000] usbcore: registered new driver pegasus
Sep 22 17:04:24 localhost kernel: [17179657.692000] input: MCT USB PS/2 Keyboard
- PS/2 Mouse as /class/input/input4
Sep 22 17:04:24 localhost kernel: [17179657.692000] input: USB HID v1.00
Keyboard [MCT USB PS/2 Keyboard - PS/2 Mouse] on us$Sep 22 17:04:24 localhost
kernel: [17179657.700000] input: MCT USB PS/2 Keyboard - PS/2 Mouse as
/class/input/input5
Sep 22 17:04:24 localhost kernel: [17179657.700000] input,hiddev96: USB HID
v1.00 Mouse [MCT USB PS/2 Keyboard - PS/2 Mouse]$Sep 22 17:04:24 localhost
kernel: [17179657.700000] usbcore: registered new driver usbhid
Sep 22 17:04:24 localhost kernel: [17179657.700000]
drivers/usb/input/hid-core.c: v2.6:USB HID core driver
Sep 22 17:04:24 localhost kernel: [17179657.704000] usbcore: registered new
driver usbserial
Sep 22 17:04:24 localhost kernel: [17179657.704000]
drivers/usb/serial/usb-serial.c: USB Serial support registered for gener$Sep 22
17:04:24 localhost kernel: [17179657.704000] usbcore: registered new driver
usbserial_generic
Sep 22 17:04:24 localhost kernel: [17179657.704000]
drivers/usb/serial/usb-serial.c: USB Serial Driver core
Sep 22 17:04:24 localhost kernel: [17179657.776000]
drivers/usb/serial/usb-serial.c: USB Serial support registered for pl2303Sep 22
17:04:24 localhost kernel: [17179657.780000] pl2303 1-1.7:1.0: pl2303 converter
detected
Sep 22 17:04:24 localhost kernel: [17179657.784000] usb 1-1.7: pl2303 converter
now attached to ttyUSB0
Sep 22 17:04:24 localhost kernel: [17179657.784000] usbcore: registered new
driver pl2303
Sep 22 17:04:24 localhost kernel: [17179657.788000] drivers/usb/serial/pl2303.c:
Prolific PL2303 USB to serial adaptor driverSep 22 17:04:24 localhost kernel:
[17179658.348000] pl2303 ttyUSB0: pl2303_open - failed submitting interrupt urb,
error -28
Sep 22 17:04:26 localhost kernel: [17179659.688000] pegasus 1-1.2:1.0:
ctrl_callback, status -71
--(repeating forever, hundreds of times per second)
Sep 22 17:04:26 localhost kernel: [17179659.748000] pegasus 1-1.2:1.0: fail
read_mii_word
--(repeating forever, every 2 seconds)

Don't think this might help you, but this device always worked fine on my M$
Windows Operating System
Comment 5 Andrew Morton 2006-09-27 14:15:25 UTC
I merged pegasus-driver-failing-for-admtek-8515-network-device into -mm.  Please
test.
Comment 6 Sonic 275 2006-09-28 08:06:19 UTC
Yep, it works fine for me. Thanks a lot.

To make it simpler I didn't use the latest -mm patch, but instead reproduced the
content of the patch you commited (quoted as follows) to my current 2.6.15-26
kernel source

--- drivers/usb/net/pegasus.c 
+++ drivers/usb/net/pegasus.c  
@@ -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));
} 

Note You need to log in before you can comment on or make changes to this bug.