Comment 106 for bug 1049466

Revision history for this message
James Dafoe (jdafoe1) wrote :

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.
   */
==================================================================================================