提交 9d015a03 编写于 作者: E Eyal Shapira 提交者: Emmanuel Grumbach

iwlwifi: mvm: rs: update expected TPT tables if aggregation changed

Expected TPT table was updated only when switching to a new
modulation. This is wrong as toggling aggregation changes
the expected TPT signficantly.
This leads to scenarios where turning aggregation on after
being in MIMO sends us back to SISO despite a perfect success
ratio.
This occurred because the TPT of the SISO mode was being
estimated based on aggregation while the MIMO one wasn't.

Also remove an error print which isn't an error anymore
since we might be updating the expected TPT table due
to aggregation changes.
Signed-off-by: NEyal Shapira <eyal@wizery.com>
Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
上级 d17334c4
...@@ -1717,6 +1717,7 @@ static void rs_rate_scale_perform(struct iwl_mvm *mvm, ...@@ -1717,6 +1717,7 @@ static void rs_rate_scale_perform(struct iwl_mvm *mvm,
u16 high_low; u16 high_low;
s32 sr; s32 sr;
u8 tid = IWL_MAX_TID_COUNT; u8 tid = IWL_MAX_TID_COUNT;
u8 prev_agg = lq_sta->is_agg;
struct iwl_mvm_sta *sta_priv = (void *)sta->drv_priv; struct iwl_mvm_sta *sta_priv = (void *)sta->drv_priv;
struct iwl_mvm_tid_data *tid_data; struct iwl_mvm_tid_data *tid_data;
...@@ -1752,6 +1753,13 @@ static void rs_rate_scale_perform(struct iwl_mvm *mvm, ...@@ -1752,6 +1753,13 @@ static void rs_rate_scale_perform(struct iwl_mvm *mvm,
tbl = &(lq_sta->lq_info[active_tbl]); tbl = &(lq_sta->lq_info[active_tbl]);
if (prev_agg != lq_sta->is_agg) {
IWL_DEBUG_RATE(mvm,
"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);
}
/* current tx rate */ /* current tx rate */
index = lq_sta->last_txrate_idx; index = lq_sta->last_txrate_idx;
...@@ -1837,8 +1845,6 @@ static void rs_rate_scale_perform(struct iwl_mvm *mvm, ...@@ -1837,8 +1845,6 @@ static void rs_rate_scale_perform(struct iwl_mvm *mvm,
* actual average throughput */ * actual average throughput */
if (window->average_tpt != ((window->success_ratio * if (window->average_tpt != ((window->success_ratio *
tbl->expected_tpt[index] + 64) / 128)) { tbl->expected_tpt[index] + 64) / 128)) {
IWL_ERR(mvm,
"expected_tpt should have been calculated by now\n");
window->average_tpt = ((window->success_ratio * window->average_tpt = ((window->success_ratio *
tbl->expected_tpt[index] + 64) / 128); tbl->expected_tpt[index] + 64) / 128);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册