diff --git a/core/mac/src/pe/lim/lim_utils.c b/core/mac/src/pe/lim/lim_utils.c index cbdb90c0fc54..a29884caaeaf 100644 --- a/core/mac/src/pe/lim/lim_utils.c +++ b/core/mac/src/pe/lim/lim_utils.c @@ -6740,7 +6740,7 @@ void lim_intersect_ap_he_caps(struct pe_session *session, struct bss_params *add tDot11fIEhe_cap *session_he = &session->he_config; tDot11fIEhe_cap *peer_he = &add_bss->staContext.he_config; - if (assoc_rsp) + if (assoc_rsp && assoc_rsp->he_cap.present) rcvd_he = &assoc_rsp->he_cap; else rcvd_he = &beacon->he_cap; @@ -6860,13 +6860,17 @@ void lim_update_stads_he_caps(struct mac_context *mac_ctx, he_cap = &assoc_rsp->he_cap; - if (assoc_rsp->he_cap.present) + if (assoc_rsp->he_cap.present) { he_cap = &assoc_rsp->he_cap; - /* Use beacon HE caps if assoc resp doesn't have he caps */ - else if (beacon && beacon->he_cap.present) + } else if (beacon && beacon->he_cap.present) { + /* Use beacon HE caps if assoc resp doesn't have he caps */ + pe_debug("he_caps missing in assoc rsp"); he_cap = &beacon->he_cap; - else + qdf_mem_copy(&assoc_rsp->he_cap, &beacon->he_cap, + sizeof(*he_cap)); + } else { return; + } sta_ds->mlmStaContext.he_capable = he_cap->present;