From: Greg Kroah-Hartman Date: Wed, 4 Jun 2014 23:15:59 +0000 (-0700) Subject: 3.14-stable patches X-Git-Tag: v3.14.6~32 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4ae4c37dfd4f6780248ff8f43eecaa40c7aa67ce;p=thirdparty%2Fkernel%2Fstable-queue.git 3.14-stable patches added patches: iwlwifi-add-rs_rate_scale_clear_tbl_windows-helper-function.patch iwlwifi-mvm-disable-beacon-filtering.patch iwlwifi-mvm-rs-clear-per-rate-stats-when-aggregation-changes.patch --- diff --git a/queue-3.14/iwlwifi-add-rs_rate_scale_clear_tbl_windows-helper-function.patch b/queue-3.14/iwlwifi-add-rs_rate_scale_clear_tbl_windows-helper-function.patch new file mode 100644 index 00000000000..f4332647db6 --- /dev/null +++ b/queue-3.14/iwlwifi-add-rs_rate_scale_clear_tbl_windows-helper-function.patch @@ -0,0 +1,99 @@ +From egrumbach@gmail.com Wed Jun 4 16:13:16 2014 +From: Emmanuel Grumbach +Date: Wed, 4 Jun 2014 21:58:00 +0300 +Subject: iwlwifi: add rs_rate_scale_clear_tbl_windows helper function +To: stable@vger.kernel.org +Cc: Eliad Peller , Eliad Peller , Emmanuel Grumbach +Message-ID: <1401908281-9185-1-git-send-email-egrumbach@gmail.com> + +From: Eliad Peller + +commit 3ca71f603bb1a0f55e1ba24618ba45617bc36f70 upstream. + +instead of duplicating the same loop multiple times, +use a new function for it. + +this will be later used also for clearing other +windows in the table. + +Signed-off-by: Eliad Peller +Signed-off-by: Emmanuel Grumbach +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/wireless/iwlwifi/mvm/rs.c | 23 ++++++++++++----------- + 1 file changed, 12 insertions(+), 11 deletions(-) + +--- a/drivers/net/wireless/iwlwifi/mvm/rs.c ++++ b/drivers/net/wireless/iwlwifi/mvm/rs.c +@@ -519,6 +519,14 @@ static void rs_rate_scale_clear_window(s + window->average_tpt = IWL_INVALID_VALUE; + } + ++static void rs_rate_scale_clear_tbl_windows(struct iwl_scale_tbl_info *tbl) ++{ ++ int i; ++ ++ for (i = 0; i < IWL_RATE_COUNT; i++) ++ rs_rate_scale_clear_window(&tbl->win[i]); ++} ++ + static inline u8 rs_is_valid_ant(u8 valid_antenna, u8 ant_type) + { + return (ant_type & valid_antenna) == ant_type; +@@ -1397,7 +1405,6 @@ static u32 rs_bw_from_sta_bw(struct ieee + static void rs_stay_in_table(struct iwl_lq_sta *lq_sta, bool force_search) + { + struct iwl_scale_tbl_info *tbl; +- int i; + int active_tbl; + int flush_interval_passed = 0; + struct iwl_mvm *mvm; +@@ -1458,9 +1465,7 @@ static void rs_stay_in_table(struct iwl_ + + IWL_DEBUG_RATE(mvm, + "LQ: stay in table clear win\n"); +- for (i = 0; i < IWL_RATE_COUNT; i++) +- rs_rate_scale_clear_window( +- &(tbl->win[i])); ++ rs_rate_scale_clear_tbl_windows(tbl); + } + } + +@@ -1469,8 +1474,7 @@ static void rs_stay_in_table(struct iwl_ + * "search" table). */ + if (lq_sta->rs_state == RS_STATE_SEARCH_CYCLE_STARTED) { + IWL_DEBUG_RATE(mvm, "Clearing up window stats\n"); +- for (i = 0; i < IWL_RATE_COUNT; i++) +- rs_rate_scale_clear_window(&(tbl->win[i])); ++ rs_rate_scale_clear_tbl_windows(tbl); + } + } + } +@@ -1751,7 +1755,6 @@ static void rs_rate_scale_perform(struct + int low = IWL_RATE_INVALID; + int high = IWL_RATE_INVALID; + int index; +- int i; + struct iwl_rate_scale_data *window = NULL; + int current_tpt = IWL_INVALID_VALUE; + int low_tpt = IWL_INVALID_VALUE; +@@ -2036,8 +2039,7 @@ lq_update: + if (lq_sta->search_better_tbl) { + /* Access the "search" table, clear its history. */ + tbl = &(lq_sta->lq_info[(1 - lq_sta->active_tbl)]); +- for (i = 0; i < IWL_RATE_COUNT; i++) +- rs_rate_scale_clear_window(&(tbl->win[i])); ++ rs_rate_scale_clear_tbl_windows(tbl); + + /* Use new "search" start rate */ + index = tbl->rate.index; +@@ -2301,8 +2303,7 @@ void iwl_mvm_rs_rate_init(struct iwl_mvm + lq_sta->lq.sta_id = sta_priv->sta_id; + + for (j = 0; j < LQ_SIZE; j++) +- for (i = 0; i < IWL_RATE_COUNT; i++) +- rs_rate_scale_clear_window(&lq_sta->lq_info[j].win[i]); ++ rs_rate_scale_clear_tbl_windows(&lq_sta->lq_info[j]); + + lq_sta->flush_timer = 0; + lq_sta->last_tx = jiffies; diff --git a/queue-3.14/iwlwifi-mvm-disable-beacon-filtering.patch b/queue-3.14/iwlwifi-mvm-disable-beacon-filtering.patch new file mode 100644 index 00000000000..2ed5962894f --- /dev/null +++ b/queue-3.14/iwlwifi-mvm-disable-beacon-filtering.patch @@ -0,0 +1,29 @@ +From 7bacc782270ff7db3b9f29fa5d24ad2ee1e8e81d Mon Sep 17 00:00:00 2001 +From: Emmanuel Grumbach +Date: Sun, 18 May 2014 19:05:23 +0300 +Subject: iwlwifi: mvm: disable beacon filtering + +From: Emmanuel Grumbach + +commit 7bacc782270ff7db3b9f29fa5d24ad2ee1e8e81d upstream. + +This feature has been causing trouble - disable it for now. + +Signed-off-by: Emmanuel Grumbach +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/wireless/iwlwifi/mvm/mac80211.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/net/wireless/iwlwifi/mvm/mac80211.c ++++ b/drivers/net/wireless/iwlwifi/mvm/mac80211.c +@@ -606,7 +606,7 @@ static int iwl_mvm_mac_add_interface(str + if (ret) + goto out_remove_mac; + +- if (!mvm->bf_allowed_vif && ++ if (!mvm->bf_allowed_vif && false && + vif->type == NL80211_IFTYPE_STATION && !vif->p2p && + mvm->fw->ucode_capa.flags & IWL_UCODE_TLV_FLAGS_BF_UPDATED){ + mvm->bf_allowed_vif = mvmvif; diff --git a/queue-3.14/iwlwifi-mvm-rs-clear-per-rate-stats-when-aggregation-changes.patch b/queue-3.14/iwlwifi-mvm-rs-clear-per-rate-stats-when-aggregation-changes.patch new file mode 100644 index 00000000000..c75d682d3de --- /dev/null +++ b/queue-3.14/iwlwifi-mvm-rs-clear-per-rate-stats-when-aggregation-changes.patch @@ -0,0 +1,85 @@ +From egrumbach@gmail.com Wed Jun 4 16:13:48 2014 +From: Emmanuel Grumbach +Date: Wed, 4 Jun 2014 21:58:01 +0300 +Subject: iwlwifi: mvm: rs: clear per rate stats when aggregation changes +To: stable@vger.kernel.org +Cc: Eyal Shapira , Eyal Shapira , Emmanuel Grumbach +Message-ID: <1401908281-9185-2-git-send-email-egrumbach@gmail.com> + +From: Eyal Shapira + +commit b804eeb6649d75caeccbeae9f5623fc7b8bdfdfa upstream. + +The per rate stats should be cleared when aggregation state changes +to avoid making rate scale decisions based on throughput figures which +were collected prior to the aggregation state change and are now stale. +While at it make sure any clearing of the per rate stats will get logged. + +Signed-off-by: Eyal Shapira +Signed-off-by: Emmanuel Grumbach +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/wireless/iwlwifi/mvm/rs.c | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) + +--- a/drivers/net/wireless/iwlwifi/mvm/rs.c ++++ b/drivers/net/wireless/iwlwifi/mvm/rs.c +@@ -519,10 +519,12 @@ static void rs_rate_scale_clear_window(s + window->average_tpt = IWL_INVALID_VALUE; + } + +-static void rs_rate_scale_clear_tbl_windows(struct iwl_scale_tbl_info *tbl) ++static void rs_rate_scale_clear_tbl_windows(struct iwl_mvm *mvm, ++ struct iwl_scale_tbl_info *tbl) + { + int i; + ++ IWL_DEBUG_RATE(mvm, "Clearing up window stats\n"); + for (i = 0; i < IWL_RATE_COUNT; i++) + rs_rate_scale_clear_window(&tbl->win[i]); + } +@@ -1465,7 +1467,7 @@ static void rs_stay_in_table(struct iwl_ + + IWL_DEBUG_RATE(mvm, + "LQ: stay in table clear win\n"); +- rs_rate_scale_clear_tbl_windows(tbl); ++ rs_rate_scale_clear_tbl_windows(mvm, tbl); + } + } + +@@ -1473,8 +1475,7 @@ static void rs_stay_in_table(struct iwl_ + * bitmaps and stats in active table (this will become the new + * "search" table). */ + if (lq_sta->rs_state == RS_STATE_SEARCH_CYCLE_STARTED) { +- IWL_DEBUG_RATE(mvm, "Clearing up window stats\n"); +- rs_rate_scale_clear_tbl_windows(tbl); ++ rs_rate_scale_clear_tbl_windows(mvm, tbl); + } + } + } +@@ -1810,6 +1811,7 @@ static void rs_rate_scale_perform(struct + "Aggregation changed: prev %d current %d. Update expected TPT table\n", + prev_agg, lq_sta->is_agg); + rs_set_expected_tpt_table(lq_sta, tbl); ++ rs_rate_scale_clear_tbl_windows(mvm, tbl); + } + + /* current tx rate */ +@@ -2039,7 +2041,7 @@ lq_update: + if (lq_sta->search_better_tbl) { + /* Access the "search" table, clear its history. */ + tbl = &(lq_sta->lq_info[(1 - lq_sta->active_tbl)]); +- rs_rate_scale_clear_tbl_windows(tbl); ++ rs_rate_scale_clear_tbl_windows(mvm, tbl); + + /* Use new "search" start rate */ + index = tbl->rate.index; +@@ -2303,7 +2305,7 @@ void iwl_mvm_rs_rate_init(struct iwl_mvm + lq_sta->lq.sta_id = sta_priv->sta_id; + + for (j = 0; j < LQ_SIZE; j++) +- rs_rate_scale_clear_tbl_windows(&lq_sta->lq_info[j]); ++ rs_rate_scale_clear_tbl_windows(mvm, &lq_sta->lq_info[j]); + + lq_sta->flush_timer = 0; + lq_sta->last_tx = jiffies; diff --git a/queue-3.14/series b/queue-3.14/series index 51b43481d2a..c6545c08de3 100644 --- a/queue-3.14/series +++ b/queue-3.14/series @@ -221,3 +221,6 @@ spi-core-ignore-unsupported-dual-quad-transfer-mode-bits.patch libceph-fix-corruption-when-using-page_count-0-page-in-rbd.patch iommu-amd-fix-interrupt-remapping-for-aliased-devices.patch media-fc2580-fix-tuning-failure-on-32-bit-arch.patch +iwlwifi-mvm-disable-beacon-filtering.patch +iwlwifi-add-rs_rate_scale_clear_tbl_windows-helper-function.patch +iwlwifi-mvm-rs-clear-per-rate-stats-when-aggregation-changes.patch