Revert "Cumulative patch from commit a9491695b30a7f750dc45cb563d813b03f1d4b8d"

This reverts commit bbcc4391bed89e8cd0dd235760cd2983f65721cf.

Bug: 34869019
Test: Load image and start soft AP

Change-Id: I85f39c134c1321d6a78f9f25a34f71ad7b1173fb
diff --git a/src/drivers/driver.h b/src/drivers/driver.h
index 92688a3..291d4d6 100644
--- a/src/drivers/driver.h
+++ b/src/drivers/driver.h
@@ -1,6 +1,6 @@
 /*
  * Driver interface definition
- * Copyright (c) 2003-2017, Jouni Malinen <j@w1.fi>
+ * Copyright (c) 2003-2015, Jouni Malinen <j@w1.fi>
  *
  * This software may be distributed under the terms of the BSD license.
  * See README for more details.
@@ -4228,15 +4228,6 @@
 	 * EVENT_P2P_LO_STOP - Notify that P2P listen offload is stopped
 	 */
 	EVENT_P2P_LO_STOP,
-
-	/**
-	 * EVENT_BEACON_LOSS - Beacon loss detected
-	 *
-	 * This event indicates that no Beacon frames has been received from
-	 * the current AP. This may indicate that the AP is not anymore in
-	 * range.
-	 */
-	EVENT_BEACON_LOSS,
 };
 
 
@@ -4826,12 +4817,9 @@
 	/**
 	 * struct low_ack - Data for EVENT_STATION_LOW_ACK events
 	 * @addr: station address
-	 * @num_packets: Number of packets lost (consecutive packets not
-	 * acknowledged)
 	 */
 	struct low_ack {
 		u8 addr[ETH_ALEN];
-		u32 num_packets;
 	} low_ack;
 
 	/**
diff --git a/src/drivers/driver_common.c b/src/drivers/driver_common.c
index b6bcbca..c7107ba 100644
--- a/src/drivers/driver_common.c
+++ b/src/drivers/driver_common.c
@@ -1,6 +1,6 @@
 /*
  * Common driver-related functions
- * Copyright (c) 2003-2017, Jouni Malinen <j@w1.fi>
+ * Copyright (c) 2003-2011, Jouni Malinen <j@w1.fi>
  *
  * This software may be distributed under the terms of the BSD license.
  * See README for more details.
@@ -81,7 +81,6 @@
 	E2S(ACS_CHANNEL_SELECTED);
 	E2S(DFS_CAC_STARTED);
 	E2S(P2P_LO_STOP);
-	E2S(BEACON_LOSS);
 	}
 
 	return "UNKNOWN";
diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
index 1fb113f..5f0a277 100644
--- a/src/drivers/driver_nl80211.c
+++ b/src/drivers/driver_nl80211.c
@@ -29,7 +29,6 @@
 #include "common/qca-vendor-attr.h"
 #include "common/ieee802_11_defs.h"
 #include "common/ieee802_11_common.h"
-#include "common/wpa_common.h"
 #include "l2_packet/l2_packet.h"
 #include "netlink.h"
 #include "linux_defines.h"
@@ -676,7 +675,6 @@
 	struct nl80211_wiphy_data *w;
 	int wiphy_idx, found = 0;
 	struct i802_bss *tmp_bss;
-	u8 channel;
 
 	if (bss->wiphy_data != NULL)
 		return bss->wiphy_data;
@@ -696,35 +694,29 @@
 	dl_list_init(&w->bsss);
 	dl_list_init(&w->drvs);
 
-	/* Beacon frames not supported in IEEE 802.11ad */
-	if (ieee80211_freq_to_chan(bss->freq, &channel) !=
-	    HOSTAPD_MODE_IEEE80211AD) {
-		w->nl_cb = nl_cb_alloc(NL_CB_DEFAULT);
-		if (!w->nl_cb) {
-			os_free(w);
-			return NULL;
-		}
-		nl_cb_set(w->nl_cb, NL_CB_SEQ_CHECK, NL_CB_CUSTOM,
-			  no_seq_check, NULL);
-		nl_cb_set(w->nl_cb, NL_CB_VALID, NL_CB_CUSTOM,
-			  process_beacon_event, w);
-
-		w->nl_beacons = nl_create_handle(bss->drv->global->nl_cb,
-						 "wiphy beacons");
-		if (w->nl_beacons == NULL) {
-			os_free(w);
-			return NULL;
-		}
-
-		if (nl80211_register_beacons(bss->drv, w)) {
-			nl_destroy_handles(&w->nl_beacons);
-			os_free(w);
-			return NULL;
-		}
-
-		nl80211_register_eloop_read(&w->nl_beacons,
-					    nl80211_recv_beacons, w);
+	w->nl_cb = nl_cb_alloc(NL_CB_DEFAULT);
+	if (!w->nl_cb) {
+		os_free(w);
+		return NULL;
 	}
+	nl_cb_set(w->nl_cb, NL_CB_SEQ_CHECK, NL_CB_CUSTOM, no_seq_check, NULL);
+	nl_cb_set(w->nl_cb, NL_CB_VALID, NL_CB_CUSTOM, process_beacon_event,
+		  w);
+
+	w->nl_beacons = nl_create_handle(bss->drv->global->nl_cb,
+					 "wiphy beacons");
+	if (w->nl_beacons == NULL) {
+		os_free(w);
+		return NULL;
+	}
+
+	if (nl80211_register_beacons(bss->drv, w)) {
+		nl_destroy_handles(&w->nl_beacons);
+		os_free(w);
+		return NULL;
+	}
+
+	nl80211_register_eloop_read(&w->nl_beacons, nl80211_recv_beacons, w);
 
 	dl_list_add(&nl80211_wiphys, &w->list);
 
@@ -771,8 +763,7 @@
 	if (!dl_list_empty(&w->bsss))
 		return;
 
-	if (w->nl_beacons)
-		nl80211_destroy_eloop_handle(&w->nl_beacons);
+	nl80211_destroy_eloop_handle(&w->nl_beacons);
 
 	nl_cb_put(w->nl_cb);
 	dl_list_del(&w->list);
@@ -2173,9 +2164,6 @@
 	/* RRM Measurement Report */
 	if (nl80211_register_action_frame(bss, (u8 *) "\x05\x01", 2) < 0)
 		ret = -1;
-	/* RRM Link Measurement Report */
-	if (nl80211_register_action_frame(bss, (u8 *) "\x05\x03", 2) < 0)
-		ret = -1;
 	/* RRM Neighbor Report Request */
 	if (nl80211_register_action_frame(bss, (u8 *) "\x05\x04", 2) < 0)
 		ret = -1;
@@ -2247,6 +2235,9 @@
 	if (nl80211_register_spurious_class3(bss))
 		goto out_err;
 
+	if (nl80211_get_wiphy_data_ap(bss) == NULL)
+		goto out_err;
+
 	nl80211_mgmt_handle_register_eloop(bss);
 	return 0;
 
@@ -2501,14 +2492,12 @@
 }
 
 
