aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn.c4
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-core.c10
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-dev.h2
3 files changed, 9 insertions, 7 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index 27ddf6cb1c6e..78902da3d516 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -564,8 +564,6 @@ static void iwl4965_ht_conf(struct iwl_priv *priv,
564 if (!iwl_conf->is_ht) 564 if (!iwl_conf->is_ht)
565 return; 565 return;
566 566
567 priv->ps_mode = (u8)((ht_conf->cap & IEEE80211_HT_CAP_SM_PS) >> 2);
568
569 if (ht_conf->cap & IEEE80211_HT_CAP_SGI_20) 567 if (ht_conf->cap & IEEE80211_HT_CAP_SGI_20)
570 iwl_conf->sgf |= HT_SHORT_GI_20MHZ; 568 iwl_conf->sgf |= HT_SHORT_GI_20MHZ;
571 if (ht_conf->cap & IEEE80211_HT_CAP_SGI_40) 569 if (ht_conf->cap & IEEE80211_HT_CAP_SGI_40)
@@ -586,6 +584,8 @@ static void iwl4965_ht_conf(struct iwl_priv *priv,
586 iwl_conf->supported_chan_width = 0; 584 iwl_conf->supported_chan_width = 0;
587 } 585 }
588 586
587 iwl_conf->sm_ps = (u8)((ht_conf->cap & IEEE80211_HT_CAP_SM_PS) >> 2);
588
589 memcpy(iwl_conf->supp_mcs_set, ht_conf->supp_mcs_set, 16); 589 memcpy(iwl_conf->supp_mcs_set, ht_conf->supp_mcs_set, 16);
590 590
591 iwl_conf->control_channel = ht_bss_conf->primary_channel; 591 iwl_conf->control_channel = ht_bss_conf->primary_channel;
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.c b/drivers/net/wireless/iwlwifi/iwl-core.c
index 789556db6842..dbeaca15dda5 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.c
+++ b/drivers/net/wireless/iwlwifi/iwl-core.c
@@ -709,7 +709,8 @@ static int iwl_get_active_rx_chain_count(struct iwl_priv *priv)
709 bool is_cam = !test_bit(STATUS_POWER_PMI, &priv->status); 709 bool is_cam = !test_bit(STATUS_POWER_PMI, &priv->status);
710 710
711 /* # of Rx chains to use when expecting MIMO. */ 711 /* # of Rx chains to use when expecting MIMO. */
712 if (is_single || (!is_cam && (priv->ps_mode == WLAN_HT_CAP_SM_PS_STATIC))) 712 if (is_single || (!is_cam && (priv->current_ht_config.sm_ps ==
713 WLAN_HT_CAP_SM_PS_STATIC)))
713 return 2; 714 return 2;
714 else 715 else
715 return 3; 716 return 3;
@@ -720,7 +721,7 @@ static int iwl_get_idle_rx_chain_count(struct iwl_priv *priv, int active_cnt)
720 int idle_cnt; 721 int idle_cnt;
721 bool is_cam = !test_bit(STATUS_POWER_PMI, &priv->status); 722 bool is_cam = !test_bit(STATUS_POWER_PMI, &priv->status);
722 /* # Rx chains when idling and maybe trying to save power */ 723 /* # Rx chains when idling and maybe trying to save power */
723 switch (priv->ps_mode) { 724 switch (priv->current_ht_config.sm_ps) {
724 case WLAN_HT_CAP_SM_PS_STATIC: 725 case WLAN_HT_CAP_SM_PS_STATIC:
725 case WLAN_HT_CAP_SM_PS_DYNAMIC: 726 case WLAN_HT_CAP_SM_PS_DYNAMIC:
726 idle_cnt = (is_cam) ? 2 : 1; 727 idle_cnt = (is_cam) ? 2 : 1;
@@ -730,7 +731,8 @@ static int iwl_get_idle_rx_chain_count(struct iwl_priv *priv, int active_cnt)
730 break; 731 break;
731 case WLAN_HT_CAP_SM_PS_INVALID: 732 case WLAN_HT_CAP_SM_PS_INVALID:
732 default: 733 default:
733 IWL_ERROR("invalide mimo ps mode %d\n", priv->ps_mode); 734 IWL_ERROR("invalide mimo ps mode %d\n",
735 priv->current_ht_config.sm_ps);
734 WARN_ON(1); 736 WARN_ON(1);
735 idle_cnt = -1; 737 idle_cnt = -1;
736 break; 738 break;
@@ -912,7 +914,7 @@ int iwl_init_drv(struct iwl_priv *priv)
912 priv->iw_mode = IEEE80211_IF_TYPE_STA; 914 priv->iw_mode = IEEE80211_IF_TYPE_STA;
913 915
914 priv->use_ant_b_for_management_frame = 1; /* start with ant B */ 916 priv->use_ant_b_for_management_frame = 1; /* start with ant B */
915 priv->ps_mode = WLAN_HT_CAP_SM_PS_DISABLED; 917 priv->current_ht_config.sm_ps = WLAN_HT_CAP_SM_PS_DISABLED;
916 918
917 /* Choose which receivers/antennas to use */ 919 /* Choose which receivers/antennas to use */
918 iwl_set_rxon_chain(priv); 920 iwl_set_rxon_chain(priv);
diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h
index f302e93b7798..7934f56f7292 100644
--- a/drivers/net/wireless/iwlwifi/iwl-dev.h
+++ b/drivers/net/wireless/iwlwifi/iwl-dev.h
@@ -406,6 +406,7 @@ struct iwl_ht_info {
406 /* self configuration data */ 406 /* self configuration data */
407 u8 is_ht; 407 u8 is_ht;
408 u8 supported_chan_width; 408 u8 supported_chan_width;
409 u8 sm_ps;
409 u8 is_green_field; 410 u8 is_green_field;
410 u8 sgf; /* HT_SHORT_GI_* short guard interval */ 411 u8 sgf; /* HT_SHORT_GI_* short guard interval */
411 u8 max_amsdu_size; 412 u8 max_amsdu_size;
@@ -990,7 +991,6 @@ struct iwl_priv {
990 * hardware */ 991 * hardware */
991 u16 assoc_id; 992 u16 assoc_id;
992 u16 assoc_capability; 993 u16 assoc_capability;
993 u8 ps_mode;
994 994
995 struct iwl_qos_info qos_data; 995 struct iwl_qos_info qos_data;
996 996