From 4f06ebfb481e9f9cd275e6847f50a228dd5e19ab Mon Sep 17 00:00:00 2001 From: Utkarsh Bhatnagar Date: Fri, 2 Apr 2021 13:56:45 +0530 Subject: [PATCH] qcacld-3.0: Set ldpc for more than 20 Mhz TDLS link If ldpc bit is not set in case AP width more than 20 Mhz, it may cause crash. So, force set LDPC coding in such cases. Also, force set LDPC if peer supports MCS 10 and 11. Change-Id: I14bb4b56d0efb660ad19587b319badfac9083f21 CRs-Fixed: 2915086 --- core/mac/src/pe/lim/lim_process_tdls.c | 18 +++++++++++++++++- core/mac/src/pe/lim/lim_utils.c | 4 ++-- core/mac/src/pe/lim/lim_utils.h | 3 +++ 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/core/mac/src/pe/lim/lim_process_tdls.c b/core/mac/src/pe/lim/lim_process_tdls.c index 1ceabc755778..90aed564d187 100644 --- a/core/mac/src/pe/lim/lim_process_tdls.c +++ b/core/mac/src/pe/lim/lim_process_tdls.c @@ -1004,11 +1004,17 @@ lim_tdls_populate_dot11f_he_caps(struct mac_context *mac, *((uint16_t *)pDot11f->tx_he_mcs_map_80_80) = uHECapInfo.he_cap.tx_he_mcs_map_80_80; } - lim_log_he_cap(mac, pDot11f); return QDF_STATUS_SUCCESS; } +static void lim_tdls_check_and_force_he_ldpc_cap(struct pe_session *pe_session, + tDphHashNode *sta) +{ + if (pe_session && sta->he_config.present) + lim_check_and_force_he_ldpc_cap(pe_session, &sta->he_config); +} + static void lim_tdls_update_node_he_caps(struct mac_context *mac, struct tdls_add_sta_req *add_sta_req, tDphHashNode *sta, @@ -1028,6 +1034,8 @@ static void lim_tdls_update_node_he_caps(struct mac_context *mac, if (pe_session && sta->he_config.present) lim_tdls_set_he_chan_width(&sta->he_config, pe_session); + + lim_log_he_cap(mac, &sta->he_config); } #else @@ -1072,6 +1080,12 @@ static void lim_tdls_update_node_he_caps(struct mac_context *mac, struct pe_session *pe_session) { } + +static void lim_tdls_check_and_force_he_ldpc_cap(struct pe_session *pe_session, + tDphHashNode *sta) +{ +} + #endif /* @@ -2837,6 +2851,8 @@ static void lim_tdls_update_hash_node_info(struct mac_context *mac, add_sta_req->ht_cap.mcsset, pe_session, pVhtCaps); + lim_tdls_check_and_force_he_ldpc_cap(pe_session, sta); + /* TDLS Dummy AddSTA does not have right capability , is it OK ?? */ sta->mlmStaContext.capabilityInfo = diff --git a/core/mac/src/pe/lim/lim_utils.c b/core/mac/src/pe/lim/lim_utils.c index 48565121eedf..eb12074e23b9 100644 --- a/core/mac/src/pe/lim/lim_utils.c +++ b/core/mac/src/pe/lim/lim_utils.c @@ -6681,8 +6681,8 @@ bool lim_check_he_80_mcs11_supp(struct pe_session *session, * Return: None */ -static void lim_check_and_force_he_ldpc_cap(struct pe_session *session, - tDot11fIEhe_cap *he_cap) +void lim_check_and_force_he_ldpc_cap(struct pe_session *session, + tDot11fIEhe_cap *he_cap) { if (!he_cap->ldpc_coding && (session->ch_width > CH_WIDTH_20MHZ || diff --git a/core/mac/src/pe/lim/lim_utils.h b/core/mac/src/pe/lim/lim_utils.h index 1d57daf54f7e..3881283f355a 100644 --- a/core/mac/src/pe/lim/lim_utils.h +++ b/core/mac/src/pe/lim/lim_utils.h @@ -1231,6 +1231,9 @@ void lim_log_he_cap(struct mac_context *mac, tDot11fIEhe_cap *he_cap); bool lim_check_he_80_mcs11_supp(struct pe_session *session, tDot11fIEhe_cap *he_cap); +void lim_check_and_force_he_ldpc_cap(struct pe_session *session, + tDot11fIEhe_cap *he_cap); + /** * lim_update_stads_he_caps() - Copy HE capability into STA DPH hash table entry * @mac_ctx: pointer to mac context