mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-12-21 11:52:34 +01:00
station: don't allow FT-over-Air without offchannel support
If CMD_REMAIN_ON_CHANNEL isn't supported, don't allow FT-over-Air
This commit is contained in:
parent
0c228f4465
commit
574b0d80dc
@ -2105,7 +2105,8 @@ static void station_early_neighbor_report_cb(struct netdev *netdev, int err,
|
|||||||
&station->roam_freqs);
|
&station->roam_freqs);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool station_can_fast_transition(struct handshake_state *hs,
|
static bool station_can_fast_transition(struct station *station,
|
||||||
|
struct handshake_state *hs,
|
||||||
struct scan_bss *bss)
|
struct scan_bss *bss)
|
||||||
{
|
{
|
||||||
uint16_t mdid;
|
uint16_t mdid;
|
||||||
@ -2133,6 +2134,16 @@ static bool station_can_fast_transition(struct handshake_state *hs,
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* FT-over-Air in its current form relies on CMD_REMAIN_ON_CHANNEL. Some
|
||||||
|
* drivers do not support this so only allow over-DS if this is the case
|
||||||
|
*/
|
||||||
|
if (!(hs->mde[4] & 1) &&
|
||||||
|
!wiphy_supports_cmd_offchannel(station->wiphy)) {
|
||||||
|
l_debug("FT-over-Air needs offchannel, using reassociation");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2596,7 +2607,7 @@ static bool station_try_next_transition(struct station *station,
|
|||||||
station->ap_directed_roaming = false;
|
station->ap_directed_roaming = false;
|
||||||
|
|
||||||
/* Can we use Fast Transition? */
|
/* Can we use Fast Transition? */
|
||||||
if (station_can_fast_transition(hs, bss) && !no_ft)
|
if (station_can_fast_transition(station, hs, bss) && !no_ft)
|
||||||
return station_fast_transition(station, bss);
|
return station_fast_transition(station, bss);
|
||||||
|
|
||||||
/* Non-FT transition */
|
/* Non-FT transition */
|
||||||
|
Loading…
Reference in New Issue
Block a user