diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-calib.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-calib.c b/drivers/net/wireless/iwlwifi/iwl-calib.c index 845831ac053e..64de42be7ea3 100644 --- a/drivers/net/wireless/iwlwifi/iwl-calib.c +++ b/drivers/net/wireless/iwlwifi/iwl-calib.c | |||
@@ -807,6 +807,18 @@ void iwl_chain_noise_calibration(struct iwl_priv *priv, | |||
807 | } | 807 | } |
808 | } | 808 | } |
809 | 809 | ||
810 | /* | ||
811 | * The above algorithm sometimes fails when the ucode | ||
812 | * reports 0 for all chains. It's not clear why that | ||
813 | * happens to start with, but it is then causing trouble | ||
814 | * because this can make us enable more chains than the | ||
815 | * hardware really has. | ||
816 | * | ||
817 | * To be safe, simply mask out any chains that we know | ||
818 | * are not on the device. | ||
819 | */ | ||
820 | active_chains &= priv->hw_params.valid_rx_ant; | ||
821 | |||
810 | num_tx_chains = 0; | 822 | num_tx_chains = 0; |
811 | for (i = 0; i < NUM_RX_CHAINS; i++) { | 823 | for (i = 0; i < NUM_RX_CHAINS; i++) { |
812 | /* loops on all the bits of | 824 | /* loops on all the bits of |