diff --git a/package/wpa_supplicant/patches/100-timestamp_check.patch b/package/wpa_supplicant/patches/100-timestamp_check.patch
index 66f877f97295d365bcaacbff7ac2424be8ca6c63..98fdbbc1be19a24a52eff4cb373aa473178eba79 100644
--- a/package/wpa_supplicant/patches/100-timestamp_check.patch
+++ b/package/wpa_supplicant/patches/100-timestamp_check.patch
@@ -1,8 +1,6 @@
-Index: wpa_supplicant-0.6.6/src/tls/x509v3.c
-===================================================================
---- wpa_supplicant-0.6.6.orig/src/tls/x509v3.c	2008-02-23 03:45:24.000000000 +0100
-+++ wpa_supplicant-0.6.6/src/tls/x509v3.c	2008-07-09 12:47:19.000000000 +0200
-@@ -1591,8 +1591,11 @@
+--- a/src/tls/x509v3.c
++++ b/src/tls/x509v3.c
+@@ -1591,8 +1591,11 @@ int x509_certificate_chain_validate(stru
  		if (chain_trusted)
  			continue;
  
diff --git a/package/wpa_supplicant/patches/110-roaming.patch b/package/wpa_supplicant/patches/110-roaming.patch
index b552dfc425d84143efe76f392d15e96a403f2af9..2836b204e1bc66e7a6c8e7ddd8992f3f0fb49be0 100644
--- a/package/wpa_supplicant/patches/110-roaming.patch
+++ b/package/wpa_supplicant/patches/110-roaming.patch
@@ -1,9 +1,7 @@
 This patch decreases the timeouts for assoc/auth to more realistic values. Improves roaming speed
-Index: wpa_supplicant-0.6.6/wpa_supplicant/events.c
-===================================================================
---- wpa_supplicant-0.6.6.orig/wpa_supplicant/events.c	2008-02-23 03:45:24.000000000 +0100
-+++ wpa_supplicant-0.6.6/wpa_supplicant/events.c	2008-07-09 15:13:37.000000000 +0200
-@@ -807,7 +807,7 @@
+--- a/wpa_supplicant/events.c
++++ b/wpa_supplicant/events.c
+@@ -807,7 +807,7 @@ static void wpa_supplicant_event_assoc(s
  		wpa_supplicant_set_state(wpa_s, WPA_COMPLETED);
  	} else if (!ft_completed) {
  		/* Timeout for receiving the first EAPOL packet */
@@ -12,11 +10,9 @@ Index: wpa_supplicant-0.6.6/wpa_supplicant/events.c
  	}
  	wpa_supplicant_cancel_scan(wpa_s);
  
-Index: wpa_supplicant-0.6.6/wpa_supplicant/scan.c
-===================================================================
---- wpa_supplicant-0.6.6.orig/wpa_supplicant/scan.c	2008-02-23 03:45:24.000000000 +0100
-+++ wpa_supplicant-0.6.6/wpa_supplicant/scan.c	2008-07-09 15:13:37.000000000 +0200
-@@ -145,6 +145,7 @@
+--- a/wpa_supplicant/scan.c
++++ b/wpa_supplicant/scan.c
+@@ -145,6 +145,7 @@ static void wpa_supplicant_scan(void *el
  		return;
  	}
  
@@ -24,7 +20,7 @@ Index: wpa_supplicant-0.6.6/wpa_supplicant/scan.c
  	if (wpa_s->use_client_mlme) {
  		ieee80211_sta_set_probe_req_ie(wpa_s, extra_ie, extra_ie_len);
  		ret = ieee80211_sta_req_scan(wpa_s, ssid ? ssid->ssid : NULL,
-@@ -157,7 +158,7 @@
+@@ -157,7 +158,7 @@ static void wpa_supplicant_scan(void *el
  
  	if (ret) {
  		wpa_printf(MSG_WARNING, "Failed to initiate AP scan.");
@@ -33,11 +29,9 @@ Index: wpa_supplicant-0.6.6/wpa_supplicant/scan.c
  	}
  }
  
-Index: wpa_supplicant-0.6.6/wpa_supplicant/wpa_supplicant.c
-===================================================================
---- wpa_supplicant-0.6.6/wpa_supplicant/wpa_supplicant.c-old	2008-09-20 22:37:09.000000000 -0400
-+++ wpa_supplicant-0.6.6/wpa_supplicant/wpa_supplicant.c	2008-09-20 22:37:43.000000000 -0400
-@@ -1118,10 +1118,10 @@
+--- a/wpa_supplicant/wpa_supplicant.c
++++ b/wpa_supplicant/wpa_supplicant.c
+@@ -1118,10 +1118,10 @@ void wpa_supplicant_associate(struct wpa
  
  		if (assoc_failed) {
  			/* give IBSS a bit more time */
diff --git a/package/wpa_supplicant/patches/120-ssid_scan.patch b/package/wpa_supplicant/patches/120-ssid_scan.patch
index b4127fa9a7ff4684754d5eafe7e3c6c1129d7062..dadfb79fb31a2a4828e756bc6fe53b0bc37a03f5 100644
--- a/package/wpa_supplicant/patches/120-ssid_scan.patch
+++ b/package/wpa_supplicant/patches/120-ssid_scan.patch
@@ -1,10 +1,8 @@
 Don't do broadcast SSID scans, if all configured SSIDs use scan_ssid=1. Improves background scanning in supplicant-managed roaming.
 
-Index: wpa_supplicant-0.6.3/wpa_supplicant/scan.c
-===================================================================
---- wpa_supplicant-0.6.3.orig/wpa_supplicant/scan.c	2008-07-09 18:53:28.000000000 +0200
-+++ wpa_supplicant-0.6.3/wpa_supplicant/scan.c	2008-07-09 19:00:55.000000000 +0200
-@@ -48,11 +48,23 @@
+--- a/wpa_supplicant/scan.c
++++ b/wpa_supplicant/scan.c
+@@ -48,11 +48,23 @@ static void wpa_supplicant_scan(void *el
  	int enabled, scan_req = 0, ret;
  	const u8 *extra_ie = NULL;
  	size_t extra_ie_len = 0;
@@ -28,7 +26,7 @@ Index: wpa_supplicant-0.6.3/wpa_supplicant/scan.c
  	ssid = wpa_s->conf->ssid;
  	while (ssid) {
  		if (!ssid->disabled) {
-@@ -125,6 +137,10 @@
+@@ -125,6 +137,10 @@ static void wpa_supplicant_scan(void *el
  		return;
  	}
  
diff --git a/package/wpa_supplicant/patches/130-scanning.patch b/package/wpa_supplicant/patches/130-scanning.patch
index 4580cf941986325257bf749376878d5893c712c0..fc6574be20864d7fae894710fc7ee216d9943c8d 100644
--- a/package/wpa_supplicant/patches/130-scanning.patch
+++ b/package/wpa_supplicant/patches/130-scanning.patch
@@ -2,7 +2,7 @@ Add a scan result cache to improve roaming speed if the driver gave us a backgro
 
 --- a/wpa_supplicant/config.h
 +++ b/wpa_supplicant/config.h
-@@ -97,6 +97,12 @@
+@@ -97,6 +97,12 @@ struct wpa_config {
  	int ap_scan;
  
  	/**
@@ -17,7 +17,7 @@ Add a scan result cache to improve roaming speed if the driver gave us a backgro
  	 * If this is specified, %wpa_supplicant will open a control interface
 --- a/wpa_supplicant/config_file.c
 +++ b/wpa_supplicant/config_file.c
-@@ -313,6 +313,13 @@
+@@ -313,6 +313,13 @@ static int wpa_config_process_ap_scan(st
  	return 0;
  }
  
@@ -31,7 +31,7 @@ Add a scan result cache to improve roaming speed if the driver gave us a backgro
  
  static int wpa_config_process_fast_reauth(struct wpa_config *config, char *pos)
  {
-@@ -446,6 +453,9 @@
+@@ -446,6 +453,9 @@ static int wpa_config_process_global(str
  	if (os_strncmp(pos, "ap_scan=", 8) == 0)
  		return wpa_config_process_ap_scan(config, pos + 8);
  
@@ -41,7 +41,7 @@ Add a scan result cache to improve roaming speed if the driver gave us a backgro
  	if (os_strncmp(pos, "fast_reauth=", 12) == 0)
  		return wpa_config_process_fast_reauth(config, pos + 12);
  
-@@ -819,6 +831,8 @@
+@@ -819,6 +829,8 @@ static void wpa_config_write_global(FILE
  		fprintf(f, "eapol_version=%d\n", config->eapol_version);
  	if (config->ap_scan != DEFAULT_AP_SCAN)
  		fprintf(f, "ap_scan=%d\n", config->ap_scan);
@@ -52,7 +52,7 @@ Add a scan result cache to improve roaming speed if the driver gave us a backgro
  #ifdef EAP_TLS_OPENSSL
 --- a/wpa_supplicant/events.c
 +++ b/wpa_supplicant/events.c
-@@ -601,6 +601,9 @@
+@@ -601,6 +601,9 @@ static void wpa_supplicant_event_scan_re
  	if (wpa_s->conf->ap_scan == 2 || wpa_s->disconnected)
  		return;
  
@@ -62,7 +62,7 @@ Add a scan result cache to improve roaming speed if the driver gave us a backgro
  	while (selected == NULL) {
  		for (prio = 0; prio < wpa_s->conf->num_prio; prio++) {
  			selected = wpa_supplicant_select_bss(
-@@ -613,6 +616,7 @@
+@@ -613,6 +616,7 @@ static void wpa_supplicant_event_scan_re
  			wpa_printf(MSG_DEBUG, "No APs found - clear blacklist "
  				   "and try again");
  			wpa_blacklist_clear(wpa_s);
@@ -70,7 +70,7 @@ Add a scan result cache to improve roaming speed if the driver gave us a backgro
  		} else if (selected == NULL) {
  			break;
  		}
-@@ -640,10 +644,12 @@
+@@ -640,10 +644,12 @@ static void wpa_supplicant_event_scan_re
  		rsn_preauth_scan_results(wpa_s->wpa, wpa_s->scan_res);
  	} else {
  		wpa_printf(MSG_DEBUG, "No suitable AP found.");
@@ -84,7 +84,7 @@ Add a scan result cache to improve roaming speed if the driver gave us a backgro
  	return;
  
  req_scan:
-@@ -847,6 +853,9 @@
+@@ -847,6 +853,9 @@ static void wpa_supplicant_event_disasso
  	}
  	if (wpa_s->wpa_state >= WPA_ASSOCIATED)
  		wpa_supplicant_req_scan(wpa_s, 0, 100000);
@@ -92,19 +92,19 @@ Add a scan result cache to improve roaming speed if the driver gave us a backgro
 +		wpa_supplicant_req_auth_timeout(wpa_s, 0, 100000);
 +
  	bssid = wpa_s->bssid;
- 	if (os_memcmp(bssid, "\x00\x00\x00\x00\x00\x00", ETH_ALEN) == 0)
+ 	if (is_zero_ether_addr(bssid))
  		bssid = wpa_s->pending_bssid;
 --- a/wpa_supplicant/wpa_supplicant_i.h
 +++ b/wpa_supplicant/wpa_supplicant_i.h
-@@ -334,6 +334,7 @@
-	struct wpa_client_mlme mlme;
-	int use_client_mlme;
-	int driver_4way_handshake;
+@@ -334,6 +334,7 @@ struct wpa_supplicant {
+ 	struct wpa_client_mlme mlme;
+ 	int use_client_mlme;
+ 	int driver_4way_handshake;
 +	struct os_time last_scan_results;
-
-	int pending_mic_error_report;
-	int pending_mic_error_pairwise;
-@@ -385,6 +387,7 @@
+ 
+ 	int pending_mic_error_report;
+ 	int pending_mic_error_pairwise;
+@@ -385,6 +386,7 @@ int wpa_supplicant_scard_init(struct wpa
  
  /* scan.c */
  void wpa_supplicant_req_scan(struct wpa_supplicant *wpa_s, int sec, int usec);
@@ -114,7 +114,7 @@ Add a scan result cache to improve roaming speed if the driver gave us a backgro
  /* events.c */
 --- a/wpa_supplicant/scan.c
 +++ b/wpa_supplicant/scan.c
-@@ -40,6 +40,18 @@
+@@ -40,6 +40,18 @@ static void wpa_supplicant_gen_assoc_eve
  	wpa_supplicant_event(wpa_s, EVENT_ASSOC, &data);
  }
  
@@ -133,7 +133,7 @@ Add a scan result cache to improve roaming speed if the driver gave us a backgro
  
  static void wpa_supplicant_scan(void *eloop_ctx, void *timeout_ctx)
  {
-@@ -150,8 +162,9 @@
+@@ -150,8 +162,9 @@ static void wpa_supplicant_scan(void *el
  	} else
  		wpa_s->prev_scan_ssid = BROADCAST_SSID_SCAN;
  
@@ -143,11 +143,11 @@ Add a scan result cache to improve roaming speed if the driver gave us a backgro
 +		(wpa_s->scan_res_tried == 0 && wpa_s->conf->ap_scan == 1 &&
 +	    !wpa_s->use_client_mlme)) {
  		wpa_s->scan_res_tried++;
+ 		wpa_s->scan_req = scan_req;
  		wpa_printf(MSG_DEBUG, "Trying to get current scan results "
- 			   "first without requesting a new scan to speed up "
 --- a/wpa_supplicant/wpa_supplicant.c
 +++ b/wpa_supplicant/wpa_supplicant.c
-@@ -1441,6 +1441,9 @@
+@@ -1441,6 +1441,9 @@ void wpa_supplicant_rx_eapol(void *ctx, 
  {
  	struct wpa_supplicant *wpa_s = ctx;
  
diff --git a/package/wpa_supplicant/patches/140-quality.patch b/package/wpa_supplicant/patches/140-quality.patch
index e8c6abff7cd65a9f77c8f19d888f1eea1aa2f422..6ba7424ffee2dc3a6193385a0f6b92250378214b 100644
--- a/package/wpa_supplicant/patches/140-quality.patch
+++ b/package/wpa_supplicant/patches/140-quality.patch
@@ -1,8 +1,6 @@
-Index: wpa_supplicant-0.6.6/wpa_supplicant/wpa_supplicant.c
-===================================================================
---- wpa_supplicant-0.6.6.orig/wpa_supplicant/wpa_supplicant.c	2008-07-24 16:28:58.000000000 +0200
-+++ wpa_supplicant-0.6.6/wpa_supplicant/wpa_supplicant.c	2008-07-24 16:47:40.000000000 +0200
-@@ -1206,7 +1206,7 @@
+--- a/wpa_supplicant/wpa_supplicant.c
++++ b/wpa_supplicant/wpa_supplicant.c
+@@ -1206,7 +1206,7 @@ static int wpa_supplicant_get_scan_resul
  {
  #define SCAN_AP_LIMIT 128
  	struct wpa_scan_result *results;
@@ -11,7 +9,7 @@ Index: wpa_supplicant-0.6.6/wpa_supplicant/wpa_supplicant.c
  	struct wpa_scan_results *res;
  
  	results = os_malloc(SCAN_AP_LIMIT * sizeof(struct wpa_scan_result));
-@@ -1303,6 +1303,21 @@
+@@ -1303,6 +1303,21 @@ static int wpa_supplicant_get_scan_resul
  		res->res[res->num++] = r;
  	}