Commit 17423ea8 authored by Wey-Yi Guy's avatar Wey-Yi Guy

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: default avatarWey-Yi Guy <wey-yi.w.guy@intel.com>
parent 9decde95
...@@ -147,7 +147,11 @@ static int iwl1000_hw_set_hw_params(struct iwl_priv *priv) ...@@ -147,7 +147,11 @@ static int iwl1000_hw_set_hw_params(struct iwl_priv *priv)
priv->hw_params.rx_wrt_ptr_reg = FH_RSCSR_CHNL0_WPTR; priv->hw_params.rx_wrt_ptr_reg = FH_RSCSR_CHNL0_WPTR;
priv->hw_params.tx_chains_num = num_of_ant(priv->cfg->valid_tx_ant); priv->hw_params.tx_chains_num = num_of_ant(priv->cfg->valid_tx_ant);
priv->hw_params.rx_chains_num = num_of_ant(priv->cfg->valid_rx_ant); if (priv->cfg->rx_with_siso_diversity)
priv->hw_params.rx_chains_num = 1;
else
priv->hw_params.rx_chains_num =
num_of_ant(priv->cfg->valid_rx_ant);
priv->hw_params.valid_tx_ant = priv->cfg->valid_tx_ant; priv->hw_params.valid_tx_ant = priv->cfg->valid_tx_ant;
priv->hw_params.valid_rx_ant = priv->cfg->valid_rx_ant; priv->hw_params.valid_rx_ant = priv->cfg->valid_rx_ant;
...@@ -311,6 +315,7 @@ struct iwl_cfg iwl100_bgn_cfg = { ...@@ -311,6 +315,7 @@ struct iwl_cfg iwl100_bgn_cfg = {
.base_params = &iwl1000_base_params, .base_params = &iwl1000_base_params,
.ht_params = &iwl1000_ht_params, .ht_params = &iwl1000_ht_params,
.led_mode = IWL_LED_RF_STATE, .led_mode = IWL_LED_RF_STATE,
.rx_with_siso_diversity = true,
}; };
struct iwl_cfg iwl100_bg_cfg = { struct iwl_cfg iwl100_bg_cfg = {
...@@ -324,6 +329,7 @@ struct iwl_cfg iwl100_bg_cfg = { ...@@ -324,6 +329,7 @@ struct iwl_cfg iwl100_bg_cfg = {
.mod_params = &iwlagn_mod_params, .mod_params = &iwlagn_mod_params,
.base_params = &iwl1000_base_params, .base_params = &iwl1000_base_params,
.led_mode = IWL_LED_RF_STATE, .led_mode = IWL_LED_RF_STATE,
.rx_with_siso_diversity = true,
}; };
MODULE_FIRMWARE(IWL1000_MODULE_FIRMWARE(IWL1000_UCODE_API_MAX)); MODULE_FIRMWARE(IWL1000_MODULE_FIRMWARE(IWL1000_UCODE_API_MAX));
......
...@@ -182,7 +182,11 @@ static int iwl6000_hw_set_hw_params(struct iwl_priv *priv) ...@@ -182,7 +182,11 @@ static int iwl6000_hw_set_hw_params(struct iwl_priv *priv)
priv->hw_params.rx_wrt_ptr_reg = FH_RSCSR_CHNL0_WPTR; priv->hw_params.rx_wrt_ptr_reg = FH_RSCSR_CHNL0_WPTR;
priv->hw_params.tx_chains_num = num_of_ant(priv->cfg->valid_tx_ant); priv->hw_params.tx_chains_num = num_of_ant(priv->cfg->valid_tx_ant);
priv->hw_params.rx_chains_num = num_of_ant(priv->cfg->valid_rx_ant); if (priv->cfg->rx_with_siso_diversity)
priv->hw_params.rx_chains_num = 1;
else
priv->hw_params.rx_chains_num =
num_of_ant(priv->cfg->valid_rx_ant);
priv->hw_params.valid_tx_ant = priv->cfg->valid_tx_ant; priv->hw_params.valid_tx_ant = priv->cfg->valid_tx_ant;
priv->hw_params.valid_rx_ant = priv->cfg->valid_rx_ant; priv->hw_params.valid_rx_ant = priv->cfg->valid_rx_ant;
...@@ -841,6 +845,7 @@ struct iwl_cfg iwl130_bgn_cfg = { ...@@ -841,6 +845,7 @@ struct iwl_cfg iwl130_bgn_cfg = {
.adv_pm = true, .adv_pm = true,
/* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */ /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */
.scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A,
.rx_with_siso_diversity = true,
}; };
struct iwl_cfg iwl130_bg_cfg = { struct iwl_cfg iwl130_bg_cfg = {
...@@ -859,6 +864,7 @@ struct iwl_cfg iwl130_bg_cfg = { ...@@ -859,6 +864,7 @@ struct iwl_cfg iwl130_bg_cfg = {
.adv_pm = true, .adv_pm = true,
/* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */ /* Due to bluetooth, we transmit 2.4 GHz probes only on antenna A */
.scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A, .scan_tx_antennas[IEEE80211_BAND_2GHZ] = ANT_A,
.rx_with_siso_diversity = true,
}; };
MODULE_FIRMWARE(IWL6000_MODULE_FIRMWARE(IWL6000_UCODE_API_MAX)); MODULE_FIRMWARE(IWL6000_MODULE_FIRMWARE(IWL6000_UCODE_API_MAX));
......
...@@ -364,6 +364,7 @@ struct iwl_ht_params { ...@@ -364,6 +364,7 @@ struct iwl_ht_params {
* @scan_antennas: available antenna for scan operation * @scan_antennas: available antenna for scan operation
* @led_mode: 0=blinking, 1=On(RF On)/Off(RF Off) * @led_mode: 0=blinking, 1=On(RF On)/Off(RF Off)
* @adv_pm: advance power management * @adv_pm: advance power management
* @rx_with_siso_diversity: 1x1 device with rx antenna diversity
* *
* We enable the driver to be backward compatible wrt API version. The * We enable the driver to be backward compatible wrt API version. The
* driver specifies which APIs it supports (with @ucode_api_max being the * driver specifies which APIs it supports (with @ucode_api_max being the
...@@ -412,6 +413,7 @@ struct iwl_cfg { ...@@ -412,6 +413,7 @@ struct iwl_cfg {
u8 scan_tx_antennas[IEEE80211_NUM_BANDS]; u8 scan_tx_antennas[IEEE80211_NUM_BANDS];
enum iwl_led_mode led_mode; enum iwl_led_mode led_mode;
const bool adv_pm; const bool adv_pm;
const bool rx_with_siso_diversity;
}; };
/*************************** /***************************
......
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