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