From 6dee226e8db428c4434115b4c792f7ffd8a759dd Mon Sep 17 00:00:00 2001
From: Evelyn Tsai <evelyn.tsai@mediatek.com>
Date: Fri, 17 Mar 2023 16:17:14 +0800
Subject: [PATCH 21/54] mtk: hostapd: Add vendor for CAPI certification
 commands

---
 hostapd/ctrl_iface.c              | 99 +++++++++++++++++++++++++++++++
 src/ap/ap_drv_ops.c               | 21 +++++++
 src/ap/ap_drv_ops.h               |  3 +
 src/common/mtk_vendor.h           | 33 +----------
 src/drivers/driver.h              | 22 +++++++
 src/drivers/driver_nl80211.c      | 55 +++++++++++++++++
 src/drivers/driver_nl80211.h      |  1 +
 src/drivers/driver_nl80211_capa.c |  3 +
 8 files changed, 206 insertions(+), 31 deletions(-)

diff --git a/hostapd/ctrl_iface.c b/hostapd/ctrl_iface.c
index e45e574be..05606eb43 100644
--- a/hostapd/ctrl_iface.c
+++ b/hostapd/ctrl_iface.c
@@ -69,6 +69,7 @@
 #include "config_file.h"
 #include "ctrl_iface.h"
 
+#include "common/mtk_vendor.h"
 
 #define HOSTAPD_CLI_DUP_VALUE_MAX_LEN 256
 
@@ -3766,6 +3767,100 @@ hostapd_ctrl_iface_get_aval_color_bmp(struct hostapd_data *hapd, char *buf,
 	return pos - buf;
 }
 
