For those on Ubuntu 13.10 with kernel 3.11, problem is caused by changes to rt2x00pci kernel module: https://bugzilla.kernel.org/show_bug.cgi?id=61621. Patch has been submitted to kernel developers: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/drivers/net/wireless/rt2x00/rt2x00pci.c?id=9483f40d8d01918b399b4e24d0c1111db0afffeb. To get it to work before those changes are included in Ubuntu, rebuild the kernel with the patch:
Rebuild kernel with patch: ------------------------ apt-get source linux-image-$(uname -r) sudo apt-get build-dep linux-image-$(uname -r) cd linux-3.11.0 patch -p1 < ../rt2x00pci.diff fakeroot debian/rules clean fakeroot debian/rules binary-headers binary-generic
Install: ------------------------ cd .. sudo dpkg -i linux-headers* sudo dpkg -i linux-image* sudo reboot
Copy everything between ===== to rt2x00pci.diff
================================================================================================== diff --git a/drivers/net/wireless/rt2x00/rt2x00pci.c b/drivers/net/wireless/rt2x00/rt2x00pci.c index 76d95de..dc49e52 100644 --- a/drivers/net/wireless/rt2x00/rt2x00pci.c +++ b/drivers/net/wireless/rt2x00/rt2x00pci.c @@ -105,13 +105,11 @@ int rt2x00pci_probe(struct pci_dev *pci_dev, const struct rt2x00_ops *ops) goto exit_release_regions; }
- pci_enable_msi(pci_dev); - hw = ieee80211_alloc_hw(sizeof(struct rt2x00_dev), ops->hw); if (!hw) { rt2x00_probe_err("Failed to allocate hardware\n"); retval = -ENOMEM; - goto exit_disable_msi; + goto exit_release_regions; }
pci_set_drvdata(pci_dev, hw); @@ -152,9 +150,6 @@ exit_free_reg: exit_free_device: ieee80211_free_hw(hw);
-exit_disable_msi: - pci_disable_msi(pci_dev); - exit_release_regions: pci_release_regions(pci_dev);
@@ -179,8 +174,6 @@ void rt2x00pci_remove(struct pci_dev *pci_dev) rt2x00pci_free_reg(rt2x00dev); ieee80211_free_hw(hw);
- pci_disable_msi(pci_dev); - /* * Free the PCI device data. */ ==================================================================================================
For those on Ubuntu 13.10 with kernel 3.11, problem is caused by changes to rt2x00pci kernel module: https:/ /bugzilla. kernel. org/show_ bug.cgi? id=61621. Patch has been submitted to kernel developers: https:/ /git.kernel. org/cgit/ linux/kernel/ git/torvalds/ linux.git/ commit/ drivers/ net/wireless/ rt2x00/ rt2x00pci. c?id=9483f40d8d 01918b399b4e24d 0c1111db0afffeb. To get it to work before those changes are included in Ubuntu, rebuild the kernel with the patch:
Rebuild kernel with patch: ------- ------- ---
-------
apt-get source linux-image-$(uname -r)
sudo apt-get build-dep linux-image-$(uname -r)
cd linux-3.11.0
patch -p1 < ../rt2x00pci.diff
fakeroot debian/rules clean
fakeroot debian/rules binary-headers binary-generic
Install: ------- ------- ---
-------
cd ..
sudo dpkg -i linux-headers*
sudo dpkg -i linux-image*
sudo reboot
Copy everything between ===== to rt2x00pci.diff
======= ======= ======= ======= ======= ======= ======= ======= ======= ======= ======= ======= ======= ======= net/wireless/ rt2x00/ rt2x00pci. c b/drivers/ net/wireless/ rt2x00/ rt2x00pci. c net/wireless/ rt2x00/ rt2x00pci. c net/wireless/ rt2x00/ rt2x00pci. c probe(struct pci_dev *pci_dev, const struct rt2x00_ops *ops) regions;
diff --git a/drivers/
index 76d95de..dc49e52 100644
--- a/drivers/
+++ b/drivers/
@@ -105,13 +105,11 @@ int rt2x00pci_
goto exit_release_
}
- pci_enable_ msi(pci_ dev); alloc_hw( sizeof( struct rt2x00_dev), ops->hw); probe_err( "Failed to allocate hardware\n"); regions;
-
hw = ieee80211_
if (!hw) {
rt2x00_
retval = -ENOMEM;
- goto exit_disable_msi;
+ goto exit_release_
}
pci_set_ drvdata( pci_dev, hw); free_hw( hw);
@@ -152,9 +150,6 @@ exit_free_reg:
exit_free_device:
ieee80211_
-exit_disable_msi: msi(pci_ dev); regions: regions( pci_dev) ;
- pci_disable_
-
exit_release_
pci_release_
@@ -179,8 +174,6 @@ void rt2x00pci_ remove( struct pci_dev *pci_dev) free_reg( rt2x00dev) ; free_hw( hw);
rt2x00pci_
ieee80211_
- pci_disable_ msi(pci_ dev); ======= ======= ======= ======= ======= ======= ======= ======= ======= ======= ======= ======= =======
-
/*
* Free the PCI device data.
*/
=======