Cumulative patch from commit 06c7b7f0b5f4deed675a7b81e33830311da7339a

06c7b7f HS 2.0R2: Fix temporary network disabling in Deauth Req case
c5c2d94 P2P: Cancel offchannel TX wait on PD Response TX status
1578796 TDLS: Work around interop issues with supported operating class
b7fb98f Interworking: Fix already-connected check to verify network priority
7c373ac Interworking: Fix last-network preference to not override priority
f54e924 HS 2.0R2: Fix req_conn_capab example

Change-Id: I17953fc05421bc5d454f4081fbfe303f4bf2d6fd
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
diff --git a/wpa_supplicant/interworking.c b/wpa_supplicant/interworking.c
index abf5dee..42fefb6 100644
--- a/wpa_supplicant/interworking.c
+++ b/wpa_supplicant/interworking.c
@@ -814,7 +814,8 @@
 static int already_connected(struct wpa_supplicant *wpa_s,
 			     struct wpa_cred *cred, struct wpa_bss *bss)
 {
-	struct wpa_ssid *ssid;
+	struct wpa_ssid *ssid, *sel_ssid;
+	struct wpa_bss *selected;
 
 	if (wpa_s->wpa_state < WPA_ASSOCIATED || wpa_s->current_ssid == NULL)
 		return 0;
@@ -827,6 +828,11 @@
 	    os_memcmp(ssid->ssid, bss->ssid, bss->ssid_len) != 0)
 		return 0;
 
+	sel_ssid = NULL;
+	selected = wpa_supplicant_pick_network(wpa_s, &sel_ssid);
+	if (selected && sel_ssid && sel_ssid->priority > ssid->priority)
+		return 0; /* higher priority network in scan results */
+
 	return 1;
 }