فهرست منبع

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 سال پیش
والد
کامیت
b49fc71fdc
1فایلهای تغییر یافته به همراه16 افزوده شده و 0 حذف شده
  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;