mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-12-22 13:02:44 +01:00
wiphy: add fils_hint to wiphy_can_connect
A prior commit refactored the AKM selection in wiphy.c. This ended up breaking FILS tests due to the hard coding of a false fils_hint in wiphy_select_akm. Since our FILS tests only advertise FILS AKMs wiphy_can_connect would return false for these networks. Similar to wiphy_select_akm, add a fils hint parameter to wiphy_can_connect and pass that down directly to wiphy_select_akm.
This commit is contained in:
parent
bba47527d3
commit
9d9c516596
@ -768,6 +768,7 @@ struct scan_bss *network_bss_select(struct network *network,
|
||||
struct wiphy *wiphy = station_get_wiphy(network->station);
|
||||
const struct l_queue_entry *bss_entry;
|
||||
struct scan_bss *candidate = NULL;
|
||||
bool fils_hint = network_has_erp_identity(network);
|
||||
|
||||
for (bss_entry = l_queue_get_entries(bss_list); bss_entry;
|
||||
bss_entry = bss_entry->next) {
|
||||
@ -776,7 +777,7 @@ struct scan_bss *network_bss_select(struct network *network,
|
||||
switch (network_get_security(network)) {
|
||||
case SECURITY_PSK:
|
||||
case SECURITY_8021X:
|
||||
if (!wiphy_can_connect(wiphy, bss))
|
||||
if (!wiphy_can_connect(wiphy, bss, fils_hint))
|
||||
continue;
|
||||
/* fall through */
|
||||
case SECURITY_NONE:
|
||||
|
@ -1890,6 +1890,7 @@ static bool station_roam_scan_notify(int err, struct l_queue *bss_list,
|
||||
uint16_t mdid;
|
||||
enum security orig_security, security;
|
||||
bool seen = false;
|
||||
bool fils_hint = network_has_erp_identity(network);
|
||||
|
||||
if (err) {
|
||||
station_roam_failed(station);
|
||||
@ -1946,7 +1947,7 @@ static bool station_roam_scan_notify(int err, struct l_queue *bss_list,
|
||||
|
||||
seen = true;
|
||||
|
||||
if (!wiphy_can_connect(station->wiphy, bss))
|
||||
if (!wiphy_can_connect(station->wiphy, bss, fils_hint))
|
||||
goto next;
|
||||
|
||||
if (blacklist_contains_bss(bss->addr))
|
||||
|
@ -397,7 +397,8 @@ const struct scan_freq_set *wiphy_get_supported_freqs(
|
||||
return wiphy->supported_freqs;
|
||||
}
|
||||
|
||||
bool wiphy_can_connect(struct wiphy *wiphy, struct scan_bss *bss)
|
||||
bool wiphy_can_connect(struct wiphy *wiphy, struct scan_bss *bss,
|
||||
bool fils_hint)
|
||||
{
|
||||
struct ie_rsn_info rsn_info;
|
||||
int r;
|
||||
@ -416,7 +417,7 @@ bool wiphy_can_connect(struct wiphy *wiphy, struct scan_bss *bss)
|
||||
rsn_info.group_management_cipher))
|
||||
return false;
|
||||
|
||||
return wiphy_select_akm(wiphy, bss, false);
|
||||
return wiphy_select_akm(wiphy, bss, fils_hint);
|
||||
} else if (r != -ENOENT)
|
||||
return false;
|
||||
|
||||
|
@ -78,7 +78,8 @@ const char *wiphy_get_path(struct wiphy *wiphy);
|
||||
uint32_t wiphy_get_supported_bands(struct wiphy *wiphy);
|
||||
const struct scan_freq_set *wiphy_get_supported_freqs(
|
||||
const struct wiphy *wiphy);
|
||||
bool wiphy_can_connect(struct wiphy *wiphy, struct scan_bss *bss);
|
||||
bool wiphy_can_connect(struct wiphy *wiphy, struct scan_bss *bss,
|
||||
bool fils_hint);
|
||||
bool wiphy_supports_cmds_auth_assoc(struct wiphy *wiphy);
|
||||
bool wiphy_can_randomize_mac_addr(struct wiphy *wiphy);
|
||||
bool wiphy_rrm_capable(struct wiphy *wiphy);
|
||||
|
Loading…
Reference in New Issue
Block a user