--- /dev/null
+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;
--- /dev/null
+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);
+
--- /dev/null
+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;
+ }
+
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