Commit 54559703 authored by Mohamed Abbas's avatar Mohamed Abbas Committed by John W. Linville

iwlwifi: remove false rxon if rx chain changes

Rx chain might change during power save transitions but it doesn't
require sending Full-ROXN command to the firmware. Full-RXON requires
reconnection to an AP and thus affects user experience. The patch
avoids the Full-RXON by removing the rx_chain modification check in
iwl_full_rxon_required function.

Signed-off-by: Mohamed Abbas <mohamed.abbas@intel.com
Signed-off-by: default avatarTomas Winkler <tomas.winkler@intel.com>
Signed-off-by: default avatarZhu Yi <yi.zhu@intel.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 0ffe014a
...@@ -181,14 +181,14 @@ static int iwl4965_check_rxon_cmd(struct iwl_rxon_cmd *rxon) ...@@ -181,14 +181,14 @@ static int iwl4965_check_rxon_cmd(struct iwl_rxon_cmd *rxon)
} }
/** /**
* iwl4965_full_rxon_required - check if full RXON (vs RXON_ASSOC) cmd is needed * iwl_full_rxon_required - check if full RXON (vs RXON_ASSOC) cmd is needed
* @priv: staging_rxon is compared to active_rxon * @priv: staging_rxon is compared to active_rxon
* *
* If the RXON structure is changing enough to require a new tune, * If the RXON structure is changing enough to require a new tune,
* or is clearing the RXON_FILTER_ASSOC_MSK, then return 1 to indicate that * or is clearing the RXON_FILTER_ASSOC_MSK, then return 1 to indicate that
* a new tune (full RXON command, rather than RXON_ASSOC cmd) is required. * a new tune (full RXON command, rather than RXON_ASSOC cmd) is required.
*/ */
static int iwl4965_full_rxon_required(struct iwl_priv *priv) static int iwl_full_rxon_required(struct iwl_priv *priv)
{ {
/* These items are only settable from the full RXON command */ /* These items are only settable from the full RXON command */
...@@ -207,7 +207,6 @@ static int iwl4965_full_rxon_required(struct iwl_priv *priv) ...@@ -207,7 +207,6 @@ static int iwl4965_full_rxon_required(struct iwl_priv *priv)
priv->active_rxon.ofdm_ht_single_stream_basic_rates) || priv->active_rxon.ofdm_ht_single_stream_basic_rates) ||
(priv->staging_rxon.ofdm_ht_dual_stream_basic_rates != (priv->staging_rxon.ofdm_ht_dual_stream_basic_rates !=
priv->active_rxon.ofdm_ht_dual_stream_basic_rates) || priv->active_rxon.ofdm_ht_dual_stream_basic_rates) ||
(priv->staging_rxon.rx_chain != priv->active_rxon.rx_chain) ||
(priv->staging_rxon.assoc_id != priv->active_rxon.assoc_id)) (priv->staging_rxon.assoc_id != priv->active_rxon.assoc_id))
return 1; return 1;
...@@ -263,7 +262,7 @@ static int iwl4965_commit_rxon(struct iwl_priv *priv) ...@@ -263,7 +262,7 @@ static int iwl4965_commit_rxon(struct iwl_priv *priv)
/* If we don't need to send a full RXON, we can use /* If we don't need to send a full RXON, we can use
* iwl4965_rxon_assoc_cmd which is used to reconfigure filter * iwl4965_rxon_assoc_cmd which is used to reconfigure filter
* and other flags for the current radio configuration. */ * and other flags for the current radio configuration. */
if (!iwl4965_full_rxon_required(priv)) { if (!iwl_full_rxon_required(priv)) {
ret = iwl_send_rxon_assoc(priv); ret = iwl_send_rxon_assoc(priv);
if (ret) { if (ret) {
IWL_ERROR("Error setting RXON_ASSOC (%d)\n", ret); IWL_ERROR("Error setting RXON_ASSOC (%d)\n", ret);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment