diff --git a/src/common/defs.h b/src/common/defs.h
index 4dd5690..4f56794 100644
--- a/src/common/defs.h
+++ b/src/common/defs.h
@@ -51,10 +51,6 @@
 #define WPA_KEY_MGMT_OSEN BIT(15)
 #define WPA_KEY_MGMT_IEEE8021X_SUITE_B BIT(16)
 #define WPA_KEY_MGMT_IEEE8021X_SUITE_B_192 BIT(17)
-#define WPA_KEY_MGMT_FILS_SHA256 BIT(18)
-#define WPA_KEY_MGMT_FILS_SHA384 BIT(19)
-#define WPA_KEY_MGMT_FT_FILS_SHA256 BIT(20)
-#define WPA_KEY_MGMT_FT_FILS_SHA384 BIT(21)
 
 static inline int wpa_key_mgmt_wpa_ieee8021x(int akm)
 {
@@ -64,11 +60,7 @@
 			 WPA_KEY_MGMT_OSEN |
 			 WPA_KEY_MGMT_IEEE8021X_SHA256 |
 			 WPA_KEY_MGMT_IEEE8021X_SUITE_B |
-			 WPA_KEY_MGMT_IEEE8021X_SUITE_B_192 |
-			 WPA_KEY_MGMT_FILS_SHA256 |
-			 WPA_KEY_MGMT_FILS_SHA384 |
-			 WPA_KEY_MGMT_FT_FILS_SHA256 |
-			 WPA_KEY_MGMT_FT_FILS_SHA384));
+			 WPA_KEY_MGMT_IEEE8021X_SUITE_B_192));
 }
 
 static inline int wpa_key_mgmt_wpa_psk(int akm)
@@ -84,14 +76,7 @@
 {
 	return !!(akm & (WPA_KEY_MGMT_FT_PSK |
 			 WPA_KEY_MGMT_FT_IEEE8021X |
-			 WPA_KEY_MGMT_FT_SAE |
-			 WPA_KEY_MGMT_FT_FILS_SHA256 |
-			 WPA_KEY_MGMT_FT_FILS_SHA384));
-}
-
-static inline int wpa_key_mgmt_ft_psk(int akm)
-{
-	return !!(akm & WPA_KEY_MGMT_FT_PSK);
+			 WPA_KEY_MGMT_FT_SAE));
 }
 
 static inline int wpa_key_mgmt_sae(int akm)
@@ -100,29 +85,17 @@
 			 WPA_KEY_MGMT_FT_SAE));
 }
 
-static inline int wpa_key_mgmt_fils(int akm)
-{
-	return !!(akm & (WPA_KEY_MGMT_FILS_SHA256 |
-			 WPA_KEY_MGMT_FILS_SHA384 |
-			 WPA_KEY_MGMT_FT_FILS_SHA256 |
-			 WPA_KEY_MGMT_FT_FILS_SHA384));
-}
-
 static inline int wpa_key_mgmt_sha256(int akm)
 {
 	return !!(akm & (WPA_KEY_MGMT_PSK_SHA256 |
 			 WPA_KEY_MGMT_IEEE8021X_SHA256 |
 			 WPA_KEY_MGMT_OSEN |
-			 WPA_KEY_MGMT_IEEE8021X_SUITE_B |
-			 WPA_KEY_MGMT_FILS_SHA256 |
-			 WPA_KEY_MGMT_FT_FILS_SHA256));
+			 WPA_KEY_MGMT_IEEE8021X_SUITE_B));
 }
 
 static inline int wpa_key_mgmt_sha384(int akm)
 {
-	return !!(akm & (WPA_KEY_MGMT_IEEE8021X_SUITE_B_192 |
-			 WPA_KEY_MGMT_FILS_SHA384 |
-			 WPA_KEY_MGMT_FT_FILS_SHA384));
+	return !!(akm & WPA_KEY_MGMT_IEEE8021X_SUITE_B_192);
 }
 
 static inline int wpa_key_mgmt_suite_b(int akm)
@@ -135,7 +108,6 @@
 {
 	return wpa_key_mgmt_wpa_ieee8021x(akm) ||
 		wpa_key_mgmt_wpa_psk(akm) ||
-		wpa_key_mgmt_fils(akm) ||
 		wpa_key_mgmt_sae(akm);
 }
 
@@ -160,7 +132,6 @@
 #define WPA_AUTH_ALG_LEAP BIT(2)
 #define WPA_AUTH_ALG_FT BIT(3)
 #define WPA_AUTH_ALG_SAE BIT(4)
-#define WPA_AUTH_ALG_FILS BIT(5)
 
 
 enum wpa_alg {
diff --git a/src/common/ieee802_11_common.c b/src/common/ieee802_11_common.c
index 26e08b7..b6bc449 100644
--- a/src/common/ieee802_11_common.c
+++ b/src/common/ieee802_11_common.c
@@ -179,90 +179,6 @@
 }
 
 
-static int ieee802_11_parse_extension(const u8 *pos, size_t elen,
-				      struct ieee802_11_elems *elems,
-				      int show_errors)
-{
-	u8 ext_id;
-
-	if (elen < 1) {
-		if (show_errors) {
-			wpa_printf(MSG_MSGDUMP,
-				   "short information element (Ext)");
-		}
-		return -1;
-	}
-
-	ext_id = *pos++;
-	elen--;
-
-	switch (ext_id) {
-	case WLAN_EID_EXT_ASSOC_DELAY_INFO:
-		if (elen != 1)
-			break;
-		elems->assoc_delay_info = pos;
-		break;
-	case WLAN_EID_EXT_FILS_REQ_PARAMS:
-		if (elen < 3)
-			break;
-		elems->fils_req_params = pos;
-		elems->fils_req_params_len = elen;
-		break;
-	case WLAN_EID_EXT_FILS_KEY_CONFIRM:
-		elems->fils_key_confirm = pos;
-		elems->fils_key_confirm_len = elen;
-		break;
-	case WLAN_EID_EXT_FILS_SESSION:
-		if (elen != FILS_SESSION_LEN)
-			break;
-		elems->fils_session = pos;
-		break;
-	case WLAN_EID_EXT_FILS_HLP_CONTAINER:
-		if (elen < 2 * ETH_ALEN)
-			break;
-		elems->fils_hlp = pos;
-		elems->fils_hlp_len = elen;
-		break;
-	case WLAN_EID_EXT_FILS_IP_ADDR_ASSIGN:
-		if (elen < 1)
-			break;
-		elems->fils_ip_addr_assign = pos;
-		elems->fils_ip_addr_assign_len = elen;
-		break;
-	case WLAN_EID_EXT_KEY_DELIVERY:
-		if (elen < WPA_KEY_RSC_LEN)
-			break;
-		elems->key_delivery = pos;
-		elems->key_delivery_len = elen;
-		break;
-	case WLAN_EID_EXT_FILS_WRAPPED_DATA:
-		elems->fils_wrapped_data = pos;
-		elems->fils_wrapped_data_len = elen;
-		break;
-	case WLAN_EID_EXT_FILS_PUBLIC_KEY:
-		if (elen < 1)
-			break;
-		elems->fils_pk = pos;
-		elems->fils_pk_len = elen;
-		break;
-	case WLAN_EID_EXT_FILS_NONCE:
-		if (elen != FILS_NONCE_LEN)
-			break;
-		elems->fils_nonce = pos;
-		break;
-	default:
-		if (show_errors) {
-			wpa_printf(MSG_MSGDUMP,
-				   "IEEE 802.11 element parsing ignored unknown element extension (ext_id=%u elen=%u)",
-				   ext_id, (unsigned int) elen);
-		}
-		return -1;
-	}
-
-	return 0;
-}
-
-
 /**
  * ieee802_11_parse_elems - Parse information elements in management frames
  * @start: Pointer to the start of IEs
@@ -463,35 +379,6 @@
 			elems->rrm_enabled = pos;
 			elems->rrm_enabled_len = elen;
 			break;
-		case WLAN_EID_CAG_NUMBER:
-			elems->cag_number = pos;
-			elems->cag_number_len = elen;
-			break;
-		case WLAN_EID_AP_CSN:
-			if (elen < 1)
-				break;
-			elems->ap_csn = pos;
-			break;
-		case WLAN_EID_FILS_INDICATION:
-			if (elen < 2)
-				break;
-			elems->fils_indic = pos;
-			elems->fils_indic_len = elen;
-			break;
-		case WLAN_EID_DILS:
-			if (elen < 2)
-				break;
-			elems->dils = pos;
-			elems->dils_len = elen;
-			break;
-		case WLAN_EID_FRAGMENT:
-			/* TODO */
-			break;
-		case WLAN_EID_EXTENSION:
-			if (ieee802_11_parse_extension(pos, elen, elems,
-						       show_errors))
-				unknown++;
-			break;
 		default:
 			unknown++;
 			if (!show_errors)
@@ -794,25 +681,6 @@
 		return HOSTAPD_MODE_IEEE80211A;
 	}
 
-	/* 5 GHz, channels 52..64 */
-	if (freq >= 5260 && freq <= 5320) {
-		if ((freq - 5000) % 5)
-			return NUM_HOSTAPD_MODES;
-
-		if (vht_opclass)
-			*op_class = vht_opclass;
-		else if (sec_channel == 1)
-			*op_class = 119;
-		else if (sec_channel == -1)
-			*op_class = 120;
-		else
-			*op_class = 118;
-
-		*channel = (freq - 5000) / 5;
-
-		return HOSTAPD_MODE_IEEE80211A;
-	}
-
 	/* 5 GHz, channels 149..169 */
 	if (freq >= 5745 && freq <= 5845) {
 		if ((freq - 5000) % 5)
diff --git a/src/common/ieee802_11_common.h b/src/common/ieee802_11_common.h
index 2c20ba6..42f3909 100644
--- a/src/common/ieee802_11_common.h
+++ b/src/common/ieee802_11_common.h
@@ -64,20 +64,6 @@
 	const u8 *pref_freq_list;
 	const u8 *supp_op_classes;
 	const u8 *rrm_enabled;
-	const u8 *cag_number;
-	const u8 *ap_csn;
-	const u8 *fils_indic;
-	const u8 *dils;
-	const u8 *assoc_delay_info;
-	const u8 *fils_req_params;
-	const u8 *fils_key_confirm;
-	const u8 *fils_session;
-	const u8 *fils_hlp;
-	const u8 *fils_ip_addr_assign;
-	const u8 *key_delivery;
-	const u8 *fils_wrapped_data;
-	const u8 *fils_pk;
-	const u8 *fils_nonce;
 
 	u8 ssid_len;
 	u8 supp_rates_len;
@@ -110,16 +96,6 @@
 	u8 pref_freq_list_len;
 	u8 supp_op_classes_len;
 	u8 rrm_enabled_len;
-	u8 cag_number_len;
-	u8 fils_indic_len;
-	u8 dils_len;
-	u8 fils_req_params_len;
-	u8 fils_key_confirm_len;
-	u8 fils_hlp_len;
-	u8 fils_ip_addr_assign_len;
-	u8 key_delivery_len;
-	u8 fils_wrapped_data_len;
-	u8 fils_pk_len;
 
 	struct mb_ies_info mb_ies;
 };
