|
@@ -807,6 +807,18 @@ void iwl_chain_noise_calibration(struct iwl_priv *priv,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /*
|
|
|
+ * The above algorithm sometimes fails when the ucode
|
|
|
+ * reports 0 for all chains. It's not clear why that
|
|
|
+ * happens to start with, but it is then causing trouble
|
|
|
+ * because this can make us enable more chains than the
|
|
|
+ * hardware really has.
|
|
|
+ *
|
|
|
+ * To be safe, simply mask out any chains that we know
|
|
|
+ * are not on the device.
|
|
|
+ */
|
|
|
+ active_chains &= priv->hw_params.valid_rx_ant;
|
|
|
+
|
|
|
num_tx_chains = 0;
|
|
|
for (i = 0; i < NUM_RX_CHAINS; i++) {
|
|
|
/* loops on all the bits of
|