P2P: Prefer HT40 channels for initial pick
authorJouni Malinen <jouni@qca.qualcomm.com>
Mon, 18 Nov 2013 15:57:07 +0000 (17:57 +0200)
committerJouni Malinen <j@w1.fi>
Mon, 18 Nov 2013 15:57:07 +0000 (17:57 +0200)
If there are no other preferences from local configuration or driver,
prefer a random HT40 channel instead of falling back to the fixed
pre-configured channel or 5 GHz channel preference.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

src/p2p/p2p.c

index 31a4819..94d57b5 100644 (file)
@@ -1181,6 +1181,7 @@ static void p2p_prepare_channel_best(struct p2p_data *p2p)
 {
        u8 op_class, op_channel;
        const int op_classes_5ghz[] = { 115, 124, 0 };
+       const int op_classes_ht40[] = { 116, 117, 126, 127, 0 };
 
        p2p_dbg(p2p, "Prepare channel best");
 
@@ -1212,6 +1213,11 @@ static void p2p_prepare_channel_best(struct p2p_data *p2p)
                p2p_dbg(p2p, "Select first pref_chan entry as operating channel preference");
                p2p->op_reg_class = p2p->cfg->pref_chan[0].op_class;
                p2p->op_channel = p2p->cfg->pref_chan[0].chan;
+       } else if (p2p_channel_select(&p2p->cfg->channels, op_classes_ht40,
+                                     &p2p->op_reg_class, &p2p->op_channel) ==
+                  0) {
+               p2p_dbg(p2p, "Select possible HT40 channel (op_class %u channel %u) as operating channel preference",
+                       p2p->op_reg_class, p2p->op_channel);
        } else if (p2p_channel_select(&p2p->cfg->channels, op_classes_5ghz,
                                      &p2p->op_reg_class, &p2p->op_channel) ==
                   0) {