[kernel] Linux v3.8-rc5

Josh Boyer jwboyer at fedoraproject.org
Mon Jan 28 18:52:16 UTC 2013


commit 87df459c2b4b1790f272f6a6b766a687af7c90d8
Author: Josh Boyer <jwboyer at redhat.com>
Date:   Mon Jan 28 10:03:12 2013 -0500

    Linux v3.8-rc5
    
    - Add patches to fix issues with iwlwifi (rhbz 863424)
    - Enable CONFIG_PROVE_RCU

 ...fi-fix-the-reclaimed-packet-tracking-upon.patch |   68 ++++++++++++++++++++
 config-nodebug                                     |    2 +-
 ...-audit-single-frames-from-AGG-queue-in-RS.patch |   50 ++++++++++++++
 kernel.spec                                        |   17 ++++-
 sources                                            |    3 +-
 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 0000000..302774b
--- /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 at 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 at vger.kernel.org [3.7]
+Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach at intel.com>
+Signed-off-by: Johannes Berg <johannes.berg at 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 686d5d8..afc6fab 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 0000000..c07932e
--- /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 at 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 at intel.com>
+Signed-off-by: Johannes Berg <johannes.berg at 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 2e86914..e222648 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 at 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 at fedoraproject.org>
 - Reenable perf on ARM (was suppose to be temporary)
 - Build and package dtbs on ARM
diff --git a/sources b/sources
index 5a3e59f..7dd8a4e 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


More information about the scm-commits mailing list