Selaa lähdekoodia

qcacmn: Fill peer assoc mlo params in peer assoc request

Fill peer assoc mlo params in peer assoc request command.
Also add definitions to the WMI_SERVICE_11BE.

Change-Id: Ied7959e022ee27f3bd698b84dc801491175f85b3
CRs-Fixed: 2934417
Bapiraju Alla 4 vuotta sitten
vanhempi
sitoutus
17f12e5b39

+ 5 - 1
utils/host_diag_log/inc/host_diag_core_event.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014-2020 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2014-2021 The Linux Foundation. All rights reserved.
  *
  * Permission to use, copy, modify, and/or distribute this software for
  * any purpose with or without fee is hereby granted, provided that the
@@ -192,6 +192,10 @@ enum mgmt_dot11_mode {
 	DOT11_MODE_AUTO = 0x09,
 	DOT11_MODE_11AX = 0x0a,
 	DOT11_MODE_11AX_ONLY = 0x0b,
+#ifdef WLAN_FEATURE_11BE
+	DOT11_MODE_11BE = 0x0c,
+	DOT11_MODE_11BE_ONLY = 0x0d,
+#endif
 	DOT11_MODE_MAX = 0xff,
 };
 

+ 3 - 0
wmi/inc/wmi_unified_param.h

@@ -5186,6 +5186,9 @@ typedef enum {
 	wmi_service_dcs_awgn_int_support,
 #ifdef WLAN_FEATURE_IGMP_OFFLOAD
 	wmi_service_igmp_offload_support,
+#endif
+#ifdef WLAN_FEATURE_11BE
+	wmi_service_11be,
 #endif
 	wmi_services_max,
 } wmi_conv_service_ids;

+ 34 - 6
wmi/src/wmi_unified_tlv.c

@@ -2641,14 +2641,39 @@ static inline void update_peer_flags_tlv_ehtinfo(
 
 #ifdef WLAN_FEATURE_11BE
 static
-uint32_t wmi_eht_rate_set_len(struct peer_assoc_params *param)
+uint32_t wmi_eht_peer_assoc_params_len(struct peer_assoc_params *param)
 {
-	return (sizeof(wmi_he_rate_set) * param->peer_eht_mcs_count
-		+ WMI_TLV_HDR_SIZE);
+	return (sizeof(wmi_peer_assoc_mlo_params) + WMI_TLV_HDR_SIZE) +
+			(sizeof(wmi_he_rate_set) * param->peer_eht_mcs_count
+			 + WMI_TLV_HDR_SIZE);
+}
+
+static void wmi_populate_service_11be(uint32_t *wmi_service)
+{
+	wmi_service[wmi_service_11be] = WMI_SERVICE_11BE;
+}
+
+static uint32_t wmi_update_peer_assoc_mlo_params(uint8_t *buf_ptr)
+{
+	WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC,
+		       sizeof(wmi_peer_assoc_mlo_params));
+	WMITLV_SET_HDR(buf_ptr + WMI_TLV_HDR_SIZE,
+		       WMITLV_TAG_STRUC_wmi_peer_assoc_mlo_params,
+		       WMITLV_GET_STRUCT_TLVLEN(wmi_peer_assoc_mlo_params));
+	return WMI_TLV_HDR_SIZE + sizeof(wmi_peer_assoc_mlo_params);
 }
 #else
 static
-uint32_t wmi_eht_rate_set_len(struct peer_assoc_params *param)
+uint32_t wmi_eht_peer_assoc_params_len(struct peer_assoc_params *param)
+{
+	return 0;
+}
+
+static void wmi_populate_service_11be(uint32_t *wmi_service)
+{
+}
+
+static uint32_t wmi_update_peer_assoc_mlo_params(uint8_t *buf_ptr)
 {
 	return 0;
 }
@@ -2686,7 +2711,7 @@ static QDF_STATUS send_peer_assoc_cmd_tlv(wmi_unified_t wmi_handle,
 		sizeof(wmi_vht_rate_set) +
 		(sizeof(wmi_he_rate_set) * param->peer_he_mcs_count
 		+ WMI_TLV_HDR_SIZE)
-		+ wmi_eht_rate_set_len(param);
+		+ wmi_eht_peer_assoc_params_len(param);
 
 	buf = wmi_buf_alloc(wmi_handle, len);
 	if (!buf)
@@ -2804,7 +2829,7 @@ static QDF_STATUS send_peer_assoc_cmd_tlv(wmi_unified_t wmi_handle,
 			 QDF_MAC_ADDR_REF(param->peer_mac));
 	}
 
-	wmi_debug("vdev_id %d associd %d peer_flags %x rate_caps %x "
+	pr_err("vdev_id %d associd %d peer_flags %x rate_caps %x "
 		 "peer_caps %x listen_intval %d ht_caps %x max_mpdu %d "
 		 "nss %d phymode %d peer_mpdu_density %d "
 		 "cmd->peer_vht_caps %x "
@@ -2823,6 +2848,8 @@ static QDF_STATUS send_peer_assoc_cmd_tlv(wmi_unified_t wmi_handle,
 		 cmd->peer_he_cap_phy[2],
 		 cmd->peer_bw_rxnss_override);
 
+	buf_ptr += wmi_update_peer_assoc_mlo_params(buf_ptr);
+
 	update_peer_flags_tlv_ehtinfo(cmd, param, buf_ptr);
 
 	wmi_mtrace(WMI_PEER_ASSOC_CMDID, cmd->vdev_id, 0);
@@ -16078,6 +16105,7 @@ static void populate_tlv_service(uint32_t *wmi_service)
 #endif
 	wmi_service[wmi_service_dcs_awgn_int_support] =
 			WMI_SERVICE_DCS_AWGN_INT_SUPPORT;
+	wmi_populate_service_11be(wmi_service);
 }
 
 /**