+static int
+hostapd_ctrl_iface_ap_wireless(struct hostapd_data *hapd, char *cmd,
+					 char *buf, size_t buflen)
+{
+	char *pos, *value, *config = cmd;
+	enum mtk_vendor_attr_wireless_ctrl sub_cmd;
+
+	pos = os_strchr(config, '=');
+	if (pos == NULL)
+		return -1;
+	*pos++ = '\0';
+
+	if(pos == NULL)
+		return -1;
+	value = pos;
+
+	if (os_strncmp(config, "fixed_mcs", 9) == 0)
+		sub_cmd = MTK_VENDOR_ATTR_WIRELESS_CTRL_FIXED_MCS;
+	else if (os_strncmp(config, "ofdma", 5) == 0)
+		sub_cmd = MTK_VENDOR_ATTR_WIRELESS_CTRL_FIXED_OFDMA;
+	else if (os_strncmp(config, "ppdu_type", 9) == 0)
+		sub_cmd = MTK_VENDOR_ATTR_WIRELESS_CTRL_PPDU_TX_TYPE;
+	else if (os_strncmp(config, "nusers_ofdma", 12) == 0)
+		sub_cmd = MTK_VENDOR_ATTR_WIRELESS_CTRL_NUSERS_OFDMA;
+	else if (os_strncmp(config, "add_ba_req_bufsize", 18) == 0)
+		sub_cmd = MTK_VENDOR_ATTR_WIRELESS_CTRL_BA_BUFFER_SIZE;
+	else if (os_strncmp(config, "mimo", 4) == 0)
+		sub_cmd = MTK_VENDOR_ATTR_WIRELESS_CTRL_MIMO;
+	else if (os_strncmp(config, "cert", 4) == 0)
+		sub_cmd = MTK_VENDOR_ATTR_WIRELESS_CTRL_CERT ;
+	else if (os_strncmp(config, "amsdu", 5) == 0)
+		sub_cmd = MTK_VENDOR_ATTR_WIRELESS_CTRL_AMSDU;
+	else if (os_strncmp(config, "rts_sigta", 9) == 0)
+		sub_cmd = MTK_VENDOR_ATTR_WIRELESS_CTRL_RTS_SIGTA;
+	else {
+		wpa_printf(MSG_ERROR,
+			"Unsupported parameter %s for ap_wireless", config);
+		return -1;
+	}
+
+	if (hostapd_drv_ap_wireless(hapd, (u8) sub_cmd, atoi(value)) != 0)
+		return -1;
+
+	return os_snprintf(buf, buflen, "OK\n");
+}
+
+static int
+hostapd_ctrl_iface_ap_rfeatures(struct hostapd_data *hapd, char *cmd,
+					 char *buf, size_t buflen)
+{
+	char *pos, *value, *type, *config = cmd;
+	enum mtk_vendor_attr_rfeature_ctrl sub_cmd;
+
+	pos = os_strchr(config, '=');
+	if (pos == NULL)
+		return -1;
+	*pos++ = '\0';
+
+	if(pos == NULL)
+		return -1;
+	value = pos;
+
+	if (os_strncmp(config, "he_gi", 5) == 0)
+		sub_cmd = MTK_VENDOR_ATTR_RFEATURE_CTRL_HE_GI;
+	else if (os_strncmp(config, "he_ltf", 6) == 0)
+		sub_cmd = MTK_VENDOR_ATTR_RFEATURE_CTRL_HE_LTF;
+	else if (os_strncmp(config, "trig_type", 9) == 0) {
+		pos = os_strchr(value, ',');
+		if (pos == NULL)
+			return -1;
+		*pos++ = '\0';
+		if(pos == NULL)
+			return -1;
+		type = pos;
+		goto trigtype;
+	} else if (os_strcmp(config, "ack_policy") == 0)
+		sub_cmd = MTK_VENDOR_ATTR_RFEATURE_CTRL_ACK_PLCY;
+	else {
+		wpa_printf(MSG_ERROR,
+			"Unsupported parameter %s for ap_rfeatures", config);
+		return -1;
+	}
+
+	if (hostapd_drv_ap_rfeatures(hapd, (u8) sub_cmd, atoi(value)) != 0)
+		return -1;
+	goto exit;
+
+trigtype:
+	if (hostapd_drv_ap_trig_type(hapd, atoi(value), atoi(type)) != 0)
+		return -1;
+
+exit:
+	return os_snprintf(buf, buflen, "OK\n");
+}
 
 static int hostapd_ctrl_iface_receive_process(struct hostapd_data *hapd,
 					      char *buf, char *reply,
@@ -4344,6 +4439,10 @@ static int hostapd_ctrl_iface_receive_process(struct hostapd_data *hapd,
 		reply_len = hostapd_ctrl_iface_get_bss_color(hapd, reply, reply_size);
 	} else if (os_strncmp(buf, "AVAL_COLOR_BMP", 14) == 0) {
 		reply_len = hostapd_ctrl_iface_get_aval_color_bmp(hapd, reply, reply_size);
+	} else if (os_strncmp(buf, "ap_wireless ", 12) == 0) {
+		reply_len = hostapd_ctrl_iface_ap_wireless(hapd, buf + 12, reply, reply_size);
+	} else if (os_strncmp(buf, "ap_rfeatures ", 13) == 0) {
+		reply_len = hostapd_ctrl_iface_ap_rfeatures(hapd, buf + 13, reply, reply_size);
 	} else {
 		os_memcpy(reply, "UNKNOWN COMMAND\n", 16);
 		reply_len = 16;
diff --git a/src/ap/ap_drv_ops.c b/src/ap/ap_drv_ops.c
index 9615ca8ce..11444c7eb 100644
--- a/src/ap/ap_drv_ops.c
+++ b/src/ap/ap_drv_ops.c
@@ -1222,3 +1222,24 @@ int hostapd_drv_get_aval_bss_color_bmp(struct hostapd_data *hapd, u64 *aval_colo
 		return 0;
 	return hapd->driver->get_aval_color_bmp(hapd->drv_priv, aval_color_bmp);
 }
+
+int hostapd_drv_ap_wireless(struct hostapd_data *hapd, u8 sub_vendor_id, int value)
+{
+	if (!hapd->driver || !hapd->driver->ap_wireless)
+		return 0;
+	return hapd->driver->ap_wireless(hapd->drv_priv, sub_vendor_id, value);
+}
+
+int hostapd_drv_ap_rfeatures(struct hostapd_data *hapd, u8 sub_vendor_id, int value)
+{
+	if (!hapd->driver || !hapd->driver->ap_rfeatures)
+		return 0;
+	return hapd->driver->ap_rfeatures(hapd->drv_priv, sub_vendor_id, value);
+}
+
+int hostapd_drv_ap_trig_type(struct hostapd_data *hapd, u8 enable, u8 type)
+{
+	if (!hapd->driver || !hapd->driver->ap_trigtype)
+		return 0;
+	return hapd->driver->ap_trigtype(hapd->drv_priv, enable, type);
+}
diff --git a/src/ap/ap_drv_ops.h b/src/ap/ap_drv_ops.h
index ecaa71f99..32e6fc151 100644
--- a/src/ap/ap_drv_ops.h
+++ b/src/ap/ap_drv_ops.h
@@ -157,6 +157,9 @@ int hostapd_drv_amsdu_ctrl(struct hostapd_data *hapd);
 int hostapd_drv_amsdu_dump(struct hostapd_data *hapd, u8 *amsdu);
 int hostapd_drv_get_aval_bss_color_bmp(struct hostapd_data *hapd,
 				       u64 *aval_color_bmp);
+int hostapd_drv_ap_wireless(struct hostapd_data *hapd, u8 sub_vendor_id, int value);
+int hostapd_drv_ap_rfeatures(struct hostapd_data *hapd, u8 sub_vendor_id, int value);
+int hostapd_drv_ap_trig_type(struct hostapd_data *hapd, u8 enable, u8 type);
 
 #include "drivers/driver.h"
 
diff --git a/src/common/mtk_vendor.h b/src/common/mtk_vendor.h
index e27fe69b3..0b23c76ad 100644
--- a/src/common/mtk_vendor.h
+++ b/src/common/mtk_vendor.h
@@ -50,17 +50,6 @@ enum mtk_vendor_attr_edcca_dump {
 		NUM_MTK_VENDOR_ATTRS_EDCCA_DUMP - 1
 };
 
-
-static struct nla_policy edcca_ctrl_policy[NUM_MTK_VENDOR_ATTRS_EDCCA_CTRL] = {
-	[MTK_VENDOR_ATTR_EDCCA_CTRL_MODE] = { .type = NLA_U8 },
-	[MTK_VENDOR_ATTR_EDCCA_CTRL_PRI20_VAL] = { .type = NLA_U8 },
-	[MTK_VENDOR_ATTR_EDCCA_CTRL_SEC20_VAL] = { .type = NLA_U8 },
-	[MTK_VENDOR_ATTR_EDCCA_CTRL_SEC40_VAL] = { .type = NLA_U8 },
-	[MTK_VENDOR_ATTR_EDCCA_CTRL_SEC80_VAL] = { .type = NLA_U8 },
-	[MTK_VENDOR_ATTR_EDCCA_CTRL_COMPENSATE] = { .type = NLA_U8 },
-	[MTK_VENDOR_ATTR_EDCCA_CTRL_SEC160_VAL] = { .type = NLA_U8 },
-};
-
 enum mtk_vendor_attr_3wire_ctrl {
 	MTK_VENDOR_ATTR_3WIRE_CTRL_UNSPEC,
 
@@ -72,10 +61,6 @@ enum mtk_vendor_attr_3wire_ctrl {
 		NUM_MTK_VENDOR_ATTRS_3WIRE_CTRL - 1
 };
 
-static struct nla_policy three_wire_ctrl_policy[NUM_MTK_VENDOR_ATTRS_3WIRE_CTRL] = {
-	[MTK_VENDOR_ATTR_3WIRE_CTRL_MODE] = {.type = NLA_U8 },
-};
-
 enum mtk_vendor_attr_csi_ctrl {
 	MTK_VENDOR_ATTR_CSI_CTRL_UNSPEC,
 
@@ -172,7 +157,7 @@ enum mtk_vendor_attr_wireless_ctrl {
 	MTK_VENDOR_ATTR_WIRELESS_CTRL_BA_BUFFER_SIZE,
 	MTK_VENDOR_ATTR_WIRELESS_CTRL_MIMO,
 	MTK_VENDOR_ATTR_WIRELESS_CTRL_AMSDU,
-	MTK_VENDOR_ATTR_WIRELESS_CTRL_CERT,
+	MTK_VENDOR_ATTR_WIRELESS_CTRL_CERT = 9,
 	MTK_VENDOR_ATTR_WIRELESS_CTRL_RTS_SIGTA,
 
 	/* keep last */
@@ -192,11 +177,6 @@ enum mtk_vendor_attr_wireless_dump {
 		NUM_MTK_VENDOR_ATTRS_WIRELESS_DUMP - 1
 };
 
-static const struct nla_policy
-wireless_dump_policy[NUM_MTK_VENDOR_ATTRS_WIRELESS_DUMP] = {
-	[MTK_VENDOR_ATTR_WIRELESS_DUMP_AMSDU] = { .type = NLA_U8 },
-};
-
 enum mtk_vendor_attr_rfeature_ctrl {
 	MTK_VENDOR_ATTR_RFEATURE_CTRL_UNSPEC,
 
@@ -206,6 +186,7 @@ enum mtk_vendor_attr_rfeature_ctrl {
 	MTK_VENDOR_ATTR_RFEATURE_CTRL_TRIG_TYPE_EN,
 	MTK_VENDOR_ATTR_RFEATURE_CTRL_TRIG_TYPE,
 	MTK_VENDOR_ATTR_RFEATURE_CTRL_ACK_PLCY,
+	MTK_VENDOR_ATTR_RFEATURE_CTRL_TRIG_TXBF,
 
 	/* keep last */
 	NUM_MTK_VENDOR_ATTRS_RFEATURE_CTRL,
@@ -247,16 +228,6 @@ enum mtk_vendor_attr_ibf_dump {
 		NUM_MTK_VENDOR_ATTRS_IBF_DUMP - 1
 };
 
-static struct nla_policy
-ibf_ctrl_policy[NUM_MTK_VENDOR_ATTRS_IBF_CTRL] = {
-	[MTK_VENDOR_ATTR_IBF_CTRL_ENABLE] = { .type = NLA_U8 },
-};
-
-static struct nla_policy
-ibf_dump_policy[NUM_MTK_VENDOR_ATTRS_IBF_DUMP] = {
-	[MTK_VENDOR_ATTR_IBF_DUMP_ENABLE] = { .type = NLA_U8 },
-};
-
 enum mtk_vendor_attr_bss_color_ctrl {
 	MTK_VENDOR_ATTR_BSS_COLOR_CTRL_UNSPEC,
 
diff --git a/src/drivers/driver.h b/src/drivers/driver.h
index 869b0442f..2ef1a3fcd 100644
--- a/src/drivers/driver.h
+++ b/src/drivers/driver.h
@@ -5166,6 +5166,28 @@ struct wpa_driver_ops {
 	 *
 	 */
 	int (*get_aval_color_bmp)(void *priv, u64 *aval_color_bmp);
+
+	/**
+	* ap_wireless - set wireless command
+	* @priv: Private driver interface data
+	* @value: value
+	*/
+	int (*ap_wireless)(void *priv, u8 mode, int value);
+
+	/**
+	* ap_rfeatures - set ap rf features command
+	* @priv: Private driver interface data
+	* @value: value
+	*/
+	int (*ap_rfeatures)(void *priv, u8 mode, int value);
+
+	/**
+	* ap_trigtype - set trigger type
+	* @priv: Private driver interface data
+	* @enable: enable or disable
+	* @type: trigger type
+	*/
+	int (*ap_trigtype)(void *priv, u8 enable, u8 type);
 };
 
 /**
diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
index 7b5a50ea6..3ee3ec1eb 100644
--- a/src/drivers/driver_nl80211.c
+++ b/src/drivers/driver_nl80211.c
@@ -86,6 +86,58 @@ static void handle_nl_debug_hook(struct nl_msg *msg, int tx)
 	wpa_netlink_hook(tx, nlh, nlh->nlmsg_len);
 }
 
+static struct nla_policy
+ibf_ctrl_policy[NUM_MTK_VENDOR_ATTRS_IBF_CTRL] = {
+	[MTK_VENDOR_ATTR_IBF_CTRL_ENABLE] = { .type = NLA_U8 },
+};
+
+static struct nla_policy
+ibf_dump_policy[NUM_MTK_VENDOR_ATTRS_IBF_DUMP] = {
+	[MTK_VENDOR_ATTR_IBF_DUMP_ENABLE] = { .type = NLA_U8 },
+};
+
+static struct nla_policy three_wire_ctrl_policy[NUM_MTK_VENDOR_ATTRS_3WIRE_CTRL] = {
+	[MTK_VENDOR_ATTR_3WIRE_CTRL_MODE] = {.type = NLA_U8 },
+};
+
+static struct nla_policy edcca_ctrl_policy[NUM_MTK_VENDOR_ATTRS_EDCCA_CTRL] = {
+	[MTK_VENDOR_ATTR_EDCCA_CTRL_MODE] = { .type = NLA_U8 },
+	[MTK_VENDOR_ATTR_EDCCA_CTRL_PRI20_VAL] = { .type = NLA_U8 },
+	[MTK_VENDOR_ATTR_EDCCA_CTRL_SEC20_VAL] = { .type = NLA_U8 },
+	[MTK_VENDOR_ATTR_EDCCA_CTRL_SEC40_VAL] = { .type = NLA_U8 },
+	[MTK_VENDOR_ATTR_EDCCA_CTRL_SEC80_VAL] = { .type = NLA_U8 },
+	[MTK_VENDOR_ATTR_EDCCA_CTRL_COMPENSATE] = { .type = NLA_U8 },
+	[MTK_VENDOR_ATTR_EDCCA_CTRL_SEC160_VAL] = { .type = NLA_U8 },
+};
+
+static const struct nla_policy
+wireless_dump_policy[NUM_MTK_VENDOR_ATTRS_WIRELESS_DUMP] = {
+	[MTK_VENDOR_ATTR_WIRELESS_DUMP_AMSDU] = { .type = NLA_U8 },
+};
+
+static const struct nla_policy
+rfeature_ctrl_policy[NUM_MTK_VENDOR_ATTRS_RFEATURE_CTRL] = {
+	[MTK_VENDOR_ATTR_RFEATURE_CTRL_HE_GI] = {.type = NLA_U8 },
+	[MTK_VENDOR_ATTR_RFEATURE_CTRL_HE_LTF] = { .type = NLA_U8 },
+	[MTK_VENDOR_ATTR_RFEATURE_CTRL_TRIG_TYPE_CFG] = { .type = NLA_NESTED },
+	[MTK_VENDOR_ATTR_RFEATURE_CTRL_TRIG_TYPE_EN] = { .type = NLA_U8 },
+	[MTK_VENDOR_ATTR_RFEATURE_CTRL_TRIG_TYPE] = { .type = NLA_U8 },
+	[MTK_VENDOR_ATTR_RFEATURE_CTRL_ACK_PLCY] = { .type = NLA_U8 },
+	[MTK_VENDOR_ATTR_RFEATURE_CTRL_TRIG_TXBF] = { .type = NLA_U8 },
+};
+
+static const struct nla_policy
+wireless_ctrl_policy[NUM_MTK_VENDOR_ATTRS_WIRELESS_CTRL] = {
+	[MTK_VENDOR_ATTR_WIRELESS_CTRL_FIXED_MCS] = {.type = NLA_U8 },
+	[MTK_VENDOR_ATTR_WIRELESS_CTRL_FIXED_OFDMA] = {.type = NLA_U8 },
+	[MTK_VENDOR_ATTR_WIRELESS_CTRL_PPDU_TX_TYPE] = {.type = NLA_U8 },
+	[MTK_VENDOR_ATTR_WIRELESS_CTRL_NUSERS_OFDMA] = {.type = NLA_U8 },
+	[MTK_VENDOR_ATTR_WIRELESS_CTRL_MIMO] = {.type = NLA_U8 },
+	[MTK_VENDOR_ATTR_WIRELESS_CTRL_BA_BUFFER_SIZE] = {.type = NLA_U16 },
+	[MTK_VENDOR_ATTR_WIRELESS_CTRL_AMSDU] = {.type = NLA_U8 },
+	[MTK_VENDOR_ATTR_WIRELESS_CTRL_CERT] = {.type = NLA_U8 },
+};
+
 static struct nl_sock * nl_create_handle(struct nl_cb *cb, const char *dbg)
 {
 	struct nl_sock *handle;
@@ -14660,4 +14712,7 @@ const struct wpa_driver_ops wpa_driver_nl80211_ops = {
 	.amsdu_ctrl = nl80211_enable_amsdu,
 	.amsdu_dump = nl80211_dump_amsdu,
 	.get_aval_color_bmp = nl80211_get_aval_color_bmp,
+	.ap_wireless = nl80211_ap_wireless,
+	.ap_rfeatures = nl80211_ap_rfeatures,
+	.ap_trigtype = nl80211_ap_trigtype,
 };
diff --git a/src/drivers/driver_nl80211.h b/src/drivers/driver_nl80211.h
index fd1e57cc2..fc5217d61 100644
--- a/src/drivers/driver_nl80211.h
+++ b/src/drivers/driver_nl80211.h
@@ -208,6 +208,7 @@ struct wpa_driver_nl80211_data {
 	unsigned int mtk_ibf_vendor_cmd_avail:1;
 	unsigned int mtk_wireless_vendor_cmd_avail:1;
 	unsigned int mtk_bss_color_vendor_cmd_avail:1;
+	unsigned int mtk_rfeatures_vendor_cmd_avail:1;
 
 	u64 vendor_scan_cookie;
 	u64 remain_on_chan_cookie;
diff --git a/src/drivers/driver_nl80211_capa.c b/src/drivers/driver_nl80211_capa.c
index 3e8eb8cb1..16306a121 100644
--- a/src/drivers/driver_nl80211_capa.c
+++ b/src/drivers/driver_nl80211_capa.c
@@ -1132,6 +1132,9 @@ static int wiphy_info_handler(struct nl_msg *msg, void *arg)
 				case MTK_NL80211_VENDOR_SUBCMD_BSS_COLOR_CTRL :
 					drv->mtk_bss_color_vendor_cmd_avail = 1;
 					break;
+				case MTK_NL80211_VENDOR_SUBCMD_RFEATURE_CTRL:
+					drv->mtk_rfeatures_vendor_cmd_avail = 1;
+					break;
 				}
 			}
 
-- 
2.18.0

