|
@@ -1018,6 +1018,78 @@ target_pdev_scan_radio_is_dfs_enabled(struct wlan_objmgr_pdev *pdev,
|
|
|
return QDF_STATUS_E_INVAL;
|
|
|
}
|
|
|
|
|
|
+QDF_STATUS
|
|
|
+target_is_scan_blanking_enabled(struct wlan_objmgr_pdev *pdev,
|
|
|
+ bool *blanking_en)
|
|
|
+{
|
|
|
+ struct wlan_objmgr_psoc *psoc;
|
|
|
+ struct wlan_psoc_host_scan_radio_caps *scan_radio_caps;
|
|
|
+ uint8_t cap_idx;
|
|
|
+ uint32_t num_scan_radio_caps, pdev_id;
|
|
|
+ int32_t phy_id;
|
|
|
+ struct target_psoc_info *tgt_psoc_info;
|
|
|
+ struct target_pdev_info *tgt_pdev;
|
|
|
+
|
|
|
+ if (!blanking_en) {
|
|
|
+ target_if_err("input argument is null");
|
|
|
+ return QDF_STATUS_E_NULL_VALUE;
|
|
|
+ }
|
|
|
+ *blanking_en = false;
|
|
|
+
|
|
|
+ if (!pdev) {
|
|
|
+ target_if_err("pdev is null");
|
|
|
+ return QDF_STATUS_E_NULL_VALUE;
|
|
|
+ }
|
|
|
+
|
|
|
+ psoc = wlan_pdev_get_psoc(pdev);
|
|
|
+ if (!psoc) {
|
|
|
+ target_if_err("psoc is null");
|
|
|
+ return QDF_STATUS_E_NULL_VALUE;
|
|
|
+ }
|
|
|
+
|
|
|
+ tgt_psoc_info = wlan_psoc_get_tgt_if_handle(psoc);
|
|
|
+ if (!tgt_psoc_info) {
|
|
|
+ target_if_err("target_psoc_info is null");
|
|
|
+ return QDF_STATUS_E_NULL_VALUE;
|
|
|
+ }
|
|
|
+
|
|
|
+ num_scan_radio_caps =
|
|
|
+ target_psoc_get_num_scan_radio_caps(tgt_psoc_info);
|
|
|
+ if (!num_scan_radio_caps) {
|
|
|
+ target_if_err("scan radio not supported for psoc");
|
|
|
+ return QDF_STATUS_E_NULL_VALUE;
|
|
|
+ }
|
|
|
+
|
|
|
+ scan_radio_caps = target_psoc_get_scan_radio_caps(tgt_psoc_info);
|
|
|
+ if (!scan_radio_caps) {
|
|
|
+ target_if_err("scan radio capabilities is null");
|
|
|
+ return QDF_STATUS_E_NULL_VALUE;
|
|
|
+ }
|
|
|
+
|
|
|
+ tgt_pdev = (struct target_pdev_info *)wlan_pdev_get_tgt_if_handle(pdev);
|
|
|
+ if (!tgt_pdev) {
|
|
|
+ target_if_err("target_pdev_info is null");
|
|
|
+ return QDF_STATUS_E_NULL_VALUE;
|
|
|
+ }
|
|
|
+
|
|
|
+ pdev_id = wlan_objmgr_pdev_get_pdev_id(pdev);
|
|
|
+ phy_id = target_pdev_get_phy_idx(tgt_pdev);
|
|
|
+ if (phy_id < 0) {
|
|
|
+ target_if_err("phy_id is invalid");
|
|
|
+ return QDF_STATUS_E_INVAL;
|
|
|
+ }
|
|
|
+
|
|
|
+ for (cap_idx = 0; cap_idx < num_scan_radio_caps; cap_idx++)
|
|
|
+ if (scan_radio_caps[cap_idx].phy_id == phy_id) {
|
|
|
+ *blanking_en = scan_radio_caps[cap_idx].blanking_en;
|
|
|
+ return QDF_STATUS_SUCCESS;
|
|
|
+ }
|
|
|
+
|
|
|
+ target_if_err("No scan radio cap found in pdev %d", pdev_id);
|
|
|
+
|
|
|
+ return QDF_STATUS_E_INVAL;
|
|
|
+}
|
|
|
+
|
|
|
void target_if_set_reg_cc_ext_supp(struct target_psoc_info *tgt_hdl,
|
|
|
struct wlan_objmgr_psoc *psoc)
|
|
|
{
|