Переглянути джерело

qcacld-3.0: Add gPreventLinkDown ini item

Add a configuration item, gPreventLinkDown, to disable putting the bus
link to sleep during suspend/resume.

Change-Id: Id52c6319cafaef60e6f4e562010615361eb831cd
CRs-Fixed: 2066718
Dustin Brown 7 роки тому
батько
коміт
fe7aa8780a

+ 24 - 0
core/hdd/inc/wlan_hdd_cfg.h

@@ -5798,6 +5798,29 @@ enum hdd_link_speed_rpt_type {
 #define CFG_RATE_FOR_TX_MGMT_5G_MAX        (WNI_CFG_RATE_FOR_TX_MGMT_5G_STAMAX)
 #define CFG_RATE_FOR_TX_MGMT_5G_DEFAULT    (WNI_CFG_RATE_FOR_TX_MGMT_5G_STADEF)
 
+/*
+ * <ini>
+ * gPreventLinkDown - Enable to prevent bus link from going down
+ * @Min: 0
+ * @Max: 1
+ * @Default: 0
+ *
+ * Enable to prevent bus link from going down. Useful for platforms that do not
+ * (yet) support link down suspend cases.
+ *
+ * Related: N/A
+ *
+ * Supported Feature: Suspend/Resume
+ *
+ * Usage: Internal
+ *
+ * </ini>
+ */
+#define CFG_PREVENT_LINK_DOWN_NAME		"gPreventLinkDown"
+#define CFG_PREVENT_LINK_DOWN_MIN		(0)
+#define CFG_PREVENT_LINK_DOWN_MAX		(1)
+#define CFG_PREVENT_LINK_DOWN_DEFAULT		(0)
+
 #ifdef FEATURE_WLAN_TDLS
 /*
  * <ini>
@@ -10848,6 +10871,7 @@ struct hdd_config {
 	uint8_t enable_tx_ldpc;
 	uint8_t enable_rx_ldpc;
 	bool enable5gEBT;
+	bool prevent_link_down;
 #ifdef FEATURE_WLAN_TDLS
 	bool fEnableTDLSSupport;
 	bool fEnableTDLSImplicitTrigger;

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

@@ -2197,6 +2197,13 @@ struct reg_table_entry g_registry_table[] = {
 		     CFG_PPS_ENABLE_5G_EBT_FEATURE_MIN,
 		     CFG_PPS_ENABLE_5G_EBT_FEATURE_MAX),
 
+	REG_VARIABLE(CFG_PREVENT_LINK_DOWN_NAME, WLAN_PARAM_Integer,
+		     struct hdd_config, prevent_link_down,
+		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+		     CFG_PREVENT_LINK_DOWN_DEFAULT,
+		     CFG_PREVENT_LINK_DOWN_MIN,
+		     CFG_PREVENT_LINK_DOWN_MAX),
+
 #ifdef FEATURE_WLAN_TDLS
 	REG_VARIABLE(CFG_TDLS_SUPPORT_ENABLE, WLAN_PARAM_Integer,
 		     struct hdd_config, fEnableTDLSSupport,

+ 3 - 0
core/hdd/src/wlan_hdd_driver_ops.c

@@ -230,6 +230,9 @@ int hdd_hif_open(struct device *dev, void *bdev, const struct hif_bus_id *bid,
 		goto err_hif_close;
 	}
 
+	if (hdd_ctx->config->prevent_link_down)
+		hif_vote_link_up(hif_ctx);
+
 	status = hif_enable(hif_ctx, dev, bdev, bid, bus_type,
 			    (reinit == true) ?  HIF_ENABLE_TYPE_REINIT :
 			    HIF_ENABLE_TYPE_PROBE);