diff --git a/src/common/ieee802_11_defs.h b/src/common/ieee802_11_defs.h
index ca808d7..02d2ad7 100644
--- a/src/common/ieee802_11_defs.h
+++ b/src/common/ieee802_11_defs.h
@@ -81,9 +81,6 @@
 #define WLAN_AUTH_SHARED_KEY		1
 #define WLAN_AUTH_FT			2
 #define WLAN_AUTH_SAE			3
-#define WLAN_AUTH_FILS_SK		4
-#define WLAN_AUTH_FILS_SK_PFS		5
-#define WLAN_AUTH_FILS_PK		6
 #define WLAN_AUTH_LEAP			128
 
 #define WLAN_AUTH_CHALLENGE_LEN 128
@@ -178,8 +175,6 @@
 #define WLAN_STATUS_QUERY_RESP_OUTSTANDING 95
 #define WLAN_STATUS_DENIED_WITH_SUGGESTED_BAND_AND_CHANNEL 99
 #define WLAN_STATUS_ASSOC_DENIED_NO_VHT 104
-#define WLAN_STATUS_FILS_AUTHENTICATION_FAILURE 112
-#define WLAN_STATUS_UNKNOWN_AUTHENTICATION_SERVER 113
 
 /* Reason codes (IEEE 802.11-2007, 7.3.1.7, Table 7-22) */
 #define WLAN_REASON_UNSPECIFIED 1
@@ -297,24 +292,6 @@
 #define WLAN_EID_VHT_QUIET_CHANNEL 198
 #define WLAN_EID_VHT_OPERATING_MODE_NOTIFICATION 199
 #define WLAN_EID_VENDOR_SPECIFIC 221
-#define WLAN_EID_CAG_NUMBER 237
-#define WLAN_EID_AP_CSN 239
-#define WLAN_EID_FILS_INDICATION 240
-#define WLAN_EID_DILS 241
-#define WLAN_EID_FRAGMENT 242
-#define WLAN_EID_EXTENSION 255
-
-/* Element ID Extension (EID 255) values */
-#define WLAN_EID_EXT_ASSOC_DELAY_INFO 1
-#define WLAN_EID_EXT_FILS_REQ_PARAMS 2
-#define WLAN_EID_EXT_FILS_KEY_CONFIRM 3
-#define WLAN_EID_EXT_FILS_SESSION 4
-#define WLAN_EID_EXT_FILS_HLP_CONTAINER 5
-#define WLAN_EID_EXT_FILS_IP_ADDR_ASSIGN 6
-#define WLAN_EID_EXT_KEY_DELIVERY 7
-#define WLAN_EID_EXT_FILS_WRAPPED_DATA 8
-#define WLAN_EID_EXT_FILS_PUBLIC_KEY 12
-#define WLAN_EID_EXT_FILS_NONCE 13
 
 
 /* Action frame categories (IEEE 802.11-2007, 7.3.1.11, Table 7-24) */
@@ -334,7 +311,6 @@
 #define WLAN_ACTION_SELF_PROTECTED 15
 #define WLAN_ACTION_WMM 17 /* WMM Specification 1.1 */
 #define WLAN_ACTION_FST 18
-#define WLAN_ACTION_FILS 26
 #define WLAN_ACTION_VENDOR_SPECIFIC 127
 
 /* Public action codes */
@@ -345,7 +321,6 @@
 #define WLAN_PA_GAS_COMEBACK_REQ 12
 #define WLAN_PA_GAS_COMEBACK_RESP 13
 #define WLAN_TDLS_DISCOVERY_RESPONSE 14
-#define WLAN_PA_FILS_DISCOVERY 34
 
 /* Protected Dual of Public Action frames */
 #define WLAN_PROT_DSE_ENABLEMENT 1
@@ -451,10 +426,6 @@
 	ANQP_TDLS_CAPABILITY = 270,
 	ANQP_EMERGENCY_NAI = 271,
 	ANQP_NEIGHBOR_REPORT = 272,
-	ANQP_QUERY_AP_LIST = 273,
-	ANQP_AP_LIST_RESPONSE = 274,
-	AMQP_FILS_REALM_INFO = 275,
-	ANQP_CAG = 276,
 	ANQP_VENUE_URL = 277,
 	ANQP_ADVICE_OF_CHARGE = 278,
 	ANQP_LOCAL_CONTENT = 279,
@@ -534,11 +505,6 @@
 	LCI_REQ_SUBELEM_MAX_AGE = 4,
 };
 
-#define FILS_NONCE_LEN 16
-#define FILS_SESSION_LEN 8
-#define FILS_CACHE_ID_LEN 2
-#define FILS_MAX_KEY_AUTH_LEN 48
-
 #ifdef _MSC_VER
 #pragma pack(push, 1)
 #endif /* _MSC_VER */
@@ -1214,10 +1180,6 @@
 	WFA_WNM_NOTIF_SUBELEM_CELL_DATA_CAPA = 3,
 };
 
-/* MBO v0.0_r25, 4.3: MBO ANQP-elements */
-#define MBO_ANQP_OUI_TYPE 0x12
-#define MBO_ANQP_SUBTYPE_CELL_CONN_PREF 1
-
 /* Wi-Fi Direct (P2P) */
 
 #define P2P_OUI_TYPE 9
@@ -1429,10 +1391,6 @@
 #define WLAN_AKM_SUITE_PSK_SHA256	0x000FAC06
 #define WLAN_AKM_SUITE_8021X_SUITE_B	0x000FAC11
 #define WLAN_AKM_SUITE_8021X_SUITE_B_192	0x000FAC12
-#define WLAN_AKM_SUITE_FILS_SHA256	0x000FAC14
-#define WLAN_AKM_SUITE_FILS_SHA384	0x000FAC15
-#define WLAN_AKM_SUITE_FT_FILS_SHA256	0x000FAC16
-#define WLAN_AKM_SUITE_FT_FILS_SHA384	0x000FAC17
 #define WLAN_AKM_SUITE_CCKM		0x00409600
 #define WLAN_AKM_SUITE_OSEN		0x506f9a01
 
diff --git a/src/common/privsep_commands.h b/src/common/privsep_commands.h
index f017f08..8dff303 100644
--- a/src/common/privsep_commands.h
+++ b/src/common/privsep_commands.h
@@ -42,9 +42,9 @@
 	int wep_tx_keyidx;
 	int local_state_change;
 	int p2p;
-	size_t auth_data_len;
+	size_t sae_data_len;
 	/* followed by ie_len bytes of ie */
-	/* followed by auth_data_len bytes of auth_data */
+	/* followed by sae_data_len bytes of sae_data */
 };
 
 struct privsep_cmd_associate
diff --git a/src/common/qca-vendor.h b/src/common/qca-vendor.h
index fc391e0..c458cb3 100644
--- a/src/common/qca-vendor.h
+++ b/src/common/qca-vendor.h
@@ -164,11 +164,8 @@
  *
  * @QCA_NL80211_VENDOR_SUBCMD_AOA_MEAS: Perform a standalone AOA (angle of
  *	arrival) measurement with a single peer. Specify peer MAC address in
- *	QCA_WLAN_VENDOR_ATTR_MAC_ADDR and optionally frequency (MHz) in
- *	QCA_WLAN_VENDOR_ATTR_FREQ (if not specified, locate peer in kernel
- *	scan results cache and use the frequency from there).
- *	Also specify measurement type in QCA_WLAN_VENDOR_ATTR_AOA_TYPE.
- *	Measurement result is reported in
+ *	QCA_WLAN_VENDOR_ATTR_MAC_ADDR and measurement type in
+ *	QCA_WLAN_VENDOR_ATTR_AOA_TYPE. Measurement result is reported in
  *	QCA_NL80211_VENDOR_SUBCMD_AOA_MEAS_RESULT event.
  *
  * @QCA_NL80211_VENDOR_SUBCMD_AOA_ABORT_MEAS: Abort an AOA measurement. Specify
@@ -188,50 +185,6 @@
  *
  * @QCA_NL80211_VENDOR_SUBCMD_GET_CHAIN_RSSI: Get antenna RSSI value for a
  *	specific chain.
