diff --git a/wpa_supplicant/aidl/aidl.cpp b/wpa_supplicant/aidl/aidl.cpp
index 1add3df..a7945cc 100644
--- a/wpa_supplicant/aidl/aidl.cpp
+++ b/wpa_supplicant/aidl/aidl.cpp
@@ -923,7 +923,7 @@
 	aidl_manager->notifyNetworkNotFound(wpa_s);
 }
 
-void wpas_aidl_notify_bss_freq_changed(struct wpa_supplicant *wpa_s)
+void wpas_aidl_notify_frequency_changed(struct wpa_supplicant *wpa_s, int frequency)
 {
 	if (!wpa_s)
 		return;
@@ -932,10 +932,10 @@
 	if (!aidl_manager)
 		return;
 
-	wpa_printf(MSG_DEBUG, "Notify %s frequency changed to %d",
-	    wpa_s->ifname, wpa_s->assoc_freq);
+	wpa_printf(MSG_INFO, "Notify %s frequency changed to %d",
+	    wpa_s->ifname, frequency);
 
-	aidl_manager->notifyBssFreqChanged(wpa_s);
+	aidl_manager->notifyFrequencyChanged(wpa_s, frequency);
 }
 
 void wpas_aidl_notify_ceritification(struct wpa_supplicant *wpa_s,
diff --git a/wpa_supplicant/aidl/aidl.h b/wpa_supplicant/aidl/aidl.h
index d9ab7bd..2f3c7a0 100644
--- a/wpa_supplicant/aidl/aidl.h
+++ b/wpa_supplicant/aidl/aidl.h
@@ -126,7 +126,7 @@
 	void wpas_aidl_notify_transition_disable(
 		struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid, u8 bitmap);
 	void wpas_aidl_notify_network_not_found(struct wpa_supplicant *wpa_s);
-	void wpas_aidl_notify_bss_freq_changed(struct wpa_supplicant *wpa_s);
+	void wpas_aidl_notify_frequency_changed(struct wpa_supplicant *wpa_s, int frequency);
 	void wpas_aidl_notify_ceritification(struct wpa_supplicant *wpa_s,
 		int depth, const char *subject,
 		const char *altsubject[],
@@ -293,7 +293,7 @@
 {}
 static void wpas_aidl_notify_network_not_found(struct wpa_supplicant *wpa_s)
 {}
-void wpas_aidl_notify_bss_freq_changed(struct wpa_supplicant *wpa_s)
+void wpas_aidl_notify_frequency_changed(struct wpa_supplicant *wpa_s, int frequency)
 {}
 void wpas_aidl_notify_ceritification(struct wpa_supplicant *wpa_s,
 	int depth, const char *subject,
diff --git a/wpa_supplicant/aidl/aidl_manager.cpp b/wpa_supplicant/aidl/aidl_manager.cpp
index ac7b8e8..da90c38 100644
--- a/wpa_supplicant/aidl/aidl_manager.cpp
+++ b/wpa_supplicant/aidl/aidl_manager.cpp
@@ -1905,7 +1905,7 @@
 	callWithEachStaIfaceCallback(misc_utils::charBufToString(wpa_s->ifname), func);
 }
 
-void AidlManager::notifyBssFreqChanged(struct wpa_supplicant *wpa_group_s)
+void AidlManager::notifyFrequencyChanged(struct wpa_supplicant *wpa_group_s, int frequency)
 {
 	if (!wpa_group_s || !wpa_group_s->parent)
 		return;
@@ -1913,18 +1913,15 @@
 	// For group notifications, need to use the parent iface for callbacks.
 	struct wpa_supplicant *wpa_s = getTargetP2pIfaceForGroup(wpa_group_s);
 	if (!wpa_s) {
-		wpa_printf(MSG_INFO, "Drop BSS frequency changed event");
+		wpa_printf(MSG_INFO, "Drop frequency changed event");
 		return;
 	}
 
-	uint32_t aidl_freq = wpa_group_s->current_bss
-				? wpa_group_s->current_bss->freq
-				: wpa_group_s->assoc_freq;
-
 	const std::function<
 		ndk::ScopedAStatus(std::shared_ptr<ISupplicantP2pIfaceCallback>)>
 		func = std::bind(&ISupplicantP2pIfaceCallback::onGroupFrequencyChanged,
-		std::placeholders::_1, misc_utils::charBufToString(wpa_group_s->ifname), aidl_freq);
+		std::placeholders::_1, misc_utils::charBufToString(wpa_group_s->ifname),
+		frequency);
 	callWithEachP2pIfaceCallback(misc_utils::charBufToString(wpa_s->ifname), func);
 }
 
diff --git a/wpa_supplicant/aidl/aidl_manager.h b/wpa_supplicant/aidl/aidl_manager.h
index 6acacf5..1ed6899 100644
--- a/wpa_supplicant/aidl/aidl_manager.h
+++ b/wpa_supplicant/aidl/aidl_manager.h
@@ -143,7 +143,7 @@
 			struct wpa_ssid *ssid,
 			u8 bitmap);
 	void notifyNetworkNotFound(struct wpa_supplicant *wpa_s);
