|
@@ -753,6 +753,19 @@ void iwl_set_rxon_chain(struct iwl_priv *priv)
|
|
|
rx_chain |= active_rx_cnt << RXON_RX_CHAIN_MIMO_CNT_POS;
|
|
|
rx_chain |= idle_rx_cnt << RXON_RX_CHAIN_CNT_POS;
|
|
|
|
|
|
+ /* copied from 'iwl_bg_request_scan()' */
|
|
|
+ /* Force use of chains B and C (0x6) for Rx for 4965
|
|
|
+ * Avoid A (0x1) because of its off-channel reception on A-band.
|
|
|
+ * MIMO is not used here, but value is required */
|
|
|
+ if (iwl_is_monitor_mode(priv) &&
|
|
|
+ !(priv->staging_rxon.flags & RXON_FLG_BAND_24G_MSK) &&
|
|
|
+ ((priv->hw_rev & CSR_HW_REV_TYPE_MSK) == CSR_HW_REV_TYPE_4965)) {
|
|
|
+ rx_chain = 0x07 << RXON_RX_CHAIN_VALID_POS;
|
|
|
+ rx_chain |= 0x06 << RXON_RX_CHAIN_FORCE_SEL_POS;
|
|
|
+ rx_chain |= 0x07 << RXON_RX_CHAIN_FORCE_MIMO_SEL_POS;
|
|
|
+ rx_chain |= 0x01 << RXON_RX_CHAIN_DRIVER_FORCE_POS;
|
|
|
+ }
|
|
|
+
|
|
|
priv->staging_rxon.rx_chain = cpu_to_le16(rx_chain);
|
|
|
|
|
|
if (!is_single && (active_rx_cnt >= IWL_NUM_RX_CHAINS_SINGLE) && is_cam)
|