[PATCH 1/1] hostapd: Allow roam from OWE transition to OWE only AP
Vinayak Yadawad
vinayak.yadawad at broadcom.com
Tue Apr 15 21:31:26 PDT 2025
Hi Jouni,
Could you please review our update and provide any suggestions.
Regards,
Vinayak
On Thu, Jan 2, 2025 at 2:28 PM Vinayak Yadawad
<vinayak.yadawad at broadcom.com> wrote:
>
> Hi Jouni,
>
> The scenario is of multiple APs containing both OWE-transition and OWE
> only mode APs in same network. The OWE BSS of transition mode and OWE
> only AP
> is configured with same SSID and roam is attempted between them.
> Initially the STA is connected to OWE-transition AP in OWE mode.
> For e.g: open mode SSID is "SSID_open" and transition mode SSID is
> "SSID1_owe". Now when a roam is triggered to an OWE-only AP with name
> "SSID1_owe", the SSID comparison fails as ssid profile stores open BSS
> SSID (SSID_open). The roam fails with error "No network configuration
> found for the current AP".
> So the current change would help to compare the previous connection
> SSID instead of conf->SSID.
>
> Logs for roam failure from OWE-transition to OWE-only AP:
> 689.959 2125 2125 D wpa_supplicant: wlan0: Associated to a new
> BSS: BSSID=00:90:4c:4c:84:99
> 689.959 2125 2125 D wpa_supplicant: wlan0: Driver-initiated BSS
> selection changed the SSID to G3_Tb_58_AP_ROAM_2G_6_19_owe
> 689.959 2125 2125 D wpa_supplicant: wlan0: Select network based
> on association information
> 689.959 2125 2125 I wpa_supplicant: wlan0: No network
> configuration found for the current AP
> 689.959 2125 2125 D wpa_supplicant: wlan0: Request to
> deauthenticate - bssid=00:90:4c:4c:84:99
> pending_bssid=00:00:00:00:00:00 reason=3 (DEAUTH_LEAVING)
> state=ASSOCIATED valid_links=0x0 ap_mld_addr=00:00:00:00:00:00
> 689.959 2125 2125 D wpa_supplicant: TDLS: Tear down peers
> 689.959 2125 2125 D wpa_supplicant:
> wpa_driver_nl80211_disconnect(reason_code=3)
> 690.388 2125 2125 I wpa_supplicant: nl80211: send_event_marker
> failed: Source based routing not supported
> 690.388 2125 2125 D wpa_supplicant: wlan0: Event DEAUTH (11) received
> 690.388 2125 2125 D wpa_supplicant: wlan0: Deauthentication notification
> 690.388 2125 2125 D wpa_supplicant: wlan0: * reason 3
> (DEAUTH_LEAVING) locally_generated=1
> 690.388 2125 2125 D wpa_supplicant: Deauthentication frame IE(s)
> - hexdump(len=0): [NULL]
> 690.388 2125 2125 I wpa_supplicant: wlan0:
> CTRL-EVENT-DISCONNECTED bssid=00:90:4c:4c:84:99 reason=3
> locally_generated=1
>
> Regards,
> Vinayak
>
>
> On Fri, Dec 27, 2024 at 12:34 AM Jouni Malinen <j at w1.fi> wrote:
> >
> > On Fri, Dec 13, 2024 at 02:15:27PM +0530, Vinayak Yadawad wrote:
> > > Currently STA roam works fine in case of OWE only AP to
> > > OWE-transition mode AP. The roam fails when STA is connected
> > > in OWE mode with OWE transition AP to an OWE only AP. In the
> > > OWE transition case, the current_ssid stores only open network
> > > SSID, specific check is required to compare the OWE BSS ssid
> > > from the previous target and new target.
> >
> > The change in owe_trans_ssid() is a clear fix to a recent regression, so
> > I applied that separately. As far as the changes in
> > wpa_supplicant_select_config() are concerned, I'm not completely sure I
> > understood them since the comment about the added OWE transition mode AP
> > to OWE-only AP comparison of the SSID does not seem to match what I
> > would have expected from the actual memcmp(). The SSID of the previous
> > BSS (i.e., the transition mode AP) is a random value that does not match
> > the network profile whereas the SSID of the selected BSS (i.e., OWE-only
> > AP) is the SSID of the network profile. Those are different and as such,
> > the new memcmp() == 0 case would not be met..
> >
> > Would you be able to share a debug log showing what fails without this
> > patch?
> >
> > I did some cleanup while reviewing and trying to understand this and
> > this is what I came up with while still not fully understanding what
> > this trying to do:
> >
> > From: Vinayak Yadawad <vinayak.yadawad at broadcom.com>
> > Date: Fri, 13 Dec 2024 14:15:27 +0530
> > Subject: [PATCH] OWE: Allow roam from OWE transition mode AP to OWE-only AP
> >
> > Currently STA roam works fine in case of OWE only AP to
> > OWE-transition mode AP. The roam fails when STA is connected
> > in OWE mode with OWE transition AP to an OWE only AP. In the
> > OWE transition case, the current_ssid stores only open network
> > SSID, specific check is required to compare the OWE BSS ssid
> > from the previous target and new target.
> >
> > Signed-off-by: Vinayak Yadawad <vinayak.yadawad at broadcom.com>
> > ---
> > wpa_supplicant/events.c | 38 ++++++++++++++++++++++++++++++++------
> > 1 file changed, 32 insertions(+), 6 deletions(-)
> >
> > diff --git a/wpa_supplicant/events.c b/wpa_supplicant/events.c
> > index 279838afa2bf..e7285fcb5cea 100644
> > --- a/wpa_supplicant/events.c
> > +++ b/wpa_supplicant/events.c
> > @@ -226,6 +226,15 @@ static int wpa_supplicant_select_config(struct wpa_supplicant *wpa_s,
> > int res;
> >
> > if (wpa_s->conf->ap_scan == 1 && wpa_s->current_ssid) {
> > +#ifdef CONFIG_OWE
> > + struct wpa_bss *prev_bss;
> > +
> > + /* Remember the current BSS entry before update to a new one to
> > + * allow appropriate comparison in OWE transition mode cases
> > + * below. */
> > + prev_bss = wpa_s->current_bss;
> > +#endif /* CONFIG_OWE */
> > +
> > wpa_supplicant_update_current_bss(wpa_s, wpa_s->bssid);
> >
> > if (wpa_s->current_ssid->ssid_len == 0)
> > @@ -245,12 +254,29 @@ static int wpa_supplicant_select_config(struct wpa_supplicant *wpa_s,
> >
> > #ifdef CONFIG_OWE
> > if ((wpa_s->current_ssid->key_mgmt & WPA_KEY_MGMT_OWE) &&
> > - wpa_s->current_bss &&
> > - (wpa_s->current_bss->flags & WPA_BSS_OWE_TRANSITION) &&
> > - drv_ssid_len == wpa_s->current_bss->ssid_len &&
> > - os_memcmp(drv_ssid, wpa_s->current_bss->ssid,
> > - drv_ssid_len) == 0)
> > - return 0; /* current profile still in use */
> > + wpa_s->current_bss) {
> > + /* Handle the case where the selected BSS uses OWE
> > + * transition mode */
> > + if ((wpa_s->current_bss->flags &
> > + WPA_BSS_OWE_TRANSITION) &&
> > + drv_ssid_len == wpa_s->current_bss->ssid_len &&
> > + os_memcmp(drv_ssid, wpa_s->current_bss->ssid,
> > + drv_ssid_len) == 0)
> > + return 0; /* current profile still in use */
> > +
> > + /* Handle the case where the selected BSS uses OWE-only
> > + * mode and the previous one uses OWE transition mode.
> > + * The connected SSID would be that of the OWE network
> > + * where as current_ssid stores the open network SSID.
> > + */
> > + if (prev_bss &&
> > + (prev_bss->flags & WPA_BSS_OWE_TRANSITION) &&
> > + (prev_bss->ssid_len ==
> > + wpa_s->current_bss->ssid_len) &&
> > + os_memcmp(prev_bss->ssid, wpa_s->current_bss->ssid,
> > + wpa_s->current_bss->ssid_len) == 0)
> > + return 0; /* current profile still in use */
> > + }
> > #endif /* CONFIG_OWE */
> >
> > wpa_msg(wpa_s, MSG_DEBUG,
> > --
> > 2.43.0
> >
> > --
> > Jouni Malinen PGP id EFC895FA
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4205 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://lists.infradead.org/pipermail/hostap/attachments/20250416/e244c42a/attachment.p7s>
More information about the Hostap
mailing list