- *
- * @QCA_NL80211_VENDOR_SUBCMD_DMG_RF_GET_SECTOR_CFG: Get low level
- *	configuration for a DMG RF sector. Specify sector index in
- *	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_INDEX, sector type in
- *	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_TYPE and RF modules
- *	to return sector information for in
- *	QCA_WLAN_VENDOR_ATTR_DMG_RF_MODULE_MASK. Returns sector configuration
- *	in QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG. Also return the
- *	exact time where information was captured in
- *	QCA_WLAN_VENDOR_ATTR_TSF.
- *
- * @QCA_NL80211_VENDOR_SUBCMD_DMG_RF_SET_SECTOR_CFG: Set low level
- *	configuration for a DMG RF sector. Specify sector index in
- *	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_INDEX, sector type in
- *	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_TYPE and sector configuration
- *	for one or more DMG RF modules in
- *	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG.
- *
- * @QCA_NL80211_VENDOR_SUBCMD_DMG_RF_GET_SELECTED_SECTOR: Get selected
- *	DMG RF sector for a station. This is the sector that the HW
- *	will use to communicate with the station. Specify the MAC address
- *	of associated station/AP/PCP in QCA_WLAN_VENDOR_ATTR_MAC_ADDR (not
- *	needed for unassociated	station). Specify sector type to return in
- *	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_TYPE. Returns the selected
- *	sector index in QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_INDEX.
- *	Also return the exact time where the information was captured
- *	in QCA_WLAN_VENDOR_ATTR_TSF.
- *
- * @QCA_NL80211_VENDOR_SUBCMD_DMG_RF_SET_SELECTED_SECTOR: Set the
- *	selected DMG RF sector for a station. This is the sector that
- *	the HW will use to communicate with the station.
- *	Specify the MAC address of associated station/AP/PCP in
- *	QCA_WLAN_VENDOR_ATTR_MAC_ADDR, the sector type to select in
- *	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_TYPE and the sector index
- *	in QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_INDEX.
- *	The selected sector will be locked such that it will not be
- *	modified like it normally does (for example when station
- *	moves around). To unlock the selected sector for a station
- *	pass the special value 0xFFFF in the sector index. To unlock
- *	all connected stations also pass a broadcast MAC address.
- *
- * @QCA_NL80211_VENDOR_SUBCMD_CONFIGURE_TDLS: Configure the TDLS behavior
- *	in the host driver. The different TDLS configurations are defined
- *	by the attributes in enum qca_wlan_vendor_attr_tdls_configuration.
  */
 enum qca_nl80211_vendor_subcmds {
 	QCA_NL80211_VENDOR_SUBCMD_UNSPEC = 0,
@@ -241,7 +194,7 @@
 	QCA_NL80211_VENDOR_SUBCMD_AVOID_FREQUENCY = 10,
 	QCA_NL80211_VENDOR_SUBCMD_DFS_CAPABILITY =  11,
 	QCA_NL80211_VENDOR_SUBCMD_NAN =  12,
-	QCA_NL80211_VENDOR_SUBCMD_STATS_EXT = 13,
+	QCA_NL80211_VENDOR_SUBMCD_STATS_EXT = 13,
 	QCA_NL80211_VENDOR_SUBCMD_LL_STATS_SET = 14,
 	QCA_NL80211_VENDOR_SUBCMD_LL_STATS_GET = 15,
 	QCA_NL80211_VENDOR_SUBCMD_LL_STATS_CLR = 16,
@@ -332,12 +285,6 @@
 	QCA_NL80211_VENDOR_SUBCMD_AOA_MEAS_RESULT = 136,
 	QCA_NL80211_VENDOR_SUBCMD_ENCRYPTION_TEST = 137,
 	QCA_NL80211_VENDOR_SUBCMD_GET_CHAIN_RSSI = 138,
-	/* DMG low level RF sector operations */
-	QCA_NL80211_VENDOR_SUBCMD_DMG_RF_GET_SECTOR_CFG = 139,
-	QCA_NL80211_VENDOR_SUBCMD_DMG_RF_SET_SECTOR_CFG = 140,
-	QCA_NL80211_VENDOR_SUBCMD_DMG_RF_GET_SELECTED_SECTOR = 141,
-	QCA_NL80211_VENDOR_SUBCMD_DMG_RF_SET_SELECTED_SECTOR = 142,
-	QCA_NL80211_VENDOR_SUBCMD_CONFIGURE_TDLS = 143,
 };
 
 
@@ -445,42 +392,6 @@
 	/* Used in QCA_NL80211_VENDOR_SUBCMD_GET_CHAIN_RSSI command
 	 * to report the specific antenna RSSI value (unsigned 32 bit value) */
 	QCA_WLAN_VENDOR_ATTR_CHAIN_RSSI = 27,
-	/* Frequency in MHz, various uses. Unsigned 32 bit value */
-	QCA_WLAN_VENDOR_ATTR_FREQ = 28,
-	/* TSF timer value, unsigned 64 bit value.
-	 * May be returned by various commands.
-	 */
-	QCA_WLAN_VENDOR_ATTR_TSF = 29,
-	/* DMG RF sector index, unsigned 16 bit number. Valid values are
-	 * 0..127 for sector indices or 65535 as special value used to
-	 * unlock sector selection in
-	 * QCA_NL80211_VENDOR_SUBCMD_DMG_RF_SET_SELECTED_SECTOR.
-	 */
-	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_INDEX = 30,
-	/* DMG RF sector type, unsigned 8 bit value. One of the values
-	 * in enum qca_wlan_vendor_attr_dmg_rf_sector_type.
-	 */
-	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_TYPE = 31,
-	/* Bitmask of DMG RF modules for which information is requested. Each
-	 * bit corresponds to an RF module with the same index as the bit
-	 * number. Unsigned 32 bit number but only low 8 bits can be set since
-	 * all DMG chips currently have up to 8 RF modules.
-	 */
-	QCA_WLAN_VENDOR_ATTR_DMG_RF_MODULE_MASK = 32,
-	/* Array of nested attributes where each entry is DMG RF sector
-	 * configuration for a single RF module.
-	 * Attributes for each entry are taken from enum
-	 * qca_wlan_vendor_attr_dmg_rf_sector_cfg.
-	 * Specified in QCA_NL80211_VENDOR_SUBCMD_DMG_RF_SET_SECTOR_CFG
-	 * and returned by QCA_NL80211_VENDOR_SUBCMD_DMG_RF_GET_SECTOR_CFG.
-	 */
-	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG = 33,
-	/* Used in QCA_NL80211_VENDOR_SUBCMD_STATS_EXT command
-	 * to report frame aggregation statistics to userspace.
-	 */
-	QCA_WLAN_VENDOR_ATTR_RX_AGGREGATION_STATS_HOLES_NUM = 34,
-	QCA_WLAN_VENDOR_ATTR_RX_AGGREGATION_STATS_HOLES_INFO = 35,
-
 	/* keep last */
 	QCA_WLAN_VENDOR_ATTR_AFTER_LAST,
 	QCA_WLAN_VENDOR_ATTR_MAX	= QCA_WLAN_VENDOR_ATTR_AFTER_LAST - 1,
