aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-1000.c8
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-6000.c8
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-core.h2
3 files changed, 16 insertions, 2 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-1000.c b/drivers/net/wireless/iwlwifi/iwl-1000.c
index 3c983e426f25..94521d4417a2 100644
--- a/drivers/net/wireless/iwlwifi/iwl-1000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-1000.c
@@ -147,7 +147,11 @@ static int iwl1000_hw_set_hw_params(struct iwl_priv *priv)
147 priv->hw_params.rx_wrt_ptr_reg = FH_RSCSR_CHNL0_WPTR; 147 priv->hw_params.rx_wrt_ptr_reg = FH_RSCSR_CHNL0_WPTR;
148 148
149 priv->hw_params.tx_chains_num = num_of_ant(priv->cfg->valid_tx_ant); 149 priv->hw_params.tx_chains_num = num_of_ant(priv->cfg->valid_tx_ant);
150 priv->hw_params.rx_chains_num = num_of_ant(priv->cfg->valid_rx_ant); 150 if (priv->cfg->rx_with_siso_diversity)
151 priv->hw_params.rx_chains_num = 1;
152 else
153 priv->hw_params.rx_chains_num =
154 num_of_ant(priv->cfg->valid_rx_ant);
151 priv->hw_params.valid_tx_ant = priv->cfg->valid_tx_ant; 155 priv->hw_params.valid_tx_ant = priv->cfg->valid_tx_ant;
152 priv->hw_params.valid_rx_ant = priv->cfg->valid_rx_ant; 156 priv->hw_params.valid_rx_ant = priv->cfg->valid_rx_ant;
153 157
@@ -311,6 +315,7 @@ struct iwl_cfg iwl100_bgn_cfg = {
311 .base_params = &iwl1000_base_params, 315 .base_params = &iwl1000_base_params,
312 .ht_params = &iwl1000_ht_params, 316 .ht_params = &iwl1000_ht_params,
313 .led_mode = IWL_LED_RF_STATE, 317 .led_mode = IWL_LED_RF_STATE,
318 .rx_with_siso_diversity = true,
314}; 319};
315 320
316struct iwl_cfg iwl100_bg_cfg = { 321struct iwl_cfg iwl100_bg_cfg = {
@@ -324,6 +329,7 @@ struct iwl_cfg iwl100_bg_cfg = {
324 .mod_params = &iwlagn_mod_params, 329 .mod_params = &iwlagn_mod_params,
325 .base_params = &iwl1000_base_params, 330 .base_params = &iwl1000_base_params,
326 .led_mode = IWL_LED_RF_STATE, 331 .led_mode = IWL_LED_RF_STATE,
332 .rx_with_siso_diversity = true,
327}; 333};
328 334
329MODULE_FIRMWARE(IWL1000_MODULE_FIRMWARE(IWL1000_UCODE_API_MAX)); 335MODULE_FIRMWARE(IWL1000_MODULE_FIRMWARE(IWL1000_UCODE_API_MAX));
diff --git a/drivers/net/wireless/iwlwifi/iwl-6000.c b/drivers/net/wireless/iwlwifi/iwl-6000.c
index 10a536969eb6..8a789241704f 100644
--- a/drivers/net/wireless/iwlwifi/iwl-6000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-6000.c
@@ -182,7 +182,11 @@ static int iwl6000_hw_set_hw_params(struct iwl_priv *priv)
182 priv->hw_params.rx_wrt_ptr_reg = FH_RSCSR_CHNL0_WPTR; 182 priv->hw_params.rx_wrt_ptr_reg = FH_RSCSR_CHNL0_WPTR;
183 183
184 priv->hw_params.tx_chains_num = num_of_ant(priv->cfg->valid_tx_ant); 184 priv->hw_params.tx_chains_num = num_of_ant(priv->cfg->valid_tx_ant);
185 priv->hw_params.rx_chains_num = num_of_ant(priv->cfg->valid_rx_ant); 185 if (priv->cfg->rx_with_siso_diversity)
186 priv->hw_params.rx_chains_num = 1;
187 else
188 priv->hw_params.rx_chains_num =
189 num_of_ant(priv->cfg->valid_rx_ant);
186 priv->hw_params.valid_tx_ant = priv->cfg->valid_tx_ant; 190 priv->hw_params.valid_tx_ant = priv->cfg->valid_tx_ant;
187 priv->hw_params.valid_rx_ant = priv->cfg->valid_rx_ant; 191 priv->hw_params.valid_rx_ant = priv->cfg->valid_rx_ant;
188 192
@@ -841,6 +845,7 @@ struct iwl_cfg iwl130_bgn_cfg = {
841 .adv_pm = true, 845 .adv_pm = true,
842 /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */ 846 /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */
843 .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, 847 .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A,
848 .rx_with_siso_diversity = true,
844}; 849};
845 850
846struct iwl_cfg iwl130_bg_cfg = { 851struct iwl_cfg iwl130_bg_cfg = {
@@ -859,6 +864,7 @@ struct iwl_cfg iwl130_bg_cfg = {
859 .adv_pm = true, 864 .adv_pm = true,
860 /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */ 865 /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */
861 .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, 866 .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A,
867 .rx_with_siso_diversity = true,
862}; 868};
863 869
864MODULE_FIRMWARE(IWL6000_MODULE_FIRMWARE(IWL6000_UCODE_API_MAX)); 870MODULE_FIRMWARE(IWL6000_MODULE_FIRMWARE(IWL6000_UCODE_API_MAX));
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.h b/drivers/net/wireless/iwlwifi/iwl-core.h
index 568920ac982d..d0b86f5e28c2 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.h
+++ b/drivers/net/wireless/iwlwifi/iwl-core.h
@@ -364,6 +364,7 @@ struct iwl_ht_params {
364 * @scan_antennas: available antenna for scan operation 364 * @scan_antennas: available antenna for scan operation
365 * @led_mode: 0=blinking, 1=On(RF On)/Off(RF Off) 365 * @led_mode: 0=blinking, 1=On(RF On)/Off(RF Off)
366 * @adv_pm: advance power management 366 * @adv_pm: advance power management
367 * @rx_with_siso_diversity: 1x1 device with rx antenna diversity
367 * 368 *
368 * We enable the driver to be backward compatible wrt API version. The 369 * We enable the driver to be backward compatible wrt API version. The
369 * driver specifies which APIs it supports (with @ucode_api_max being the 370 * driver specifies which APIs it supports (with @ucode_api_max being the
@@ -412,6 +413,7 @@ struct iwl_cfg {
412 u8 scan_tx_antennas[IEEE80211_NUM_BANDS]; 413 u8 scan_tx_antennas[IEEE80211_NUM_BANDS];
413 enum iwl_led_mode led_mode; 414 enum iwl_led_mode led_mode;
414 const bool adv_pm; 415 const bool adv_pm;
416 const bool rx_with_siso_diversity;
415}; 417};
416 418
417/*************************** 419/***************************