Browse Source

qcacld-3.0: Add ucfg api to get/set ps data inactivity timeout

Add and use ucfg api to get/set ps data inactivity timeout value.

Change-Id: I8b0931870507aac146a18b70103c323bea1ca6f3
CRs-Fixed: 2335980
Arif Hussain 6 years ago
parent
commit
41cbc1e9a5

+ 23 - 0
components/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h

@@ -772,6 +772,29 @@ ucfg_mlme_set_roaming_offload(struct wlan_objmgr_psoc *psoc,
 QDF_STATUS
 ucfg_mlme_get_first_scan_bucket_threshold(struct wlan_objmgr_psoc *psoc,
 					  uint8_t *val);
+
+/**
+ * ucfg_mlme_get_ps_data_inactivity_timeout() - Get data inactivity timeout
+ * @psoc: pointer to psoc object
+ * @inactivity_timeout: buffer to hold value
+ *
+ * Return: QDF Status
+ */
+QDF_STATUS
+ucfg_mlme_get_ps_data_inactivity_timeout(struct wlan_objmgr_psoc *psoc,
+					 uint32_t *inactivity_timeout);
+
+/**
+ * ucfg_mlme_set_ps_data_inactivity_timeout() - Set data inactivity timeout
+ * @psoc: pointer to psoc object
+ * @inactivity_timeout: value to be set
+ *
+ * Return: QDF Status
+ */
+QDF_STATUS
+ucfg_mlme_set_ps_data_inactivity_timeout(struct wlan_objmgr_psoc *psoc,
+					 uint32_t inactivity_timeout);
+
 /**
  * ucfg_mlme_set_sap_listen_interval() - Set the Sap listen interval
  * @psoc: pointer to psoc object

+ 42 - 0
components/mlme/dispatcher/src/wlan_mlme_ucfg_api.c

@@ -466,3 +466,45 @@ ucfg_mlme_get_current_mcs_set(struct wlan_objmgr_psoc *psoc,
 				     &mlme_obj->cfg.rates.current_mcs_set,
 				     len);
 }
+
+QDF_STATUS
+ucfg_mlme_get_ps_data_inactivity_timeout(struct wlan_objmgr_psoc *psoc,
+					 uint32_t *inactivity_timeout)
+{
+	struct wlan_mlme_psoc_obj *mlme_obj;
+
+	mlme_obj = mlme_get_psoc_obj(psoc);
+	if (!mlme_obj) {
+		*inactivity_timeout =
+			cfg_default(CFG_PS_DATA_INACTIVITY_TIMEOUT);
+		mlme_err("mlme obj null");
+		return QDF_STATUS_E_INVAL;
+	}
+
+	*inactivity_timeout = mlme_obj->cfg.timeouts.ps_data_inactivity_timeout;
+
+	return QDF_STATUS_SUCCESS;
+}
+
+QDF_STATUS
+ucfg_mlme_set_ps_data_inactivity_timeout(struct wlan_objmgr_psoc *psoc,
+					 uint32_t inactivity_timeout)
+{
+	struct wlan_mlme_psoc_obj *mlme_obj;
+
+	mlme_obj = mlme_get_psoc_obj(psoc);
+	if (!mlme_obj) {
+		mlme_err("mlme obj null");
+		return QDF_STATUS_E_INVAL;
+	}
+
+	if (!cfg_in_range(CFG_PS_DATA_INACTIVITY_TIMEOUT, inactivity_timeout)) {
+		mlme_err("inactivity timeout set value is invalid %d",
+			 inactivity_timeout);
+		return QDF_STATUS_E_INVAL;
+	}
+
+	mlme_obj->cfg.timeouts.ps_data_inactivity_timeout = inactivity_timeout;
+
+	return QDF_STATUS_SUCCESS;
+}

+ 5 - 15
core/hdd/src/wlan_hdd_wext.c

@@ -4160,25 +4160,15 @@ static int hdd_we_set_max_assoc(struct hdd_adapter *adapter, int value)
 }
 
 static int hdd_we_set_data_inactivity_timeout(struct hdd_adapter *adapter,
-					      int value)
+					      int inactivity_timeout)
 {
 	struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
-	mac_handle_t mac_handle = hdd_ctx->mac_handle;
-	struct mac_context *mac_ctx;
-
-	if (!mac_handle)
-		return -EINVAL;
-
-	if (!cfg_in_range(CFG_PS_DATA_INACTIVITY_TIMEOUT, value)) {
-		hdd_err_rl("Invalid value %d", value);
-		return -EINVAL;
-	}
+	QDF_STATUS status;
 
-	/* pre-existing layering violation */
-	mac_ctx = MAC_CONTEXT(mac_handle);
-	mac_ctx->mlme_cfg->timeouts.ps_data_inactivity_timeout = value;
+	status = ucfg_mlme_set_ps_data_inactivity_timeout(hdd_ctx->psoc,
+							  inactivity_timeout);
 
-	return 0;
+	return qdf_status_to_os_return(status);
 }
 
 static int hdd_we_set_wow_data_inactivity_timeout(struct hdd_adapter *adapter,