Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b1a78858 authored by Wey-Yi Guy's avatar Wey-Yi Guy Committed by John W. Linville
Browse files

iwlagn: adjust starting action for rate scale



During rate scale, reset starting action after making action adjustment
to avoid the possibility of break out of loop too early.

Signed-off-by: default avatarWey-Yi Guy <wey-yi.w.guy@intel.com>
parent 948f5a2f
Loading
Loading
Loading
Loading
+8 −4
Original line number Original line Diff line number Diff line
@@ -1265,7 +1265,7 @@ static int rs_move_legacy_other(struct iwl_priv *priv,
	struct iwl_rate_scale_data *window = &(tbl->win[index]);
	struct iwl_rate_scale_data *window = &(tbl->win[index]);
	u32 sz = (sizeof(struct iwl_scale_tbl_info) -
	u32 sz = (sizeof(struct iwl_scale_tbl_info) -
		  (sizeof(struct iwl_rate_scale_data) * IWL_RATE_COUNT));
		  (sizeof(struct iwl_rate_scale_data) * IWL_RATE_COUNT));
	u8 start_action = tbl->action;
	u8 start_action;
	u8 valid_tx_ant = priv->hw_params.valid_tx_ant;
	u8 valid_tx_ant = priv->hw_params.valid_tx_ant;
	u8 tx_chains_num = priv->hw_params.tx_chains_num;
	u8 tx_chains_num = priv->hw_params.tx_chains_num;
	int ret = 0;
	int ret = 0;
@@ -1277,6 +1277,7 @@ static int rs_move_legacy_other(struct iwl_priv *priv,
	else if (iwl_tx_ant_restriction(priv) == IWL_ANT_OK_SINGLE &&
	else if (iwl_tx_ant_restriction(priv) == IWL_ANT_OK_SINGLE &&
		   tbl->action > IWL_LEGACY_SWITCH_SISO)
		   tbl->action > IWL_LEGACY_SWITCH_SISO)
		tbl->action = IWL_LEGACY_SWITCH_SISO;
		tbl->action = IWL_LEGACY_SWITCH_SISO;
	start_action = tbl->action;
	for (; ;) {
	for (; ;) {
		lq_sta->action_counter++;
		lq_sta->action_counter++;
		switch (tbl->action) {
		switch (tbl->action) {
@@ -1403,7 +1404,7 @@ static int rs_move_siso_to_other(struct iwl_priv *priv,
	struct ieee80211_sta_ht_cap *ht_cap = &sta->ht_cap;
	struct ieee80211_sta_ht_cap *ht_cap = &sta->ht_cap;
	u32 sz = (sizeof(struct iwl_scale_tbl_info) -
	u32 sz = (sizeof(struct iwl_scale_tbl_info) -
		  (sizeof(struct iwl_rate_scale_data) * IWL_RATE_COUNT));
		  (sizeof(struct iwl_rate_scale_data) * IWL_RATE_COUNT));
	u8 start_action = tbl->action;
	u8 start_action;
	u8 valid_tx_ant = priv->hw_params.valid_tx_ant;
	u8 valid_tx_ant = priv->hw_params.valid_tx_ant;
	u8 tx_chains_num = priv->hw_params.tx_chains_num;
	u8 tx_chains_num = priv->hw_params.tx_chains_num;
	u8 update_search_tbl_counter = 0;
	u8 update_search_tbl_counter = 0;
@@ -1414,6 +1415,7 @@ static int rs_move_siso_to_other(struct iwl_priv *priv,
		/* stay in SISO */
		/* stay in SISO */
		tbl->action = IWL_SISO_SWITCH_ANTENNA1;
		tbl->action = IWL_SISO_SWITCH_ANTENNA1;
	}
	}
	start_action = tbl->action;
	for (;;) {
	for (;;) {
		lq_sta->action_counter++;
		lq_sta->action_counter++;
		switch (tbl->action) {
		switch (tbl->action) {
@@ -1541,7 +1543,7 @@ static int rs_move_mimo2_to_other(struct iwl_priv *priv,
	struct ieee80211_sta_ht_cap *ht_cap = &sta->ht_cap;
	struct ieee80211_sta_ht_cap *ht_cap = &sta->ht_cap;
	u32 sz = (sizeof(struct iwl_scale_tbl_info) -
	u32 sz = (sizeof(struct iwl_scale_tbl_info) -
		  (sizeof(struct iwl_rate_scale_data) * IWL_RATE_COUNT));
		  (sizeof(struct iwl_rate_scale_data) * IWL_RATE_COUNT));
	u8 start_action = tbl->action;
	u8 start_action;
	u8 valid_tx_ant = priv->hw_params.valid_tx_ant;
	u8 valid_tx_ant = priv->hw_params.valid_tx_ant;
	u8 tx_chains_num = priv->hw_params.tx_chains_num;
	u8 tx_chains_num = priv->hw_params.tx_chains_num;
	u8 update_search_tbl_counter = 0;
	u8 update_search_tbl_counter = 0;
@@ -1553,6 +1555,7 @@ static int rs_move_mimo2_to_other(struct iwl_priv *priv,
		/* switch in SISO */
		/* switch in SISO */
		tbl->action = IWL_MIMO2_SWITCH_SISO_A;
		tbl->action = IWL_MIMO2_SWITCH_SISO_A;
	}
	}
	start_action = tbl->action;
	for (;;) {
	for (;;) {
		lq_sta->action_counter++;
		lq_sta->action_counter++;
		switch (tbl->action) {
		switch (tbl->action) {
@@ -1682,7 +1685,7 @@ static int rs_move_mimo3_to_other(struct iwl_priv *priv,
	struct ieee80211_sta_ht_cap *ht_cap = &sta->ht_cap;
	struct ieee80211_sta_ht_cap *ht_cap = &sta->ht_cap;
	u32 sz = (sizeof(struct iwl_scale_tbl_info) -
	u32 sz = (sizeof(struct iwl_scale_tbl_info) -
		  (sizeof(struct iwl_rate_scale_data) * IWL_RATE_COUNT));
		  (sizeof(struct iwl_rate_scale_data) * IWL_RATE_COUNT));
	u8 start_action = tbl->action;
	u8 start_action;
	u8 valid_tx_ant = priv->hw_params.valid_tx_ant;
	u8 valid_tx_ant = priv->hw_params.valid_tx_ant;
	u8 tx_chains_num = priv->hw_params.tx_chains_num;
	u8 tx_chains_num = priv->hw_params.tx_chains_num;
	int ret;
	int ret;
@@ -1694,6 +1697,7 @@ static int rs_move_mimo3_to_other(struct iwl_priv *priv,
		/* switch in SISO */
		/* switch in SISO */
		tbl->action = IWL_MIMO3_SWITCH_SISO_A;
		tbl->action = IWL_MIMO3_SWITCH_SISO_A;
	}
	}
	start_action = tbl->action;
	for (;;) {
	for (;;) {
		lq_sta->action_counter++;
		lq_sta->action_counter++;
		switch (tbl->action) {
		switch (tbl->action) {