qca-wifi: CFR: LUT ageout timer fixes

In CFR error handling lut ageout timer, following fixes are made -
1. Fire error handling timer every 3 secs
2. Start/Stop timer only when pdev->cfr_rcc_mode transitions from enable
to disable and vice versa
3. Stop/Free timer during deinit of pdev, incase user issues wifi down
without disabling cfr

Change-Id: I2f9819706d1440d675edfdd933839dbc3ebddbb0
Цей коміт міститься в:
Padma Raghunathan
2020-01-24 23:01:58 +05:30
зафіксовано Adwait Nayak
джерело 17b9bae759
коміт cc9e0e7376
2 змінених файлів з 22 додано та 4 видалено

Переглянути файл

@@ -1462,6 +1462,8 @@ static os_timer_func(lut_ageout_timer_task)
}
}
if (pcfr->lut_timer_init)
qdf_timer_mod(&pcfr->lut_age_timer, LUT_AGE_TIMER);
wlan_objmgr_pdev_release_ref(pdev, WLAN_CFR_ID);
}
@@ -1479,7 +1481,9 @@ QDF_STATUS target_if_cfr_start_lut_age_timer(struct wlan_objmgr_pdev *pdev)
pcfr = wlan_objmgr_pdev_get_comp_private_obj(pdev,
WLAN_UMAC_COMP_CFR);
qdf_timer_mod(&pcfr->lut_age_timer, LUT_AGE_TIMER);
if (pcfr->lut_timer_init)
qdf_timer_mod(&pcfr->lut_age_timer, LUT_AGE_TIMER);
return QDF_STATUS_SUCCESS;
}
@@ -1497,7 +1501,9 @@ QDF_STATUS target_if_cfr_stop_lut_age_timer(struct wlan_objmgr_pdev *pdev)
pcfr = wlan_objmgr_pdev_get_comp_private_obj(pdev,
WLAN_UMAC_COMP_CFR);
qdf_timer_stop(&pcfr->lut_age_timer);
if (pcfr->lut_timer_init)
qdf_timer_stop(&pcfr->lut_age_timer);
return QDF_STATUS_SUCCESS;
}
@@ -1598,6 +1604,7 @@ QDF_STATUS cfr_6018_deinit_pdev(struct wlan_objmgr_psoc *psoc,
}
if (pcfr->lut_timer_init) {
qdf_timer_stop(&pcfr->lut_age_timer);
qdf_timer_free(&(pcfr->lut_age_timer));
pcfr->lut_timer_init = 0;
}

Переглянути файл

@@ -919,6 +919,7 @@ QDF_STATUS ucfg_cfr_committed_rcc_config(struct wlan_objmgr_vdev *vdev)
{
struct pdev_cfr *pcfr = NULL;
struct wlan_objmgr_pdev *pdev = NULL;
struct wlan_objmgr_psoc *psoc = NULL;
QDF_STATUS status = QDF_STATUS_SUCCESS;
struct cdp_monitor_filter filter_val = {0};
@@ -926,6 +927,12 @@ QDF_STATUS ucfg_cfr_committed_rcc_config(struct wlan_objmgr_vdev *vdev)
if (status != QDF_STATUS_SUCCESS)
return status;
psoc = wlan_pdev_get_psoc(pdev);
if (!psoc) {
cfr_err("psoc is null!");
return QDF_STATUS_E_NULL_VALUE;
}
/*
* If capture mode is valid, then Host:
* Subscribes for PPDU status TLVs in monitor status ring.
@@ -990,11 +997,15 @@ QDF_STATUS ucfg_cfr_committed_rcc_config(struct wlan_objmgr_vdev *vdev)
filter_val.fp_ctrl |= FILTER_CTRL_VHT_NDP;
}
if (!cdp_get_cfr_rcc(wlan_psoc_get_dp_handle(psoc),
wlan_objmgr_pdev_get_pdev_id(pdev)))
tgt_cfr_start_lut_age_timer(pdev);
cfr_set_filter(pdev, 1, &filter_val);
tgt_cfr_start_lut_age_timer(pdev);
} else {
if (cdp_get_cfr_rcc(wlan_psoc_get_dp_handle(psoc),
wlan_objmgr_pdev_get_pdev_id(pdev)))
tgt_cfr_stop_lut_age_timer(pdev);
cfr_set_filter(pdev, 0, &filter_val);
tgt_cfr_stop_lut_age_timer(pdev);
}
/* Trigger wmi to start the TLV processing. */