[][MAC80211][hostapd][Add EDCCA BW_160 support]

[Description]
Add EDCCA BW_160 support for mt7996

[Release-log]

Change-Id: Idd5e5aca55020e738ee8d1bb321c42a7be968f54
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/7607610
diff --git a/autobuild_mac80211_release/package/network/services/hostapd_new/patches/mtk-0004-hostapd-mtk-Add-mtk_vendor.h.patch b/autobuild_mac80211_release/package/network/services/hostapd_new/patches/mtk-0004-hostapd-mtk-Add-mtk_vendor.h.patch
index e9d1726..e768500 100644
--- a/autobuild_mac80211_release/package/network/services/hostapd_new/patches/mtk-0004-hostapd-mtk-Add-mtk_vendor.h.patch
+++ b/autobuild_mac80211_release/package/network/services/hostapd_new/patches/mtk-0004-hostapd-mtk-Add-mtk_vendor.h.patch
@@ -1,19 +1,19 @@
-From e478ae5563a043f3d18be4bbbed682ac04e48d22 Mon Sep 17 00:00:00 2001
+From a19cc5fdbfb27400d24f3962ad2d134a3821a2cd Mon Sep 17 00:00:00 2001
 From: Howard Hsu <howard-yh.hsu@mediatek.com>
 Date: Mon, 30 May 2022 15:04:57 +0800
-Subject: [PATCH 04/28] hostapd: mtk: Add mtk_vendor.h
+Subject: [PATCH 01/30] hostapd: mtk: Add mtk_vendor.h
 
 ---
- src/common/mtk_vendor.h | 195 ++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 195 insertions(+)
+ src/common/mtk_vendor.h | 197 ++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 197 insertions(+)
  create mode 100644 src/common/mtk_vendor.h
 
 diff --git a/src/common/mtk_vendor.h b/src/common/mtk_vendor.h
 new file mode 100644
-index 0000000..528387f
+index 0000000..4a19d2f
 --- /dev/null
 +++ b/src/common/mtk_vendor.h
-@@ -0,0 +1,195 @@
+@@ -0,0 +1,197 @@
 +// SPDX-License-Identifier: ISC
 +/* Copyright (C) 2020 Felix Fietkau <nbd@nbd.name> */
 +#ifndef MTK_VENDOR_H
@@ -38,6 +38,7 @@
 +	MTK_VENDOR_ATTR_EDCCA_CTRL_SEC40_VAL,
 +	MTK_VENDOR_ATTR_EDCCA_CTRL_SEC80_VAL,
 +	MTK_VENDOR_ATTR_EDCCA_CTRL_COMPENSATE,
++	MTK_VENDOR_ATTR_EDCCA_CTRL_SEC160_VAL,
 +
 +	/* keep last */
 +	NUM_MTK_VENDOR_ATTRS_EDCCA_CTRL,