-static int wpa_driver_nl80211_del_beacon(struct i802_bss *bss)
+static int wpa_driver_nl80211_del_beacon(struct wpa_driver_nl80211_data *drv)
 {
 	struct nl_msg *msg;
-	struct wpa_driver_nl80211_data *drv = bss->drv;
 
 	wpa_printf(MSG_DEBUG, "nl80211: Remove beacon (ifindex=%d)",
 		   drv->ifindex);
-	nl80211_put_wiphy_data_ap(bss);
 	msg = nl80211_drv_msg(drv, 0, NL80211_CMD_DEL_BEACON);
 	return send_and_recv_msgs(drv, msg, NULL, NULL);
 }
@@ -2561,7 +2550,7 @@
 	nl80211_remove_monitor_interface(drv);
 
 	if (is_ap_interface(drv->nlmode))
-		wpa_driver_nl80211_del_beacon(bss);
+		wpa_driver_nl80211_del_beacon(drv);
 
 	if (drv->eapol_sock >= 0) {
 		eloop_unregister_read_sock(drv->eapol_sock);
@@ -2635,30 +2624,30 @@
 	switch (alg) {
 	case WPA_ALG_WEP:
 		if (key_len == 5)
-			return RSN_CIPHER_SUITE_WEP40;
-		return RSN_CIPHER_SUITE_WEP104;
+			return WLAN_CIPHER_SUITE_WEP40;
+		return WLAN_CIPHER_SUITE_WEP104;
 	case WPA_ALG_TKIP:
-		return RSN_CIPHER_SUITE_TKIP;
+		return WLAN_CIPHER_SUITE_TKIP;
 	case WPA_ALG_CCMP:
-		return RSN_CIPHER_SUITE_CCMP;
+		return WLAN_CIPHER_SUITE_CCMP;
 	case WPA_ALG_GCMP:
-		return RSN_CIPHER_SUITE_GCMP;
+		return WLAN_CIPHER_SUITE_GCMP;
 	case WPA_ALG_CCMP_256:
-		return RSN_CIPHER_SUITE_CCMP_256;
+		return WLAN_CIPHER_SUITE_CCMP_256;
 	case WPA_ALG_GCMP_256:
-		return RSN_CIPHER_SUITE_GCMP_256;
+		return WLAN_CIPHER_SUITE_GCMP_256;
 	case WPA_ALG_IGTK:
-		return RSN_CIPHER_SUITE_AES_128_CMAC;
+		return WLAN_CIPHER_SUITE_AES_CMAC;
 	case WPA_ALG_BIP_GMAC_128:
-		return RSN_CIPHER_SUITE_BIP_GMAC_128;
+		return WLAN_CIPHER_SUITE_BIP_GMAC_128;
 	case WPA_ALG_BIP_GMAC_256:
-		return RSN_CIPHER_SUITE_BIP_GMAC_256;
+		return WLAN_CIPHER_SUITE_BIP_GMAC_256;
 	case WPA_ALG_BIP_CMAC_256:
-		return RSN_CIPHER_SUITE_BIP_CMAC_256;
+		return WLAN_CIPHER_SUITE_BIP_CMAC_256;
 	case WPA_ALG_SMS4:
-		return RSN_CIPHER_SUITE_SMS4;
+		return WLAN_CIPHER_SUITE_SMS4;
 	case WPA_ALG_KRK:
-		return RSN_CIPHER_SUITE_KRK;
+		return WLAN_CIPHER_SUITE_KRK;
 	case WPA_ALG_NONE:
 	case WPA_ALG_PMK:
 		wpa_printf(MSG_ERROR, "nl80211: Unexpected encryption algorithm %d",
@@ -2676,21 +2665,21 @@
 {
 	switch (cipher) {
 	case WPA_CIPHER_CCMP_256:
-		return RSN_CIPHER_SUITE_CCMP_256;
+		return WLAN_CIPHER_SUITE_CCMP_256;
 	case WPA_CIPHER_GCMP_256:
-		return RSN_CIPHER_SUITE_GCMP_256;
+		return WLAN_CIPHER_SUITE_GCMP_256;
 	case WPA_CIPHER_CCMP:
-		return RSN_CIPHER_SUITE_CCMP;
+		return WLAN_CIPHER_SUITE_CCMP;
 	case WPA_CIPHER_GCMP:
-		return RSN_CIPHER_SUITE_GCMP;
+		return WLAN_CIPHER_SUITE_GCMP;
 	case WPA_CIPHER_TKIP:
-		return RSN_CIPHER_SUITE_TKIP;
+		return WLAN_CIPHER_SUITE_TKIP;
 	case WPA_CIPHER_WEP104:
-		return RSN_CIPHER_SUITE_WEP104;
+		return WLAN_CIPHER_SUITE_WEP104;
 	case WPA_CIPHER_WEP40:
-		return RSN_CIPHER_SUITE_WEP40;
+		return WLAN_CIPHER_SUITE_WEP40;
 	case WPA_CIPHER_GTK_NOT_USED:
-		return RSN_CIPHER_SUITE_NO_GROUP_ADDRESSED;
+		return WLAN_CIPHER_SUITE_NO_GROUP_ADDR;
 	}
 
 	return 0;
@@ -2703,19 +2692,19 @@
 	int num_suites = 0;
 
 	if (num_suites < max_suites && ciphers & WPA_CIPHER_CCMP_256)
-		suites[num_suites++] = RSN_CIPHER_SUITE_CCMP_256;
+		suites[num_suites++] = WLAN_CIPHER_SUITE_CCMP_256;
 	if (num_suites < max_suites && ciphers & WPA_CIPHER_GCMP_256)
-		suites[num_suites++] = RSN_CIPHER_SUITE_GCMP_256;
+		suites[num_suites++] = WLAN_CIPHER_SUITE_GCMP_256;
 	if (num_suites < max_suites && ciphers & WPA_CIPHER_CCMP)
-		suites[num_suites++] = RSN_CIPHER_SUITE_CCMP;
+		suites[num_suites++] = WLAN_CIPHER_SUITE_CCMP;
 	if (num_suites < max_suites && ciphers & WPA_CIPHER_GCMP)
-		suites[num_suites++] = RSN_CIPHER_SUITE_GCMP;
+		suites[num_suites++] = WLAN_CIPHER_SUITE_GCMP;
 	if (num_suites < max_suites && ciphers & WPA_CIPHER_TKIP)
-		suites[num_suites++] = RSN_CIPHER_SUITE_TKIP;
+		suites[num_suites++] = WLAN_CIPHER_SUITE_TKIP;
 	if (num_suites < max_suites && ciphers & WPA_CIPHER_WEP104)
-		suites[num_suites++] = RSN_CIPHER_SUITE_WEP104;
+		suites[num_suites++] = WLAN_CIPHER_SUITE_WEP104;
 	if (num_suites < max_suites && ciphers & WPA_CIPHER_WEP40)
-		suites[num_suites++] = RSN_CIPHER_SUITE_WEP40;
+		suites[num_suites++] = WLAN_CIPHER_SUITE_WEP40;
 
 	return num_suites;
 }
@@ -2973,8 +2962,8 @@
 			    params->wep_key[i]) ||
 		    nla_put_u32(msg, NL80211_KEY_CIPHER,
 				params->wep_key_len[i] == 5 ?
-				RSN_CIPHER_SUITE_WEP40 :
-				RSN_CIPHER_SUITE_WEP104) ||
+				WLAN_CIPHER_SUITE_WEP40 :
+				WLAN_CIPHER_SUITE_WEP104) ||
 		    nla_put_u8(msg, NL80211_KEY_IDX, i) ||
 		    (i == params->wep_tx_keyidx &&
 		     nla_put_flag(msg, NL80211_KEY_DEFAULT)))
