Browse Source

qcacmn: Add vdev id to command timeout log

-Add vdev identificaiton information to the
serialization command timeout log message.
-Trigger self recovery API instead of QDF_BUG.

Change-Id: Ic873a6acf5e4a5af95a4a28ffa2b32220a499263
CRs-Fixed: 2297487
Sandeep Puligilla 6 years ago
parent
commit
16ead22d94
1 changed files with 23 additions and 3 deletions
  1. 23 3
      umac/cmn_services/serialization/src/wlan_serialization_utils.c

+ 23 - 3
umac/cmn_services/serialization/src/wlan_serialization_utils.c

@@ -27,6 +27,9 @@
 #include "wlan_objmgr_pdev_obj.h"
 #include "qdf_mc_timer.h"
 #include "wlan_utility.h"
+#ifdef CONFIG_MCL
+#include "qdf_platform.h"
+#endif
 
 QDF_STATUS
 wlan_serialization_put_back_to_global_list(qdf_list_t *queue,
@@ -149,6 +152,18 @@ static QDF_STATUS wlan_serialization_timer_destroy(
 	return status;
 }
 
+#ifdef CONFIG_MCL
+static void wlan_serialization_non_scan_timeout_action(void)
+{
+	qdf_trigger_self_recovery();
+}
+#else
+static void wlan_serialization_non_scan_timeout_action(void)
+{
+	QDF_BUG(0);
+}
+#endif
+
 /**
  * wlan_serialization_generic_timer_callback() - timer callback when timer fire
  * @arg: argument that timer passes to this callback
@@ -164,6 +179,7 @@ static void wlan_serialization_generic_timer_callback(void *arg)
 {
 	struct wlan_serialization_timer *timer = arg;
 	struct wlan_serialization_command *cmd = timer->cmd;
+	uint8_t vdev_id = WLAN_INVALID_VDEV_ID;
 
 	if (!cmd) {
 		serialization_err("command not found");
@@ -171,13 +187,17 @@ static void wlan_serialization_generic_timer_callback(void *arg)
 		return;
 	}
 
-	serialization_err("active cmd timeout for cmd_type[%d] vdev[%pK]",
-			  cmd->cmd_type, cmd->vdev);
+	if (cmd->vdev)
+		vdev_id = wlan_vdev_get_id(cmd->vdev);
+
+	serialization_err("active cmd timeout for cmd_type[%d] vdev_id[%d]",
+			  cmd->cmd_type, vdev_id);
+
 	if (cmd->cmd_cb)
 		cmd->cmd_cb(cmd, WLAN_SER_CB_ACTIVE_CMD_TIMEOUT);
 
 	if (cmd->cmd_type >= WLAN_SER_CMD_NONSCAN)
-		QDF_BUG(0);
+		wlan_serialization_non_scan_timeout_action();
 	/*
 	 * dequeue cmd API will cleanup and destroy the timer. If it fails to
 	 * dequeue command then we have to destroy the timer. It will also call