P2P: Fix secondary channel selection for HT40
authorEliad Peller <eliad@wizery.com>
Wed, 17 Jun 2015 13:18:14 +0000 (16:18 +0300)
committerJouni Malinen <j@w1.fi>
Fri, 19 Jun 2015 12:50:40 +0000 (15:50 +0300)
wpas_p2p_get_ht40_mode() used blacklist approach (bw != BW20) to find
the relevant op_class, but didn't take into account other non-BW40
cases, like BW80, that had been added to the bw enum after the initial
implementation. Fix this by looking for the specific BW40 bw cases.

Signed-off-by: Eliad Peller <eliadx.peller@intel.com>
wpa_supplicant/p2p_supplicant.c

index 7bb09b3..ac4ad5a 100644 (file)
@@ -3321,7 +3321,8 @@ int wpas_p2p_get_ht40_mode(struct wpa_supplicant *wpa_s,
 
                for (ch = o->min_chan; ch <= o->max_chan; ch += o->inc) {
                        if (o->mode != HOSTAPD_MODE_IEEE80211A ||
-                           o->bw == BW20 || ch != channel)
+                           (o->bw != BW40PLUS && o->bw != BW40MINUS) ||
+                           ch != channel)
                                continue;
                        ret = wpas_p2p_verify_channel(wpa_s, mode, ch, o->bw);
                        if (ret == ALLOWED)