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: Tomas Winkler <tomas.winkler@intel.com> Signed-off-by: Zhu Yi <yi.zhu@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
0ffe014a8c
commit
545597036c
|
@ -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)
|
||||||
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)
|
||||||
/* 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);
|
||||||
|
|
Loading…
Reference in New Issue