Ver Fonte

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
Utkarsh Bhatnagar há 4 anos atrás
pai
commit
3f913a73f4

+ 17 - 1
core/mac/src/pe/lim/lim_process_tdls.c

@@ -1006,11 +1006,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,
@@ -1030,6 +1036,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
@@ -1074,6 +1082,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
 
 /*
@@ -2853,6 +2867,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 =

+ 2 - 2
core/mac/src/pe/lim/lim_utils.c

@@ -6596,8 +6596,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 ||

+ 3 - 0
core/mac/src/pe/lim/lim_utils.h

@@ -1197,6 +1197,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