@@ -878,13 +789,13 @@
  * QCA_NL80211_VENDOR_SUBCMD_GET_WIFI_CONFIGURATION subcommands.
  */
 enum qca_wlan_vendor_attr_config {
-	QCA_WLAN_VENDOR_ATTR_CONFIG_INVALID = 0,
+	QCA_WLAN_VENDOR_ATTR_CONFIG_INVALID,
 	/* Unsigned 32-bit value to set the DTIM period.
 	 * Whether the wifi chipset wakes at every dtim beacon or a multiple of
 	 * the DTIM period. If DTIM is set to 3, the STA shall wake up every 3
 	 * DTIM beacons.
 	 */
-	QCA_WLAN_VENDOR_ATTR_CONFIG_DYNAMIC_DTIM = 1,
+	QCA_WLAN_VENDOR_ATTR_CONFIG_DYNAMIC_DTIM,
 	/* Unsigned 32-bit value to set the wifi_iface stats averaging factor
 	 * used to calculate statistics like average the TSF offset or average
 	 * number of frame leaked.
@@ -893,52 +804,52 @@
 	 * For instance, when evaluating leaky APs:
 	 * current_avg = ((num frame received within guard time) * factor + previous_avg * (0x10000 - factor)) / 0x10000
 	 */
-	QCA_WLAN_VENDOR_ATTR_CONFIG_STATS_AVG_FACTOR = 2,
+	QCA_WLAN_VENDOR_ATTR_CONFIG_STATS_AVG_FACTOR,
 	/* Unsigned 32-bit value to configure guard time, i.e., when
 	 * implementing IEEE power management based on frame control PM bit, how
 	 * long the driver waits before shutting down the radio and after
 	 * receiving an ACK frame for a Data frame with PM bit set.
 	 */
-	QCA_WLAN_VENDOR_ATTR_CONFIG_GUARD_TIME = 3,
+	QCA_WLAN_VENDOR_ATTR_CONFIG_GUARD_TIME,
 	/* Unsigned 32-bit value to change the FTM capability dynamically */
-	QCA_WLAN_VENDOR_ATTR_CONFIG_FINE_TIME_MEASUREMENT = 4,
+	QCA_WLAN_VENDOR_ATTR_CONFIG_FINE_TIME_MEASUREMENT,
 	/* Unsigned 16-bit value to configure maximum TX rate dynamically */
-	QCA_WLAN_VENDOR_ATTR_CONF_TX_RATE = 5,
+	QCA_WLAN_VENDOR_ATTR_CONF_TX_RATE,
 	/* Unsigned 32-bit value to configure the number of continuous
 	 * Beacon Miss which shall be used by the firmware to penalize
 	 * the RSSI.
 	 */
-	QCA_WLAN_VENDOR_ATTR_CONFIG_PENALIZE_AFTER_NCONS_BEACON_MISS = 6,
+	QCA_WLAN_VENDOR_ATTR_CONFIG_PENALIZE_AFTER_NCONS_BEACON_MISS,
 	/* Unsigned 8-bit value to configure the channel avoidance indication
 	 * behavior. Firmware to send only one indication and ignore duplicate
 	 * indications when set to avoid multiple Apps wakeups.
 	 */
-	QCA_WLAN_VENDOR_ATTR_CONFIG_CHANNEL_AVOIDANCE_IND = 7,
+	QCA_WLAN_VENDOR_ATTR_CONFIG_CHANNEL_AVOIDANCE_IND,
 	/* 8-bit unsigned value to configure the maximum TX MPDU for
 	 * aggregation. */
-	QCA_WLAN_VENDOR_ATTR_CONFIG_TX_MPDU_AGGREGATION = 8,
+	QCA_WLAN_VENDOR_ATTR_CONFIG_TX_MPDU_AGGREGATION,
 	/* 8-bit unsigned value to configure the maximum RX MPDU for
 	 * aggregation. */
-	QCA_WLAN_VENDOR_ATTR_CONFIG_RX_MPDU_AGGREGATION = 9,
+	QCA_WLAN_VENDOR_ATTR_CONFIG_RX_MPDU_AGGREGATION,
 	/* 8-bit unsigned value to configure the Non aggregrate/11g sw
 	 * retry threshold (0 disable, 31 max). */
-	QCA_WLAN_VENDOR_ATTR_CONFIG_NON_AGG_RETRY = 10,
+	QCA_WLAN_VENDOR_ATTR_CONFIG_NON_AGG_RETRY,
 	/* 8-bit unsigned value to configure the aggregrate sw
 	 * retry threshold (0 disable, 31 max). */
-	QCA_WLAN_VENDOR_ATTR_CONFIG_AGG_RETRY = 11,
+	QCA_WLAN_VENDOR_ATTR_CONFIG_AGG_RETRY,
 	/* 8-bit unsigned value to configure the MGMT frame
 	 * retry threshold (0 disable, 31 max). */
-	QCA_WLAN_VENDOR_ATTR_CONFIG_MGMT_RETRY = 12,
+	QCA_WLAN_VENDOR_ATTR_CONFIG_MGMT_RETRY,
 	/* 8-bit unsigned value to configure the CTRL frame
 	 * retry threshold (0 disable, 31 max). */
-	QCA_WLAN_VENDOR_ATTR_CONFIG_CTRL_RETRY = 13,
+	QCA_WLAN_VENDOR_ATTR_CONFIG_CTRL_RETRY,
 	/* 8-bit unsigned value to configure the propagation delay for
 	 * 2G/5G band (0~63, units in us) */
-	QCA_WLAN_VENDOR_ATTR_CONFIG_PROPAGATION_DELAY = 14,
+	QCA_WLAN_VENDOR_ATTR_CONFIG_PROPAGATION_DELAY,
 	/* Unsigned 32-bit value to configure the number of unicast TX fail
 	 * packet count. The peer is disconnected once this threshold is
 	 * reached. */
-	QCA_WLAN_VENDOR_ATTR_CONFIG_TX_FAIL_COUNT = 15,
+	QCA_WLAN_VENDOR_ATTR_CONFIG_TX_FAIL_COUNT,
 	/* Attribute used to set scan default IEs to the driver.
 	 *
 	 * These IEs can be used by scan operations that will be initiated by
@@ -949,62 +860,50 @@
 	 * driver. If a particular IE is present in the scan default IEs but not
 	 * present in the scan request, then that IE should be added to the IEs
 	 * sent in the Probe Request frames for that scan request. */
-	QCA_WLAN_VENDOR_ATTR_CONFIG_SCAN_DEFAULT_IES = 16,
+	QCA_WLAN_VENDOR_ATTR_CONFIG_SCAN_DEFAULT_IES,
 	/* Unsigned 32-bit attribute for generic commands */
-	QCA_WLAN_VENDOR_ATTR_CONFIG_GENERIC_COMMAND = 17,
+	QCA_WLAN_VENDOR_ATTR_CONFIG_GENERIC_COMMAND,
 	/* Unsigned 32-bit value attribute for generic commands */
-	QCA_WLAN_VENDOR_ATTR_CONFIG_GENERIC_VALUE = 18,
+	QCA_WLAN_VENDOR_ATTR_CONFIG_GENERIC_VALUE,
 	/* Unsigned 32-bit data attribute for generic command response */
-	QCA_WLAN_VENDOR_ATTR_CONFIG_GENERIC_DATA = 19,
+	QCA_WLAN_VENDOR_ATTR_CONFIG_GENERIC_DATA,
 	/* Unsigned 32-bit length attribute for
 	 * QCA_WLAN_VENDOR_ATTR_CONFIG_GENERIC_DATA */
-	QCA_WLAN_VENDOR_ATTR_CONFIG_GENERIC_LENGTH = 20,
+	QCA_WLAN_VENDOR_ATTR_CONFIG_GENERIC_LENGTH,
 	/* Unsigned 32-bit flags attribute for
 	 * QCA_WLAN_VENDOR_ATTR_CONFIG_GENERIC_DATA */
-	QCA_WLAN_VENDOR_ATTR_CONFIG_GENERIC_FLAGS = 21,
+	QCA_WLAN_VENDOR_ATTR_CONFIG_GENERIC_FLAGS,
 	/* Unsigned 32-bit, defining the access policy.
 	 * See enum qca_access_policy. Used with
 	 * QCA_WLAN_VENDOR_ATTR_CONFIG_ACCESS_POLICY_IE_LIST. */
-	QCA_WLAN_VENDOR_ATTR_CONFIG_ACCESS_POLICY = 22,
+	QCA_WLAN_VENDOR_ATTR_CONFIG_ACCESS_POLICY,
 	/* Sets the list of full set of IEs for which a specific access policy
 	 * has to be applied. Used along with
 	 * QCA_WLAN_VENDOR_ATTR_CONFIG_ACCESS_POLICY to control the access.
 	 * Zero length payload can be used to clear this access constraint. */
-	QCA_WLAN_VENDOR_ATTR_CONFIG_ACCESS_POLICY_IE_LIST = 23,
+	QCA_WLAN_VENDOR_ATTR_CONFIG_ACCESS_POLICY_IE_LIST,
 	/* Unsigned 32-bit, specifies the interface index (netdev) for which the
 	 * corresponding configurations are applied. If the interface index is
 	 * not specified, the configurations are attributed to the respective
 	 * wiphy. */
-	QCA_WLAN_VENDOR_ATTR_CONFIG_IFINDEX = 24,
+	QCA_WLAN_VENDOR_ATTR_CONFIG_IFINDEX,
 	/* 8-bit unsigned value to trigger QPower: 1-Enable, 0-Disable */
-	QCA_WLAN_VENDOR_ATTR_CONFIG_QPOWER = 25,
+	QCA_WLAN_VENDOR_ATTR_CONFIG_QPOWER,
 	/* 8-bit unsigned value to configure the driver and below layers to
 	 * ignore the assoc disallowed set by APs while connecting
 	 * 1-Ignore, 0-Don't ignore */
-	QCA_WLAN_VENDOR_ATTR_CONFIG_IGNORE_ASSOC_DISALLOWED = 26,
+	QCA_WLAN_VENDOR_ATTR_CONFIG_IGNORE_ASSOC_DISALLOWED,
 	/* 32-bit unsigned value to trigger antenna diversity features:
 	 * 1-Enable, 0-Disable */
-	QCA_WLAN_VENDOR_ATTR_CONFIG_ANT_DIV_ENA = 27,
+	QCA_WLAN_VENDOR_ATTR_CONFIG_ANT_DIV_ENA,
 	/* 32-bit unsigned value to configure specific chain antenna */
-	QCA_WLAN_VENDOR_ATTR_CONFIG_ANT_DIV_CHAIN = 28,
+	QCA_WLAN_VENDOR_ATTR_CONFIG_ANT_DIV_CHAIN,
 	/* 32-bit unsigned value to trigger cycle selftest
 	 * 1-Enable, 0-Disable */
-	QCA_WLAN_VENDOR_ATTR_CONFIG_ANT_DIV_SELFTEST = 29,
+	QCA_WLAN_VENDOR_ATTR_CONFIG_ANT_DIV_SELFTEST,
 	/* 32-bit unsigned to configure the cycle time of selftest
 	 * the unit is micro-second */
-	QCA_WLAN_VENDOR_ATTR_CONFIG_ANT_DIV_SELFTEST_INTVL = 30,
-	/* 32-bit unsigned value to set reorder timeout for AC_VO */
-	QCA_WLAN_VENDOR_ATTR_CONFIG_RX_REORDER_TIMEOUT_VOICE = 31,
-	/* 32-bit unsigned value to set reorder timeout for AC_VI */
-	QCA_WLAN_VENDOR_ATTR_CONFIG_RX_REORDER_TIMEOUT_VIDEO = 32,
-	/* 32-bit unsigned value to set reorder timeout for AC_BE */
-	QCA_WLAN_VENDOR_ATTR_CONFIG_RX_REORDER_TIMEOUT_BESTEFFORT = 33,
-	/* 32-bit unsigned value to set reorder timeout for AC_BK */
-	QCA_WLAN_VENDOR_ATTR_CONFIG_RX_REORDER_TIMEOUT_BACKGROUND = 34,
-	/* 6-byte MAC address to point out the specific peer */
-	QCA_WLAN_VENDOR_ATTR_CONFIG_RX_BLOCKSIZE_PEER_MAC = 35,
-	/* 32-bit unsigned value to set window size for specific peer */
-	QCA_WLAN_VENDOR_ATTR_CONFIG_RX_BLOCKSIZE_WINLIMIT = 36,
+	QCA_WLAN_VENDOR_ATTR_CONFIG_ANT_DIV_SELFTEST_INTVL,
 
 	/* keep last */
 	QCA_WLAN_VENDOR_ATTR_CONFIG_AFTER_LAST,
@@ -1421,10 +1320,6 @@
  * @QCA_WLAN_VENDOR_ATTR_FTM_PEER_AOA_BURST_PERIOD: Request AOA
  *	measurement every <value> bursts. If 0 or not specified,
  *	AOA measurements will be disabled for this peer.
- * @QCA_WLAN_VENDOR_ATTR_FTM_PEER_FREQ: Frequency in MHz where
- *	the measurement frames are exchanged. Optional; if not
- *	specified, try to locate the peer in the kernel scan
- *	results cache and use frequency from there.
  */
 enum qca_wlan_vendor_attr_ftm_peer_info {
 	QCA_WLAN_VENDOR_ATTR_FTM_PEER_INVALID,
@@ -1433,7 +1328,6 @@
 	QCA_WLAN_VENDOR_ATTR_FTM_PEER_MEAS_PARAMS,
 	QCA_WLAN_VENDOR_ATTR_FTM_PEER_SECURE_TOKEN_ID,
 	QCA_WLAN_VENDOR_ATTR_FTM_PEER_AOA_BURST_PERIOD,
-	QCA_WLAN_VENDOR_ATTR_FTM_PEER_FREQ,
 	/* keep last */
 	QCA_WLAN_VENDOR_ATTR_FTM_PEER_AFTER_LAST,
 	QCA_WLAN_VENDOR_ATTR_FTM_PEER_MAX =
@@ -1693,518 +1587,4 @@
 	QCA_WLAN_VENDOR_ATTR_ENCRYPTION_TEST_AFTER_LAST - 1
 };
 
-/**
- * enum qca_wlan_vendor_attr_dmg_rf_sector_type - Type of
- * sector for DMG RF sector operations.
- *
- * @QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_TYPE_RX: RX sector
- * @QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_TYPE_TX: TX sector
- */
-enum qca_wlan_vendor_attr_dmg_rf_sector_type {
-	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_TYPE_RX,
-	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_TYPE_TX,
-	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_TYPE_MAX
-};
-
-/**
- * enum qca_wlan_vendor_attr_dmg_rf_sector_cfg - Attributes for
- * DMG RF sector configuration for a single RF module.
- * The values are defined in a compact way which closely matches
- * the way it is stored in HW registers.
- * The configuration provides values for 32 antennas and 8 distribution
- * amplifiers, and together describes the characteristics of the RF
- * sector - such as a beam in some direction with some gain.
- *
- * @QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG_MODULE_INDEX: Index
- *	of RF module for this configuration.
- * @QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG_ETYPE0: Bit 0 of edge
- *	amplifier gain index. Unsigned 32 bit number containing
- *	bits for all 32 antennas.
- * @QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG_ETYPE1: Bit 1 of edge
- *	amplifier gain index. Unsigned 32 bit number containing
- *	bits for all 32 antennas.
- * @QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG_ETYPE2: Bit 2 of edge
- *	amplifier gain index. Unsigned 32 bit number containing
- *	bits for all 32 antennas.
- * @QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG_PSH_HI: Phase values
- *	for first 16 antennas, 2 bits per antenna.
- * @QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG_PSH_LO: Phase values
- *	for last 16 antennas, 2 bits per antenna.
- * @QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG_DTYPE_X16: Contains
- *	DTYPE values (3 bits) for each distribution amplifier, followed
- *	by X16 switch bits for each distribution amplifier. There are
- *	total of 8 distribution amplifiers.
- */
-enum qca_wlan_vendor_attr_dmg_rf_sector_cfg {
-	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG_INVALID = 0,
-	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG_MODULE_INDEX = 1,
-	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG_ETYPE0 = 2,
-	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG_ETYPE1 = 3,
-	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG_ETYPE2 = 4,
-	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG_PSH_HI = 5,
-	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG_PSH_LO = 6,
-	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG_DTYPE_X16 = 7,
-
-	/* keep last */
-	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG_AFTER_LAST,
-	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG_MAX =
-	QCA_WLAN_VENDOR_ATTR_DMG_RF_SECTOR_CFG_AFTER_LAST - 1
-};
-
-enum qca_wlan_vendor_attr_ll_stats_set {
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_SET_INVALID = 0,
-	/* Unsigned 32-bit value */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_SET_CONFIG_MPDU_SIZE_THRESHOLD = 1,
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_SET_CONFIG_AGGRESSIVE_STATS_GATHERING = 2,
-	/* keep last */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_SET_AFTER_LAST,
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_SET_MAX =
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_SET_AFTER_LAST - 1,
-};
-
-enum qca_wlan_vendor_attr_ll_stats_clr {
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_CLR_INVALID = 0,
-	/* Unsigned 32bit bitmap for clearing statistics
-	 * All radio statistics                     0x00000001
-	 * cca_busy_time (within radio statistics)  0x00000002
-	 * All channel stats (within radio statistics) 0x00000004
-	 * All scan statistics (within radio statistics) 0x00000008
-	 * All interface statistics                     0x00000010
-	 * All tx rate statistics (within interface statistics) 0x00000020
-	 * All ac statistics (with in interface statistics) 0x00000040
-	 * All contention (min, max, avg) statistics (within ac statisctics)
-	 * 0x00000080.
-	 */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_CLR_CONFIG_REQ_MASK = 1,
-	/* Unsigned 8 bit value: Request to stop statistics collection */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_CLR_CONFIG_STOP_REQ = 2,
-
-	/* Unsigned 32 bit bitmap: Response from the driver
-	 * for the cleared statistics
-	 */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_CLR_CONFIG_RSP_MASK = 3,
-	/* Unsigned 8 bit value: Response from driver/firmware
-	 * for the stop request
-	 */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_CLR_CONFIG_STOP_RSP = 4,
-	/* keep last */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_CLR_AFTER_LAST,
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_CLR_MAX =
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_CLR_AFTER_LAST - 1,
-};
-
-enum qca_wlan_vendor_attr_ll_stats_get {
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_GET_INVALID = 0,
-	/* Unsigned 32 bit value provided by the caller issuing the GET stats
-	 * command. When reporting the stats results, the driver uses the same
-	 * value to indicate which GET request the results correspond to.
-	 */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_GET_CONFIG_REQ_ID = 1,
-	/* Unsigned 32 bit value - bit mask to identify what statistics are
-	 * requested for retrieval.
-	 * Radio Statistics 0x00000001
-	 * Interface Statistics 0x00000020
-	 * All Peer Statistics 0x00000040
-	 * Peer Statistics     0x00000080
-	 */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_GET_CONFIG_REQ_MASK = 2,
-	/* keep last */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_GET_AFTER_LAST,
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_GET_MAX =
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_GET_AFTER_LAST - 1,
-};
-
-enum qca_wlan_vendor_attr_ll_stats_results {
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_INVALID = 0,
-	/* Unsigned 32bit value. Used by the driver; must match the request id
-	 * provided with the QCA_NL80211_VENDOR_SUBCMD_LL_STATS_GET command.
-	 */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_RESULTS_REQ_ID = 1,
-
-	/* Unsigned 32 bit value */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_BEACON_RX = 2,
-	/* Unsigned 32 bit value */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_MGMT_RX = 3,
-	/* Unsigned 32 bit value */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_MGMT_ACTION_RX = 4,
-	/* Unsigned 32 bit value */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_MGMT_ACTION_TX = 5,
-	/* Signed 32 bit value */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_RSSI_MGMT = 6,
-	/* Signed 32 bit value */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_RSSI_DATA = 7,
-	/* Signed 32 bit value */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_RSSI_ACK = 8,
-
-	/* Attributes of type QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_INFO_* are
-	 * nested within the interface stats.
-	 */
-
-	/* Interface mode, e.g., STA, SOFTAP, IBSS, etc.
-	 * Type = enum wifi_interface_mode.
-	 */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_INFO_MODE = 9,
-	/* Interface MAC address. An array of 6 Unsigned int8 */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_INFO_MAC_ADDR = 10,
-	/* Type = enum wifi_connection_state, e.g., DISCONNECTED,
-	 * AUTHENTICATING, etc. valid for STA, CLI only.
-	 */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_INFO_STATE = 11,
-	/* Type = enum wifi_roam_state. Roaming state, e.g., IDLE or ACTIVE
-	 */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_INFO_ROAMING = 12,
-	/* Unsigned 32 bit value. WIFI_CAPABILITY_XXX */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_INFO_CAPABILITIES = 13,
-	/* NULL terminated SSID. An array of 33 Unsigned 8bit values */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_INFO_SSID = 14,
-	/* BSSID. An array of 6 unsigned 8 bit values */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_INFO_BSSID = 15,
-	/* Country string advertised by AP. An array of 3 unsigned 8 bit
-	 * values.
-	 */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_INFO_AP_COUNTRY_STR = 16,
-	/* Country string for this association. An array of 3 unsigned 8 bit
-	 * values.
-	 */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_INFO_COUNTRY_STR = 17,
-
-	/* Attributes of type QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_* could
-	 * be nested within the interface stats.
-	 */
-
-	/* Type = enum wifi_traffic_ac, e.g., V0, VI, BE and BK */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_AC = 18,
-	/* Unsigned int 32 value corresponding to respective AC */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_TX_MPDU = 19,
-	/* Unsigned int 32 value corresponding to respective AC */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_RX_MPDU = 20,
-	/* Unsigned int 32 value corresponding to respective AC */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_TX_MCAST = 21,
-	/* Unsigned int 32 value corresponding to respective AC */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_RX_MCAST = 22,
-	/* Unsigned int 32 value corresponding to respective AC */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_RX_AMPDU = 23,
-	/* Unsigned int 32 value corresponding to respective AC */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_TX_AMPDU = 24,
-	/* Unsigned int 32 value corresponding to respective AC */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_MPDU_LOST = 25,
-	/* Unsigned int 32 value corresponding to respective AC */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_RETRIES = 26,
-	/* Unsigned int 32 value corresponding to respective AC  */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_RETRIES_SHORT = 27,
-	/* Unsigned int 32 values corresponding to respective AC */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_RETRIES_LONG = 28,
-	/* Unsigned int 32 values corresponding to respective AC */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_CONTENTION_TIME_MIN = 29,
-	/* Unsigned int 32 values corresponding to respective AC */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_CONTENTION_TIME_MAX = 30,
-	/* Unsigned int 32 values corresponding to respective AC */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_CONTENTION_TIME_AVG = 31,
-	/* Unsigned int 32 values corresponding to respective AC */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_CONTENTION_NUM_SAMPLES = 32,
-	/* Unsigned 32 bit value. Number of peers */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_NUM_PEERS = 33,
-
-	/* Attributes of type QCA_WLAN_VENDOR_ATTR_LL_STATS_PEER_INFO_* are
-	 * nested within the interface stats.
-	 */
-
-	/* Type = enum wifi_peer_type. Peer type, e.g., STA, AP, P2P GO etc. */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_PEER_INFO_TYPE = 34,
-	/* MAC addr corresponding to respective peer. An array of 6 unsigned
-	 * 8 bit values.
-	 */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_PEER_INFO_MAC_ADDRESS = 35,
-	/* Unsigned int 32 bit value representing capabilities corresponding
-	 * to respective peer.
-	 */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_PEER_INFO_CAPABILITIES = 36,
-	/* Unsigned 32 bit value. Number of rates */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_PEER_INFO_NUM_RATES = 37,
-
-	/* Attributes of type QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_*
-	 * are nested within the rate stat.
-	 */
-
-	/* Wi-Fi Rate - separate attributes defined for individual fields */
-
-	/* Unsigned int 8 bit value; 0: OFDM, 1:CCK, 2:HT 3:VHT 4..7 reserved */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_PREAMBLE = 38,
-	/* Unsigned int 8 bit value; 0:1x1, 1:2x2, 3:3x3, 4:4x4 */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_NSS = 39,
-	/* Unsigned int 8 bit value; 0:20 MHz, 1:40 MHz, 2:80 MHz, 3:160 MHz */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_BW = 40,
-	/* Unsigned int 8 bit value; OFDM/CCK rate code would be as per IEEE Std
-	 * in the units of 0.5 Mbps HT/VHT it would be MCS index */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_MCS_INDEX = 41,
-
-	/* Unsigned 32 bit value. Bit rate in units of 100 kbps */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_BIT_RATE = 42,
-
-
-	/* Attributes of type QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_STAT_* could be
-	 * nested within the peer info stats.
-	 */
-
-	/* Unsigned int 32 bit value. Number of successfully transmitted data
-	 * packets, i.e., with ACK received corresponding to the respective
-	 * rate.
-	 */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_TX_MPDU = 43,
-	/* Unsigned int 32 bit value. Number of received data packets
-	 * corresponding to the respective rate.
-	 */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_RX_MPDU = 44,
-	/* Unsigned int 32 bit value. Number of data packet losses, i.e., no ACK
-	 * received corresponding to the respective rate.
-	 */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_MPDU_LOST = 45,
-	/* Unsigned int 32 bit value. Total number of data packet retries for
-	 * the respective rate.
-	 */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_RETRIES = 46,
-	/* Unsigned int 32 bit value. Total number of short data packet retries
-	 * for the respective rate.
-	 */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_RETRIES_SHORT = 47,
-	/* Unsigned int 32 bit value. Total number of long data packet retries
-	 * for the respective rate.
-	 */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_RETRIES_LONG = 48,
-
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_ID = 49,
-	/* Unsigned 32 bit value. Total number of msecs the radio is awake
-	 * accruing over time.
-	 */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_ON_TIME = 50,
-	/* Unsigned 32 bit value. Total number of msecs the radio is
-	 * transmitting accruing over time.
-	 */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_TX_TIME = 51,
-	/* Unsigned 32 bit value. Total number of msecs the radio is in active
-	 * receive accruing over time.
-	 */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_RX_TIME = 52,
-	/* Unsigned 32 bit value. Total number of msecs the radio is awake due
-	 * to all scan accruing over time.
-	 */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_ON_TIME_SCAN = 53,
-	/* Unsigned 32 bit value. Total number of msecs the radio is awake due
-	 * to NAN accruing over time.
-	 */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_ON_TIME_NBD = 54,
-	/* Unsigned 32 bit value. Total number of msecs the radio is awake due
-	 * to GSCAN accruing over time.
-	 */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_ON_TIME_GSCAN = 55,
-	/* Unsigned 32 bit value. Total number of msecs the radio is awake due
-	 * to roam scan accruing over time.
-	 */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_ON_TIME_ROAM_SCAN = 56,
-	/* Unsigned 32 bit value. Total number of msecs the radio is awake due
-	 * to PNO scan accruing over time.
-	 */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_ON_TIME_PNO_SCAN = 57,
-	/* Unsigned 32 bit value. Total number of msecs the radio is awake due
-	 * to Hotspot 2.0 scans and GAS exchange accruing over time.
-	 */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_ON_TIME_HS20 = 58,
-	/* Unsigned 32 bit value. Number of channels. */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_NUM_CHANNELS = 59,
-
-	/* Attributes of type QCA_WLAN_VENDOR_ATTR_LL_STATS_CHANNEL_INFO_* could
-	 * be nested within the channel stats.
-	 */
-
-	/* Type = enum wifi_channel_width. Channel width, e.g., 20, 40, 80 */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_CHANNEL_INFO_WIDTH = 60,
-	/* Unsigned 32 bit value. Primary 20 MHz channel. */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_CHANNEL_INFO_CENTER_FREQ = 61,
-	/* Unsigned 32 bit value. Center frequency (MHz) first segment. */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_CHANNEL_INFO_CENTER_FREQ0 = 62,
-	/* Unsigned 32 bit value. Center frequency (MHz) second segment. */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_CHANNEL_INFO_CENTER_FREQ1 = 63,
-
-	/* Attributes of type QCA_WLAN_VENDOR_ATTR_LL_STATS_CHANNEL_* could be
-	 * nested within the radio stats.
-	 */
-
-	/* Unsigned int 32 bit value representing total number of msecs the
-	 * radio is awake on that channel accruing over time, corresponding to
-	 * the respective channel.
-	 */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_CHANNEL_ON_TIME = 64,
-	/* Unsigned int 32 bit value representing total number of msecs the CCA
-	 * register is busy accruing over time corresponding to the respective
-	 * channel.
-	 */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_CHANNEL_CCA_BUSY_TIME = 65,
-
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_NUM_RADIOS = 66,
-
-	/* Signifies the nested list of channel attributes
-	 * QCA_WLAN_VENDOR_ATTR_LL_STATS_CHANNEL_INFO_*
-	 */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_CH_INFO = 67,
-
-	/* Signifies the nested list of peer info attributes
-	 * QCA_WLAN_VENDOR_ATTR_LL_STATS_PEER_INFO_*
-	 */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_PEER_INFO = 68,
-
-	/* Signifies the nested list of rate info attributes
-	 * QCA_WLAN_VENDOR_ATTR_LL_STATS_RATE_*
-	 */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_PEER_INFO_RATE_INFO = 69,
-
-	/* Signifies the nested list of wmm info attributes
-	 * QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_AC_*
-	 */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_WMM_INFO = 70,
-
-	/* Unsigned 8 bit value. Used by the driver; if set to 1, it indicates
-	 * that more stats, e.g., peers or radio, are to follow in the next
-	 * QCA_NL80211_VENDOR_SUBCMD_LL_STATS_*_RESULTS event.
-	 * Otherwise, it is set to 0.
-	 */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_RESULTS_MORE_DATA = 71,
-
-	/* Unsigned 64 bit value */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_AVERAGE_TSF_OFFSET = 72,
-
-	/* Unsigned 32 bit value */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_LEAKY_AP_DETECTED = 73,
-
-	/* Unsigned 32 bit value */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_LEAKY_AP_AVG_NUM_FRAMES_LEAKED = 74,
-
-	/* Unsigned 32 bit value */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_LEAKY_AP_GUARD_TIME = 75,
-
-	/* Unsigned 32 bit value */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_TYPE = 76,
-
-	/* Unsigned 32 bit value */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_NUM_TX_LEVELS = 77,
-
-	/* Number of msecs the radio spent in transmitting for each power level
-	 */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_RADIO_TX_TIME_PER_LEVEL = 78,
-
-	/* Unsigned 32 bit value */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_RTS_SUCC_CNT = 79,
-	/* Unsigned 32 bit value */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_RTS_FAIL_CNT = 80,
-	/* Unsigned 32 bit value */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_PPDU_SUCC_CNT = 81,
-	/* Unsigned 32 bit value */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_PPDU_FAIL_CNT = 82,
-
-	/* keep last */
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_AFTER_LAST,
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_MAX =
-	QCA_WLAN_VENDOR_ATTR_LL_STATS_AFTER_LAST - 1,
-};
-
-enum qca_wlan_vendor_attr_ll_stats_type
-{
-	QCA_NL80211_VENDOR_SUBCMD_LL_STATS_TYPE_INVALID = 0,
-	QCA_NL80211_VENDOR_SUBCMD_LL_STATS_TYPE_RADIO = 1,
-	QCA_NL80211_VENDOR_SUBCMD_LL_STATS_TYPE_IFACE = 2,
-	QCA_NL80211_VENDOR_SUBCMD_LL_STATS_TYPE_PEERS = 3,
-
-	/* keep last */
-	QCA_NL80211_VENDOR_SUBCMD_LL_STATS_TYPE_AFTER_LAST,
-	QCA_NL80211_VENDOR_SUBCMD_LL_STATS_TYPE_MAX =
-	QCA_NL80211_VENDOR_SUBCMD_LL_STATS_TYPE_AFTER_LAST - 1,
-};
-
-/**
- * enum qca_wlan_vendor_attr_tdls_configuration - Attributes for
- * TDLS configuration to the host driver.
- *
- * @QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_TRIGGER_MODE: Configure the TDLS trigger
- *	mode in the host driver. enum qca_wlan_vendor_tdls_trigger_mode
- *	represents the different TDLS trigger modes.
- * @QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_TX_STATS_PERIOD: Duration (u32) within
- *      which QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_TX_THRESHOLD number
- *      of packets shall meet the criteria for implicit TDLS setup.
- * @QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_TX_THRESHOLD: Number (u32) of Tx/Rx packets
- *      within a duration QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_TX_STATS_PERIOD
- *      to initiate a TDLS setup.
- * @QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_DISCOVERY_PERIOD: Time (u32) to initiate
- *      a TDLS Discovery to the peer.
- * @QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_MAX_DISCOVERY_ATTEMPT: Max number (u32) of
- *      discovery attempts to know the TDLS capability of the peer. A peer is
- *      marked as TDLS not capable if there is no response for all the attempts.
- * @QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_IDLE_TIMEOUT: Represents a duration (u32)
- *      within which QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_IDLE_PACKET_THRESHOLD
- *      number of TX / RX frames meet the criteria for TDLS teardown.
- * @QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_IDLE_PACKET_THRESHOLD: Minimum number (u32)
- *      of Tx/Rx packets within a duration
- *      QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_IDLE_TIMEOUT to tear down a TDLS link.
- * @QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_SETUP_RSSI_THRESHOLD: Threshold
- *	corresponding to the RSSI of the peer below which a TDLS setup is
- *	triggered.
- * @QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_TEARDOWN_RSSI_THRESHOLD: Threshold
- *	corresponding to the RSSI of the peer above which a TDLS teardown is
- *	triggered.
- */
-enum qca_wlan_vendor_attr_tdls_configuration {
-	QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_INVALID = 0,
-	QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_TRIGGER_MODE = 1,
-
-	/* Attributes configuring the TDLS Implicit Trigger */
-	QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_TX_STATS_PERIOD = 2,
-	QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_TX_THRESHOLD = 3,
-	QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_DISCOVERY_PERIOD = 4,
-	QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_MAX_DISCOVERY_ATTEMPT = 5,
-	QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_IDLE_TIMEOUT = 6,
-	QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_IDLE_PACKET_THRESHOLD = 7,
-	QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_SETUP_RSSI_THRESHOLD = 8,
-	QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_TEARDOWN_RSSI_THRESHOLD = 9,
-
-	/* keep last */
-	QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_AFTER_LAST,
-	QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_MAX =
-	QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_AFTER_LAST - 1
-};
-
-/**
- * enum qca_wlan_vendor_tdls_trigger_mode: Represents the TDLS trigger mode in
- *	the driver
- *
- * The following are the different values for
- *	QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_TRIGGER_MODE.
- *
- * @QCA_WLAN_VENDOR_TDLS_TRIGGER_MODE_EXPLICIT: The trigger to initiate/teardown
- *	the TDLS connection to a respective peer comes from the user space.
- *	wpa_supplicant provides the commands TDLS_SETUP, TDLS_TEARDOWN,
- *	TDLS_DISCOVER to do this.
- * @QCA_WLAN_VENDOR_TDLS_TRIGGER_MODE_IMPLICIT: Host driver triggers this TDLS
- *	setup/teardown to the eligible peer once the configured criteria
- *	(such as TX/RX threshold, RSSI) is met. The attributes
- *	in QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_IMPLICIT_PARAMS correspond to
- *	the different configuration criteria for the TDLS trigger from the
- *	host driver.
- * @QCA_WLAN_VENDOR_TDLS_TRIGGER_MODE_EXTERNAL: Enables the driver to trigger
- *	the TDLS setup / teardown through the implicit mode only to the
- *	configured MAC addresses (wpa_supplicant, with tdls_external_control=1,
- *	configures the MAC address through TDLS_SETUP / TDLS_TEARDOWN commands).
- *	External mode works on top of the implicit mode. Thus the host driver
- *	is expected to configure in TDLS Implicit mode too to operate in
- *	External mode.
- *	Configuring External mode alone without	Implicit mode is invalid.
- *
- * All the above implementations work as expected only when the host driver
- * advertises the capability WPA_DRIVER_FLAGS_TDLS_EXTERNAL_SETUP - representing
- * that the TDLS message exchange is not internal to the host driver, but
- * depends on wpa_supplicant to do the message exchange.
- */
-enum qca_wlan_vendor_tdls_trigger_mode {
-	QCA_WLAN_VENDOR_TDLS_TRIGGER_MODE_EXPLICIT = 1 << 0,
-	QCA_WLAN_VENDOR_TDLS_TRIGGER_MODE_IMPLICIT = 1 << 1,
-	QCA_WLAN_VENDOR_TDLS_TRIGGER_MODE_EXTERNAL = 1 << 2,
-};
-
 #endif /* QCA_VENDOR_H */
diff --git a/src/common/version.h b/src/common/version.h
index 16c1004..ae5c9d4 100644
--- a/src/common/version.h
+++ b/src/common/version.h
@@ -9,6 +9,6 @@
 #define GIT_VERSION_STR_POSTFIX ""
 #endif /* GIT_VERSION_STR_POSTFIX */
 
-#define VERSION_STR "2.7-devel" VERSION_STR_POSTFIX GIT_VERSION_STR_POSTFIX
+#define VERSION_STR "2.6-devel" VERSION_STR_POSTFIX GIT_VERSION_STR_POSTFIX
 
 #endif /* VERSION_H */
diff --git a/src/common/wpa_common.c b/src/common/wpa_common.c
index a87210e..299b8bb 100644
--- a/src/common/wpa_common.c
+++ b/src/common/wpa_common.c
@@ -9,7 +9,6 @@
 #include "includes.h"
 
 #include "common.h"
-#include "utils/crc32.h"
 #include "crypto/md5.h"
 #include "crypto/sha1.h"
 #include "crypto/sha256.h"
@@ -23,49 +22,25 @@
 
 static unsigned int wpa_kck_len(int akmp)
 {
-	switch (akmp) {
-	case WPA_KEY_MGMT_IEEE8021X_SUITE_B_192:
+	if (akmp == WPA_KEY_MGMT_IEEE8021X_SUITE_B_192)
 		return 24;
-	case WPA_KEY_MGMT_FILS_SHA256:
-	case WPA_KEY_MGMT_FT_FILS_SHA256:
-	case WPA_KEY_MGMT_FILS_SHA384:
-	case WPA_KEY_MGMT_FT_FILS_SHA384:
-		return 0;
-	default:
-		return 16;
-	}
+	return 16;
 }
 
 
 static unsigned int wpa_kek_len(int akmp)
 {
-	switch (akmp) {
-	case WPA_KEY_MGMT_FILS_SHA384:
-	case WPA_KEY_MGMT_FT_FILS_SHA384:
-		return 64;
-	case WPA_KEY_MGMT_IEEE8021X_SUITE_B_192:
-	case WPA_KEY_MGMT_FILS_SHA256:
-	case WPA_KEY_MGMT_FT_FILS_SHA256:
+	if (akmp == WPA_KEY_MGMT_IEEE8021X_SUITE_B_192)
 		return 32;
-	default:
-		return 16;
-	}
+	return 16;
 }
 
 
 unsigned int wpa_mic_len(int akmp)
 {
-	switch (akmp) {
-	case WPA_KEY_MGMT_IEEE8021X_SUITE_B_192:
+	if (akmp == WPA_KEY_MGMT_IEEE8021X_SUITE_B_192)
 		return 24;
-	case WPA_KEY_MGMT_FILS_SHA256:
-	case WPA_KEY_MGMT_FILS_SHA384:
-	case WPA_KEY_MGMT_FT_FILS_SHA256:
-	case WPA_KEY_MGMT_FT_FILS_SHA384:
-		return 0;
-	default:
-		return 16;
-	}
+	return 16;
 }
 
 
@@ -229,155 +204,6 @@
 	return 0;
 }
 
