qcacmn: Enable configurable dfs_pri_multiplier

Enable configurable dfs_pri_multiplier. The ETSI typ2 type3 radar
detection ratio is lower than expected(>80%) while channel loading is
high(>30%). The host improvement for this are:
	1. Add configurable dfs_pri_multiplier, controlled by
	   DFS_PRI_MULTIPLIER. Default value 2, min 1, max 10.
	2. Lower adrastea ETSI type 2/3/4 radar filter rssi_threshold,
	   controlled by DFS_OVERRIDE_RF_THRESHOLD, dfs log shows that
	   QCS405 target report RSSI range [18, 45] while radar power
	   is 3 dbm. By using default rssi_threshold 24 will reject
	   many radar pulses, which leads to low detection ratio.
	3. Calculate deltapri for each searchpri based on dfs_pri_multiplier
	   in dfs_count_the_other_delay_elements(), check deltapri
	   between [1, dfs_pri_multiplier] * refpri and searchpri, if
	   the primargin is desired, mark it as matched pulse.
	4. Pick lowpri as refpri for the radar filter with
	   rf_ignore_pri_window equals to 0 while DFS_PRI_MULTIPLIER is
	   enabled. Observed original findref logic has some problems
	   which selects refpri is bigger than lowpri, which leads to
	   the lowpri pulses pri_match are set to 0, and in this case,
	   radar was not detected. Example for the issue, assume
	   rf->rf_pulseid 34 (ETSI type 2) has 7 pulses with pri:
	   1489, 2978, 2978, 2978, 1489, 2978, 1489 us in this case,
	   highscore is 4 (2978), scoreindex is 5, refpri is 2978, which
	   leads to: index 0, 4, 6 pulses with pri_match 0 in
	   dfs_count_the_other_delay_elements(). The fix is to select
	   lowpri as refpri(1489 in this case).

Change-Id: I1f3ca3298c9ab1f1e2651ad6b4a0a4810f83f8a1
CRs-Fixed: 2531811
Šī revīzija ir iekļauta:
Hangtian Zhu
2019-09-20 14:36:31 +08:00
revīziju iesūtīja nshrivas
vecāks 31a575b99e
revīzija 62547ed826
8 mainīti faili ar 157 papildinājumiem un 9 dzēšanām

Parādīt failu

@@ -213,6 +213,27 @@ static bool target_if_dfs_offload(struct wlan_objmgr_psoc *psoc)
wmi_service_dfs_phyerr_offload);
}
static QDF_STATUS target_if_dfs_get_target_type(struct wlan_objmgr_pdev *pdev,
uint32_t *target_type)
{
struct wlan_objmgr_psoc *psoc;
struct target_psoc_info *tgt_psoc_info;
psoc = wlan_pdev_get_psoc(pdev);
if (!psoc) {
target_if_err("null psoc");
return QDF_STATUS_E_FAILURE;
}
tgt_psoc_info = wlan_psoc_get_tgt_if_handle(psoc);
if (!tgt_psoc_info) {
target_if_err("null tgt_psoc_info");
return QDF_STATUS_E_FAILURE;
}
*target_type = target_psoc_get_target_type(tgt_psoc_info);
return QDF_STATUS_SUCCESS;
}
static QDF_STATUS target_if_dfs_register_event_handler(
struct wlan_objmgr_psoc *psoc)
{
@@ -386,5 +407,6 @@ QDF_STATUS target_if_register_dfs_tx_ops(struct wlan_lmac_if_tx_ops *tx_ops)
&target_send_usenol_pdev_param;
dfs_tx_ops->dfs_send_subchan_marking_pdev_param =
&target_send_subchan_marking_pdev_param;
dfs_tx_ops->dfs_get_target_type = &target_if_dfs_get_target_type;
return QDF_STATUS_SUCCESS;
}