浏览代码

qcacld-3.0: Add support for CFR in adrastea target in Kbuild

Add support for CFR feature for adrastea target. A new feature
flag CONFIG_WLAN_CFR_ADRASTEA is introduced for this purpose.
Also adrastea do not support enhanced CFR so when only
WLAN_CFR_ENABLE and WLAN_CFR_ADRASTEA are enabled, some
compilation issues are seen as CONFIG_WLAN_ENH_CFR_ENABLE is
not set.

Fix these compilation issues as well as introduce a new feature
flag to add support for CFR in adrastea.

Change-Id: I52bc235c4d271004698163897c15721023410017
CRs-Fixed: 2705119
Surabhi Vishnoi 4 年之前
父节点
当前提交
6ac5a1226e
共有 2 个文件被更改,包括 73 次插入67 次删除
  1. 7 1
      Kbuild
  2. 66 66
      core/hdd/src/wlan_hdd_cfr.c

+ 7 - 1
Kbuild

@@ -1081,8 +1081,13 @@ WLAN_CFR_OBJS := $(WLAN_CFR_CORE_DIR)/cfr_common.o \
                 $(WLAN_CFR_DISP_DIR)/wlan_cfr_ucfg_api.o \
                 $(WLAN_CFR_DISP_DIR)/wlan_cfr_utils_api.o \
 		$(WLAN_COMMON_ROOT)/target_if/cfr/src/target_if_cfr.o \
-		$(WLAN_COMMON_ROOT)/target_if/cfr/src/target_if_cfr_enh.o \
 		$(WLAN_COMMON_ROOT)/target_if/cfr/src/target_if_cfr_6490.o
+ifeq ($(CONFIG_WLAN_ENH_CFR_ENABLE),y)
+WLAN_CFR_OBJS += $(WLAN_COMMON_ROOT)/target_if/cfr/src/target_if_cfr_enh.o
+endif
+ifeq ($(CONFIG_WLAN_CFR_ADRASTEA),y)
+WLAN_CFR_OBJS += $(WLAN_COMMON_ROOT)/target_if/cfr/src/target_if_cfr_adrastea.o
+endif
 endif
 
 $(call add-wlan-objs,wlan_cfr,$(WLAN_CFR_OBJS))
@@ -2849,6 +2854,7 @@ cppflags-$(CONFIG_WLAN_CONV_SPECTRAL_ENABLE) += -DWLAN_CONV_SPECTRAL_ENABLE
 cppflags-$(CONFIG_WLAN_CFR_ENABLE) += -DWLAN_CFR_ENABLE
 cppflags-$(CONFIG_WLAN_ENH_CFR_ENABLE) += -DWLAN_ENH_CFR_ENABLE
 cppflags-$(CONFIG_WLAN_ENH_CFR_ENABLE) += -DWLAN_CFR_PM
+cppflags-$(CONFIG_WLAN_CFR_ADRASTEA) += -DWLAN_CFR_ADRASTEA
 cppflags-$(CONFIG_WLAN_CFR_ENABLE) += -DCFR_USE_FIXED_FOLDER
 cppflags-$(CONFIG_WLAN_FEATURE_MEDIUM_ASSESS) += -DWLAN_FEATURE_MEDIUM_ASSESS
 cppflags-$(CONFIG_FEATURE_RADAR_HISTORY) += -DFEATURE_RADAR_HISTORY

+ 66 - 66
core/hdd/src/wlan_hdd_cfr.c

@@ -348,6 +348,72 @@ wlan_cfg80211_cfr_set_config(struct wlan_objmgr_vdev *vdev,
 	return 0;
 }
 