-#ifdef CONFIG_FILS
-
-int fils_pmk_to_ptk(const u8 *pmk, size_t pmk_len, const u8 *spa, const u8 *aa,
-		    const u8 *snonce, const u8 *anonce, struct wpa_ptk *ptk,
-		    u8 *ick, size_t *ick_len, int akmp, int cipher)
-{
-	u8 data[2 * ETH_ALEN + 2 * FILS_NONCE_LEN];
-	u8 tmp[FILS_ICK_MAX_LEN + WPA_KEK_MAX_LEN + WPA_TK_MAX_LEN];
-	size_t key_data_len;
-	const char *label = "FILS PTK Derivation";
-
-	/*
-	 * FILS-Key-Data = PRF-X(PMK, "FILS PTK Derivation",
-	 *                       SPA || AA || SNonce || ANonce)
-	 * ICK = L(FILS-Key-Data, 0, ICK_bits)
-	 * KEK = L(FILS-Key-Data, ICK_bits, KEK_bits)
-	 * TK = L(FILS-Key-Data, ICK_bits + KEK_bits, TK_bits)
-	 * If doing FT initial mobility domain association:
-	 * FILS-FT = L(FILS-Key-Data, ICK_bits + KEK_bits + TK_bits,
-	 *             FILS-FT_bits)
-	 */
-	os_memcpy(data, spa, ETH_ALEN);
-	os_memcpy(data + ETH_ALEN, aa, ETH_ALEN);
-	os_memcpy(data + 2 * ETH_ALEN, snonce, FILS_NONCE_LEN);
-	os_memcpy(data + 2 * ETH_ALEN + FILS_NONCE_LEN, anonce, FILS_NONCE_LEN);
-
-	ptk->kck_len = 0;
-	ptk->kek_len = wpa_kek_len(akmp);
-	ptk->tk_len = wpa_cipher_key_len(cipher);
-	if (wpa_key_mgmt_sha384(akmp))
-		*ick_len = 48;
-	else if (wpa_key_mgmt_sha256(akmp))
-		*ick_len = 32;
-	else
-		return -1;
-	key_data_len = *ick_len + ptk->kek_len + ptk->tk_len;
-
-	if (wpa_key_mgmt_sha384(akmp))
-		sha384_prf(pmk, pmk_len, label, data, sizeof(data),
-			   tmp, key_data_len);
-	else if (sha256_prf(pmk, pmk_len, label, data, sizeof(data),
-			    tmp, key_data_len) < 0)
-		return -1;
-
-	wpa_printf(MSG_DEBUG, "FILS: PTK derivation - SPA=" MACSTR
-		   " AA=" MACSTR, MAC2STR(spa), MAC2STR(aa));
-	wpa_hexdump(MSG_DEBUG, "FILS: SNonce", snonce, FILS_NONCE_LEN);
-	wpa_hexdump(MSG_DEBUG, "FILS: ANonce", anonce, FILS_NONCE_LEN);
-	wpa_hexdump_key(MSG_DEBUG, "FILS: PMK", pmk, pmk_len);
-	wpa_hexdump_key(MSG_DEBUG, "FILS: FILS-Key-Data", tmp, key_data_len);
-
-	os_memcpy(ick, tmp, *ick_len);
-	wpa_hexdump_key(MSG_DEBUG, "FILS: ICK", ick, *ick_len);
-
-	os_memcpy(ptk->kek, tmp + *ick_len, ptk->kek_len);
-	wpa_hexdump_key(MSG_DEBUG, "FILS: KEK", ptk->kek, ptk->kek_len);
-
-	os_memcpy(ptk->tk, tmp + *ick_len + ptk->kek_len, ptk->tk_len);
-	wpa_hexdump_key(MSG_DEBUG, "FILS: TK", ptk->tk, ptk->tk_len);
-
-	/* TODO: FILS-FT */
-
-	os_memset(tmp, 0, sizeof(tmp));
-	return 0;
-}
-
-
-int fils_key_auth_sk(const u8 *ick, size_t ick_len, const u8 *snonce,
-		     const u8 *anonce, const u8 *sta_addr, const u8 *bssid,
-		     const u8 *g_sta, size_t g_sta_len,
-		     const u8 *g_ap, size_t g_ap_len,
-		     int akmp, u8 *key_auth_sta, u8 *key_auth_ap,
-		     size_t *key_auth_len)
-{
-	const u8 *addr[6];
-	size_t len[6];
-	size_t num_elem = 4;
-	int res;
-
-	/*
-	 * For (Re)Association Request frame (STA->AP):
-	 * Key-Auth = HMAC-Hash(ICK, SNonce || ANonce || STA-MAC || AP-BSSID
-	 *                      [ || gSTA || gAP ])
-	 */
-	addr[0] = snonce;
-	len[0] = FILS_NONCE_LEN;
-	addr[1] = anonce;
-	len[1] = FILS_NONCE_LEN;
-	addr[2] = sta_addr;
-	len[2] = ETH_ALEN;
-	addr[3] = bssid;
-	len[3] = ETH_ALEN;
-	if (g_sta && g_ap_len && g_ap && g_ap_len) {
-		addr[4] = g_sta;
-		len[4] = g_sta_len;
-		addr[5] = g_ap;
-		len[5] = g_ap_len;
-		num_elem = 6;
-	}
-
-	if (wpa_key_mgmt_sha384(akmp)) {
-		*key_auth_len = 48;
-		res = hmac_sha384_vector(ick, ick_len, num_elem, addr, len,
-					 key_auth_sta);
-	} else if (wpa_key_mgmt_sha256(akmp)) {
-		*key_auth_len = 32;
-		res = hmac_sha256_vector(ick, ick_len, num_elem, addr, len,
-					 key_auth_sta);
-	} else {
-		return -1;
-	}
-	if (res < 0)
-		return res;
-
-	/*
-	 * For (Re)Association Response frame (AP->STA):
-	 * Key-Auth = HMAC-Hash(ICK, ANonce || SNonce || AP-BSSID || STA-MAC
-	 *                      [ || gAP || gSTA ])
-	 */
-	addr[0] = anonce;
-	addr[1] = snonce;
-	addr[2] = bssid;
-	addr[3] = sta_addr;
-	if (g_sta && g_ap_len && g_ap && g_ap_len) {
-		addr[4] = g_ap;
-		len[4] = g_ap_len;
-		addr[5] = g_sta;
-		len[5] = g_sta_len;
-	}
-
-	if (wpa_key_mgmt_sha384(akmp))
-		res = hmac_sha384_vector(ick, ick_len, num_elem, addr, len,
-					 key_auth_ap);
-	else if (wpa_key_mgmt_sha256(akmp))
-		res = hmac_sha256_vector(ick, ick_len, num_elem, addr, len,
-					 key_auth_ap);
-	if (res < 0)
-		return res;
-
-	wpa_hexdump(MSG_DEBUG, "FILS: Key-Auth (STA)",
-		    key_auth_sta, *key_auth_len);
-	wpa_hexdump(MSG_DEBUG, "FILS: Key-Auth (AP)",
-		    key_auth_ap, *key_auth_len);
-
-	return 0;
-}
-
-#endif /* CONFIG_FILS */
-
 
 #ifdef CONFIG_IEEE80211R
 int wpa_ft_mic(const u8 *kck, size_t kck_len, const u8 *sta_addr,
@@ -550,8 +376,6 @@
 			}
 			if (data.num_pmkid == 1 && data.pmkid)
 				parse->rsn_pmkid = data.pmkid;