@@ -60,6 +61,7 @@
 +	[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_csi_ctrl {
diff --git a/autobuild_mac80211_release/package/network/services/hostapd_new/patches/mtk-0005-hostapd-mtk-Support-EDCCA-hostapd-configuration.patch b/autobuild_mac80211_release/package/network/services/hostapd_new/patches/mtk-0005-hostapd-mtk-Support-EDCCA-hostapd-configuration.patch
index 751ad04..46077c5 100644
--- a/autobuild_mac80211_release/package/network/services/hostapd_new/patches/mtk-0005-hostapd-mtk-Support-EDCCA-hostapd-configuration.patch
+++ b/autobuild_mac80211_release/package/network/services/hostapd_new/patches/mtk-0005-hostapd-mtk-Support-EDCCA-hostapd-configuration.patch
@@ -1,29 +1,29 @@
-From 15420724ea5d0aef0296e562c96be19262485575 Mon Sep 17 00:00:00 2001
+From ed079151f73c1a0acb6fe071434db64d3850a5e3 Mon Sep 17 00:00:00 2001
 From: Howard Hsu <howard-yh.hsu@mediatek.com>
 Date: Mon, 30 May 2022 16:31:34 +0800
-Subject: [PATCH 05/28] hostapd: mtk: Support EDCCA hostapd configuration
+Subject: [PATCH 02/30] hostapd: mtk: Support EDCCA hostapd configuration
 
 edcca_enable and edcca_compensation and implement edcca related handlers.
 ---
- hostapd/config_file.c             |  32 ++++++
- hostapd/ctrl_iface.c              | 125 ++++++++++++++++++++++
+ hostapd/config_file.c             |  34 ++++++
+ hostapd/ctrl_iface.c              | 125 +++++++++++++++++++++
  src/ap/ap_config.c                |   4 +
- src/ap/ap_config.h                |  29 ++++++
+ src/ap/ap_config.h                |  30 ++++++
  src/ap/ap_drv_ops.c               |  24 +++++
  src/ap/ap_drv_ops.h               |   4 +
  src/ap/hostapd.c                  |   7 ++
- src/common/mtk_vendor.h           |  19 ++--
+ src/common/mtk_vendor.h           |  20 ++--
  src/drivers/driver.h              |   4 +
- src/drivers/driver_nl80211.c      | 165 ++++++++++++++++++++++++++++++
+ src/drivers/driver_nl80211.c      | 174 ++++++++++++++++++++++++++++++
  src/drivers/driver_nl80211.h      |   1 +
  src/drivers/driver_nl80211_capa.c |   7 ++
- 12 files changed, 415 insertions(+), 6 deletions(-)
+ 12 files changed, 428 insertions(+), 6 deletions(-)
 
 diff --git a/hostapd/config_file.c b/hostapd/config_file.c
-index 11a3a1a..a48034b 100644
+index 11a3a1a..92a0ab7 100644
 --- a/hostapd/config_file.c
 +++ b/hostapd/config_file.c
-@@ -4799,6 +4799,38 @@ static int hostapd_config_fill(struct hostapd_config *conf,
+@@ -4799,6 +4799,40 @@ static int hostapd_config_fill(struct hostapd_config *conf,
  		}
  		conf->punct_acs_threshold = val;
  #endif /* CONFIG_IEEE80211BE */
@@ -34,7 +34,9 @@
 +		    conf->edcca_threshold[1] < EDCCA_MIN_CONFIG_THRES ||
 +		    conf->edcca_threshold[1] > EDCCA_MAX_CONFIG_THRES ||
 +		    conf->edcca_threshold[2] < EDCCA_MIN_CONFIG_THRES ||
-+		    conf->edcca_threshold[2] > EDCCA_MAX_CONFIG_THRES) {
++		    conf->edcca_threshold[2] > EDCCA_MAX_CONFIG_THRES ||
++		    conf->edcca_threshold[3] < EDCCA_MIN_CONFIG_THRES ||
++		    conf->edcca_threshold[3] > EDCCA_MAX_CONFIG_THRES) {
 +			wpa_printf(MSG_ERROR, "Line %d: invalid edcca threshold",
 +				   line);
 +			return 1;
@@ -63,14 +65,14 @@
  		wpa_printf(MSG_ERROR,
  			   "Line %d: unknown configuration item '%s'",
 diff --git a/hostapd/ctrl_iface.c b/hostapd/ctrl_iface.c
-index c4e344e..c5c0e91 100644
+index c4e344e..b132e54 100644
 --- a/hostapd/ctrl_iface.c
 +++ b/hostapd/ctrl_iface.c
 @@ -599,6 +599,19 @@ static const char * pbc_status_str(enum pbc_status status)
  }
  
  
-+static const char * edcca_mode_str(enum edcca_mode status)
++static const char *edcca_mode_str(enum edcca_mode status)
 +{
 +	switch (status) {
 +		case EDCCA_MODE_FORCE_DISABLE:
@@ -101,7 +103,7 @@
 +		return -1;
 +	*pos++ = '\0';
 +
-+	if(pos == NULL)
++	if (pos == NULL)
 +		return -1;
 +	value = pos;
 +
@@ -131,12 +133,12 @@
 +			return -1;
 +		*thres_value++ = '\0';
 +
-+		if(thres_value == NULL)
++		if (thres_value == NULL)
 +			return -1;
-+		int bw_idx= atoi(value);
++		int bw_idx = atoi(value);
 +		int threshold = atoi(thres_value);
 +
-+		if (bw_idx < EDCCA_BW_20 || bw_idx > EDCCA_BW_80) {
++		if (bw_idx < EDCCA_BW_20 || bw_idx > EDCCA_BW_160) {
 +			wpa_printf(MSG_ERROR,
 +				   "Unsupported Bandwidth idx %d for SET_EDCCA",
 +				   bw_idx);
@@ -186,8 +188,8 @@
 +		if (hostapd_drv_get_edcca(hapd, EDCCA_CTRL_GET_THRES, &value) != 0)
 +			return -1;
 +		return os_snprintf(pos, end - pos,
-+				   "Threshold BW20: 0x%x, BW40: 0x%x, BW80: 0x%x\n",
-+				   value[0], value[1], value[2]);
++				   "Threshold BW20: 0x%x, BW40: 0x%x, BW80: 0x%x, BW160: 0x%x\n",
++				   value[0], value[1], value[2], value[3]);
 +	} else {
 +		wpa_printf(MSG_ERROR,
 +			"Unsupported parameter %s for GET_EDCCA", cmd);
@@ -235,10 +237,10 @@
  	wpabuf_free(conf->civic);
  
 diff --git a/src/ap/ap_config.h b/src/ap/ap_config.h
-index af9bf92..22b1276 100644
+index af9bf92..acfe719 100644
 --- a/src/ap/ap_config.h
 +++ b/src/ap/ap_config.h
-@@ -1180,8 +1180,37 @@ struct hostapd_config {
+@@ -1180,8 +1180,38 @@ struct hostapd_config {
  		MBSSID_ENABLED = 1,
  		ENHANCED_MBSSID_ENABLED = 2,
  	} mbssid;
@@ -257,6 +259,7 @@
 +	EDCCA_BW_20 = 0,
 +	EDCCA_BW_40,
 +	EDCCA_BW_80,
++	EDCCA_BW_160,
 +	EDCCA_MAX_BW_NUM,
 +};
 +
@@ -342,10 +345,10 @@
  		   iface->bss[0]->conf->iface);
  	if (iface->interfaces && iface->interfaces->terminate_on_error > 0)
 diff --git a/src/common/mtk_vendor.h b/src/common/mtk_vendor.h
-index 528387f..7056126 100644
+index 4a19d2f..6121857 100644
 --- a/src/common/mtk_vendor.h
 +++ b/src/common/mtk_vendor.h
-@@ -29,14 +29,21 @@ enum mtk_vendor_attr_edcca_ctrl {
+@@ -30,14 +30,22 @@ enum mtk_vendor_attr_edcca_ctrl {
  		NUM_MTK_VENDOR_ATTRS_EDCCA_CTRL - 1
  };
  
@@ -362,6 +365,7 @@
 +	MTK_VENDOR_ATTR_EDCCA_DUMP_PRI20_VAL,
 +	MTK_VENDOR_ATTR_EDCCA_DUMP_SEC40_VAL,
 +	MTK_VENDOR_ATTR_EDCCA_DUMP_SEC80_VAL,
++	MTK_VENDOR_ATTR_EDCCA_DUMP_SEC160_VAL,
 +
 +	/* keep last */
 +	NUM_MTK_VENDOR_ATTRS_EDCCA_DUMP,
@@ -389,7 +393,7 @@
  
  /**
 diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
-index d79929b..f5c95e1 100644
+index d79929b..72c50f2 100644
 --- a/src/drivers/driver_nl80211.c
 +++ b/src/drivers/driver_nl80211.c
 @@ -37,6 +37,8 @@
@@ -401,7 +405,7 @@
  
  
  #ifndef NETLINK_CAP_ACK
-@@ -13366,6 +13368,165 @@ static int testing_nl80211_radio_disable(void *priv, int disabled)
+@@ -13366,6 +13368,174 @@ static int testing_nl80211_radio_disable(void *priv, int disabled)
  
  #endif /* CONFIG_TESTING_OPTIONS */
  
@@ -471,7 +475,8 @@
 +	    nla_put_u8(msg, MTK_VENDOR_ATTR_EDCCA_CTRL_MODE, EDCCA_CTRL_SET_THRES) ||
 +	    nla_put_u8(msg, MTK_VENDOR_ATTR_EDCCA_CTRL_PRI20_VAL, threshold[0] & 0xff) ||
 +	    nla_put_u8(msg, MTK_VENDOR_ATTR_EDCCA_CTRL_SEC40_VAL, threshold[1] & 0xff) ||
-+	    nla_put_u8(msg, MTK_VENDOR_ATTR_EDCCA_CTRL_SEC80_VAL, threshold[2] & 0xff)) {
++	    nla_put_u8(msg, MTK_VENDOR_ATTR_EDCCA_CTRL_SEC80_VAL, threshold[2] & 0xff) ||
++	    nla_put_u8(msg, MTK_VENDOR_ATTR_EDCCA_CTRL_SEC160_VAL, threshold[3] & 0xff)) {
 +		wpa_printf (MSG_ERROR, "Prepare nl80211 msg fail");
 +		nlmsg_free(msg);
 +		return -ENOBUFS;
@@ -488,7 +493,7 @@
 +
 +static int edcca_info_handler(struct nl_msg *msg, void *arg)
 +{
-+	u8 *info = (u8*) arg;
++	u8 *info = (u8 *) arg;
 +	struct nlattr *tb[NL80211_ATTR_MAX + 1];
 +	struct nlattr *tb_vendor[MTK_VENDOR_ATTR_EDCCA_DUMP_MAX + 1];
 +	struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg));
@@ -526,6 +531,14 @@
 +		return NL_SKIP;
 +	}
 +
++	*info++ = nla_get_u8(attr);
++
++	attr = tb_vendor[MTK_VENDOR_ATTR_EDCCA_DUMP_SEC160_VAL];
++	if (!attr) {
++		wpa_printf(MSG_ERROR, "nl80211: MTK_VENDOR_ATTR_EDCCA_DUMP_SEC160_VAL");
++		return NL_SKIP;
++	}
++
 +	*info = nla_get_u8(attr);
 +	return NL_SKIP;
 +}
@@ -567,7 +580,7 @@
  
  const struct wpa_driver_ops wpa_driver_nl80211_ops = {
  	.name = "nl80211",
-@@ -13519,4 +13680,8 @@ const struct wpa_driver_ops wpa_driver_nl80211_ops = {
+@@ -13519,4 +13689,8 @@ const struct wpa_driver_ops wpa_driver_nl80211_ops = {
  	.register_frame = testing_nl80211_register_frame,
  	.radio_disable = testing_nl80211_radio_disable,
  #endif /* CONFIG_TESTING_OPTIONS */
@@ -606,7 +619,7 @@
  #endif /* CONFIG_DRIVER_NL80211_BRCM */
 +			} else if (vinfo->vendor_id == OUI_MTK) {
 +				switch (vinfo->subcmd) {
-+				case MTK_NL80211_VENDOR_SUBCMD_EDCCA_CTRL :
++				case MTK_NL80211_VENDOR_SUBCMD_EDCCA_CTRL:
 +					drv->mtk_edcca_vendor_cmd_avail = 1;
 +					break;
 +				}
diff --git a/autobuild_mac80211_release/package/network/services/hostapd_new/patches/mtk-0007-hostapd-mtk-Add-three-wire-PTA-ctrl-hostapd-vendor-c.patch b/autobuild_mac80211_release/package/network/services/hostapd_new/patches/mtk-0007-hostapd-mtk-Add-three-wire-PTA-ctrl-hostapd-vendor-c.patch
index 398e058..0d96fd2 100644
--- a/autobuild_mac80211_release/package/network/services/hostapd_new/patches/mtk-0007-hostapd-mtk-Add-three-wire-PTA-ctrl-hostapd-vendor-c.patch
+++ b/autobuild_mac80211_release/package/network/services/hostapd_new/patches/mtk-0007-hostapd-mtk-Add-three-wire-PTA-ctrl-hostapd-vendor-c.patch
@@ -1,7 +1,7 @@
-From 84d1dfb1adee1da3435b445e557396cc5318787d Mon Sep 17 00:00:00 2001
+From d0ce39f2142df00fbddff219bfe6fc6105d344cb Mon Sep 17 00:00:00 2001
 From: StanleyYP Wang <StanleyYP.Wang@mediatek.com>
 Date: Fri, 2 Sep 2022 01:03:23 +0800
-Subject: [PATCH 07/28] hostapd: mtk: Add three wire PTA ctrl hostapd vendor
+Subject: [PATCH 04/30] hostapd: mtk: Add three wire PTA ctrl hostapd vendor
  command
 
 Signed-off-by: StanleyYP Wang <StanleyYP.Wang@mediatek.com>
@@ -20,10 +20,10 @@
  11 files changed, 93 insertions(+)
 
 diff --git a/hostapd/config_file.c b/hostapd/config_file.c
-index 12741f8..860beee 100644
+index 0b36123..f34b81b 100644
 --- a/hostapd/config_file.c
 +++ b/hostapd/config_file.c
-@@ -4840,6 +4840,10 @@ static int hostapd_config_fill(struct hostapd_config *conf,
+@@ -4842,6 +4842,10 @@ static int hostapd_config_fill(struct hostapd_config *conf,
  			return 1;
  		}
  		conf->edcca_compensation = (s8) val;
@@ -47,7 +47,7 @@
  	return conf;
  }
 diff --git a/src/ap/ap_config.h b/src/ap/ap_config.h
-index 2077c67..e784629 100644
+index 49dd8ab..1b6c049 100644
 --- a/src/ap/ap_config.h
 +++ b/src/ap/ap_config.h
 @@ -1185,6 +1185,19 @@ struct hostapd_config {
@@ -115,7 +115,7 @@
  	wpa_printf(MSG_DEBUG, "%s: Setup of interface done.",
  		   iface->bss[0]->conf->iface);
 diff --git a/src/common/mtk_vendor.h b/src/common/mtk_vendor.h
-index ef8618e..ed47487 100644
+index 60bc4cd..99ecbaf 100644
 --- a/src/common/mtk_vendor.h
 +++ b/src/common/mtk_vendor.h
 @@ -13,6 +13,7 @@ enum mtk_nl80211_vendor_subcmds {
@@ -126,8 +126,8 @@
  };
  
  enum mtk_vendor_attr_edcca_ctrl {
-@@ -55,6 +56,21 @@ static struct nla_policy edcca_ctrl_policy[NUM_MTK_VENDOR_ATTRS_EDCCA_CTRL] = {
- 	[MTK_VENDOR_ATTR_EDCCA_CTRL_COMPENSATE] = { .type = NLA_U8 },
+@@ -58,6 +59,21 @@ static struct nla_policy edcca_ctrl_policy[NUM_MTK_VENDOR_ATTRS_EDCCA_CTRL] = {
+ 	[MTK_VENDOR_ATTR_EDCCA_CTRL_SEC160_VAL] = { .type = NLA_U8 },
  };
  
 +enum mtk_vendor_attr_3wire_ctrl {
@@ -168,10 +168,10 @@
  
  /**
 diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
-index fc8422c..34bc9ac 100644
+index 5335754..1842b2d 100644
 --- a/src/drivers/driver_nl80211.c
 +++ b/src/drivers/driver_nl80211.c
-@@ -13635,6 +13635,38 @@ static int nl80211_get_edcca(void *priv, const u8 mode, u8 *value)
+@@ -13644,6 +13644,38 @@ static int nl80211_get_edcca(void *priv, const u8 mode, u8 *value)
  	return ret;
  }
  
@@ -210,7 +210,7 @@
  
  const struct wpa_driver_ops wpa_driver_nl80211_ops = {
  	.name = "nl80211",
-@@ -13794,4 +13826,5 @@ const struct wpa_driver_ops wpa_driver_nl80211_ops = {
+@@ -13803,4 +13835,5 @@ const struct wpa_driver_ops wpa_driver_nl80211_ops = {
  	.configure_edcca_enable = nl80211_configure_edcca_enable,
  	.configure_edcca_threshold = nl80211_configure_edcca_threshold,
  	.get_edcca = nl80211_get_edcca,
diff --git a/autobuild_mac80211_release/package/network/services/hostapd_new/patches/mtk-0023-hostapd-mtk-Add-vendor-for-CAPI-certification-comman.patch b/autobuild_mac80211_release/package/network/services/hostapd_new/patches/mtk-0023-hostapd-mtk-Add-vendor-for-CAPI-certification-comman.patch
index 386ce8d..f865516 100644
--- a/autobuild_mac80211_release/package/network/services/hostapd_new/patches/mtk-0023-hostapd-mtk-Add-vendor-for-CAPI-certification-comman.patch
+++ b/autobuild_mac80211_release/package/network/services/hostapd_new/patches/mtk-0023-hostapd-mtk-Add-vendor-for-CAPI-certification-comman.patch
@@ -1,22 +1,22 @@
-From 934c90729e00901fe6785727dc9004315725b587 Mon Sep 17 00:00:00 2001
+From bc29227028570c319e8458833f4fd6a9ee007fe9 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 23/28] hostapd: mtk: Add vendor for CAPI certification
+Subject: [PATCH 01/11] hostapd: mtk: Add vendor for CAPI certification
  commands
 
 ---
  hostapd/ctrl_iface.c              | 95 +++++++++++++++++++++++++++++++
  src/ap/ap_drv_ops.c               | 21 +++++++
  src/ap/ap_drv_ops.h               |  3 +
- src/common/mtk_vendor.h           | 32 +----------
+ src/common/mtk_vendor.h           | 33 +----------
  src/drivers/driver.h              | 22 +++++++
- src/drivers/driver_nl80211.c      | 54 ++++++++++++++++++
+ src/drivers/driver_nl80211.c      | 55 ++++++++++++++++++
  src/drivers/driver_nl80211.h      |  1 +
  src/drivers/driver_nl80211_capa.c |  3 +
- 8 files changed, 201 insertions(+), 30 deletions(-)
+ 8 files changed, 202 insertions(+), 31 deletions(-)
 
 diff --git a/hostapd/ctrl_iface.c b/hostapd/ctrl_iface.c
-index da6e727..79457d7 100644
+index 4c6e9c3..620729e 100644
 --- a/hostapd/ctrl_iface.c
 +++ b/hostapd/ctrl_iface.c
 @@ -70,6 +70,7 @@
@@ -179,10 +179,10 @@
  #include "drivers/driver.h"
  
 diff --git a/src/common/mtk_vendor.h b/src/common/mtk_vendor.h
-index a99e6f2..32438af 100644
+index e27fe69..0b23c76 100644
 --- a/src/common/mtk_vendor.h
 +++ b/src/common/mtk_vendor.h
-@@ -48,16 +48,6 @@ enum mtk_vendor_attr_edcca_dump {
+@@ -50,17 +50,6 @@ enum mtk_vendor_attr_edcca_dump {
  		NUM_MTK_VENDOR_ATTRS_EDCCA_DUMP - 1
  };
  
@@ -194,12 +194,13 @@
 -	[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,
  
-@@ -69,10 +59,6 @@ enum mtk_vendor_attr_3wire_ctrl {
+@@ -72,10 +61,6 @@ enum mtk_vendor_attr_3wire_ctrl {
  		NUM_MTK_VENDOR_ATTRS_3WIRE_CTRL - 1
  };
  
@@ -210,7 +211,7 @@
  enum mtk_vendor_attr_csi_ctrl {
  	MTK_VENDOR_ATTR_CSI_CTRL_UNSPEC,
  
-@@ -169,7 +155,7 @@ enum mtk_vendor_attr_wireless_ctrl {
+@@ -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,
@@ -219,7 +220,7 @@
  	MTK_VENDOR_ATTR_WIRELESS_CTRL_RTS_SIGTA,
  
  	/* keep last */
-@@ -189,11 +175,6 @@ enum mtk_vendor_attr_wireless_dump {
+@@ -192,11 +177,6 @@ enum mtk_vendor_attr_wireless_dump {
  		NUM_MTK_VENDOR_ATTRS_WIRELESS_DUMP - 1
  };
  
@@ -231,7 +232,7 @@
  enum mtk_vendor_attr_rfeature_ctrl {
  	MTK_VENDOR_ATTR_RFEATURE_CTRL_UNSPEC,
  
-@@ -203,6 +184,7 @@ enum mtk_vendor_attr_rfeature_ctrl {
+@@ -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,
@@ -239,7 +240,7 @@
  
  	/* keep last */
  	NUM_MTK_VENDOR_ATTRS_RFEATURE_CTRL,
-@@ -244,16 +226,6 @@ enum mtk_vendor_attr_ibf_dump {
+@@ -247,16 +228,6 @@ enum mtk_vendor_attr_ibf_dump {
  		NUM_MTK_VENDOR_ATTRS_IBF_DUMP - 1
  };
  
@@ -290,10 +291,10 @@
  
  /**
 diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
-index 18a5647..730a696 100644
+index 7081fd1..493abc4 100644
 --- a/src/drivers/driver_nl80211.c
 +++ b/src/drivers/driver_nl80211.c
-@@ -76,6 +76,57 @@ enum nlmsgerr_attrs {
+@@ -76,6 +76,58 @@ enum nlmsgerr_attrs {
  #endif /* ANDROID */
  
  
@@ -318,6 +319,7 @@
 +	[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
@@ -351,7 +353,7 @@
  static struct nl_sock * nl_create_handle(struct nl_cb *cb, const char *dbg)
  {
  	struct nl_sock *handle;
-@@ -14246,4 +14297,7 @@ const struct wpa_driver_ops wpa_driver_nl80211_ops = {
+@@ -14255,4 +14307,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,