Merge "qca-wifi: use dp_vdev_bss_peer_get API to get bss peer"
diff --git a/tools/linux/cfg80211_ven_cmd.h b/tools/linux/cfg80211_ven_cmd.h
index 3ae5d9c..91106c7 100644
--- a/tools/linux/cfg80211_ven_cmd.h
+++ b/tools/linux/cfg80211_ven_cmd.h
@@ -1203,6 +1203,14 @@
 	OL_ATH_PARAM_RPT_MAX_PHY = 446,
 	/* Enable additional operating triplets in the Country IE */
 	OL_ATH_PARAM_ENABLE_ADDITIONAL_TRIPLETS = 447,
+#ifdef QCA_SUPPORT_DFS_CHAN_POSTNOL
+	/* Set the primary frequency for the AP to go back to, after NOL */
+	OL_ATH_DFS_CHAN_POSTNOL_FREQ = 448,
+	/* Set the mode for the AP to go back to, after NOL */
+	OL_ATH_DFS_CHAN_POSTNOL_MODE = 449,
+	/* Set the secondary center frequency for the post NOL channel. */
+	OL_ATH_DFS_CHAN_POSTNOL_CFREQ2 = 450,
+#endif
 
 };
 
@@ -3103,6 +3111,20 @@
 		OL_ATH_PARAM_SHIFT | OL_ATH_PARAM_ENABLE_ADDITIONAL_TRIPLETS, SET_PARAM, 1},
 	{"g_enable_additional_triplets",
 		OL_ATH_PARAM_SHIFT | OL_ATH_PARAM_ENABLE_ADDITIONAL_TRIPLETS, GET_PARAM, 0},
+#ifdef QCA_SUPPORT_DFS_CHAN_POSTNOL
+	{"setpostNOLfreq",
+		OL_ATH_PARAM_SHIFT | OL_ATH_DFS_CHAN_POSTNOL_FREQ, SET_PARAM, 1},
+	{"getpostNOLfreq",
+		OL_ATH_PARAM_SHIFT | OL_ATH_DFS_CHAN_POSTNOL_FREQ, GET_PARAM, 0},
+	{"setpostNOLmode",
+		OL_ATH_PARAM_SHIFT | OL_ATH_DFS_CHAN_POSTNOL_MODE, SET_PARAM, 1},
+	{"getpostNOLmode",
+		OL_ATH_PARAM_SHIFT | OL_ATH_DFS_CHAN_POSTNOL_MODE, SET_PARAM, 0},
+	{"setpostNOLcfreq2",
+		OL_ATH_PARAM_SHIFT | OL_ATH_DFS_CHAN_POSTNOL_CFREQ2, SET_PARAM, 1},
+	{"getpostNOLcfreq2",
+		OL_ATH_PARAM_SHIFT | OL_ATH_DFS_CHAN_POSTNOL_CFREQ2, GET_PARAM, 0},
+#endif
 };
 #endif
 #endif
diff --git a/umac/dfs/core/src/misc/dfs_zero_cac.c b/umac/dfs/core/src/misc/dfs_zero_cac.c
index fe84861..cabe5bc 100644
--- a/umac/dfs/core/src/misc/dfs_zero_cac.c
+++ b/umac/dfs/core/src/misc/dfs_zero_cac.c
@@ -273,10 +273,12 @@
 	dfs->dfs_precac_secondary_freq_mhz = 0;
 }
 
+#if defined(ATH_SUPPORT_ZERO_CAC_DFS) && !defined(QCA_MCL_DFS_SUPPORT)
 void dfs_zero_cac_timer_detach(struct dfs_soc_priv_obj *dfs_soc_obj)
 {
 	qdf_timer_free(&dfs_soc_obj->dfs_precac_timer);
 }
+#endif
 
 int dfs_override_precac_timeout(struct wlan_dfs *dfs, int precac_timeout)
 {
@@ -514,6 +516,13 @@
 	bool ret_val = 0;
 	uint16_t cfreq;
 
+	if (!WLAN_IS_CHAN_5GHZ(chan)) {
+		dfs_debug(dfs, WLAN_DEBUG_DFS,
+			  "Channel %d not a 5GHz channel",
+			  chan->dfs_ch_ieee);
+		return 0;
+	}
+
 	if (WLAN_IS_CHAN_MODE_160(chan))
 		cfreq = chan->dfs_ch_mhz_freq_seg2;
 	else if (WLAN_IS_CHAN_MODE_165(dfs, chan))
@@ -1474,6 +1483,7 @@
 	}
 }
 
+#if defined(ATH_SUPPORT_ZERO_CAC_DFS) && !defined(QCA_MCL_DFS_SUPPORT)
 void dfs_zero_cac_timer_init(struct dfs_soc_priv_obj *dfs_soc_obj)
 {
 	dfs_soc_obj->precac_state_started = false;
@@ -1482,6 +1492,7 @@
 		       (void *)dfs_soc_obj,
 		       QDF_TIMER_TYPE_WAKE_APPS);
 }
+#endif
 
 void dfs_zero_cac_attach(struct wlan_dfs *dfs)
 {
@@ -3542,6 +3553,12 @@
 		if (WLAN_IS_CHAN_MODE_165(dfs, dfs->dfs_curchan))
 			flags |= DFS_RANDOM_CH_FLAG_RESTRICTED_80P80_ENABLED;
 
+		if (!WLAN_IS_CHAN_5GHZ(dfs->dfs_curchan)) {
+			dfs_debug(dfs, WLAN_DEBUG_DFS_AGILE,
+				  "Current operating channel not a 5G channel");
+			goto exit;
+		}
+
 		dfs_fill_des_rcac_chan_params(dfs,
 					      &nxt_chan_params,
 					      curchan_chwidth);