-			parse->key_mgmt = data.key_mgmt;
-			parse->pairwise_cipher = data.pairwise_cipher;
 			break;
 		case WLAN_EID_MOBILITY_DOMAIN:
 			if (len < sizeof(struct rsn_mdie))
@@ -686,14 +510,6 @@
 		return WPA_KEY_MGMT_IEEE8021X_SUITE_B;
 	if (RSN_SELECTOR_GET(s) == RSN_AUTH_KEY_MGMT_802_1X_SUITE_B_192)
 		return WPA_KEY_MGMT_IEEE8021X_SUITE_B_192;
-	if (RSN_SELECTOR_GET(s) == RSN_AUTH_KEY_MGMT_FILS_SHA256)
-		return WPA_KEY_MGMT_FILS_SHA256;
-	if (RSN_SELECTOR_GET(s) == RSN_AUTH_KEY_MGMT_FILS_SHA384)
-		return WPA_KEY_MGMT_FILS_SHA384;
-	if (RSN_SELECTOR_GET(s) == RSN_AUTH_KEY_MGMT_FT_FILS_SHA256)
-		return WPA_KEY_MGMT_FT_FILS_SHA256;
-	if (RSN_SELECTOR_GET(s) == RSN_AUTH_KEY_MGMT_FT_FILS_SHA384)
-		return WPA_KEY_MGMT_FT_FILS_SHA384;
 	if (RSN_SELECTOR_GET(s) == RSN_AUTH_KEY_MGMT_OSEN)
 		return WPA_KEY_MGMT_OSEN;
 	return 0;
