|
@@ -812,16 +812,29 @@ static void iwl_bg_request_scan(struct work_struct *data)
|
|
|
rate = IWL_RATE_1M_PLCP;
|
|
|
rate_flags = RATE_MCS_CCK_MSK;
|
|
|
}
|
|
|
- scan->good_CRC_th = 0;
|
|
|
+ scan->good_CRC_th = IWL_GOOD_CRC_TH_DISABLED;
|
|
|
} else if (priv->scan_bands & BIT(IEEE80211_BAND_5GHZ)) {
|
|
|
band = IEEE80211_BAND_5GHZ;
|
|
|
rate = IWL_RATE_6M_PLCP;
|
|
|
/*
|
|
|
- * If active scaning is requested but a certain channel
|
|
|
- * is marked passive, we can do active scanning if we
|
|
|
- * detect transmissions.
|
|
|
+ * If active scanning is requested but a certain channel is
|
|
|
+ * marked passive, we can do active scanning if we detect
|
|
|
+ * transmissions.
|
|
|
+ *
|
|
|
+ * There is an issue with some firmware versions that triggers
|
|
|
+ * a sysassert on a "good CRC threshold" of zero (== disabled),
|
|
|
+ * on a radar channel even though this means that we should NOT
|
|
|
+ * send probes.
|
|
|
+ *
|
|
|
+ * The "good CRC threshold" is the number of frames that we
|
|
|
+ * need to receive during our dwell time on a channel before
|
|
|
+ * sending out probes -- setting this to a huge value will
|
|
|
+ * mean we never reach it, but at the same time work around
|
|
|
+ * the aforementioned issue. Thus use IWL_GOOD_CRC_TH_NEVER
|
|
|
+ * here instead of IWL_GOOD_CRC_TH_DISABLED.
|
|
|
*/
|
|
|
- scan->good_CRC_th = is_active ? IWL_GOOD_CRC_TH : 0;
|
|
|
+ scan->good_CRC_th = is_active ? IWL_GOOD_CRC_TH_DEFAULT :
|
|
|
+ IWL_GOOD_CRC_TH_NEVER;
|
|
|
|
|
|
/* Force use of chains B and C (0x6) for scan Rx for 4965
|
|
|
* Avoid A (0x1) because of its off-channel reception on A-band.
|