Эх сурвалжийг харах

qcacmn: Ingress frame logging changes in Mgmt Rx REO

Add new fields to incoming management frame logging.

CRs-Fixed: 3081845
Change-Id: Ie549078066de91d87701fa4ee588df4c7840e9ec
Edayilliam Jayadev 3 жил өмнө
parent
commit
9a5fdf9dfb

+ 11 - 3
umac/cmn_services/mgmt_txrx/core/src/wlan_mgmt_txrx_rx_reo.c

@@ -1784,12 +1784,14 @@ wlan_mgmt_rx_reo_update_host_snapshot(struct wlan_objmgr_pdev *pdev,
  * the reorder algorithm.
  * @reo_ctx: management rx reorder context
  * @desc: Pointer to frame descriptor
+ * @is_queued: Indicates whether this frame is queued to reorder list
  *
  * Return: QDF_STATUS of operation
  */
 static QDF_STATUS
 mgmt_rx_reo_log_ingress_frame(struct mgmt_rx_reo_context *reo_ctx,
-			      struct mgmt_rx_reo_frame_descriptor *desc)
+			      struct mgmt_rx_reo_frame_descriptor *desc,
+			      bool is_queued)
 {
 	struct reo_ingress_debug_info *ingress_frame_debug_info;
 	struct reo_ingress_debug_frame_info *cur_frame_debug_info;
@@ -1811,6 +1813,10 @@ mgmt_rx_reo_log_ingress_frame(struct mgmt_rx_reo_context *reo_ctx,
 	cur_frame_debug_info->type = desc->type;
 	cur_frame_debug_info->wait_count = desc->wait_count;
 	cur_frame_debug_info->ingress_timestamp = desc->ingress_timestamp;
+	cur_frame_debug_info->is_queued = is_queued;
+	cur_frame_debug_info->is_stale = desc->is_stale;
+	cur_frame_debug_info->ts_last_released_frame =
+				reo_ctx->reo_list.ts_last_released_frame;
 
 	ingress_frame_debug_info->next_index++;
 	ingress_frame_debug_info->next_index %=
@@ -1824,12 +1830,14 @@ mgmt_rx_reo_log_ingress_frame(struct mgmt_rx_reo_context *reo_ctx,
  * the reorder algorithm.
  * @reo_ctx: management rx reorder context
  * @desc: Pointer to frame descriptor
+ * @is_queued: Indicates whether this frame is queued to reorder list
  *
  * Return: QDF_STATUS of operation
  */
 static QDF_STATUS
 mgmt_rx_reo_log_ingress_frame(struct mgmt_rx_reo_context *reo_ctx,
-			      struct mgmt_rx_reo_frame_descriptor *desc)
+			      struct mgmt_rx_reo_frame_descriptor *desc,
+			      bool is_queued)
 {
 	return QDF_STATUS_SUCCESS;
 }
@@ -1981,7 +1989,7 @@ wlan_mgmt_rx_reo_algo_entry(struct wlan_objmgr_pdev *pdev,
 		return QDF_STATUS_E_FAILURE;
 	}
 
-	status = mgmt_rx_reo_log_ingress_frame(reo_ctx, desc);
+	status = mgmt_rx_reo_log_ingress_frame(reo_ctx, desc, *is_queued);
 	if (QDF_IS_STATUS_ERROR(status)) {
 		qdf_spin_unlock(&reo_ctx->reo_algo_entry_lock);
 		return QDF_STATUS_E_FAILURE;

+ 8 - 0
umac/cmn_services/mgmt_txrx/core/src/wlan_mgmt_txrx_rx_reo_i.h

@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2021, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2021 Qualcomm Innovation Center, Inc. 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 above
@@ -378,6 +379,10 @@ struct mgmt_rx_reo_sim_context {
  * @ingress_timestamp: Host time stamp when the frames enters the reorder
  * algorithm
  * @wait_count: Wait count calculated for the current frame
+ * @is_queued: Indicates whether this frame is queued to reorder list
+ * @is_stale: Indicates whether this frame is stale.
+ * @ts_last_released_frame: Stores the global time stamp for the last frame
+ * removed from the reorder list
  */
 struct reo_ingress_debug_frame_info {
 	uint8_t link_id;
@@ -386,6 +391,9 @@ struct reo_ingress_debug_frame_info {
 	enum mgmt_rx_reo_frame_descriptor_type type;
 	uint64_t ingress_timestamp;
 	struct mgmt_rx_reo_wait_count wait_count;
+	bool is_queued;
+	bool is_stale;
+	struct mgmt_rx_reo_global_ts_info ts_last_released_frame;
 };
 
 /**