Pārlūkot izejas kodu

qcacld-3.0: Add logic to restore info when SSR happens

Add logic to check whether the context is SSR or not. If
SSR happens, restore the info which is set by vendor command.

Change-Id: I09da91e68f79e8c28f4474fb6ebe3b56dbe41da2
CRs-Fixed: 3554415
Paul Zhang 2 gadi atpakaļ
vecāks
revīzija
b49fc71fdc
1 mainītis faili ar 16 papildinājumiem un 0 dzēšanām
  1. 16 0
      core/hdd/src/wlan_hdd_main.c

+ 16 - 0
core/hdd/src/wlan_hdd_main.c

@@ -14256,6 +14256,21 @@ QDF_STATUS hdd_adapter_check_duplicate_session(struct hdd_adapter *adapter)
 }
 #endif
 
+static void hdd_restore_info_for_ssr(struct hdd_adapter *adapter)
+{
+	struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
+
+	if (cds_is_driver_recovering()) {
+		/* ssr happens, recover the info */
+		hdd_set_vdev_phy_mode(adapter, adapter->user_phy_mode);
+		wlan_mlme_restore_user_set_link_num(hdd_ctx->psoc);
+	} else {
+		/* intf down/up happens, reset default info */
+		hdd_set_vdev_phy_mode(adapter, QCA_WLAN_VENDOR_PHY_MODE_AUTO);
+		wlan_mlme_clear_user_set_link_num(hdd_ctx->psoc);
+	}
+}
+
 int hdd_start_station_adapter(struct hdd_adapter *adapter)
 {
 	QDF_STATUS status;
@@ -14315,6 +14330,7 @@ int hdd_start_station_adapter(struct hdd_adapter *adapter)
 		wlan_hdd_init_multi_client_info_table(adapter);
 
 	hdd_adapter_set_wlm_client_latency_level(adapter);
+	hdd_restore_info_for_ssr(adapter);
 
 	hdd_exit();
 	return 0;