Cumulative patch from commit 00043740251716e83ca8a01b5b8a2bed1ed02db9

0004374 P2P: Prefer U-NII-3 over U-NII-1 during channel selection
1b665cb P2P: Fix channel preference use for MCC p2p_connect
5624ccf P2P: Optimize default case for own freq preference setting
d0f61a4 P2P: Fix p2p_ignore_shared_freq=1 when inviting a peer
21e491f P2P: Fix p2p_ignore_shared_freq=1 during invitation processing

Change-Id: I79cdeb935ff2eb14ba99b5fc3d364b9399e3f89f
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
diff --git a/src/p2p/p2p_utils.c b/src/p2p/p2p_utils.c
index a579509..161a402 100644
--- a/src/p2p/p2p_utils.c
+++ b/src/p2p/p2p_utils.c
@@ -446,28 +446,25 @@
 {
 	unsigned int i, j, r;
 
-	for (i = 0; i < chans->reg_classes; i++) {
-		struct p2p_reg_class *c = &chans->reg_class[i];
+	for (j = 0; classes[j]; j++) {
+		for (i = 0; i < chans->reg_classes; i++) {
+			struct p2p_reg_class *c = &chans->reg_class[i];
 
-		if (c->channels == 0)
-			continue;
+			if (c->channels == 0)
+				continue;
 
-		for (j = 0; classes[j]; j++) {
-			if (c->reg_class == classes[j])
-				break;
+			if (c->reg_class == classes[j]) {
+				/*
+				 * Pick one of the available channels in the
+				 * operating class at random.
+				 */
+				os_get_random((u8 *) &r, sizeof(r));
+				r %= c->channels;
+				*op_class = c->reg_class;
+				*op_channel = c->channel[r];
+				return 0;
+			}
 		}
-		if (!classes[j])
-			continue;
-
-		/*
-		 * Pick one of the available channels in the operating class at
-		 * random.
-		 */
-		os_get_random((u8 *) &r, sizeof(r));
-		r %= c->channels;
-		*op_class = c->reg_class;
-		*op_channel = c->channel[r];
-		return 0;
 	}
 
 	return -1;