]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.5-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 29 Aug 2012 22:44:49 +0000 (15:44 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 29 Aug 2012 22:44:49 +0000 (15:44 -0700)
added patches:
ath9k-fix-decrypt_error-initialization-in-ath_rx_tasklet.patch
ath9k-stop-btcoex-on-device-suspend.patch
pci-ehci-fix-crash-during-hibernation-on-asus-computers.patch

queue-3.5/ath9k-fix-decrypt_error-initialization-in-ath_rx_tasklet.patch [new file with mode: 0644]
queue-3.5/ath9k-stop-btcoex-on-device-suspend.patch [new file with mode: 0644]
queue-3.5/pci-ehci-fix-crash-during-hibernation-on-asus-computers.patch [new file with mode: 0644]
queue-3.5/series

diff --git a/queue-3.5/ath9k-fix-decrypt_error-initialization-in-ath_rx_tasklet.patch b/queue-3.5/ath9k-fix-decrypt_error-initialization-in-ath_rx_tasklet.patch
new file mode 100644 (file)
index 0000000..5035aac
--- /dev/null
@@ -0,0 +1,54 @@
+From e1352fde5682ab1bdd2a9e5d75c22d1fe210ef77 Mon Sep 17 00:00:00 2001
+From: Lorenzo Bianconi <lorenzo.bianconi83@gmail.com>
+Date: Fri, 10 Aug 2012 11:00:24 +0200
+Subject: ath9k: fix decrypt_error initialization in ath_rx_tasklet()
+
+From: Lorenzo Bianconi <lorenzo.bianconi83@gmail.com>
+
+commit e1352fde5682ab1bdd2a9e5d75c22d1fe210ef77 upstream.
+
+ath_rx_tasklet() calls ath9k_rx_skb_preprocess() and ath9k_rx_skb_postprocess()
+in a loop over the received frames. The decrypt_error flag is
+initialized to false
+just outside ath_rx_tasklet() loop. ath9k_rx_accept(), called by
+ath9k_rx_skb_preprocess(),
+only sets decrypt_error to true and never to false.
+Then ath_rx_tasklet() calls ath9k_rx_skb_postprocess() and passes
+decrypt_error to it.
+So, after a decryption error, in ath9k_rx_skb_postprocess(), we can
+have a leftover value
+from another processed frame. In that case, the frame will not be marked with
+RX_FLAG_DECRYPTED even if it is decrypted correctly.
+When using CCMP encryption this issue can lead to connection stuck
+because of CCMP
+PN corruption and a waste of CPU time since mac80211 tries to decrypt an already
+deciphered frame with ieee80211_aes_ccm_decrypt.
+Fix the issue initializing decrypt_error flag at the begging of the
+ath_rx_tasklet() loop.
+
+Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi83@gmail.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/ath/ath9k/recv.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/ath/ath9k/recv.c
++++ b/drivers/net/wireless/ath/ath9k/recv.c
+@@ -1781,7 +1781,6 @@ int ath_rx_tasklet(struct ath_softc *sc,
+       struct ieee80211_hw *hw = sc->hw;
+       struct ieee80211_hdr *hdr;
+       int retval;
+-      bool decrypt_error = false;
+       struct ath_rx_status rs;
+       enum ath9k_rx_qtype qtype;
+       bool edma = !!(ah->caps.hw_caps & ATH9K_HW_CAP_EDMA);
+@@ -1803,6 +1802,7 @@ int ath_rx_tasklet(struct ath_softc *sc,
+       tsf_lower = tsf & 0xffffffff;
+       do {
++              bool decrypt_error = false;
+               /* If handling rx interrupt and flush is in progress => exit */
+               if ((sc->sc_flags & SC_OP_RXFLUSH) && (flush == 0))
+                       break;
diff --git a/queue-3.5/ath9k-stop-btcoex-on-device-suspend.patch b/queue-3.5/ath9k-stop-btcoex-on-device-suspend.patch
new file mode 100644 (file)
index 0000000..51837b0
--- /dev/null
@@ -0,0 +1,31 @@
+From e19f15ac6437624b6214b2f0ec0d69fb7eb205fa Mon Sep 17 00:00:00 2001
+From: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
+Date: Thu, 9 Aug 2012 12:37:26 +0530
+Subject: ath9k: stop btcoex on device suspend
+
+From: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
+
+commit e19f15ac6437624b6214b2f0ec0d69fb7eb205fa upstream.
+
+During suspend, the device will be moved to FULLSLEEP state.
+As btcoex is never been stopped, the btcoex timer is running
+and tries to access hw on fullsleep state. Fix that.
+
+Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/ath/ath9k/pci.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/net/wireless/ath/ath9k/pci.c
++++ b/drivers/net/wireless/ath/ath9k/pci.c
+@@ -313,6 +313,7 @@ static int ath_pci_suspend(struct device
+        * Otherwise the chip never moved to full sleep,
+        * when no interface is up.
+        */
++      ath9k_stop_btcoex(sc);
+       ath9k_hw_disable(sc->sc_ah);
+       ath9k_hw_setpower(sc->sc_ah, ATH9K_PM_FULL_SLEEP);
diff --git a/queue-3.5/pci-ehci-fix-crash-during-hibernation-on-asus-computers.patch b/queue-3.5/pci-ehci-fix-crash-during-hibernation-on-asus-computers.patch
new file mode 100644 (file)
index 0000000..b3bef91
--- /dev/null
@@ -0,0 +1,44 @@
+From 0b68c8e2c3afaf9807eb1ebe0ccfb3b809570aa4 Mon Sep 17 00:00:00 2001
+From: "Rafael J. Wysocki" <rjw@sisk.pl>
+Date: Sun, 12 Aug 2012 23:26:07 +0200
+Subject: PCI: EHCI: Fix crash during hibernation on ASUS computers
+
+From: "Rafael J. Wysocki" <rjw@sisk.pl>
+
+commit 0b68c8e2c3afaf9807eb1ebe0ccfb3b809570aa4 upstream.
+
+Commit dbf0e4c (PCI: EHCI: fix crash during suspend on ASUS
+computers) added a workaround for an ASUS suspend issue related to
+USB EHCI and a bug in a number of ASUS BIOSes that attempt to shut
+down the EHCI controller during system suspend if its PCI command
+register doesn't contain 0 at that time.
+
+It turns out that the same workaround is necessary in the analogous
+hibernation code path, so add it.
+
+References: https://bugzilla.kernel.org/show_bug.cgi?id=45811
+Reported-and-tested-by: Oleksij Rempel <bug-track@fisher-privat.net>
+Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
+Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/pci/pci-driver.c |    7 +++++++
+ 1 file changed, 7 insertions(+)
+
+--- a/drivers/pci/pci-driver.c
++++ b/drivers/pci/pci-driver.c
+@@ -958,6 +958,13 @@ static int pci_pm_poweroff_noirq(struct
+       if (!pci_dev->state_saved && !pci_is_bridge(pci_dev))
+               pci_prepare_to_sleep(pci_dev);
++      /*
++       * The reason for doing this here is the same as for the analogous code
++       * in pci_pm_suspend_noirq().
++       */
++      if (pci_dev->class == PCI_CLASS_SERIAL_USB_EHCI)
++              pci_write_config_word(pci_dev, PCI_COMMAND, 0);
++
+       return 0;
+ }
index ff1ebd28a3de2ec955381b9f65226445772adebb..6e86001a2da520f8badea6a72021c84a82a162d5 100644 (file)
@@ -50,3 +50,6 @@ svcrpc-fix-svc_xprt_enqueue-svc_recv-busy-looping.patch
 svcrpc-sends-on-closed-socket-should-stop-immediately.patch
 cciss-fix-incorrect-scsi-status-reporting.patch
 acpi-export-symbol-acpi_get_table_with_size.patch
+ath9k-stop-btcoex-on-device-suspend.patch
+ath9k-fix-decrypt_error-initialization-in-ath_rx_tasklet.patch
+pci-ehci-fix-crash-during-hibernation-on-asus-computers.patch