aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi
diff options
context:
space:
mode:
authorWey-Yi Guy <wey-yi.w.guy@intel.com>2010-12-06 14:51:39 -0500
committerWey-Yi Guy <wey-yi.w.guy@intel.com>2010-12-13 18:51:44 -0500
commit17423ea8776362100b0a9a162cdd4b16b886a4a2 (patch)
tree00da36f5fd1687e9226fe1afdbbad672532b89e3 /drivers/net/wireless/iwlwifi
parent9decde95be8a77a16f5668544bee45d41a7ae665 (diff)
iwlagn: rx antenna diversity
For the new 1x1 devices, hw and uCode will support rx antenna diversity, but we need to indicate 1x1 device to AccessPoint to make sure it won't use MIMO. Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi')
-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 3c983e426f2..94521d4417a 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 10a536969eb..8a789241704 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 568920ac982..d0b86f5e28c 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/***************************