summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosh Boyer <jwboyer@redhat.com>2013-01-28 10:03:12 -0500
committerJosh Boyer <jwboyer@redhat.com>2013-01-28 13:51:54 -0500
commit87df459c2b4b1790f272f6a6b766a687af7c90d8 (patch)
tree12c5814c68d2608b945ab800509976adf105a806
parent249d64d9283f4b93fb92fadfe20a5f9f7d68d4b2 (diff)
downloadkernel-87df459c2b4b1790f272f6a6b766a687af7c90d8.tar.gz
kernel-87df459c2b4b1790f272f6a6b766a687af7c90d8.tar.xz
kernel-87df459c2b4b1790f272f6a6b766a687af7c90d8.zip
Linux v3.8-rc5
- Add patches to fix issues with iwlwifi (rhbz 863424) - Enable CONFIG_PROVE_RCU
-rw-r--r--Revert-iwlwifi-fix-the-reclaimed-packet-tracking-upon.patch68
-rw-r--r--config-nodebug2
-rw-r--r--iwlwifi-audit-single-frames-from-AGG-queue-in-RS.patch50
-rw-r--r--kernel.spec17
-rw-r--r--sources3
5 files changed, 135 insertions, 5 deletions
diff --git a/Revert-iwlwifi-fix-the-reclaimed-packet-tracking-upon.patch b/Revert-iwlwifi-fix-the-reclaimed-packet-tracking-upon.patch
new file mode 100644
index 000000000..302774b45
--- /dev/null
+++ b/Revert-iwlwifi-fix-the-reclaimed-packet-tracking-upon.patch
@@ -0,0 +1,68 @@
+From ae023b2795d36f0f077e157428eb7eafa29ee412 Mon Sep 17 00:00:00 2001
+From: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
+Date: Mon, 21 Jan 2013 13:12:57 +0200
+Subject: [PATCH] Revert "iwlwifi: fix the reclaimed packet tracking upon
+ flush queue"
+
+This reverts commit f590dcec944552f9a4a61155810f3abd17d6465d
+which has been reported to cause issues.
+
+See https://lkml.org/lkml/2013/1/20/4 for further details.
+
+Cc: stable@vger.kernel.org [3.7]
+Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+---
+ drivers/net/wireless/iwlwifi/dvm/tx.c | 24 +++++++-----------------
+ 1 files changed, 7 insertions(+), 17 deletions(-)
+
+diff --git a/drivers/net/wireless/iwlwifi/dvm/tx.c b/drivers/net/wireless/iwlwifi/dvm/tx.c
+index 31534f7..2797964 100644
+--- a/drivers/net/wireless/iwlwifi/dvm/tx.c
++++ b/drivers/net/wireless/iwlwifi/dvm/tx.c
+@@ -1153,6 +1153,13 @@ int iwlagn_rx_reply_tx(struct iwl_priv *priv, struct iwl_rx_cmd_buffer *rxb,
+ next_reclaimed = ssn;
+ }
+
++ if (tid != IWL_TID_NON_QOS) {
++ priv->tid_data[sta_id][tid].next_reclaimed =
++ next_reclaimed;
++ IWL_DEBUG_TX_REPLY(priv, "Next reclaimed packet:%d\n",
++ next_reclaimed);
++ }
++
+ iwl_trans_reclaim(priv->trans, txq_id, ssn, &skbs);
+
+ iwlagn_check_ratid_empty(priv, sta_id, tid);
+@@ -1203,28 +1210,11 @@ int iwlagn_rx_reply_tx(struct iwl_priv *priv, struct iwl_rx_cmd_buffer *rxb,
+ if (!is_agg)
+ iwlagn_non_agg_tx_status(priv, ctx, hdr->addr1);
+
+- /*
+- * W/A for FW bug - the seq_ctl isn't updated when the
+- * queues are flushed. Fetch it from the packet itself
+- */
+- if (!is_agg && status == TX_STATUS_FAIL_FIFO_FLUSHED) {
+- next_reclaimed = le16_to_cpu(hdr->seq_ctrl);
+- next_reclaimed =
+- SEQ_TO_SN(next_reclaimed + 0x10);
+- }
+-
+ is_offchannel_skb =
+ (info->flags & IEEE80211_TX_CTL_TX_OFFCHAN);
+ freed++;
+ }
+
+- if (tid != IWL_TID_NON_QOS) {
+- priv->tid_data[sta_id][tid].next_reclaimed =
+- next_reclaimed;
+- IWL_DEBUG_TX_REPLY(priv, "Next reclaimed packet:%d\n",
+- next_reclaimed);
+- }
+-
+ WARN_ON(!is_agg && freed != 1);
+
+ /*
+--
+1.7.6.5
+
diff --git a/config-nodebug b/config-nodebug
index 686d5d897..afc6fabc7 100644
--- a/config-nodebug
+++ b/config-nodebug
@@ -9,7 +9,7 @@ CONFIG_SND_PCM_XRUN_DEBUG=y
# CONFIG_DEBUG_LOCK_ALLOC is not set
CONFIG_PROVE_LOCKING=y
CONFIG_DEBUG_SPINLOCK=y
-# CONFIG_PROVE_RCU is not set
+CONFIG_PROVE_RCU=y
# CONFIG_PROVE_RCU_REPEATEDLY is not set
# CONFIG_DEBUG_PER_CPU_MAPS is not set
CONFIG_CPUMASK_OFFSTACK=y
diff --git a/iwlwifi-audit-single-frames-from-AGG-queue-in-RS.patch b/iwlwifi-audit-single-frames-from-AGG-queue-in-RS.patch
new file mode 100644
index 000000000..c07932e32
--- /dev/null
+++ b/iwlwifi-audit-single-frames-from-AGG-queue-in-RS.patch
@@ -0,0 +1,50 @@
+From c3e5d7181afb66657393066bccce0956fab09ab3 Mon Sep 17 00:00:00 2001
+From: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
+Date: Wed, 9 Jan 2013 10:20:36 +0200
+Subject: [PATCH] iwlwifi: audit single frames from AGG queue in RS
+
+The rate scaling won't treat the information in a frame
+with IEEE80211_TX_CTL_AMPDU set if IEEE80211_TX_STAT_AMPDU
+is cleared. But all the frames coming from an AGG tx queue
+have IEEE80211_TX_CTL_AMPDU set, and IEEE80211_TX_STAT_AMPDU
+is set only if the frame was sent in an AMPDU.
+This means that all the data in frames in AGG tx queues that
+aren't sent as an AMPDU is thrown away.
+This is even more harmful when in bad link conditions, the
+frames are sent in an AMPDU and then finally sent as single
+frame. So a lot of failures weren't reported and the rate
+scaling got stuck in high rates leading to very poor
+connectivity.
+
+Fix that by clearing IEEE80211_TX_CTL_AMPDU when the frame
+isn't part of an AMPDU.
+
+This bug was introduced by
+
+2eb81a40aa521035ff9c8c8309e482dff523f8c9
+iwlwifi: don't clear CTL_AMPDU on frame status
+
+This fix basically reverts the aforementioned commit.
+
+Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+---
+ drivers/net/wireless/iwlwifi/dvm/tx.c | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/net/wireless/iwlwifi/dvm/tx.c b/drivers/net/wireless/iwlwifi/dvm/tx.c
+index a790599..31534f7 100644
+--- a/drivers/net/wireless/iwlwifi/dvm/tx.c
++++ b/drivers/net/wireless/iwlwifi/dvm/tx.c
+@@ -1079,6 +1079,8 @@ static void iwlagn_set_tx_status(struct iwl_priv *priv,
+ {
+ u16 status = le16_to_cpu(tx_resp->status.status);
+
++ info->flags &= ~IEEE80211_TX_CTL_AMPDU;
++
+ info->status.rates[0].count = tx_resp->failure_frame + 1;
+ info->flags |= iwl_tx_status_to_mac80211(status);
+ iwlagn_hwrate_to_tx_control(priv, le32_to_cpu(tx_resp->rate_n_flags),
+--
+1.7.6.5
+
diff --git a/kernel.spec b/kernel.spec
index 2e86914a7..e22264802 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -93,9 +93,9 @@ Summary: The Linux kernel
# The next upstream release sublevel (base_sublevel+1)
%define upstream_sublevel %(echo $((%{base_sublevel} + 1)))
# The rc snapshot level
-%define rcrev 4
+%define rcrev 5
# The git snapshot level
-%define gitrev 5
+%define gitrev 0
# Set rpm version accordingly
%define rpmversion 3.%{upstream_sublevel}.0
%endif
@@ -749,6 +749,10 @@ Patch21226: vt-Drop-K_OFF-for-VC_MUTE.patch
#rhbz 886946
Patch21227: iwlegacy-fix-IBSS-cleanup.patch
+#rhbz 863424
+Patch21228: iwlwifi-audit-single-frames-from-AGG-queue-in-RS.patch
+Patch21229: Revert-iwlwifi-fix-the-reclaimed-packet-tracking-upon.patch
+
# END OF PATCH DEFINITIONS
%endif
@@ -1443,6 +1447,10 @@ ApplyPatch vt-Drop-K_OFF-for-VC_MUTE.patch
#rhbz 886946
ApplyPatch iwlegacy-fix-IBSS-cleanup.patch
+#rhbz 863424
+ApplyPatch iwlwifi-audit-single-frames-from-AGG-queue-in-RS.patch
+ApplyPatch Revert-iwlwifi-fix-the-reclaimed-packet-tracking-upon.patch
+
# END OF PATCH APPLICATIONS
%endif
@@ -2298,6 +2306,11 @@ fi
# ||----w |
# || ||
%changelog
+* Mon Jan 28 2013 Josh Boyer <jwboyer@redhat.com>
+- Linux v3.8-rc5
+- Add patches to fix issues with iwlwifi (rhbz 863424)
+- Enable CONFIG_PROVE_RCU
+
* Sun Jan 27 2013 Peter Robinson <pbrobinson@fedoraproject.org>
- Reenable perf on ARM (was suppose to be temporary)
- Build and package dtbs on ARM
diff --git a/sources b/sources
index 5a3e59f98..7dd8a4e4c 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,2 @@
21223369d682bcf44bcdfe1521095983 linux-3.7.tar.xz
-68f3bd39cd3274dab38d16d420419ac1 patch-3.8-rc4.xz
-1094a58fc2fc07392ee06d0c68dd881f patch-3.8-rc4-git5.xz
+714424b01630b141bbee02d0ea9d5633 patch-3.8-rc5.xz