Re: [PATCH v1] check for FT support when selecting FT suites

Matthew Wang <[email protected]>
Newsgroups gmane.linux.drivers.hostap
Message-ID <CABRiz0pR6kKBwPJN+7djYxuLochTcFRH==Re3UUnh31K78RnOg@mail.gmail.com>
Yes, certainly possible. From your logs, it looks like you have a
non-SME driver. If your driver also doesn't support UPDATE_FT_IES,
then it's likely this will fix your problem.


On Tue, Feb 4, 2020 at 12:35 AM Matteo Fortini <[email protected]> wrote:
>
> Hi, could this be the fix to
> https://www.spinics.net/lists/hostap/msg06607.html
> Thank you
>
>
> Il 04/02/20 02:12, Matthew Wang ha scritto:
>
> A driver supports FT if it either supports SME or the
> NL80211_CMD_UPDATE_FT_IES command. When selecting AKM suites,
> wpa_supplicant currently doesn't take into account whether or not either
> of those conditions are met. This can cause association failures e.g. when
> an AP supports both WPA-EAP and FT-EAP but the driver doesn't support FT
> (supplicant will decide to do FT-EAP since it is unaware the driver
> doesn't support it). This change allows an FT suite to be selected only
> when the driver also supports FT.
>
> Signed-off-by: Matthew Wang <[email protected]>
> ---
>  src/drivers/driver.h              | 2 ++
>  src/drivers/driver_nl80211_capa.c | 7 +++++++
>  wpa_supplicant/wpa_supplicant.c   | 4 ++++
>  3 files changed, 13 insertions(+)
>
> diff --git a/src/drivers/driver.h b/src/drivers/driver.h
> index 9bdf88011..601b3e24c 100644
> --- a/src/drivers/driver.h
> +++ b/src/drivers/driver.h
> @@ -1823,6 +1823,8 @@ struct wpa_driver_capa {
>  #define WPA_DRIVER_FLAGS_CONTROL_PORT 0x0400000000000000ULL
>  /** Driver supports VLAN offload */
>  #define WPA_DRIVER_FLAGS_VLAN_OFFLOAD 0x0800000000000000ULL
> +/** Driver supports UPDATE_FT_IES command */
> +#define WPA_DRIVER_FLAGS_UPDATE_FT_IES 0x1000000000000000ULL
>   u64 flags;
>
>  #define FULL_AP_CLIENT_STATE_SUPP(drv_flags) \
> diff --git a/src/drivers/driver_nl80211_capa.c b/src/drivers/driver_nl80211_capa.c
> index 31e7cbfe5..6968e8e2a 100644
> --- a/src/drivers/driver_nl80211_capa.c
> +++ b/src/drivers/driver_nl80211_capa.c
> @@ -78,6 +78,7 @@ struct wiphy_info_data {
>   unsigned int wmm_ac_supported:1;
>   unsigned int mac_addr_rand_scan_supported:1;
>   unsigned int mac_addr_rand_sched_scan_supported:1;
> + unsigned int update_ft_ies_supported:1;
>  };
>
>
> @@ -243,6 +244,9 @@ static void wiphy_info_supp_cmds(struct wiphy_info_data *info,
>   case NL80211_CMD_SET_QOS_MAP:
>   info->set_qos_map_supported = 1;
>   break;
> + case NL80211_CMD_UPDATE_FT_IES:
> + info->update_ft_ies_supported = 1;
> + break;
>   }
>   }
>  }
> @@ -912,6 +916,9 @@ static int wpa_driver_nl80211_get_info(struct wpa_driver_nl80211_data *drv,
>   drv->capa.max_sched_scan_plan_iterations = 0;
>   }
>
> + if (info->update_ft_ies_supported)
> + drv->capa.flags |= WPA_DRIVER_FLAGS_UPDATE_FT_IES;
> +
>   return 0;
>  }
>
> diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c
> index aa7e1d09a..911727e05 100644
> --- a/wpa_supplicant/wpa_supplicant.c
> +++ b/wpa_supplicant/wpa_supplicant.c
> @@ -1458,6 +1458,10 @@ int wpa_supplicant_set_suites(struct wpa_supplicant *wpa_s,
>   if (!(wpa_s->drv_flags & WPA_DRIVER_FLAGS_SAE))
>   sel &= ~(WPA_KEY_MGMT_SAE | WPA_KEY_MGMT_FT_SAE);
>  #endif /* CONFIG_SAE */
> +#ifdef CONFIG_IEEE80211R
> + if (!(wpa_s->drv_flags & (WPA_DRIVER_FLAGS_SME | WPA_DRIVER_FLAGS_UPDATE_FT_IES)))
> + sel &= ~WPA_KEY_MGMT_FT;
> +#endif /* CONFIG_IEEE80211R */
>   if (0) {
>  #ifdef CONFIG_IEEE80211R
>  #ifdef CONFIG_SHA384
>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.