Re: [PATCH] SAE: nl80211 send mlme frame fail (external auth)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



When external authentication is used, the station send mlme frame (auth)
to driver that can't get the frequency (bss->freq) after hostap.git commit
b6f8b5a9 ("nl80211: Update freq only when CSA completes").

This patch will use the assoc_freq to send the mlem frame,
when external authentication is used.

Change-Id: Ic1629e2bba655645ada942d425f94dff7d90fbd7
Signed-off-by: Ouden Lin <ouden.biz@xxxxxxxxx>
---
 src/drivers/driver_nl80211.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
index 64bea49e1..fa0a73094 100644
--- a/src/drivers/driver_nl80211.c
+++ b/src/drivers/driver_nl80211.c
@@ -3747,6 +3747,20 @@ static int wpa_driver_nl80211_send_mlme(struct
i802_bss *bss, const u8 *data,
  encrypt = 0;
  }

+ if (freq == 0 && drv->nlmode == NL80211_IFTYPE_STATION &&
+ ((drv->capa.flags & WPA_DRIVER_FLAGS_SAE) &&
+ !(drv->capa.flags & WPA_DRIVER_FLAGS_SME)) &&
+ WLAN_FC_GET_TYPE(fc) == WLAN_FC_TYPE_MGMT &&
+ WLAN_FC_GET_STYPE(fc) == WLAN_FC_STYPE_AUTH) {
+
+ if (freq == 0) {
+ freq = nl80211_get_assoc_freq(drv);
+ wpa_printf(MSG_DEBUG,
+    "nl80211: send_mlme - Use assoc_freq=%u for external auth",
+    freq);
+ }
+ }
+
  if (freq == 0 && drv->nlmode == NL80211_IFTYPE_ADHOC) {
  freq = nl80211_get_assoc_freq(drv);
  wpa_printf(MSG_DEBUG,
-- 
2.21.1 (Apple Git-122.3)

On Thu, Jan 16, 2020 at 5:12 PM Ouden.Biz Lin <ouden.biz@xxxxxxxxx> wrote:
>
> When external authentication is used, the station send mlme frame (auth)
> to driver that can't get the frequency (bss->freq) after hostap.git commit
> b6f8b5a9 ("nl80211: Update freq only when CSA completes").
>
> This patch will use the assoc_freq to send the mlem frame,
> when external authentication is used.
>
> Change-Id: Ic1629e2bba655645ada942d425f94dff7d90fbd7
> Signed-off-by: Ouden Lin <ouden.biz@xxxxxxxxx>
> ---
>  src/drivers/driver_nl80211.c | 35 +++++++++++++++++++++++++++++++++++
>  1 file changed, 35 insertions(+)
>
> diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
> index 64bea49e1..4741f23b8 100644
> --- a/src/drivers/driver_nl80211.c
> +++ b/src/drivers/driver_nl80211.c
> @@ -3722,6 +3722,27 @@ static int wpa_driver_nl80211_send_mlme(struct
> i802_bss *bss, const u8 *data,
>   goto send_frame_cmd;
>   }
>
> + if ((is_sta_interface(drv->nlmode) ||
> +      drv->nlmode == NL80211_IFTYPE_P2P_DEVICE) &&
> +     WLAN_FC_GET_TYPE(fc) == WLAN_FC_TYPE_MGMT &&
> +     WLAN_FC_GET_STYPE(fc) == WLAN_FC_STYPE_PROBE_RESP) {
> + /*
> + * The use of last_mgmt_freq is a bit of a hack,
> + * but it works due to the single-threaded nature
> + * of wpa_supplicant.
> + */
> + if (freq == 0) {
> + wpa_printf(MSG_DEBUG, "nl80211: Use last_mgmt_freq=%d",
> +    drv->last_mgmt_freq);
> + freq = drv->last_mgmt_freq;
> + }
> + wait_time = 0;
> + use_cookie = 0;
> + no_cck = 1;
> + offchanok = 1;
> + goto send_frame_cmd;
> + }
> +
>   if (drv->device_ap_sme && is_ap_interface(drv->nlmode)) {
>   if (freq == 0) {
>   wpa_printf(MSG_DEBUG, "nl80211: Use bss->freq=%d",
> @@ -3747,6 +3768,20 @@ static int wpa_driver_nl80211_send_mlme(struct
> i802_bss *bss, const u8 *data,
>   encrypt = 0;
>   }
>
> + if (freq == 0 && drv->nlmode == NL80211_IFTYPE_STATION &&
> + ((drv->capa.flags & WPA_DRIVER_FLAGS_SAE) &&
> + !(drv->capa.flags & WPA_DRIVER_FLAGS_SME)) &&
> + WLAN_FC_GET_TYPE(fc) == WLAN_FC_TYPE_MGMT &&
> + WLAN_FC_GET_STYPE(fc) == WLAN_FC_STYPE_AUTH) {
> +
> + if (freq == 0) {
> + freq = nl80211_get_assoc_freq(drv);
> + wpa_printf(MSG_DEBUG,
> +    "nl80211: send_mlme - Use assoc_freq=%u for external auth",
> +    freq);
> + }
> + }
> +
>   if (freq == 0 && drv->nlmode == NL80211_IFTYPE_ADHOC) {
>   freq = nl80211_get_assoc_freq(drv);
>   wpa_printf(MSG_DEBUG,
> --
> 2.21.1 (Apple Git-122.3)

_______________________________________________
Hostap mailing list
Hostap@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/hostap



[Index of Archives]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux