Browse Source

qcacld-3.0: Fill MCS rates of peer for TDLS

Fill MCS rates of peer for TDLS change station.

Change-Id: I9d3306ec6ec2d876dadede60a616b2fcaf46236a
CRs-Fixed: 2886245
Utkarsh Bhatnagar 4 years ago
parent
commit
68961616e9

+ 5 - 1
components/tdls/dispatcher/inc/wlan_tdls_public_structs.h

@@ -773,7 +773,11 @@ struct vhtcap {
 struct hecap {
 	uint8_t mac_cap_info[6];
 	uint8_t phycap_info[11];
-};
+	struct {
+		uint16_t rx_map;
+		uint16_t tx_map;
+	} he_cap_mcs_info;
+} qdf_packed;
 #endif
 
 struct tdls_update_peer_params {

+ 16 - 10
os_if/tdls/src/wlan_cfg80211_tdls.c

@@ -238,24 +238,30 @@ tdls_calc_channels_from_staparams(struct tdls_update_peer_params *req_info,
 }
 
 #ifdef WLAN_FEATURE_11AX
+#define MIN_TDLS_HE_CAP_LEN 21
+
 static void
 wlan_cfg80211_tdls_extract_he_params(struct tdls_update_peer_params *req_info,
 				     struct station_parameters *params)
 {
+	if (params->he_capa_len < MIN_TDLS_HE_CAP_LEN) {
+		osif_debug("he_capa_len %d less than MIN_TDLS_HE_CAP_LEN",
+			   params->he_capa_len);
+		return;
+	}
+
 	if (!params->he_capa) {
 		osif_debug("he_capa not present");
-	} else {
-		qdf_mem_copy(&req_info->he_cap, params->he_capa,
-			     sizeof(struct hecap));
-		if (!params->he_capa_len) {
-			osif_debug("he_capa_len not present");
-		} else {
-			qdf_mem_copy(&req_info->he_cap_len,
-				     &params->he_capa_len,
-				     sizeof(uint8_t));
-		}
+		return;
 	}
+
+	req_info->he_cap_len = params->he_capa_len;
+	qdf_mem_copy(&req_info->he_cap, params->he_capa,
+		     sizeof(struct hecap));
+
+	return;
 }
+
 #else
 static void
 wlan_cfg80211_tdls_extract_he_params(struct tdls_update_peer_params *req_info,