@@ -1396,14 +1212,6 @@
 		return "WPA2-EAP-SUITE-B";
 	case WPA_KEY_MGMT_IEEE8021X_SUITE_B_192:
 		return "WPA2-EAP-SUITE-B-192";
-	case WPA_KEY_MGMT_FILS_SHA256:
-		return "FILS-SHA256";
-	case WPA_KEY_MGMT_FILS_SHA384:
-		return "FILS-SHA384";
-	case WPA_KEY_MGMT_FT_FILS_SHA256:
-		return "FT-FILS-SHA256";
-	case WPA_KEY_MGMT_FT_FILS_SHA384:
-		return "FT-FILS-SHA384";
 	default:
 		return "UNKNOWN";
 	}
@@ -1434,14 +1242,6 @@
 		return WLAN_AKM_SUITE_8021X_SUITE_B;
 	if (akm & WPA_KEY_MGMT_IEEE8021X_SUITE_B_192)
 		return WLAN_AKM_SUITE_8021X_SUITE_B_192;
-	if (akm & WPA_KEY_MGMT_FILS_SHA256)
-		return WLAN_AKM_SUITE_FILS_SHA256;
-	if (akm & WPA_KEY_MGMT_FILS_SHA384)
-		return WLAN_AKM_SUITE_FILS_SHA384;
-	if (akm & WPA_KEY_MGMT_FT_FILS_SHA256)
-		return WLAN_AKM_SUITE_FT_FILS_SHA256;
-	if (akm & WPA_KEY_MGMT_FT_FILS_SHA384)
-		return WLAN_AKM_SUITE_FT_FILS_SHA384;
 	return 0;
 }
 
