Bug 79961 - AR8161 alx: Wired connection could not be established until re-insert alx kernel module or re-enable "networking" via network manager indicator
Summary: AR8161 alx: Wired connection could not be established until re-insert alx ker...
Status: NEW
Alias: None
Product: Drivers
Classification: Unclassified
Component: Network (show other bugs)
Hardware: x86-64 Linux
: P1 normal
Assignee: drivers_network@kernel-bugs.osdl.org
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-07-11 08:01 UTC by Edward Lin
Modified: 2016-03-07 15:14 UTC (History)
4 users (show)

See Also:
Kernel Version: > 3.5
Subsystem:
Regression: No
Bisected commit-id:


Attachments

Description Edward Lin 2014-07-11 08:01:21 UTC
The bug happens on Dell Inspiron One 2330 with AR8161 NIC.
System always fails to establish wired connection after boot.

System can't get DHCP IP .
And there is no response to ping when using static IP.

The bug only happens when inserting alx module for the first time.
Following methods can make AR8161 NIC work.
1. re-insert alx module
2. ifconfig eth0 down; ifconfig eth0 up
3. echo 1 > /sys/class/net/eth0/device/reset

I had tried to modify the driver like following,

diff --git a/drivers/net/ethernet/atheros/alx/main.c b/drivers/net/ethernet/atheros/alx/main.c
index c3c4c26..a55c4cc 100644
--- a/drivers/net/ethernet/atheros/alx/main.c
+++ b/drivers/net/ethernet/atheros/alx/main.c
@@ -951,6 +951,10 @@ reset:
 
 static int alx_open(struct net_device *netdev)
 {
+        hw->link_speed = SPEED_UNKNOWN;
+        hw->duplex = DUPLEX_UNKNOWN;
+        alx_reset_mac(hw);
+
        return __alx_open(netdev_priv(netdev), false);
 }

It seems that such modification can workaround this issue.
But I am not sure if there are any side effects.

I suspect it may be a hardware issue.
But this bug does not happen on Win7 with official driver [1].

More details can be found here: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1223647

[1] : http://www.dell.com/support/home/bm/en/bmbsdt1/Drivers/DriversDetails?driverid=T3VT7
Comment 1 Edward Lin 2014-07-11 08:04:48 UTC
I also found that the interrupt handler routine does not call when bug happens.

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