qcacmn: CFR: RCC cannot coexist with M_TX_ACK mode

Coexistence of RCC and M_TX_ACk mode is not supported

Change-Id: I4c23fe87019e8525920dadaeb0b42b4b57c0061a
CRs-Fixed: 2649714
This commit is contained in:
Adwait Nayak 2020-03-18 12:25:35 +05:30 • committed by nshrivas
commit 1ae6dd1464

View file

@ -27,6 +27,34 @@
#include "cdp_txrx_ctrl.h"
#endif
#ifdef WLAN_ENH_CFR_ENABLE
static bool cfr_is_filter_enabled(struct cfr_rcc_param *rcc_param)
{
if (rcc_param->m_directed_ftm ||
rcc_param->m_all_ftm_ack ||
rcc_param->m_ndpa_ndp_directed ||
rcc_param->m_ndpa_ndp_all ||
rcc_param->m_ta_ra_filter ||
rcc_param->m_all_packet)
return true;
else
return false;
}
static bool cfr_is_rcc_enabled(struct pdev_cfr *pa)
{
if (pa->is_cfr_rcc_capable &&
cfr_is_filter_enabled(&pa->rcc_param))
return true;
else
return false;
}
#else
static bool cfr_is_rcc_enabled(struct pdev_cfr *pa)
{
return false;
}
#endif
int ucfg_cfr_start_capture(struct wlan_objmgr_pdev *pdev,
struct wlan_objmgr_peer *peer,
struct cfr_capture_params *params)
@ -77,6 +105,12 @@ int ucfg_cfr_start_capture(struct wlan_objmgr_pdev *pdev,
pa->cfr_current_sta_count++;
}
if (cfr_is_rcc_enabled(pa)) {
cfr_err("This is not allowed since RCC is enabled");
pa->cfr_timer_enable = 0;
return -EINVAL;
}
status = tgt_cfr_start_capture(pdev, peer, params);
if (status == 0) {
@ -616,19 +650,6 @@ QDF_STATUS ucfg_cfr_set_tara_config(struct wlan_objmgr_vdev *vdev,
return status;
}
static bool cfr_is_filter_enabled(struct cfr_rcc_param *rcc_param)
{
if (rcc_param->m_directed_ftm ||
rcc_param->m_all_ftm_ack ||
rcc_param->m_ndpa_ndp_directed ||
rcc_param->m_ndpa_ndp_all ||
rcc_param->m_ta_ra_filter ||
rcc_param->m_all_packet)
return true;
else
return false;
}
QDF_STATUS ucfg_cfr_get_cfg(struct wlan_objmgr_vdev *vdev)
{
struct pdev_cfr *pcfr = NULL;
@ -641,7 +662,7 @@ QDF_STATUS ucfg_cfr_get_cfg(struct wlan_objmgr_vdev *vdev)
if (status != QDF_STATUS_SUCCESS)
return status;
if (!cfr_is_filter_enabled(&pcfr->rcc_param)) {
cfr_err(" All RCC modes are disabled.");
cfr_err(" All RCC modes are disabled");
wlan_objmgr_pdev_release_ref(pdev, WLAN_CFR_ID);
return status;
}
@ -946,6 +967,7 @@ QDF_STATUS ucfg_cfr_committed_rcc_config(struct wlan_objmgr_vdev *vdev)
if (!psoc) {
cfr_err("psoc is null!");
wlan_objmgr_pdev_release_ref(pdev, WLAN_CFR_ID);
return QDF_STATUS_E_NULL_VALUE;
}
/*
@ -962,6 +984,12 @@ QDF_STATUS ucfg_cfr_committed_rcc_config(struct wlan_objmgr_vdev *vdev)
*/
if (cfr_is_filter_enabled(&pcfr->rcc_param)) {
if (pcfr->cfr_timer_enable) {
cfr_err("Not allowed: Periodic capture is enabled.\n");
wlan_objmgr_pdev_release_ref(pdev, WLAN_CFR_ID);
return QDF_STATUS_E_NOSUPPORT;
}
if (pcfr->rcc_param.m_all_ftm_ack) {
filter_val.mode |= MON_FILTER_PASS |
MON_FILTER_OTHER;