@@ -1483,7 +1283,7 @@
 }
 
 
-#if defined(CONFIG_IEEE80211R) || defined(CONFIG_FILS)
+#ifdef CONFIG_IEEE80211R
 int wpa_insert_pmkid(u8 *ies, size_t *ies_len, const u8 *pmkid)
 {
 	u8 *start, *end, *rpos, *rend;
@@ -1582,7 +1382,7 @@
 
 	return 0;
 }
-#endif /* CONFIG_IEEE80211R || CONFIG_FILS */
+#endif /* CONFIG_IEEE80211R */
 
 
 int wpa_cipher_key_len(int cipher)
@@ -1905,25 +1705,3 @@
 		return WPA_CIPHER_CCMP_256;
 	return WPA_CIPHER_CCMP;
 }
-
-
-#ifdef CONFIG_FILS
-u16 fils_domain_name_hash(const char *domain)
-{
-	char buf[255], *wpos = buf;
-	const char *pos = domain;
-	size_t len;
-	u32 crc;
-
-	for (len = 0; len < sizeof(buf) && *pos; len++) {
-		if (isalpha(*pos) && isupper(*pos))
-			*wpos++ = tolower(*pos);
-		else
-			*wpos++ = *pos;
-		pos++;
-	}
-
-	crc = crc32((const u8 *) buf, len);
-	return crc & 0xffff;
-}
-#endif /* CONFIG_FILS */
diff --git a/src/common/wpa_common.h b/src/common/wpa_common.h
index 6d28417..af1d0f0 100644
--- a/src/common/wpa_common.h
+++ b/src/common/wpa_common.h
@@ -61,10 +61,6 @@
 #define RSN_AUTH_KEY_MGMT_802_1X_SUITE_B_192 RSN_SELECTOR(0x00, 0x0f, 0xac, 12)
 #define RSN_AUTH_KEY_MGMT_FT_802_1X_SUITE_B_192 \
 RSN_SELECTOR(0x00, 0x0f, 0xac, 13)
-#define RSN_AUTH_KEY_MGMT_FILS_SHA256 RSN_SELECTOR(0x00, 0x0f, 0xac, 14)
-#define RSN_AUTH_KEY_MGMT_FILS_SHA384 RSN_SELECTOR(0x00, 0x0f, 0xac, 15)
-#define RSN_AUTH_KEY_MGMT_FT_FILS_SHA256 RSN_SELECTOR(0x00, 0x0f, 0xac, 16)
-#define RSN_AUTH_KEY_MGMT_FT_FILS_SHA384 RSN_SELECTOR(0x00, 0x0f, 0xac, 17)
 #define RSN_AUTH_KEY_MGMT_CCKM RSN_SELECTOR(0x00, 0x40, 0x96, 0x00)
 #define RSN_AUTH_KEY_MGMT_OSEN RSN_SELECTOR(0x50, 0x6f, 0x9a, 0x01)
 
@@ -183,16 +179,30 @@
 	u8 key_iv[16];
 	u8 key_rsc[WPA_KEY_RSC_LEN];
 	u8 key_id[8]; /* Reserved in IEEE 802.11i/RSN */
-	/* variable length Key MIC field */
-	/* big endian 2-octet Key Data Length field */
-	/* followed by Key Data Length bytes of Key Data */
+	u8 key_mic[16];
+	u8 key_data_length[2]; /* big endian */
+	/* followed by key_data_length bytes of key_data */
+} STRUCT_PACKED;
+
+struct wpa_eapol_key_192 {
+	u8 type;
+	/* Note: key_info, key_length, and key_data_length are unaligned */
+	u8 key_info[2]; /* big endian */
+	u8 key_length[2]; /* big endian */
+	u8 replay_counter[WPA_REPLAY_COUNTER_LEN];
+	u8 key_nonce[WPA_NONCE_LEN];
+	u8 key_iv[16];
+	u8 key_rsc[WPA_KEY_RSC_LEN];
+	u8 key_id[8]; /* Reserved in IEEE 802.11i/RSN */
+	u8 key_mic[24];
+	u8 key_data_length[2]; /* big endian */
+	/* followed by key_data_length bytes of key_data */
 } STRUCT_PACKED;
 
 #define WPA_EAPOL_KEY_MIC_MAX_LEN 24
 #define WPA_KCK_MAX_LEN 24
-#define WPA_KEK_MAX_LEN 64
+#define WPA_KEK_MAX_LEN 32
 #define WPA_TK_MAX_LEN 32
-#define FILS_ICK_MAX_LEN 48
 
 /**
  * struct wpa_ptk - WPA Pairwise Transient Key
@@ -330,15 +340,6 @@
 		   const u8 *addr1, const u8 *addr2,
 		   const u8 *nonce1, const u8 *nonce2,
 		   struct wpa_ptk *ptk, int akmp, int cipher);
-int fils_pmk_to_ptk(const u8 *pmk, size_t pmk_len, const u8 *spa, const u8 *aa,
-		    const u8 *snonce, const u8 *anonce, struct wpa_ptk *ptk,
-		    u8 *ick, size_t *ick_len, int akmp, int cipher);
-int fils_key_auth_sk(const u8 *ick, size_t ick_len, const u8 *snonce,
-		     const u8 *anonce, const u8 *sta_addr, const u8 *bssid,
-		     const u8 *g_sta, size_t g_sta_len,
-		     const u8 *g_ap, size_t g_ap_len,
-		     int akmp, u8 *key_auth_sta, u8 *key_auth_ap,
-		     size_t *key_auth_len);
 
 #ifdef CONFIG_IEEE80211R
 int wpa_ft_mic(const u8 *kck, size_t kck_len, const u8 *sta_addr,
@@ -429,8 +430,6 @@
 	size_t igtk_len;
 	const u8 *ric;
 	size_t ric_len;
-	int key_mgmt;
-	int pairwise_cipher;
 };
 
 int wpa_ft_parse_ies(const u8 *ies, size_t ies_len, struct wpa_ft_ies *parse);
@@ -450,6 +449,5 @@
 int wpa_write_ciphers(char *start, char *end, int ciphers, const char *delim);
 int wpa_select_ap_group_cipher(int wpa, int wpa_pairwise, int rsn_pairwise);
 unsigned int wpa_mic_len(int akmp);
-u16 fils_domain_name_hash(const char *domain);
 
 #endif /* WPA_COMMON_H */
