浏览代码

qcacmn: Fix MLO global shared memory parsing

Fix issues in MLO global shared memory parsing.

CRs-Fixed: 3111721
Change-Id: Iba229e5c5176c4d1b0ad6a2a676c0cce8488a5c0
Edayilliam Jayadev 3 年之前
父节点
当前提交
44b985cc97
共有 1 个文件被更改,包括 13 次插入4 次删除
  1. 13 4
      target_if/init_deinit/src/mlo_global_h_shmem_arena.c

+ 13 - 4
target_if/init_deinit/src/mlo_global_h_shmem_arena.c

@@ -157,6 +157,7 @@ extract_mlo_glb_rx_reo_per_link_info_tlv(
 	uint32_t tlv_len, tlv_tag;
 	int len;
 	uint8_t *fw_consumed;
+	int parsed_bytes;
 
 	qdf_assert_always(data);
 	qdf_assert_always(link_info);
@@ -176,25 +177,32 @@ extract_mlo_glb_rx_reo_per_link_info_tlv(
 	 * Get the pointer to the fw_consumed snapshot with in the TLV.
 	 * Note that snapshots are nested TLVs within link_sanpshot_info TLV.
 	 */
+	data += qdf_offsetof(mlo_glb_rx_reo_per_link_snapshot_info,
+			     fw_consumed);
 	fw_consumed = (uint8_t *)get_field_pointer_in_tlv(ptlv, fw_consumed,
 							  tlv_len);
 	remaining_len -= qdf_offsetof(mlo_glb_rx_reo_per_link_snapshot_info,
 				      fw_consumed);
+	parsed_bytes = qdf_offsetof(mlo_glb_rx_reo_per_link_snapshot_info,
+				    fw_consumed);
 
 	/* extract fw_consumed snapshot */
-	len = extract_mgmt_rx_reo_snapshot_tlv(fw_consumed, remaining_len,
+	len = extract_mgmt_rx_reo_snapshot_tlv(data, remaining_len,
 					       &link_info->fw_consumed);
 	validate_parsed_bytes_advance_data_pointer(len, data, remaining_len);
+	parsed_bytes += len;
 
 	/* extract fw_forwarded snapshot */
-	len = extract_mgmt_rx_reo_snapshot_tlv(fw_consumed, remaining_len,
+	len = extract_mgmt_rx_reo_snapshot_tlv(data, remaining_len,
 					       &link_info->fw_forwarded);
 	validate_parsed_bytes_advance_data_pointer(len, data, remaining_len);
+	parsed_bytes += len;
 
 	/* extract hw_forwarded snapshot */
-	len = extract_mgmt_rx_reo_snapshot_tlv(fw_consumed, remaining_len,
+	len = extract_mgmt_rx_reo_snapshot_tlv(data, remaining_len,
 					       &link_info->hw_forwarded);
 	validate_parsed_bytes_advance_data_pointer(len, data, remaining_len);
+	parsed_bytes += len;
 
 	/**
 	 * Return the length of link_sanpshot_info TLV itself as the snapshots
@@ -715,7 +723,8 @@ static int parse_mlo_glb_h_shmem_arena(
 	uint8_t *data, size_t remaining_len,
 	struct wlan_host_mlo_glb_h_shmem_arena_ctx *shmem_arena_ctx)
 {
-	int parsed_bytes, len;
+	int parsed_bytes;
+	int len;
 
 	qdf_assert_always(data);
 	qdf_assert_always(shmem_arena_ctx);