@@ -3786,8 +3775,6 @@
 		   beacon_set);
 	if (beacon_set)
 		cmd = NL80211_CMD_SET_BEACON;
-	else if (!nl80211_get_wiphy_data_ap(bss))
-		return -ENOBUFS;
 
 	wpa_hexdump(MSG_DEBUG, "nl80211: Beacon head",
 		    params->head, params->head_len);
@@ -3869,9 +3856,9 @@
 		   params->key_mgmt_suites);
 	num_suites = 0;
 	if (params->key_mgmt_suites & WPA_KEY_MGMT_IEEE8021X)
-		suites[num_suites++] = RSN_AUTH_KEY_MGMT_UNSPEC_802_1X;
+		suites[num_suites++] = WLAN_AKM_SUITE_8021X;
 	if (params->key_mgmt_suites & WPA_KEY_MGMT_PSK)
-		suites[num_suites++] = RSN_AUTH_KEY_MGMT_PSK_OVER_802_1X;
+		suites[num_suites++] = WLAN_AKM_SUITE_PSK;
 	if (num_suites &&
 	    nla_put(msg, NL80211_ATTR_AKM_SUITES, num_suites * sizeof(u32),
 		    suites))
@@ -4719,7 +4706,6 @@
 	else
 		nl80211_mgmt_unsubscribe(bss, "AP teardown");
 
