diff --git a/umac/scan/dispatcher/src/wlan_scan_ucfg_api.c b/umac/scan/dispatcher/src/wlan_scan_ucfg_api.c index 09ab0877e11c..5f2a69a21aa2 100644 --- a/umac/scan/dispatcher/src/wlan_scan_ucfg_api.c +++ b/umac/scan/dispatcher/src/wlan_scan_ucfg_api.c @@ -1115,6 +1115,31 @@ ucfg_scan_psoc_close(struct wlan_objmgr_psoc *psoc) return QDF_STATUS_SUCCESS; } +static bool scm_serialization_scan_rules_cb( + union wlan_serialization_rules_info *comp_info, + uint8_t comp_id) +{ + switch (comp_id) { + case QDF_MODULE_ID_TDLS: + if (comp_info->scan_info.is_tdls_in_progress) { + scm_info("Cancel scan. Tdls in progress"); + return false; + } + break; + case QDF_MODULE_ID_DFS: + if (comp_info->scan_info.is_cac_in_progress) { + scm_info("Cancel scan. CAC in progress"); + return false; + } + break; + default: + scm_info("not handled comp_id %d", comp_id); + break; + } + + return true; +} + QDF_STATUS ucfg_scan_psoc_enable(struct wlan_objmgr_psoc *psoc) { @@ -1130,7 +1155,10 @@ ucfg_scan_psoc_enable(struct wlan_objmgr_psoc *psoc) QDF_ASSERT(status == QDF_STATUS_SUCCESS); scm_db_init(psoc); ucfg_scan_register_unregister_bcn_cb(psoc, true); - + status = wlan_serialization_register_apply_rules_cb(psoc, + WLAN_SER_CMD_SCAN, + scm_serialization_scan_rules_cb); + QDF_ASSERT(status == QDF_STATUS_SUCCESS); return status; }