diff options
-rw-r--r-- | Revert-iwlwifi-fix-the-reclaimed-packet-tracking-upon.patch | 68 | ||||
-rw-r--r-- | config-nodebug | 2 | ||||
-rw-r--r-- | iwlwifi-audit-single-frames-from-AGG-queue-in-RS.patch | 50 | ||||
-rw-r--r-- | kernel.spec | 17 | ||||
-rw-r--r-- | 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 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 @@ -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 |