Prechádzať zdrojové kódy

qcacld-3.0: Don't fallback to 11ac if peer doesn't support MCS 10&11

In 2.4 Ghz, if peer is advertising MCS10/11 in 11ax and doesn't
support LDPC coding then STA downgrades to 11ac but if AP doesn't
advetise MCS 10&11 and LDPC bit is not supported, then STA treats
LDPC as optional in 11ax and would not downgrade to 11ac from 11ax.

Change-Id: I80b4c6615469c21020ed8d671c2d9ec94bd600b4
CRs-Fixed: 2810347
Utkarsh Bhatnagar 4 rokov pred
rodič
commit
7529eea57e

+ 5 - 0
core/mac/src/pe/lim/lim_prop_exts_utils.c

@@ -346,9 +346,14 @@ static inline bool lim_extract_adaptive_11r_cap(uint8_t *ie, uint16_t ie_len)
 static void lim_check_peer_ldpc_and_update(struct pe_session *session,
 				    tSirProbeRespBeacon *beacon_struct)
 {
+	/*
+	 * In 2.4G if AP supports HE till MCS 0-9 we can associate
+	 * with HE mode instead downgrading to 11ac
+	 */
 	if (session->he_capable &&
 	    WLAN_REG_IS_24GHZ_CH_FREQ(session->curr_op_freq) &&
 	    beacon_struct->he_cap.present &&
+	    lim_check_he_80_mcs11_supp(session, &beacon_struct->he_cap) &&
 	    !beacon_struct->he_cap.ldpc_coding) {
 		session->he_capable = false;
 		pe_err("LDPC check failed for HE operation");

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

@@ -6760,11 +6760,12 @@ static bool lim_check_is_bss_greater_than_4_nss_supp(struct pe_session *session,
 	return false;
 }
 
-static bool lim_check_he_80_mcs11_supp(struct pe_session *session,
+bool lim_check_he_80_mcs11_supp(struct pe_session *session,
 				       tDot11fIEhe_cap *he_cap)
 {
 	uint16_t rx_mcs_map;
 	uint16_t tx_mcs_map;
+
 	rx_mcs_map = he_cap->rx_he_mcs_map_lt_80;
 	tx_mcs_map = he_cap->tx_he_mcs_map_lt_80;
 	if ((session->nss == NSS_1x1_MODE) &&

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

@@ -1193,6 +1193,16 @@ void lim_log_he_bss_color(struct mac_context *mac,
  */
 void lim_log_he_cap(struct mac_context *mac, tDot11fIEhe_cap *he_cap);
 
+/**
+ * lim_check_he_80_mcs11_supp() - Check whether MCS 0-11 rates are supported
+ * @session: pointer to PE session
+ * @he_cap: pointer to HE capabilities
+ *
+ * Return: true if MCS 0-11 rates are supported
+ */
+bool lim_check_he_80_mcs11_supp(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