WNM: Use country code, if available, to help in channel mapping
authorJouni Malinen <j@w1.fi>
Mon, 24 Nov 2014 08:57:38 +0000 (10:57 +0200)
committerJouni Malinen <j@w1.fi>
Mon, 24 Nov 2014 08:57:38 +0000 (10:57 +0200)
The country code from the current AP needs to be used in
ieee80211_chan_to_freq() to support cases where non-global operating
class table is used.

Signed-off-by: Jouni Malinen <j@w1.fi>
wpa_supplicant/wnm_sta.c

index 424c634..38be02b 100644 (file)
@@ -411,7 +411,17 @@ static void wnm_parse_neighbor_report_elem(struct neighbor_report *rep,
 
 static int wnm_nei_get_chan(struct wpa_supplicant *wpa_s, u8 op_class, u8 chan)
 {
-       return ieee80211_chan_to_freq(NULL, op_class, chan);
+       struct wpa_bss *bss = wpa_s->current_bss;
+       const char *country = NULL;
+
+       if (bss) {
+               const u8 *elem = wpa_bss_get_ie(bss, WLAN_EID_COUNTRY);
+
+               if (elem && elem[1] >= 2)
+                       country = (const char *) (elem + 2);
+       }
+
+       return ieee80211_chan_to_freq(country, op_class, chan);
 }