This will be set if the SAE connection requires offloading to work. --- src/wiphy.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/wiphy.c b/src/wiphy.c index 676f236c..35872577 100644 --- a/src/wiphy.c +++ b/src/wiphy.c @@ -126,7 +126,7 @@ enum ie_rsn_cipher_suite wiphy_select_cipher(struct wiphy *wiphy, uint16_t mask) return 0; } -static bool wiphy_can_connect_sae(struct wiphy *wiphy) +static bool wiphy_can_connect_sae(struct wiphy *wiphy, bool *offload) { /* * SAE support in the kernel is a complete mess in that there are 3 @@ -153,8 +153,11 @@ static bool wiphy_can_connect_sae(struct wiphy *wiphy) if (wiphy_has_feature(wiphy, NL80211_FEATURE_SAE)) { /* Case (1) */ - if (wiphy->support_cmds_auth_assoc) + if (wiphy->support_cmds_auth_assoc) { + if (offload) + *offload = false; return true; + } /* * Case (3) @@ -165,8 +168,12 @@ static bool wiphy_can_connect_sae(struct wiphy *wiphy) } else { /* Case (2) */ if (wiphy_has_ext_feature(wiphy, - NL80211_EXT_FEATURE_SAE_OFFLOAD)) + NL80211_EXT_FEATURE_SAE_OFFLOAD)) { + if (offload) + *offload = true; + return true; + } return false; } @@ -234,7 +241,7 @@ enum ie_rsn_akm_suite wiphy_select_akm(struct wiphy *wiphy, goto wpa2_personal; } - if (!wiphy_can_connect_sae(wiphy)) + if (!wiphy_can_connect_sae(wiphy, NULL)) goto wpa2_personal; if (info.akm_suites & @@ -411,7 +418,7 @@ bool wiphy_can_connect(struct wiphy *wiphy, struct scan_bss *bss) switch (rsn_info.akm_suites) { case IE_RSN_AKM_SUITE_SAE_SHA256: case IE_RSN_AKM_SUITE_FT_OVER_SAE_SHA256: - if (!wiphy_can_connect_sae(wiphy)) + if (!wiphy_can_connect_sae(wiphy, NULL)) return false; break; -- 2.26.2