Subject: Re: Linksys Gigabit USB2.0 adapter (asix) regression

From: Erik Slagter <[email-masked]>
Date: Sat, 04 Aug 2007 18:24:06 +0200

David Hollis wrote:

>> They are either garbled are they are not passed on the wire. The
>> transmitted packets are shown by tshark, but a tshark run on "the other
>> end of the line" does not show them.
>>
>> Platform is indeed x86, to be precise: fedora 7, kernel 2.6.22-rc6, cpu
>> pentium M, dell laptop inspiron 9300, ICH6.
>>
>> If you want me to test something please yell, it's no trouble at all to
>> change a few lines in the driver's source and recompile the module.
>> 
> Could you send me a complete dmesg dump when the driver is compiled with
> DEBUG enabled (at least from then usb logs that the device was inserted
> to the end).  I'll need to see what it reports the values of the
> registers.

Please see attachment.

> Have you tried using the F7 2.6.22 kernel?  I know that has worked fine
> for me on my system.

I tried vanilla 2.6.22 and now 2.6.23-rc1

>> Please note I cannot send mail to you: "(conversation with
>> dhollis.dyndns.org[71.251.104.159] timed out while sending MAIL FROM)"
> 
> I've fixed that issue so my mail delivery isn't sporadic.

I still got it last week.
usb 1-8: new high speed USB device using ehci_hcd and address 11
usb 1-8: configuration #1 chosen from 1 choice
usb%d: asix_read_cmd() cmd=0x1e value=0x0000 index=0x0000 size=1
drivers/net/usb/asix.c: GPIO Status: 0x0002
usb%d: asix_write_cmd() cmd=0x0d value=0x0000 index=0x0000 size=0
usb%d: asix_read_cmd() cmd=0x0b value=0x0017 index=0x0000 size=2
usb%d: asix_write_cmd() cmd=0x0e value=0x0000 index=0x0000 size=0
drivers/net/usb/asix.c: EEPROM index 0x17 is 0x0580
drivers/net/usb/asix.c: GPIO0: 0, PhyMode: 0
usb%d: asix_write_gpio() - value = 0x008c
usb%d: asix_write_cmd() cmd=0x1f value=0x008c index=0x0000 size=0
usb%d: asix_write_gpio() - value = 0x003c
usb%d: asix_write_cmd() cmd=0x1f value=0x003c index=0x0000 size=0
usb%d: asix_write_gpio() - value = 0x001c
usb%d: asix_write_cmd() cmd=0x1f value=0x001c index=0x0000 size=0
usb%d: asix_write_gpio() - value = 0x003c
usb%d: asix_write_cmd() cmd=0x1f value=0x003c index=0x0000 size=0
usb%d: asix_write_cmd() cmd=0x20 value=0x0000 index=0x0000 size=0
usb%d: asix_write_cmd() cmd=0x20 value=0x0048 index=0x0000 size=0
usb%d: asix_write_rx_ctl() - mode = 0x0000
usb%d: asix_write_cmd() cmd=0x10 value=0x0000 index=0x0000 size=0
usb%d: asix_read_cmd() cmd=0x13 value=0x0000 index=0x0000 size=6
usb%d: asix_get_phy_addr()
usb%d: asix_read_cmd() cmd=0x19 value=0x0000 index=0x0000 size=2
usb%d: asix_get_phy_addr() returning 0x18e0
usb%d: asix_write_cmd() cmd=0x06 value=0x0000 index=0x0000 size=0
usb%d: asix_read_cmd() cmd=0x07 value=0x0018 index=0x0002 size=2
usb%d: asix_write_cmd() cmd=0x0a value=0x0000 index=0x0000 size=0
usb%d: asix_mdio_read() phy_id=0x18, loc=0x02, returns=0x0141
usb%d: asix_write_cmd() cmd=0x06 value=0x0000 index=0x0000 size=0
usb%d: asix_read_cmd() cmd=0x07 value=0x0018 index=0x0003 size=2
usb%d: asix_write_cmd() cmd=0x0a value=0x0000 index=0x0000 size=0
usb%d: asix_mdio_read() phy_id=0x18, loc=0x03, returns=0x0cc2
drivers/net/usb/asix.c: PHYID=0x01410cc2
usb%d: marvell_phy_init()
usb%d: asix_write_cmd() cmd=0x06 value=0x0000 index=0x0000 size=0
usb%d: asix_read_cmd() cmd=0x07 value=0x0018 index=0x001b size=2
usb%d: asix_write_cmd() cmd=0x0a value=0x0000 index=0x0000 size=0
usb%d: asix_mdio_read() phy_id=0x18, loc=0x1b, returns=0x848f
usb%d: MII_MARVELL_STATUS = 0x848f
usb%d: asix_mdio_write() phy_id=0x18, loc=0x14, val=0x0082
usb%d: asix_write_cmd() cmd=0x06 value=0x0000 index=0x0000 size=0
usb%d: asix_write_cmd() cmd=0x08 value=0x0018 index=0x0014 size=2
usb%d: asix_write_cmd() cmd=0x0a value=0x0000 index=0x0000 size=0
usb%d: asix_write_cmd() cmd=0x06 value=0x0000 index=0x0000 size=0
usb%d: asix_read_cmd() cmd=0x07 value=0x0018 index=0x0018 size=2
usb%d: asix_write_cmd() cmd=0x0a value=0x0000 index=0x0000 size=0
usb%d: asix_mdio_read() phy_id=0x18, loc=0x18, returns=0x4100
usb%d: MII_MARVELL_LED_CTRL (1) = 0x4100
usb%d: asix_mdio_write() phy_id=0x18, loc=0x18, val=0x4101
usb%d: asix_write_cmd() cmd=0x06 value=0x0000 index=0x0000 size=0
usb%d: asix_write_cmd() cmd=0x08 value=0x0018 index=0x0018 size=2
usb%d: asix_write_cmd() cmd=0x0a value=0x0000 index=0x0000 size=0
usb%d: asix_write_cmd() cmd=0x06 value=0x0000 index=0x0000 size=0
usb%d: asix_read_cmd() cmd=0x07 value=0x0018 index=0x0018 size=2
usb%d: asix_write_cmd() cmd=0x0a value=0x0000 index=0x0000 size=0
usb%d: asix_mdio_read() phy_id=0x18, loc=0x18, returns=0x4101
usb%d: MII_MARVELL_LED_CTRL (2) = 0x4101
usb%d: asix_mdio_write() phy_id=0x18, loc=0x00, val=0x9000
usb%d: asix_write_cmd() cmd=0x06 value=0x0000 index=0x0000 size=0
usb%d: asix_write_cmd() cmd=0x08 value=0x0018 index=0x0000 size=2
usb%d: asix_write_cmd() cmd=0x0a value=0x0000 index=0x0000 size=0
usb%d: asix_mdio_write() phy_id=0x18, loc=0x04, val=0x05e1
usb%d: asix_write_cmd() cmd=0x06 value=0x0000 index=0x0000 size=0
usb%d: asix_write_cmd() cmd=0x08 value=0x0018 index=0x0004 size=2
usb%d: asix_write_cmd() cmd=0x0a value=0x0000 index=0x0000 size=0
usb%d: asix_mdio_write() phy_id=0x18, loc=0x09, val=0x0200
usb%d: asix_write_cmd() cmd=0x06 value=0x0000 index=0x0000 size=0
usb%d: asix_write_cmd() cmd=0x08 value=0x0018 index=0x0009 size=2
usb%d: asix_write_cmd() cmd=0x0a value=0x0000 index=0x0000 size=0
usb%d: asix_write_cmd() cmd=0x06 value=0x0000 index=0x0000 size=0
usb%d: asix_read_cmd() cmd=0x07 value=0x0018 index=0x0000 size=2
usb%d: asix_write_cmd() cmd=0x0a value=0x0000 index=0x0000 size=0
usb%d: asix_mdio_read() phy_id=0x18, loc=0x00, returns=0x1000
usb%d: asix_mdio_write() phy_id=0x18, loc=0x00, val=0x1200
usb%d: asix_write_cmd() cmd=0x06 value=0x0000 index=0x0000 size=0
usb%d: asix_write_cmd() cmd=0x08 value=0x0018 index=0x0000 size=2
usb%d: asix_write_cmd() cmd=0x0a value=0x0000 index=0x0000 size=0
usb%d: asix_write_medium_mode() - mode = 0x0376
usb%d: asix_write_cmd() cmd=0x1b value=0x0376 index=0x0000 size=0
usb%d: asix_write_rx_ctl() - mode = 0x0088
usb%d: asix_write_cmd() cmd=0x10 value=0x0088 index=0x0000 size=0
eth2: register 'asix' at usb-0000:00:1d.7-8, ASIX AX88178 USB 2.0 Ethernet, 00:12:17:f2:1a:17
usbcore: registered new interface driver asix
eth2: asix_write_cmd() cmd=0x06 value=0x0000 index=0x0000 size=0
eth2: asix_read_cmd() cmd=0x07 value=0x0018 index=0x0001 size=2
eth2: asix_write_cmd() cmd=0x0a value=0x0000 index=0x0000 size=0
eth2: asix_mdio_read() phy_id=0x18, loc=0x01, returns=0x7949
eth2: asix_write_cmd() cmd=0x06 value=0x0000 index=0x0000 size=0
eth2: asix_read_cmd() cmd=0x07 value=0x0018 index=0x0001 size=2
eth2: asix_write_cmd() cmd=0x0a value=0x0000 index=0x0000 size=0
eth2: asix_mdio_read() phy_id=0x18, loc=0x01, returns=0x7949
eth2: ax88178_link_reset()
eth2: asix_write_cmd() cmd=0x06 value=0x0000 index=0x0000 size=0
eth2: asix_read_cmd() cmd=0x07 value=0x0018 index=0x0001 size=2
eth2: asix_write_cmd() cmd=0x0a value=0x0000 index=0x0000 size=0
eth2: asix_mdio_read() phy_id=0x18, loc=0x01, returns=0x7949
eth2: asix_write_cmd() cmd=0x06 value=0x0000 index=0x0000 size=0
eth2: asix_read_cmd() cmd=0x07 value=0x0018 index=0x0001 size=2
eth2: asix_write_cmd() cmd=0x0a value=0x0000 index=0x0000 size=0
eth2: asix_mdio_read() phy_id=0x18, loc=0x01, returns=0x7949
eth2: link down
eth2: asix_write_cmd() cmd=0x06 value=0x0000 index=0x0000 size=0
eth2: asix_read_cmd() cmd=0x07 value=0x0018 index=0x0004 size=2
eth2: asix_write_cmd() cmd=0x0a value=0x0000 index=0x0000 size=0
eth2: asix_mdio_read() phy_id=0x18, loc=0x04, returns=0x05e1
eth2: asix_write_cmd() cmd=0x06 value=0x0000 index=0x0000 size=0
eth2: asix_read_cmd() cmd=0x07 value=0x0018 index=0x0009 size=2
eth2: asix_write_cmd() cmd=0x0a value=0x0000 index=0x0000 size=0
eth2: asix_mdio_read() phy_id=0x18, loc=0x09, returns=0x0200
eth2: asix_write_cmd() cmd=0x06 value=0x0000 index=0x0000 size=0
eth2: asix_read_cmd() cmd=0x07 value=0x0018 index=0x0000 size=2
eth2: asix_write_cmd() cmd=0x0a value=0x0000 index=0x0000 size=0
eth2: asix_mdio_read() phy_id=0x18, loc=0x00, returns=0x1000
eth2: asix_write_cmd() cmd=0x06 value=0x0000 index=0x0000 size=0
eth2: asix_read_cmd() cmd=0x07 value=0x0018 index=0x0005 size=2
eth2: asix_write_cmd() cmd=0x0a value=0x0000 index=0x0000 size=0
eth2: asix_mdio_read() phy_id=0x18, loc=0x05, returns=0x0000
eth2: asix_write_cmd() cmd=0x06 value=0x0000 index=0x0000 size=0
eth2: asix_read_cmd() cmd=0x07 value=0x0018 index=0x0009 size=2
eth2: asix_write_cmd() cmd=0x0a value=0x0000 index=0x0000 size=0
eth2: asix_mdio_read() phy_id=0x18, loc=0x09, returns=0x0200
eth2: asix_write_cmd() cmd=0x06 value=0x0000 index=0x0000 size=0
eth2: asix_read_cmd() cmd=0x07 value=0x0018 index=0x000a size=2
eth2: asix_write_cmd() cmd=0x0a value=0x0000 index=0x0000 size=0
eth2: asix_mdio_read() phy_id=0x18, loc=0x0a, returns=0x0000
eth2: ax88178_link_reset() speed: 10 duplex: 0 setting mode to 0x0174
eth2: asix_write_medium_mode() - mode = 0x0174
eth2: asix_write_cmd() cmd=0x1b value=0x0174 index=0x0000 size=0
eth2: asix_write_cmd() cmd=0x06 value=0x0000 index=0x0000 size=0
eth2: asix_read_cmd() cmd=0x07 value=0x0018 index=0x0019 size=2
eth2: asix_write_cmd() cmd=0x0a value=0x0000 index=0x0000 size=0
eth2: asix_mdio_read() phy_id=0x18, loc=0x19, returns=0x0000
eth2: marvell_led_status() read 0x0000
eth2: marvell_led_status() writing 0x02f0
eth2: asix_mdio_write() phy_id=0x18, loc=0x19, val=0x02f0
eth2: asix_write_cmd() cmd=0x06 value=0x0000 index=0x0000 size=0
eth2: asix_write_cmd() cmd=0x08 value=0x0018 index=0x0019 size=2
eth2: asix_write_cmd() cmd=0x0a value=0x0000 index=0x0000 size=0
eth2: asix_write_cmd_async() cmd=0x10 value=0x0088 index=0x0000 size=0
eth2: asix_write_cmd_async() cmd=0x16 value=0x0000 index=0x0000 size=8
eth2: asix_write_cmd_async() cmd=0x10 value=0x0098 index=0x0000 size=0
eth2: asix_write_cmd_async() cmd=0x16 value=0x0000 index=0x0000 size=8
eth2: asix_write_cmd_async() cmd=0x10 value=0x0098 index=0x0000 size=0
r8169: eth1: link down
eth2: Link Status is: 1
eth2: ax88178_link_reset()
eth2: asix_write_cmd() cmd=0x06 value=0x0000 index=0x0000 size=0
eth2: asix_read_cmd() cmd=0x07 value=0x0018 index=0x0001 size=2
eth2: asix_write_cmd() cmd=0x0a value=0x0000 index=0x0000 size=0
eth2: asix_mdio_read() phy_id=0x18, loc=0x01, returns=0x796d
eth2: asix_write_cmd() cmd=0x06 value=0x0000 index=0x0000 size=0
eth2: asix_read_cmd() cmd=0x07 value=0x0018 index=0x0001 size=2
eth2: asix_write_cmd() cmd=0x0a value=0x0000 index=0x0000 size=0
eth2: asix_mdio_read() phy_id=0x18, loc=0x01, returns=0x796d
eth2: asix_write_cmd() cmd=0x06 value=0x0000 index=0x0000 size=0
eth2: asix_read_cmd() cmd=0x07 value=0x0018 index=0x0004 size=2
eth2: asix_write_cmd() cmd=0x0a value=0x0000 index=0x0000 size=0
eth2: asix_mdio_read() phy_id=0x18, loc=0x04, returns=0x05e1
eth2: asix_write_cmd() cmd=0x06 value=0x0000 index=0x0000 size=0
eth2: asix_read_cmd() cmd=0x07 value=0x0018 index=0x0005 size=2
eth2: asix_write_cmd() cmd=0x0a value=0x0000 index=0x0000 size=0
eth2: asix_mdio_read() phy_id=0x18, loc=0x05, returns=0xc5e1
eth2: asix_write_cmd() cmd=0x06 value=0x0000 index=0x0000 size=0
eth2: asix_read_cmd() cmd=0x07 value=0x0018 index=0x000a size=2
eth2: asix_write_cmd() cmd=0x0a value=0x0000 index=0x0000 size=0
eth2: asix_mdio_read() phy_id=0x18, loc=0x0a, returns=0x3800
eth2: link up, 1000Mbps, full-duplex, lpa 0xC5E1
eth2: asix_write_cmd() cmd=0x06 value=0x0000 index=0x0000 size=0
eth2: asix_read_cmd() cmd=0x07 value=0x0018 index=0x0004 size=2
eth2: asix_write_cmd() cmd=0x0a value=0x0000 index=0x0000 size=0
eth2: asix_mdio_read() phy_id=0x18, loc=0x04, returns=0x05e1
eth2: asix_write_cmd() cmd=0x06 value=0x0000 index=0x0000 size=0
eth2: asix_read_cmd() cmd=0x07 value=0x0018 index=0x0009 size=2
eth2: asix_write_cmd() cmd=0x0a value=0x0000 index=0x0000 size=0
eth2: asix_mdio_read() phy_id=0x18, loc=0x09, returns=0x0200
eth2: asix_write_cmd() cmd=0x06 value=0x0000 index=0x0000 size=0
eth2: asix_read_cmd() cmd=0x07 value=0x0018 index=0x0000 size=2
eth2: asix_write_cmd() cmd=0x0a value=0x0000 index=0x0000 size=0
eth2: asix_mdio_read() phy_id=0x18, loc=0x00, returns=0x1000
eth2: asix_write_cmd() cmd=0x06 value=0x0000 index=0x0000 size=0
eth2: asix_read_cmd() cmd=0x07 value=0x0018 index=0x0005 size=2
eth2: asix_write_cmd() cmd=0x0a value=0x0000 index=0x0000 size=0
eth2: asix_mdio_read() phy_id=0x18, loc=0x05, returns=0xc5e1
eth2: asix_write_cmd() cmd=0x06 value=0x0000 index=0x0000 size=0
eth2: asix_read_cmd() cmd=0x07 value=0x0018 index=0x0009 size=2
eth2: asix_write_cmd() cmd=0x0a value=0x0000 index=0x0000 size=0
eth2: asix_mdio_read() phy_id=0x18, loc=0x09, returns=0x0200
eth2: asix_write_cmd() cmd=0x06 value=0x0000 index=0x0000 size=0
eth2: asix_read_cmd() cmd=0x07 value=0x0018 index=0x000a size=2
eth2: asix_write_cmd() cmd=0x0a value=0x0000 index=0x0000 size=0
eth2: asix_mdio_read() phy_id=0x18, loc=0x0a, returns=0x3800
eth2: ax88178_link_reset() speed: 1000 duplex: 1 setting mode to 0x037f
eth2: asix_write_medium_mode() - mode = 0x037f
eth2: asix_write_cmd() cmd=0x1b value=0x037f index=0x0000 size=0
eth2: asix_write_cmd() cmd=0x06 value=0x0000 index=0x0000 size=0
eth2: asix_read_cmd() cmd=0x07 value=0x0018 index=0x0019 size=2
eth2: asix_write_cmd() cmd=0x0a value=0x0000 index=0x0000 size=0
eth2: asix_mdio_read() phy_id=0x18, loc=0x19, returns=0x02f0
eth2: marvell_led_status() read 0x02f0
eth2: marvell_led_status() writing 0x03e0
eth2: asix_mdio_write() phy_id=0x18, loc=0x19, val=0x03e0
eth2: asix_write_cmd() cmd=0x06 value=0x0000 index=0x0000 size=0
eth2: asix_write_cmd() cmd=0x08 value=0x0018 index=0x0019 size=2
eth2: asix_write_cmd() cmd=0x0a value=0x0000 index=0x0000 size=0
device eth2 entered promiscuous mode
eth2: asix_write_cmd_async() cmd=0x10 value=0x0089 index=0x0000 size=0
eth2: asix_write_cmd_async() cmd=0x10 value=0x0089 index=0x0000 size=0
device eth2 left promiscuous mode
eth2: asix_write_cmd_async() cmd=0x16 value=0x0000 index=0x0000 size=8
eth2: asix_write_cmd_async() cmd=0x10 value=0x0098 index=0x0000 size=0
eth2: asix_write_cmd_async() cmd=0x16 value=0x0000 index=0x0000 size=8
eth2: asix_write_cmd_async() cmd=0x10 value=0x0098 index=0x0000 size=0
eth2: asix_write_cmd_async() cmd=0x16 value=0x0000 index=0x0000 size=8
eth2: asix_write_cmd_async() cmd=0x10 value=0x0098 index=0x0000 size=0
eth2: asix_write_cmd_async() cmd=0x16 value=0x0000 index=0x0000 size=8
eth2: asix_write_cmd_async() cmd=0x10 value=0x0098 index=0x0000 size=0
eth2: asix_write_cmd_async() cmd=0x16 value=0x0000 index=0x0000 size=8
eth2: asix_write_cmd_async() cmd=0x10 value=0x0098 index=0x0000 size=0
eth2: asix_write_cmd_async() cmd=0x16 value=0x0000 index=0x0000 size=8
eth2: asix_write_cmd_async() cmd=0x10 value=0x0098 index=0x0000 size=0
device eth2 entered promiscuous mode
eth2: asix_write_cmd_async() cmd=0x10 value=0x0089 index=0x0000 size=0
device eth2 left promiscuous mode
eth2: asix_write_cmd_async() cmd=0x16 value=0x0000 index=0x0000 size=8
eth2: asix_write_cmd_async() cmd=0x10 value=0x0098 index=0x0000 size=0