I spend a whole day thought this issue so its worth sharing.
This is what worked:
http://ubuntuforums.org/showthread.php?t=2008332&p=12604916#post12604916I built the patch to work with
http://www.kernel.org/pub/linux/kernel/projects/backports/stable/v3.9-rc2/compat-drivers-3.9-rc2-2-su.tar.bz2then, in the same directory as the bz2 file:
tar -xjvf compat-drivers-3.9-rc2-2-su.tar.bz2
cd compat-drivers-3.9-rc2-2-su
then copy the alx-patch file into the compat-drivers directory
then:
patch --dry-run -p1 < alx-patch.txt
and if no errors:
patch -p1 < alx-patch.txt
./scripts/driver-select alx
make
sudo make install
sudo modprobe alx
and you should be done
if you want to patch a different version of compat-drivers for whatever reason, just move the alx-patch file into drivers/net/ethernet/atheros/alx, cd to it, and instead of patch -p1, patch -p6.
Here is the alx-patch.txt file content, so you dont have to register to have access:
diff --git a/drivers/net/ethernet/atheros/alx/alx_ethtool.c b/drivers/net/ethernet/atheros/alx/alx_ethtool.c
index 074c640..b19950e 100644
--- a/drivers/net/ethernet/atheros/alx/alx_ethtool.c
+++ b/drivers/net/ethernet/atheros/alx/alx_ethtool.c
@@ -731,6 +731,7 @@ static int alx_diag_register(struct alx_adapter *adpt, u64 *data)
switch (ALX_DID(hw)) {
case ALX_DEV_ID_AR8161:
+ case ALX_DEV_ID_E2200:
case ALX_DEV_ID_AR8162:
case ALX_DEV_ID_AR8171:
case ALX_DEV_ID_AR8172:
diff --git a/drivers/net/ethernet/atheros/alx/alx_main.c b/drivers/net/ethernet/atheros/alx/alx_main.c
index 7fe3f4b..a8f33f1 100644
--- a/drivers/net/ethernet/atheros/alx/alx_main.c
+++ b/drivers/net/ethernet/atheros/alx/alx_main.c
@@ -57,6 +57,7 @@ static const char alx_drv_desc[] =
PCI_DEVICE(ALX_VENDOR_ID, device_id)}
static DEFINE_PCI_DEVICE_TABLE(alx_pci_tbl) = {
ALX_ETHER_DEVICE(ALX_DEV_ID_AR8161),
+ ALX_ETHER_DEVICE(ALX_DEV_ID_E2200),
ALX_ETHER_DEVICE(ALX_DEV_ID_AR8162),
ALX_ETHER_DEVICE(ALX_DEV_ID_AR8171),
ALX_ETHER_DEVICE(ALX_DEV_ID_AR8172),
@@ -1010,6 +1011,7 @@ static int alx_identify_hw(struct alx_adapter *adpt)
switch (ALX_DID(hw)) {
case ALX_DEV_ID_AR8161:
+ case ALX_DEV_ID_E2200:
case ALX_DEV_ID_AR8162:
case ALX_DEV_ID_AR8171:
case ALX_DEV_ID_AR8172:
diff --git a/drivers/net/ethernet/atheros/alx/alx_reg.h b/drivers/net/ethernet/atheros/alx/alx_reg.h
index 58177f3..0788aa8 100644
--- a/drivers/net/ethernet/atheros/alx/alx_reg.h
+++ b/drivers/net/ethernet/atheros/alx/alx_reg.h
@@ -25,6 +25,7 @@
/* pci dev-ids */
#define ALX_DEV_ID_AR8161 0x1091
+#define ALX_DEV_ID_E2200 0xe091
#define ALX_DEV_ID_AR8162 0x1090
#define ALX_DEV_ID_AR8171 0x10A1
#define ALX_DEV_ID_AR8172 0x10A0