Pārlūkot izejas kodu

qcacmn: Trigger Self Recovery on link_switch timeout

Currently, on link switch timeout recovery is not triggered
due to which issues may come later and impact FW also.

Fix is to trigger self recovery on timeout.

Change-Id: I6c81c2da9df39ae96a6d8b0e2ce1c22507cf777a
CRs-Fixed: 3625653
Sheenam Monga 1 gadu atpakaļ
vecāks
revīzija
13e4f87d48
1 mainītis faili ar 23 papildinājumiem un 0 dzēšanām
  1. 23 0
      umac/mlo_mgr/src/wlan_mlo_mgr_link_switch.c

+ 23 - 0
umac/mlo_mgr/src/wlan_mlo_mgr_link_switch.c

@@ -819,6 +819,28 @@ mlo_mgr_start_link_switch(struct wlan_objmgr_vdev *vdev,
 	return status;
 }
 
+/**
+ * mlo_mgr_trigger_recovery_on_link_switch_timeout() - trigger panic on link
+ * switch timeout
+ * @vdev: vdev pointer
+ *
+ * Return: void
+ */
+static void
+mlo_mgr_trigger_recovery_on_link_switch_timeout(struct wlan_objmgr_vdev *vdev)
+{
+	struct wlan_objmgr_psoc *psoc;
+
+	psoc = wlan_vdev_get_psoc(vdev);
+	if (!psoc)
+		return;
+
+	if (qdf_is_recovering() || qdf_is_fw_down())
+		return;
+
+	qdf_trigger_self_recovery(psoc, QDF_ACTIVE_LIST_TIMEOUT);
+}
+
 static QDF_STATUS
 mlo_mgr_ser_link_switch_cb(struct wlan_serialization_command *cmd,
 			   enum wlan_serialization_cb_reason reason)
@@ -852,6 +874,7 @@ mlo_mgr_ser_link_switch_cb(struct wlan_serialization_command *cmd,
 		break;
 	case WLAN_SER_CB_ACTIVE_CMD_TIMEOUT:
 		mlo_err("Link switch active cmd timeout");
+		mlo_mgr_trigger_recovery_on_link_switch_timeout(vdev);
 		break;
 	default:
 		QDF_ASSERT(0);