3
0
mirror of https://git.kernel.org/pub/scm/network/wireless/iwd.git synced 2024-11-26 02:19:26 +01:00

ft: set OCVC false for FT-over-DS

FT-over-DS cannot use OCV due to how the kernel works. This means
we could connect initially with OCVC set, but a FT-over-DS attempt
needs to unset OCVC. Set OCVC false when rebuilding the RSNE for
reassociation.
This commit is contained in:
James Prestwood 2021-09-28 09:45:53 -07:00 committed by Denis Kenzior
parent bc0375fb30
commit c4c14f3ac0

View File

@ -43,6 +43,8 @@ struct ft_sm {
ft_get_oci get_oci; ft_get_oci get_oci;
void *user_data; void *user_data;
bool over_ds : 1;
}; };
/* /*
@ -236,6 +238,10 @@ static int ft_tx_reassociate(struct ft_sm *ft)
rsn_info.num_pmkids = 1; rsn_info.num_pmkids = 1;
rsn_info.pmkids = hs->pmk_r1_name; rsn_info.pmkids = hs->pmk_r1_name;
/* Always set OCVC false for FT-over-DS */
if (ft->over_ds)
rsn_info.ocvc = false;
rsne = alloca(256); rsne = alloca(256);
ie_build_rsne(&rsn_info, rsne); ie_build_rsne(&rsn_info, rsne);
@ -929,6 +935,7 @@ struct auth_proto *ft_over_ds_sm_new(struct handshake_state *hs,
ft->tx_assoc = tx_assoc; ft->tx_assoc = tx_assoc;
ft->hs = hs; ft->hs = hs;
ft->user_data = user_data; ft->user_data = user_data;
ft->over_ds = true;
ft->ap.rx_associate = ft_rx_associate; ft->ap.rx_associate = ft_rx_associate;
ft->ap.start = ft_over_ds_start; ft->ap.start = ft_over_ds_start;