From c515d269b08190aede080b9c59bf758f5d65e5a5 Mon Sep 17 00:00:00 2001
From: "fancy.liu" <fancy.liu@mediatek.com>
Date: Sun, 8 Oct 2023 11:50:06 +0800
Subject: [PATCH] hostapd: mtk: Add ACS chanlist info in get_config

This patch is used to add ACS chanlist info displaying
for upper layer application obtaining.

Command format:
hostapd_cli -i phy0-ap0 get_config

Signed-off-by: fancy.liu <fancy.liu@mediatek.com>
---
 hostapd/ctrl_iface.c | 59 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 59 insertions(+)

diff --git a/hostapd/ctrl_iface.c b/hostapd/ctrl_iface.c
index 537d5cf..2108198 100644
--- a/hostapd/ctrl_iface.c
+++ b/hostapd/ctrl_iface.c
@@ -1120,6 +1120,7 @@ static int hostapd_ctrl_iface_get_config(struct hostapd_data *hapd,
 {
 	int ret;
 	char *pos, *end;
+	int i;
 
 	pos = buf;
 	end = buf + buflen;
@@ -1299,6 +1300,64 @@ static int hostapd_ctrl_iface_get_config(struct hostapd_data *hapd,
 		pos += ret;
 	}
 
+	/* dump chanlist */
+	if (hapd->iface->conf->acs_ch_list.num > 0) {
+		ret = os_snprintf(pos, end - pos, "chanlist=");
+		if (os_snprintf_error(end - pos, ret))
+			return pos - buf;
+		pos += ret;
+
+		for (i = 0; i < hapd->iface->conf->acs_ch_list.num; i++) {
+			if (i > 0) {
+				ret = os_snprintf(pos, end - pos, ", ");
+				if (os_snprintf_error(end - pos, ret))
+					return pos - buf;
+				pos += ret;
+			}
+
+			ret = os_snprintf(pos, end - pos, "%d-%d",
+				hapd->iface->conf->acs_ch_list.range[i].min,
+				hapd->iface->conf->acs_ch_list.range[i].max);
+			if (os_snprintf_error(end - pos, ret))
+				return pos - buf;
+			pos += ret;
+		}
+
+		ret = os_snprintf(pos, end - pos, "\n");
+		if (os_snprintf_error(end - pos, ret))
+			return pos - buf;
+		pos += ret;
+	}
+
+	/* dump freqlist */
+	if (hapd->iface->conf->acs_freq_list.num > 0) {
+		ret = os_snprintf(pos, end - pos, "freqlist=");
+		if (os_snprintf_error(end - pos, ret))
+			return pos - buf;
+		pos += ret;
+
+		for (i = 0; i < hapd->iface->conf->acs_freq_list.num; i++) {
+			if (i > 0) {
+				ret = os_snprintf(pos, end - pos, ", ");
+				if (os_snprintf_error(end - pos, ret))
+					return pos - buf;
+				pos += ret;
+			}
+
+			ret = os_snprintf(pos, end - pos, "%d-%d",
+				hapd->iface->conf->acs_freq_list.range[i].min,
+				hapd->iface->conf->acs_freq_list.range[i].max);
+			if (os_snprintf_error(end - pos, ret))
+				return pos - buf;
+			pos += ret;
+		}
+
+		ret = os_snprintf(pos, end - pos, "\n");
+		if (os_snprintf_error(end - pos, ret))
+			return pos - buf;
+		pos += ret;
+	}
+
 	return pos - buf;
 }
 
-- 
2.18.0