-	nl80211_put_wiphy_data_ap(bss);
 	bss->beacon_set = 0;
 }
 
@@ -5068,9 +5054,6 @@
 				  struct wpa_driver_associate_params *params,
 				  struct nl_msg *msg)
 {
-	if (nla_put_flag(msg, NL80211_ATTR_IFACE_SOCKET_OWNER))
-		return -1;
-
 	if (params->bssid) {
 		wpa_printf(MSG_DEBUG, "  * bssid=" MACSTR,
 			   MAC2STR(params->bssid));
@@ -5172,39 +5155,39 @@
 	    params->key_mgmt_suite == WPA_KEY_MGMT_PSK_SHA256 ||
 	    params->key_mgmt_suite == WPA_KEY_MGMT_IEEE8021X_SUITE_B ||
 	    params->key_mgmt_suite == WPA_KEY_MGMT_IEEE8021X_SUITE_B_192) {
-		int mgmt = RSN_AUTH_KEY_MGMT_PSK_OVER_802_1X;
+		int mgmt = WLAN_AKM_SUITE_PSK;
 
 		switch (params->key_mgmt_suite) {
 		case WPA_KEY_MGMT_CCKM:
-			mgmt = RSN_AUTH_KEY_MGMT_CCKM;
+			mgmt = WLAN_AKM_SUITE_CCKM;
 			break;
 		case WPA_KEY_MGMT_IEEE8021X:
-			mgmt = RSN_AUTH_KEY_MGMT_UNSPEC_802_1X;
+			mgmt = WLAN_AKM_SUITE_8021X;
 			break;
 		case WPA_KEY_MGMT_FT_IEEE8021X:
-			mgmt = RSN_AUTH_KEY_MGMT_FT_802_1X;
+			mgmt = WLAN_AKM_SUITE_FT_8021X;
 			break;
 		case WPA_KEY_MGMT_FT_PSK:
-			mgmt = RSN_AUTH_KEY_MGMT_FT_PSK;
+			mgmt = WLAN_AKM_SUITE_FT_PSK;
 			break;
 		case WPA_KEY_MGMT_IEEE8021X_SHA256:
-			mgmt = RSN_AUTH_KEY_MGMT_802_1X_SHA256;
+			mgmt = WLAN_AKM_SUITE_8021X_SHA256;
 			break;
 		case WPA_KEY_MGMT_PSK_SHA256:
-			mgmt = RSN_AUTH_KEY_MGMT_PSK_SHA256;
+			mgmt = WLAN_AKM_SUITE_PSK_SHA256;
 			break;
 		case WPA_KEY_MGMT_OSEN:
-			mgmt = RSN_AUTH_KEY_MGMT_OSEN;
+			mgmt = WLAN_AKM_SUITE_OSEN;
 			break;
 		case WPA_KEY_MGMT_IEEE8021X_SUITE_B:
-			mgmt = RSN_AUTH_KEY_MGMT_802_1X_SUITE_B;
+			mgmt = WLAN_AKM_SUITE_8021X_SUITE_B;
 			break;
 		case WPA_KEY_MGMT_IEEE8021X_SUITE_B_192:
-			mgmt = RSN_AUTH_KEY_MGMT_802_1X_SUITE_B_192;
+			mgmt = WLAN_AKM_SUITE_8021X_SUITE_B_192;
 			break;
 		case WPA_KEY_MGMT_PSK:
 		default:
-			mgmt = RSN_AUTH_KEY_MGMT_PSK_OVER_802_1X;
+			mgmt = WLAN_AKM_SUITE_PSK;
 			break;
 		}
 		wpa_printf(MSG_DEBUG, "  * akm=0x%x", mgmt);
@@ -6756,7 +6739,7 @@
 		wpa_printf(MSG_DEBUG, "nl80211: First BSS - reassign context");
 		nl80211_teardown_ap(bss);
 		if (!bss->added_if && !drv->first_bss->next)
-			wpa_driver_nl80211_del_beacon(bss);
+			wpa_driver_nl80211_del_beacon(drv);
 		nl80211_destroy_bss(bss);
 		if (!bss->added_if)
 			i802_set_iface_flags(bss, 0);
@@ -7118,7 +7101,7 @@
 	struct wpa_driver_nl80211_data *drv = bss->drv;
 	if (!is_ap_interface(drv->nlmode))
 		return -1;
-	wpa_driver_nl80211_del_beacon(bss);
+	wpa_driver_nl80211_del_beacon(drv);
 	bss->beacon_set = 0;
 
 	/*
@@ -7138,7 +7121,7 @@
 	struct wpa_driver_nl80211_data *drv = bss->drv;
 	if (!is_ap_interface(drv->nlmode))
 		return -1;
-	wpa_driver_nl80211_del_beacon(bss);
+	wpa_driver_nl80211_del_beacon(drv);
 	bss->beacon_set = 0;
 	return 0;
 }
@@ -7827,7 +7810,6 @@
 	struct wpa_driver_nl80211_data *drv = bss->drv;
 	struct nl_msg *msg;
 	enum nl80211_tdls_operation nl80211_oper;
-	int res;
 
 	if (!(drv->capa.flags & WPA_DRIVER_FLAGS_TDLS_SUPPORT))
 		return -EOPNOTSUPP;
@@ -7863,11 +7845,7 @@
 		return -ENOBUFS;
 	}
 
-	res = send_and_recv_msgs(drv, msg, NULL, NULL);
-	wpa_printf(MSG_DEBUG, "nl80211: TDLS_OPER: oper=%d mac=" MACSTR
-		   " --> res=%d (%s)", nl80211_oper, MAC2STR(peer), res,
-		   strerror(-res));
-	return res;
+	return send_and_recv_msgs(drv, msg, NULL, NULL);
 }
 
 
diff --git a/src/drivers/driver_nl80211_capa.c b/src/drivers/driver_nl80211_capa.c
index 3d85316..cad3970 100644
--- a/src/drivers/driver_nl80211_capa.c
+++ b/src/drivers/driver_nl80211_capa.c
@@ -12,8 +12,8 @@
 #include <netlink/genl/genl.h>
 
 #include "utils/common.h"
+#include "common/ieee802_11_defs.h"
 #include "common/ieee802_11_common.h"
-#include "common/wpa_common.h"
 #include "common/qca-vendor.h"
 #include "common/qca-vendor-attr.h"
 #include "driver_nl80211.h"
@@ -266,40 +266,40 @@
 			   c >> 24, (c >> 16) & 0xff,
 			   (c >> 8) & 0xff, c & 0xff);
 		switch (c) {
-		case RSN_CIPHER_SUITE_CCMP_256:
+		case WLAN_CIPHER_SUITE_CCMP_256:
 			info->capa->enc |= WPA_DRIVER_CAPA_ENC_CCMP_256;
 			break;
-		case RSN_CIPHER_SUITE_GCMP_256:
+		case WLAN_CIPHER_SUITE_GCMP_256:
 			info->capa->enc |= WPA_DRIVER_CAPA_ENC_GCMP_256;
 			break;
-		case RSN_CIPHER_SUITE_CCMP:
+		case WLAN_CIPHER_SUITE_CCMP:
 			info->capa->enc |= WPA_DRIVER_CAPA_ENC_CCMP;
 			break;
-		case RSN_CIPHER_SUITE_GCMP:
+		case WLAN_CIPHER_SUITE_GCMP:
 			info->capa->enc |= WPA_DRIVER_CAPA_ENC_GCMP;
 			break;
-		case RSN_CIPHER_SUITE_TKIP:
+		case WLAN_CIPHER_SUITE_TKIP:
 			info->capa->enc |= WPA_DRIVER_CAPA_ENC_TKIP;
 			break;
-		case RSN_CIPHER_SUITE_WEP104:
+		case WLAN_CIPHER_SUITE_WEP104:
 			info->capa->enc |= WPA_DRIVER_CAPA_ENC_WEP104;
 			break;
-		case RSN_CIPHER_SUITE_WEP40:
+		case WLAN_CIPHER_SUITE_WEP40:
 			info->capa->enc |= WPA_DRIVER_CAPA_ENC_WEP40;
 			break;
-		case RSN_CIPHER_SUITE_AES_128_CMAC:
+		case WLAN_CIPHER_SUITE_AES_CMAC:
 			info->capa->enc |= WPA_DRIVER_CAPA_ENC_BIP;
 			break;
-		case RSN_CIPHER_SUITE_BIP_GMAC_128:
+		case WLAN_CIPHER_SUITE_BIP_GMAC_128:
 			info->capa->enc |= WPA_DRIVER_CAPA_ENC_BIP_GMAC_128;
 			break;
-		case RSN_CIPHER_SUITE_BIP_GMAC_256:
+		case WLAN_CIPHER_SUITE_BIP_GMAC_256:
 			info->capa->enc |= WPA_DRIVER_CAPA_ENC_BIP_GMAC_256;
 			break;
-		case RSN_CIPHER_SUITE_BIP_CMAC_256:
+		case WLAN_CIPHER_SUITE_BIP_CMAC_256:
 			info->capa->enc |= WPA_DRIVER_CAPA_ENC_BIP_CMAC_256;
 			break;
-		case RSN_CIPHER_SUITE_NO_GROUP_ADDRESSED:
+		case WLAN_CIPHER_SUITE_NO_GROUP_ADDR:
 			info->capa->enc |= WPA_DRIVER_CAPA_ENC_GTK_NOT_USED;
 			break;
 		}
diff --git a/src/drivers/driver_nl80211_event.c b/src/drivers/driver_nl80211_event.c
index c18fc22..de539b1 100644
--- a/src/drivers/driver_nl80211_event.c
+++ b/src/drivers/driver_nl80211_event.c
@@ -1,6 +1,6 @@
 /*
  * Driver interaction with Linux nl80211/cfg80211 - Event processing
- * Copyright (c) 2002-2017, Jouni Malinen <j@w1.fi>
+ * Copyright (c) 2002-2014, Jouni Malinen <j@w1.fi>
  * Copyright (c) 2007, Johannes Berg <johannes@sipsolutions.net>
  * Copyright (c) 2009-2010, Atheros Communications
  *
@@ -1132,10 +1132,6 @@
 		[NL80211_ATTR_CQM_RSSI_HYST] = { .type = NLA_U8 },
 		[NL80211_ATTR_CQM_RSSI_THRESHOLD_EVENT] = { .type = NLA_U32 },
 		[NL80211_ATTR_CQM_PKT_LOSS_EVENT] = { .type = NLA_U32 },
-		[NL80211_ATTR_CQM_TXE_RATE] = { .type = NLA_U32 },
-		[NL80211_ATTR_CQM_TXE_PKTS] = { .type = NLA_U32 },
-		[NL80211_ATTR_CQM_TXE_INTVL] = { .type = NLA_U32 },
-		[NL80211_ATTR_CQM_BEACON_LOSS_EVENT] = { .type = NLA_FLAG },
 	};
 	struct nlattr *cqm[NL80211_ATTR_CQM_MAX + 1];
 	enum nl80211_cqm_rssi_threshold_event event;
@@ -1157,39 +1153,12 @@
 			return;
 		os_memcpy(ed.low_ack.addr, nla_data(tb[NL80211_ATTR_MAC]),
 			  ETH_ALEN);
-		ed.low_ack.num_packets =
-			nla_get_u32(cqm[NL80211_ATTR_CQM_PKT_LOSS_EVENT]);
-		wpa_printf(MSG_DEBUG, "nl80211: Packet loss event for " MACSTR
-			   " (num_packets %u)",
-			   MAC2STR(ed.low_ack.addr), ed.low_ack.num_packets);
 		wpa_supplicant_event(drv->ctx, EVENT_STATION_LOW_ACK, &ed);
 		return;
 	}
 
-	if (cqm[NL80211_ATTR_CQM_BEACON_LOSS_EVENT]) {
-		wpa_printf(MSG_DEBUG, "nl80211: Beacon loss event");
-		wpa_supplicant_event(drv->ctx, EVENT_BEACON_LOSS, NULL);
+	if (cqm[NL80211_ATTR_CQM_RSSI_THRESHOLD_EVENT] == NULL)
 		return;
-	}
-
-	if (cqm[NL80211_ATTR_CQM_TXE_RATE] &&
-	    cqm[NL80211_ATTR_CQM_TXE_PKTS] &&
-	    cqm[NL80211_ATTR_CQM_TXE_INTVL] &&
-	    cqm[NL80211_ATTR_MAC]) {
-		wpa_printf(MSG_DEBUG, "nl80211: CQM TXE event for " MACSTR
-			   " (rate: %u pkts: %u interval: %u)",
-			   MAC2STR((u8 *) nla_data(cqm[NL80211_ATTR_MAC])),
-			   nla_get_u32(cqm[NL80211_ATTR_CQM_TXE_RATE]),
-			   nla_get_u32(cqm[NL80211_ATTR_CQM_TXE_PKTS]),
-			   nla_get_u32(cqm[NL80211_ATTR_CQM_TXE_INTVL]));
-		return;
-	}
-
-	if (cqm[NL80211_ATTR_CQM_RSSI_THRESHOLD_EVENT] == NULL) {
-		wpa_printf(MSG_DEBUG,
-			   "nl80211: Not a CQM RSSI threshold event");
-		return;
-	}
 	event = nla_get_u32(cqm[NL80211_ATTR_CQM_RSSI_THRESHOLD_EVENT]);
 
 	if (event == NL80211_CQM_RSSI_THRESHOLD_EVENT_HIGH) {
@@ -1200,12 +1169,8 @@
 		wpa_printf(MSG_DEBUG, "nl80211: Connection quality monitor "
 			   "event: RSSI low");
 		ed.signal_change.above_threshold = 0;
-	} else {
-		wpa_printf(MSG_DEBUG,
-			   "nl80211: Unknown CQM RSSI threshold event: %d",
-			   event);
+	} else
 		return;
-	}
 
 	res = nl80211_get_link_signal(drv, &sig);
 	if (res == 0) {
diff --git a/src/drivers/driver_nl80211_scan.c b/src/drivers/driver_nl80211_scan.c
index b577531..7dcfae2 100644
--- a/src/drivers/driver_nl80211_scan.c
+++ b/src/drivers/driver_nl80211_scan.c
@@ -156,8 +156,10 @@
 	wpa_printf(MSG_DEBUG, "nl80211: Scan timeout - try to abort it");
 #ifdef CONFIG_DRIVER_NL80211_QCA
 	if (drv->vendor_scan_cookie &&
-	    nl80211_abort_vendor_scan(drv, drv->vendor_scan_cookie) == 0)
+	    nl80211_abort_vendor_scan(drv, drv->vendor_scan_cookie) == 0) {
+		drv->vendor_scan_cookie = 0;
 		return;
+	}
 #endif /* CONFIG_DRIVER_NL80211_QCA */
 	if (!drv->vendor_scan_cookie &&
 	    nl80211_abort_scan(drv->first_bss) == 0)
diff --git a/src/drivers/driver_wext.c b/src/drivers/driver_wext.c
index 458d458..791cd5d 100644
--- a/src/drivers/driver_wext.c
+++ b/src/drivers/driver_wext.c
@@ -1042,7 +1042,6 @@
 	wpa_driver_wext_set_auth_param(drv, IW_AUTH_WPA_ENABLED, 0);
 
 	eloop_cancel_timeout(wpa_driver_wext_scan_timeout, drv, drv->ctx);
-	eloop_cancel_timeout(wpa_driver_wext_send_rfkill, drv, drv->ctx);
 
 	/*
 	 * Clear possibly configured driver parameters in order to make it
diff --git a/src/drivers/nl80211_copy.h b/src/drivers/nl80211_copy.h
index 174f4b3..259c9c7 100644
--- a/src/drivers/nl80211_copy.h
+++ b/src/drivers/nl80211_copy.h
@@ -323,7 +323,7 @@
  * @NL80211_CMD_GET_SCAN: get scan results
  * @NL80211_CMD_TRIGGER_SCAN: trigger a new scan with the given parameters
  *	%NL80211_ATTR_TX_NO_CCK_RATE is used to decide whether to send the
- *	probe requests at CCK rate or not. %NL80211_ATTR_BSSID can be used to
+ *	probe requests at CCK rate or not. %NL80211_ATTR_MAC can be used to
  *	specify a BSSID to scan for; if not included, the wildcard BSSID will
  *	be used.
  * @NL80211_CMD_NEW_SCAN_RESULTS: scan notification (as a reply to
@@ -1820,8 +1820,6 @@
  *	and remove functions. NAN notifications will be sent in unicast to that
  *	socket. Without this attribute, any socket can add functions and the
  *	notifications will be sent to the %NL80211_MCGRP_NAN multicast group.
- *	If set during %NL80211_CMD_ASSOCIATE or %NL80211_CMD_CONNECT the
- *	station will deauthenticate when the socket is closed.
  *
  * @NL80211_ATTR_TDLS_INITIATOR: flag attribute indicating the current end is
  *	the TDLS link initiator.
@@ -1979,9 +1977,6 @@
  * @NL80211_ATTR_MULTICAST_TO_UNICAST_ENABLED: Indicates whether or not multicast
  *	packets should be send out as unicast to all stations (flag attribute).
  *
- * @NL80211_ATTR_BSSID: The BSSID of the AP. Note that %NL80211_ATTR_MAC is also
- *	used in various commands/events for specifying the BSSID.
- *
  * @NUM_NL80211_ATTR: total number of nl80211_attrs available
  * @NL80211_ATTR_MAX: highest attribute number currently defined
  * @__NL80211_ATTR_AFTER_LAST: internal use
@@ -2386,8 +2381,6 @@
 
 	NL80211_ATTR_MULTICAST_TO_UNICAST_ENABLED,
 
-	NL80211_ATTR_BSSID,
-
 	/* add attributes here, update the policy in nl80211.c */
 
 	__NL80211_ATTR_AFTER_LAST,
@@ -4966,9 +4959,8 @@
 /**
  * struct nl80211_bss_select_rssi_adjust - RSSI adjustment parameters.
  *
- * @band: band of BSS that must match for RSSI value adjustment. The value
- *	of this field is according to &enum nl80211_band.
- * @delta: value used to adjust the RSSI value of matching BSS in dB.
+ * @band: band of BSS that must match for RSSI value adjustment.
+ * @delta: value used to adjust the RSSI value of matching BSS.
  */
 struct nl80211_bss_select_rssi_adjust {
 	__u8 band;