Kaynağa Gözat

qcacld-3.0: Reinitialize PM objects for monitor mode

Function hdd_override_all_ps is only used for monitor mode. In
this function, unexpected PM objects will cause initialization
malfunction. Move these PM objects setting after vdev creation.

CRs-Fixed: 2338261
Change-Id: I0d0e7b1bc4ec0853a274bdea8db2bbe3a3dbe885
chenguo 6 yıl önce
ebeveyn
işleme
7130396803
2 değiştirilmiş dosya ile 13 ekleme ve 2 silme
  1. 0 2
      core/hdd/src/wlan_hdd_cfg.c
  2. 13 0
      core/hdd/src/wlan_hdd_main.c

+ 0 - 2
core/hdd/src/wlan_hdd_cfg.c

@@ -3660,8 +3660,6 @@ static void hdd_override_all_ps(struct hdd_context *hdd_ctx)
 	cfg_ini->is_ps_enabled = 0;
 	hdd_disable_runtime_pm(cfg_ini);
 	hdd_disable_auto_shutdown(cfg_ini);
-	ucfg_pmo_set_power_save_mode(hdd_ctx->psoc, PS_NOT_SUPPORTED);
-	ucfg_pmo_set_wow_enable(hdd_ctx->psoc, PMO_WOW_DISABLE_BOTH);
 }
 
 /**

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

@@ -2046,6 +2046,18 @@ static void hdd_mon_mode_ether_setup(struct net_device *dev)
 }
 
 #ifdef FEATURE_MONITOR_MODE_SUPPORT
+/**
+ * hdd_mon_turn_off_ps_and_wow() - Update monitor mode struct net_device.
+ * @hdd_ctx: Pointer to HDD context.
+ *
+ * Return: None
+ */
+static void hdd_mon_turn_off_ps_and_wow(struct hdd_context *hdd_ctx)
+{
+	ucfg_pmo_set_power_save_mode(hdd_ctx->psoc, PS_NOT_SUPPORTED);
+	ucfg_pmo_set_wow_enable(hdd_ctx->psoc, PMO_WOW_DISABLE_BOTH);
+}
+
 /**
  * __hdd__mon_open() - HDD Open function
  * @dev: Pointer to net_device structure
@@ -2085,6 +2097,7 @@ static int __hdd_mon_open(struct net_device *dev)
 			}
 			hdd_err("hdd_start_adapters() successful !");
 		}
+		hdd_mon_turn_off_ps_and_wow(hdd_ctx);
 		set_bit(DEVICE_IFACE_OPENED, &adapter->event_flags);
 	}