]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
mesh: Convert channel configuration to use common routines
authorJouni Malinen <j@w1.fi>
Sat, 10 Jan 2015 11:02:08 +0000 (13:02 +0200)
committerJouni Malinen <j@w1.fi>
Sat, 10 Jan 2015 15:35:53 +0000 (17:35 +0200)
Use struct hostapd_freq_params just like other modes do instead of
mesh-specific freq and ht_mode.

Signed-off-by: Jouni Malinen <j@w1.fi>
src/drivers/driver.h
src/drivers/driver_nl80211.c
wpa_supplicant/mesh.c

index 905bc72f73cf45ed224ed8074cc0410cf502ecb4..2c0c68505a18f5ea83fedaa2182ab7b7fb40ea32 100644 (file)
@@ -1048,10 +1048,9 @@ struct wpa_driver_mesh_join_params {
        const int *basic_rates;
        const u8 *ies;
        int ie_len;
-       int freq;
+       struct hostapd_freq_params freq;
        int beacon_int;
        int max_peer_links;
-       enum ht_mode ht_mode;
        struct wpa_driver_mesh_bss_params conf;
 #define WPA_DRIVER_MESH_FLAG_USER_MPM  0x00000001
 #define WPA_DRIVER_MESH_FLAG_DRIVER_MPM        0x00000002
index 40e4df8b6859d398516a2e66a6fe371bb2cd5608..ea903d59299e1e81faef30f74fd5ad8ee2c45ba1 100644 (file)
@@ -7804,43 +7804,9 @@ wpa_driver_nl80211_join_mesh(void *priv,
 
        wpa_printf(MSG_DEBUG, "nl80211: mesh join (ifindex=%d)", drv->ifindex);
        msg = nl80211_drv_msg(drv, 0, NL80211_CMD_JOIN_MESH);
-       if (!msg)
-               goto fail;
-       if (params->freq) {
-               wpa_printf(MSG_DEBUG, "  * freq=%d", params->freq);
-               if (nla_put_u32(msg, NL80211_ATTR_WIPHY_FREQ, params->freq))
-                       goto fail;
-       }
-
-       if (params->ht_mode) {
-               unsigned int ht_value;
-               char *ht_mode = "";
-
-               switch (params->ht_mode) {
-               default:
-               case CHAN_NO_HT:
-                       ht_value = NL80211_CHAN_NO_HT;
-                       ht_mode = "NOHT";
-                       break;
-               case CHAN_HT20:
-                       ht_value = NL80211_CHAN_HT20;
-                       ht_mode = "HT20";
-                       break;
-               case CHAN_HT40PLUS:
-                       ht_value = NL80211_CHAN_HT40PLUS;
-                       ht_mode = "HT40+";
-                       break;
-               case CHAN_HT40MINUS:
-                       ht_value = NL80211_CHAN_HT40MINUS;
-                       ht_mode = "HT40-";
-                       break;
-               }
-               wpa_printf(MSG_DEBUG, "  * ht_mode=%s", ht_mode);
-               if (nla_put_u32(msg, NL80211_ATTR_WIPHY_CHANNEL_TYPE, ht_value))
-                       goto fail;
-       }
-
-       if (nl80211_put_basic_rates(msg, params->basic_rates))
+       if (!msg ||
+           nl80211_put_freq_params(msg, &params->freq) ||
+           nl80211_put_basic_rates(msg, params->basic_rates))
                goto fail;
 
        if (params->meshid) {
@@ -7905,7 +7871,7 @@ wpa_driver_nl80211_join_mesh(void *priv,
                goto fail;
        }
        ret = 0;
-       bss->freq = params->freq;
+       bss->freq = params->freq.freq;
        wpa_printf(MSG_DEBUG, "nl80211: mesh join request send successfully");
 
 fail:
index 8c5713f9d44e952c76267bcf5840287e122b020d..6d3c19a859c842ea3e5cf24050ee7a53d669a34e 100644 (file)
@@ -320,14 +320,26 @@ int wpa_supplicant_join_mesh(struct wpa_supplicant *wpa_s,
        params.meshid_len = ssid->ssid_len;
        params.freq = ssid->frequency;
        wpa_s->mesh_ht_enabled = ssid->mesh_ht_mode > CHAN_NO_HT;
+       switch (ssid->mesh_ht_mode) {
+       case CHAN_HT20:
+               params.freq.ht_enabled = 1;
+               break;
+       case CHAN_HT40PLUS:
+               params.freq.ht_enabled = 1;
+               params.freq.sec_channel_offset = 1;
+               break;
+       case CHAN_HT40MINUS:
+               params.freq.ht_enabled = 1;
+               params.freq.sec_channel_offset = -1;
+               break;
+       default:
+               break;
+       }
        if (ssid->beacon_int > 0)
                params.beacon_int = ssid->beacon_int;
        else if (wpa_s->conf->beacon_int > 0)
                params.beacon_int = wpa_s->conf->beacon_int;
        params.max_peer_links = wpa_s->conf->max_peer_links;
-#ifdef CONFIG_IEEE80211N
-       params.ht_mode = ssid->mesh_ht_mode;
-#endif /* CONFIG_IEEE80211N */
 
        if (ssid->key_mgmt & WPA_KEY_MGMT_SAE) {
                params.flags |= WPA_DRIVER_MESH_FLAG_SAE_AUTH;