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:

revīziju iesūtīja
nshrivas

vecāks
31a575b99e
revīzija
62547ed826
@@ -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;
|
||||
}
|
||||
|
Atsaukties uz šo jaunā problēmā
Block a user