+static int
+wlan_cfg80211_peer_enh_cfr_capture(struct hdd_adapter *adapter,
+				   struct nlattr **tb)
+{
+	struct cfr_wlanconfig_param params = { 0 };
+	struct wlan_objmgr_vdev *vdev;
+	bool is_start_capture = false;
+	int ret = 0;
+
+	if (tb[QCA_WLAN_VENDOR_ATTR_PEER_CFR_ENABLE]) {
+		is_start_capture = nla_get_flag(tb[
+			QCA_WLAN_VENDOR_ATTR_PEER_CFR_ENABLE]);
+	}
+
+	if (is_start_capture &&
+	    !tb[QCA_WLAN_VENDOR_ATTR_PEER_CFR_ENABLE_GROUP_BITMAP]) {
+		hdd_err("Invalid group bitmap");
+		return -EINVAL;
+	}
+
+	vdev = hdd_objmgr_get_vdev_by_user(adapter, WLAN_CFR_ID);
+	if (!vdev) {
+		hdd_err("can't get vdev");
+		return -EINVAL;
+	}
+
+	if (is_start_capture) {
+		ret = wlan_cfg80211_cfr_set_config(vdev, tb);
+		if (ret) {
+			hdd_err("set config failed");
+			goto out;
+		}
+		params.en_cfg = nla_get_u32(tb[
+			QCA_WLAN_VENDOR_ATTR_PEER_CFR_ENABLE_GROUP_BITMAP]);
+		hdd_debug("params.en_cfg %d", params.en_cfg);
+		ucfg_cfr_set_en_bitmap(vdev, &params);
+	} else {
+		hdd_debug("cleanup rcc mode");
+		ucfg_cfr_set_rcc_mode(vdev, RCC_DIS_ALL_MODE, 0);
+	}
+
+	if (is_start_capture)
+		ucfg_cfr_resume(wlan_vdev_get_pdev(vdev));
+
+	ucfg_cfr_subscribe_ppdu_desc(wlan_vdev_get_pdev(vdev),
+				     is_start_capture);
+	ucfg_cfr_committed_rcc_config(vdev);
+	if (!is_start_capture) {
+		ucfg_cfr_stop_indication(vdev);
+		ucfg_cfr_suspend(wlan_vdev_get_pdev(vdev));
+		hdd_debug("stop indication done");
+	}
+
+out:
+	hdd_objmgr_put_vdev_by_user(vdev, WLAN_CFR_ID);
+	return ret;
+}
+#else
+static int
+wlan_cfg80211_peer_enh_cfr_capture(struct hdd_adapter *adapter,
+				   struct nlattr **tb)
+{
+	return 0;
+}
+#endif
+
 #ifdef WLAN_CFR_ADRASTEA
 static QDF_STATUS
 wlan_cfg80211_peer_cfr_capture_cfg_adrastea(struct hdd_adapter *adapter,
@@ -461,72 +527,6 @@ wlan_cfg80211_peer_cfr_capture_cfg_adrastea(struct hdd_adapter *adapter,
 }
 #endif
 
-static int
-wlan_cfg80211_peer_enh_cfr_capture(struct hdd_adapter *adapter,
-				   struct nlattr **tb)
-{
-	struct cfr_wlanconfig_param params = { 0 };
-	struct wlan_objmgr_vdev *vdev;
-	bool is_start_capture = false;
-	int ret = 0;
-
-	if (tb[QCA_WLAN_VENDOR_ATTR_PEER_CFR_ENABLE]) {
-		is_start_capture = nla_get_flag(tb[
-			QCA_WLAN_VENDOR_ATTR_PEER_CFR_ENABLE]);
-	}
-
-	if (is_start_capture &&
-	    !tb[QCA_WLAN_VENDOR_ATTR_PEER_CFR_ENABLE_GROUP_BITMAP]) {
-		hdd_err("Invalid group bitmap");
-		return -EINVAL;
-	}
-
-	vdev = hdd_objmgr_get_vdev_by_user(adapter, WLAN_CFR_ID);
-	if (!vdev) {
-		hdd_err("can't get vdev");
-		return -EINVAL;
-	}
-
-	if (is_start_capture) {
-		ret = wlan_cfg80211_cfr_set_config(vdev, tb);
-		if (ret) {
-			hdd_err("set config failed");
-			goto out;
-		}
-		params.en_cfg = nla_get_u32(tb[
-			QCA_WLAN_VENDOR_ATTR_PEER_CFR_ENABLE_GROUP_BITMAP]);
-		hdd_debug("params.en_cfg %d", params.en_cfg);
-		ucfg_cfr_set_en_bitmap(vdev, &params);
-	} else {
-		hdd_debug("cleanup rcc mode");
-		ucfg_cfr_set_rcc_mode(vdev, RCC_DIS_ALL_MODE, 0);
-	}
-
-	if (is_start_capture)
-		ucfg_cfr_resume(wlan_vdev_get_pdev(vdev));
-
-	ucfg_cfr_subscribe_ppdu_desc(wlan_vdev_get_pdev(vdev),
-				     is_start_capture);
-	ucfg_cfr_committed_rcc_config(vdev);
-	if (!is_start_capture) {
-		ucfg_cfr_stop_indication(vdev);
-		ucfg_cfr_suspend(wlan_vdev_get_pdev(vdev));
-		hdd_debug("stop indication done");
-	}
-
-out:
-	hdd_objmgr_put_vdev_by_user(vdev, WLAN_CFR_ID);
-	return ret;
-}
-#else
-static int
-wlan_cfg80211_peer_enh_cfr_capture(struct hdd_adapter *adapter,
-				   struct nlattr **tb)
-{
-	return 0;
-}
-#endif
-
 static int
 wlan_cfg80211_peer_cfr_capture_cfg(struct wiphy *wiphy,
 				   struct hdd_adapter *adapter,