]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.2-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 27 Oct 2015 02:15:32 +0000 (11:15 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 27 Oct 2015 02:15:32 +0000 (11:15 +0900)
added patches:
ath9k-declare-required-extra-tx-headroom.patch
mac80211-fix-hwflags-debugfs-file-format.patch
mmc-core-fix-init_card-in-52mhz.patch

queue-4.2/ath9k-declare-required-extra-tx-headroom.patch [new file with mode: 0644]
queue-4.2/mac80211-fix-hwflags-debugfs-file-format.patch [new file with mode: 0644]
queue-4.2/mmc-core-fix-init_card-in-52mhz.patch [new file with mode: 0644]

diff --git a/queue-4.2/ath9k-declare-required-extra-tx-headroom.patch b/queue-4.2/ath9k-declare-required-extra-tx-headroom.patch
new file mode 100644 (file)
index 0000000..16272ae
--- /dev/null
@@ -0,0 +1,31 @@
+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;
diff --git a/queue-4.2/mac80211-fix-hwflags-debugfs-file-format.patch b/queue-4.2/mac80211-fix-hwflags-debugfs-file-format.patch
new file mode 100644 (file)
index 0000000..0cba04d
--- /dev/null
@@ -0,0 +1,34 @@
+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]);
+       }
diff --git a/queue-4.2/mmc-core-fix-init_card-in-52mhz.patch b/queue-4.2/mmc-core-fix-init_card-in-52mhz.patch
new file mode 100644 (file)
index 0000000..3abec18
--- /dev/null
@@ -0,0 +1,82 @@
+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);