-	void notifyBssFreqChanged(struct wpa_supplicant *wpa_s);
+	void notifyFrequencyChanged(struct wpa_supplicant *wpa_s, int frequency);
 	void notifyCertification(struct wpa_supplicant *wpa_s,
 			int depth, const char *subject,
 			const char *altsubject[],
diff --git a/wpa_supplicant/events.c b/wpa_supplicant/events.c
index 170cec7..7234de4 100644
--- a/wpa_supplicant/events.c
+++ b/wpa_supplicant/events.c
@@ -5408,6 +5408,10 @@
 		if (event == EVENT_CH_SWITCH_STARTED)
 			break;
 
+		if (wpa_s->assoc_freq && data->ch_switch.freq &&
+			    (int) wpa_s->assoc_freq != data->ch_switch.freq) {
+			wpas_notify_frequency_changed(wpa_s, data->ch_switch.freq);
+		}
 		wpa_s->assoc_freq = data->ch_switch.freq;
 		wpa_s->current_ssid->frequency = data->ch_switch.freq;
 		if (wpa_s->current_bss &&
diff --git a/wpa_supplicant/notify.c b/wpa_supplicant/notify.c
index 1442353..8e31824 100644
--- a/wpa_supplicant/notify.c
+++ b/wpa_supplicant/notify.c
@@ -476,8 +476,6 @@
 		return;
 
 	wpas_dbus_bss_signal_prop_changed(wpa_s, WPAS_DBUS_BSS_PROP_FREQ, id);
-
-	wpas_aidl_notify_bss_freq_changed(wpa_s);
 }
 
 
@@ -1325,3 +1323,11 @@
 
 	wpas_aidl_notify_qos_policy_request(wpa_s, policies, num_policies);
 }
+
+void wpas_notify_frequency_changed(struct wpa_supplicant *wpa_s, int frequency)
+{
+	if (!wpa_s)
+		return;
+
+	wpas_aidl_notify_frequency_changed(wpa_s, frequency);
+}
diff --git a/wpa_supplicant/notify.h b/wpa_supplicant/notify.h
index f700017..996be84 100644
--- a/wpa_supplicant/notify.h
+++ b/wpa_supplicant/notify.h
@@ -217,5 +217,6 @@
 void wpas_notify_qos_policy_reset(struct wpa_supplicant *wpa_s);
 void wpas_notify_qos_policy_request(struct wpa_supplicant *wpa_s,
 		struct dscp_policy_data *policies, int num_policies);
+void wpas_notify_frequency_changed(struct wpa_supplicant *wpa_s, int frequency);
 
 #endif /* NOTIFY_H */
