p2p: fallback to p2p neg after running out of GO scan attempts.

If p2p_fallback_to_go_neg is enabled, it should fallback
to go neg, but not report group formation failure after
running out of GO scan attempts.

Bug: 163532173
Test: atest VtsHalWifiSupplicantV1_0TargetTest \
      VtsHalWifiSupplicantV1_1TargetTest \
      VtsHalWifiSupplicantV1_2TargetTest \
      VtsHalWifiSupplicantV1_3TargetTest \
      VtsHalWifiSupplicantV1_4TargetTest
Test: act.py
      -c tools/test/connectivity/acts/tests/google/wifi/p2p/config/wifi_p2p.json \
      -tb WifiP2pAllAttached \
      -tc WifiP2pMultiPeersTest WifiP2pLocalServiceTest WifiP2pManagerTest
Test: act.py
      -c tools/test/connectivity/acts/tests/google/wifi/p2p/config/wifi_p2p_group.json \
      -tb WifiP2pAllAttached \
      -tc WifiP2pGroupTest

Change-Id: I2c93645825d99013fa9e0e0fdfc998d80934b5dc
diff --git a/wpa_supplicant/p2p_supplicant.c b/wpa_supplicant/p2p_supplicant.c
index b0bea61..f3bb56a 100644
--- a/wpa_supplicant/p2p_supplicant.c
+++ b/wpa_supplicant/p2p_supplicant.c
@@ -4925,6 +4925,15 @@
 				       MAC2STR(wpa_s->pending_join_dev_addr));
 			return;
 		}
+		if (wpa_s->p2p_fallback_to_go_neg) {
+			wpa_dbg(wpa_s, MSG_DEBUG, "P2P: Join operating "
+				"failed - fall back to GO Negotiation");
+			wpa_msg_global(wpa_s->p2pdev, MSG_INFO,
+				       P2P_EVENT_FALLBACK_TO_GO_NEG
+				       "reason=join-failed");
+			wpas_p2p_fallback_to_go_neg(wpa_s, 0);
+			return;
+		}
 		wpa_msg_global(wpa_s->p2pdev, MSG_INFO,
 			       P2P_EVENT_GROUP_FORMATION_FAILURE);
 		wpas_notify_p2p_group_formation_failure(wpa_s, "");