--- /dev/null
+From 029cd0370241641eb70235d205aa0b90c84dce44 Mon Sep 17 00:00:00 2001
+From: Felix Fietkau <nbd@openwrt.org>
+Date: Thu, 24 Sep 2015 16:59:46 +0200
+Subject: ath9k: declare required extra tx headroom
+
+From: Felix Fietkau <nbd@openwrt.org>
+
+commit 029cd0370241641eb70235d205aa0b90c84dce44 upstream.
+
+ath9k inserts padding between the 802.11 header and the data area (to
+align it). Since it didn't declare this extra required headroom, this
+led to some nasty issues like randomly dropped packets in some setups.
+
+Signed-off-by: Felix Fietkau <nbd@openwrt.org>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/ath/ath9k/init.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/net/wireless/ath/ath9k/init.c
++++ b/drivers/net/wireless/ath/ath9k/init.c
+@@ -874,6 +874,7 @@ static void ath9k_set_hw_capab(struct at
+ hw->max_rate_tries = 10;
+ hw->sta_data_size = sizeof(struct ath_node);
+ hw->vif_data_size = sizeof(struct ath_vif);
++ hw->extra_tx_headroom = 4;
+
+ hw->wiphy->available_antennas_rx = BIT(ah->caps.max_rxchains) - 1;
+ hw->wiphy->available_antennas_tx = BIT(ah->caps.max_txchains) - 1;
--- /dev/null
+From 4633dfc32c0019bed2996de9bbdbe7f3b518a44e Mon Sep 17 00:00:00 2001
+From: Mohammed Shafi Shajakhan <mohammed@qti.qualcomm.com>
+Date: Thu, 8 Oct 2015 19:20:14 +0530
+Subject: mac80211: Fix hwflags debugfs file format
+
+From: Mohammed Shafi Shajakhan <mohammed@qti.qualcomm.com>
+
+commit 4633dfc32c0019bed2996de9bbdbe7f3b518a44e upstream.
+
+Commit 30686bf7f5b3 ("mac80211: convert HW flags to unsigned long
+bitmap") accidentally removed the newline delimiter from the hwflags
+debugfs file. Fix this by adding back the newline between the HW flags.
+
+Signed-off-by: Mohammed Shafi Shajakhan <mohammed@qti.qualcomm.com>
+[fix commit log]
+Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ net/mac80211/debugfs.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/net/mac80211/debugfs.c
++++ b/net/mac80211/debugfs.c
+@@ -148,7 +148,7 @@ static ssize_t hwflags_read(struct file
+
+ for (i = 0; i < NUM_IEEE80211_HW_FLAGS; i++) {
+ if (test_bit(i, local->hw.flags))
+- pos += scnprintf(pos, end - pos, "%s",
++ pos += scnprintf(pos, end - pos, "%s\n",
+ hw_flag_names[i]);
+ }
+
--- /dev/null
+From 08b137d90eec51b0e90c42e123ca8ceb118d233f Mon Sep 17 00:00:00 2001
+From: Chaotian Jing <chaotian.jing@mediatek.com>
+Date: Mon, 12 Oct 2015 17:22:23 +0800
+Subject: mmc: core: Fix init_card in 52Mhz
+
+From: Chaotian Jing <chaotian.jing@mediatek.com>
+
+commit 08b137d90eec51b0e90c42e123ca8ceb118d233f upstream.
+
+Suppose that we got a data crc error, and it triggers the mmc_reset.
+mmc_reset will call mmc_send_status to see if HW reset was supported.
+before issue CMD13, it will do retune, and if EMMC was in HS400 mode,
+it will reduce frequency to 52Mhz firstly, then results in card init
+was doing at 52Mhz.
+The mmc_send_status was originally only done for mmc_test, should drop
+it. And, rename the "eMMC hardware reset" to "Reset test", as we would
+also be able to use the test for SD-cards.
+
+Signed-off-by: Chaotian Jing <chaotian.jing@mediatek.com>
+Suggested-by: Adrian Hunter <adrian.hunter@intel.com>
+Fixes: bd11e8bd03ca ("mmc: core: Flag re-tuning is needed on CRC errors")
+Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/mmc/card/mmc_test.c | 9 +++------
+ drivers/mmc/core/mmc.c | 7 -------
+ 2 files changed, 3 insertions(+), 13 deletions(-)
+
+--- a/drivers/mmc/card/mmc_test.c
++++ b/drivers/mmc/card/mmc_test.c
+@@ -2263,15 +2263,12 @@ static int mmc_test_profile_sglen_r_nonb
+ /*
+ * eMMC hardware reset.
+ */
+-static int mmc_test_hw_reset(struct mmc_test_card *test)
++static int mmc_test_reset(struct mmc_test_card *test)
+ {
+ struct mmc_card *card = test->card;
+ struct mmc_host *host = card->host;
+ int err;
+
+- if (!mmc_card_mmc(card) || !mmc_can_reset(card))
+- return RESULT_UNSUP_CARD;
+-
+ err = mmc_hw_reset(host);
+ if (!err)
+ return RESULT_OK;
+@@ -2605,8 +2602,8 @@ static const struct mmc_test_case mmc_te
+ },
+
+ {
+- .name = "eMMC hardware reset",
+- .run = mmc_test_hw_reset,
++ .name = "Reset test",
++ .run = mmc_test_reset,
+ },
+ };
+
+--- a/drivers/mmc/core/mmc.c
++++ b/drivers/mmc/core/mmc.c
+@@ -1924,7 +1924,6 @@ EXPORT_SYMBOL(mmc_can_reset);
+ static int mmc_reset(struct mmc_host *host)
+ {
+ struct mmc_card *card = host->card;
+- u32 status;
+
+ if (!(host->caps & MMC_CAP_HW_RESET) || !host->ops->hw_reset)
+ return -EOPNOTSUPP;
+@@ -1937,12 +1936,6 @@ static int mmc_reset(struct mmc_host *ho
+
+ host->ops->hw_reset(host);
+
+- /* If the reset has happened, then a status command will fail */
+- if (!mmc_send_status(card, &status)) {
+- mmc_host_clk_release(host);
+- return -ENOSYS;
+- }
+-
+ /* Set initial state and call mmc_set_ios */
+ mmc_set_initial_state(host);
+ mmc_host_clk_release(host);