Bug 196347

Summary: r6040 based nic unusable - speed & state unknown (device busy)
Product: Drivers Reporter: jose1711
Component: NetworkAssignee: drivers_network (drivers_network)
Status: RESOLVED INVALID    
Severity: normal CC: jose1711
Priority: P1    
Hardware: IA-32   
OS: Linux   
Kernel Version: 4.9.36 Subsystem:
Regression: No Bisected commit-id:

Description jose1711 2017-07-12 20:24:31 UTC
hello,

my system is a microclient jr mx - soc with vortex86 cpu. i remember that some years ago (before the filesystem corruption), network card was working without any problems.

after installation of slackware-current, this is no longer the case.

also, it's interesting how mii-tool sees the link, but ethtool fails to do so. issue shows similar symptoms to https://bugzilla.kernel.org/show_bug.cgi?id=54861 but this is for kernel 4.x.

# uname -a
Linux brano 4.9.36 #2 Wed Jul 5 19:16:35 CDT 2017 i586 05/08 Vortex86 SoC GNU/Linux

# dhclient -v eth2
Internet Systems Consortium DHCP Client 4.3.5
Copyright 2004-2016 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

SIOCSIFFLAGS: Device or resource busy
SIOCSIFFLAGS: Device or resource busy
Listening on LPF/eth2/00:1b:eb:64:05:20
Sending on   LPF/eth2/00:1b:eb:64:05:20
Sending on   Socket/fallback
DHCPDISCOVER on eth2 to 255.255.255.255 port 67 interval 6
send_packet: Network is down
dhclient.c:2303: Failed to send 300 byte long packet over eth2 interface.
receive_packet failed on eth2: Network is down
DHCPDISCOVER on eth2 to 255.255.255.255 port 67 interval 13
send_packet: Network is down
dhclient.c:2303: Failed to send 300 byte long packet over eth2 interface.

# ip a:
2: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:1b:eb:64:05:20 brd ff:ff:ff:ff:ff:ff

# lspci -v:
00:08.0 Ethernet controller: RDC Semiconductor, Inc. R6040 MAC Controller
	Flags: bus master, medium devsel, latency 128, IRQ 15
	I/O ports at ec00 [size=256]
	Memory at febdb400 (32-bit, non-prefetchable) [size=256]
	Expansion ROM at febc0000 [disabled] [size=64K]
	Kernel driver in use: r6040
	Kernel modules: r6040

# mii-tool -v:
eth2: negotiated 100baseTx-FD, link ok
  product info: vendor 00:0b:b4, model 3 rev 1
  basic mode:   autonegotiation enabled
  basic status: autonegotiation complete, link ok
  capabilities: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
  advertising:  100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control
  link partner: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD

# ethtool -v:
Settings for eth2:
        Supported ports: [ TP MII ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
        Supported pause frame use: No
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
        Advertised pause frame use: No
        Advertised auto-negotiation: Yes
        Speed: Unknown!
        Duplex: Unknown! (255)
        Port: MII
        PHYAD: 1
        Transceiver: internal
        Auto-negotiation: on
        Link detected: no

# relevant lines from dmesg:
[    9.552349] libphy: r6040_eth_mii: probed
[    9.618774] Generic PHY 0000:00:08.0-0:01: attached PHY driver [Generic PHY] (mii_bus:phy_addr=0000:00:08.0-0:01, irq=-1)
[   12.374373] r6040 0000:00:08.0 eth2: renamed from eth126
[  372.509803] genirq: Flags mismatch irq 15. 00000080 (eth2) vs. 00000000 (platform[pata_legacy.1])
[  372.512075] genirq: Flags mismatch irq 15. 00000080 (eth2) vs. 00000000 (platform[pata_legacy.1])

kernel is distribution vanilla 4.9.36 non-smp huge (https://mirrors.slackware.com/slackware/slackware-current/source/k/config-x86/config-huge-4.9.36)
Comment 1 jose1711 2017-07-13 05:52:15 UTC
with freshly compiled 4.12.0 this is no longer an issue. dhclient picks up ip address, ethtool shows correct speed, mode and is able to detect the link.