Browse Source

qcacld-3.0: ADD MLME INI items of WMM AC_BE

Add the following WMM BE VO ini configs to MLME cfg:
1. CFG_QOS_WMM_INFRA_DIR_AC_BE_NAME
2. CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BE_NAME
3. CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BE_NAME
4. CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BE_NAME
5. CFG_QOS_WMM_INFRA_SBA_AC_BE_NAME
6. CFG_QOS_WMM_INFRA_UAPSD_BE_SRV_INTV_NAME
7. CFG_QOS_WMM_INFRA_UAPSD_BE_SUS_INTV_NAME

Introduce the basic infra APIs related to these configs
from mlme.

Change-Id: Ibaf06ba2df07a4805d31a4748809c44d143dd12e
CRs-Fixed: 2327689
Abhinav Kumar 6 years ago
parent
commit
e3b782e5cb

+ 14 - 0
mlme/core/src/wlan_mlme_main.c

@@ -1279,6 +1279,20 @@ static void mlme_init_wmm_in_cfg(struct wlan_objmgr_psoc *psoc,
 	wmm_params->ac_vi.uapsd_vi_sus_intv =
 		cfg_get(psoc, CFG_QOS_WMM_UAPSD_VI_SUS_INTV);
 
+	wmm_params->ac_be.dir_ac_be =
+		cfg_get(psoc, CFG_QOS_WMM_DIR_AC_BE);
+	wmm_params->ac_be.nom_msdu_size_ac_be =
+		cfg_get(psoc, CFG_QOS_WMM_NOM_MSDU_SIZE_AC_BE);
+	wmm_params->ac_be.mean_data_rate_ac_be =
+		cfg_get(psoc, CFG_QOS_WMM_MEAN_DATA_RATE_AC_BE);
+	wmm_params->ac_be.min_phy_rate_ac_be =
+		cfg_get(psoc, CFG_QOS_WMM_MIN_PHY_RATE_AC_BE);
+	wmm_params->ac_be.sba_ac_be =
+		cfg_get(psoc, CFG_QOS_WMM_SBA_AC_BE);
+	wmm_params->ac_be.uapsd_be_srv_intv =
+		cfg_get(psoc, CFG_QOS_WMM_UAPSD_BE_SRV_INTV);
+	wmm_params->ac_be.uapsd_be_sus_intv =
+		cfg_get(psoc, CFG_QOS_WMM_UAPSD_BE_SUS_INTV);
 }
 
 static void mlme_init_wps_params_cfg(struct wlan_objmgr_psoc *psoc,

+ 183 - 1
mlme/dispatcher/inc/cfg_mlme_fe_wmm.h

@@ -406,6 +406,181 @@
 		CFG_VALUE_OR_DEFAULT, \
 		"Infra uapsd vi sus intv")
 
+/*
+ * <ini>
+ * InfraDirAcBe - Set TSPEC direction for BE
+ * @Min: 0
+ * @Max: 3
+ * @Default: 3
+ *
+ * This ini is used to set TSPEC direction for BE
+ *
+ * Related: None.
+ *
+ * Supported Feature: WMM
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_QOS_WMM_DIR_AC_BE CFG_INI_UINT( \
+		"InfraDirAcBe", \
+		0, \
+		3, \
+		3, \
+		CFG_VALUE_OR_DEFAULT, \
+		"TSPEC direction for BE")
+
+/*
+ * <ini>
+ * InfraNomMsduSizeAcBe - Set normal MSDU size for BE
+ * @Min: 0x0
+ * @Max: 0xFFFF
+ * @Default: 0x85DC
+ *
+ * This ini is used to set normal MSDU size for BE
+ *
+ * Related: None.
+ *
+ * Supported Feature: WMM
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_QOS_WMM_NOM_MSDU_SIZE_AC_BE CFG_INI_UINT( \
+		"InfraNomMsduSizeAcBe", \
+		0x0, \
+		0xFFFF, \
+		0x85DC, \
+		CFG_VALUE_OR_DEFAULT, \
+		"MSDU size for BE")
+
+/*
+ * <ini>
+ * InfraMeanDataRateAcBe - Set mean data rate for BE
+ * @Min: 0x0
+ * @Max: 0xFFFFFFFF
+ * @Default: 0x493E0
+ *
+ * This ini is used to set mean data rate for BE
+ *
+ * Related: None.
+ *
+ * Supported Feature: WMM
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_QOS_WMM_MEAN_DATA_RATE_AC_BE CFG_INI_UINT( \
+		"InfraMeanDataRateAcBe", \
+		0x0, \
+		0xFFFFFFFF, \
+		0x493E0, \
+		CFG_VALUE_OR_DEFAULT, \
+		"data rate for BE")
+
+/*
+ * <ini>
+ * InfraMinPhyRateAcBe - Set min PHY rate for BE
+ * @Min: 0x0
+ * @Max: 0xFFFFFFFF
+ * @Default: 0x5B8D80
+ *
+ * This ini is used to set min PHY rate for BE
+ *
+ * Related: None.
+ *
+ * Supported Feature: WMM
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_QOS_WMM_MIN_PHY_RATE_AC_BE CFG_INI_UINT( \
+		"InfraMinPhyRateAcBe", \
+		0x0, \
+		0xFFFFFFFF, \
+		0x5B8D80, \
+		CFG_VALUE_OR_DEFAULT, \
+		"min PHY rate for BE")
+
+/*
+ * <ini>
+ * InfraSbaAcBe - Set surplus bandwidth allowance for BE
+ * @Min: 0x2001
+ * @Max: 0xFFFF
+ * @Default: 0x2001
+ *
+ * This ini is used to set surplus bandwidth allowance for BE
+ *
+ * Related: None.
+ *
+ * Supported Feature: WMM
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_QOS_WMM_SBA_AC_BE CFG_INI_UINT( \
+		"InfraSbaAcBe", \
+		0x2001, \
+		0xFFFF, \
+		0x2001, \
+		CFG_VALUE_OR_DEFAULT, \
+		"surplus bandwidth allowance for BE")
+
+/*
+ * <ini>
+ * InfraUapsdBeSrvIntv - Set Uapsd service interval for BE
+ * @Min: 0
+ * @Max: 4294967295UL
+ * @Default: 300
+ *
+ * This ini is used to set Uapsd service interval for BE
+ *
+ * Related: None.
+ *
+ * Supported Feature: WMM
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_QOS_WMM_UAPSD_BE_SRV_INTV CFG_INI_UINT( \
+		"InfraUapsdBeSrvIntv", \
+		0, \
+		4294967295UL, \
+		300, \
+		CFG_VALUE_OR_DEFAULT, \
+		"Infra uapsd be srv intv")
+
+/*
+ * <ini>
+ * InfraUapsdBeSuspIntv - Set Uapsd suspension interval for BE
+ * @Min: 0
+ * @Max: 4294967295UL
+ * @Default: 2000
+ *
+ * This ini is used to set Uapsd suspension interval for BE
+ *
+ * Related: None.
+ *
+ * Supported Feature: WMM
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_QOS_WMM_UAPSD_BE_SUS_INTV CFG_INI_UINT( \
+		"InfraUapsdBeSuspIntv", \
+		0, \
+		4294967295UL, \
+		2000, \
+		CFG_VALUE_OR_DEFAULT, \
+		"Infra uapsd vi sus intv")
+
 #define CFG_WMM_PARAMS_ALL \
 	CFG(CFG_QOS_ENABLED) \
 	CFG(CFG_WME_ENABLED) \
@@ -425,6 +600,13 @@
 	CFG(CFG_QOS_WMM_MIN_PHY_RATE_AC_VI) \
 	CFG(CFG_QOS_WMM_SBA_AC_VI) \
 	CFG(CFG_QOS_WMM_UAPSD_VI_SRV_INTV) \
-	CFG(CFG_QOS_WMM_UAPSD_VI_SUS_INTV)
+	CFG(CFG_QOS_WMM_UAPSD_VI_SUS_INTV) \
+	CFG(CFG_QOS_WMM_DIR_AC_BE) \
+	CFG(CFG_QOS_WMM_NOM_MSDU_SIZE_AC_BE) \
+	CFG(CFG_QOS_WMM_MEAN_DATA_RATE_AC_BE) \
+	CFG(CFG_QOS_WMM_MIN_PHY_RATE_AC_BE) \
+	CFG(CFG_QOS_WMM_SBA_AC_BE) \
+	CFG(CFG_QOS_WMM_UAPSD_BE_SRV_INTV) \
+	CFG(CFG_QOS_WMM_UAPSD_BE_SUS_INTV)
 
 #endif /* __CFG_MLME_FE_WMM_H */

+ 82 - 3
mlme/dispatcher/inc/wlan_mlme_api.h

@@ -722,17 +722,96 @@ wlan_mlme_get_wmm_uapsd_vi_sus_intv(struct wlan_objmgr_psoc *psoc,
 				    uint32_t *value);
 
 /**
- * wlan_mlme_get_wmm_dir_ac_vo() - Get TSPEC direction
- * for VO
+ * wlan_mlme_get_wmm_dir_ac_be() - Get TSPEC direction
+ * for BE
  * @psoc: pointer to psoc object
  * @value: Value that needs to be set from the caller
  *
  * Return: QDF Status
  */
 QDF_STATUS
-wlan_mlme_get_wmm_dir_ac_vo(struct wlan_objmgr_psoc *psoc,
+wlan_mlme_get_wmm_dir_ac_be(struct wlan_objmgr_psoc *psoc,
 			    uint8_t *value);
 
+/**
+ * wlan_mlme_get_wmm_nom_msdu_size_ac_be() - Get normal
+ * MSDU size for BE
+ * @psoc: pointer to psoc object
+ * @value: Value that needs to be set from the caller
+ *
+ * Return: QDF Status
+ */
+QDF_STATUS
+wlan_mlme_get_wmm_nom_msdu_size_ac_be(struct wlan_objmgr_psoc *psoc,
+				      uint16_t *value);
+
+/**
+ * wlan_mlme_get_wmm_mean_data_rate_ac_be() - mean data
+ * rate for BE
+ * @psoc: pointer to psoc object
+ * @value: Value that needs to be set from the caller
+ *
+ * Return: QDF Status
+ */
+QDF_STATUS
+wlan_mlme_get_wmm_mean_data_rate_ac_be(struct wlan_objmgr_psoc *psoc,
+				       uint32_t *value);
+
+/**
+ * wlan_mlme_get_wmm_min_phy_rate_ac_be() - min PHY
+ * rate for BE
+ * @psoc: pointer to psoc object
+ * @value: Value that needs to be set from the caller
+ *
+ * Return: QDF Status
+ */
+QDF_STATUS wlan_mlme_get_wmm_min_phy_rate_ac_be(struct wlan_objmgr_psoc *psoc,
+						uint32_t *value);
+
+/**
+ * wlan_mlme_get_wmm_sba_ac_be() - surplus bandwidth
+ * allowance for BE
+ * @psoc: pointer to psoc object
+ * @value: Value that needs to be set from the caller
+ *
+ * Return: QDF Status
+ */
+QDF_STATUS wlan_mlme_get_wmm_sba_ac_be(struct wlan_objmgr_psoc *psoc,
+				       uint16_t *value);
+
+/**
+ * wlan_mlme_get_wmm_uapsd_be_srv_intv() - Get Uapsd service
+ * interval for BE
+ * @psoc: pointer to psoc object
+ * @value: pointer to the value which will be filled for the caller
+ *
+ * Return: QDF Status
+ */
+QDF_STATUS wlan_mlme_get_wmm_uapsd_be_srv_intv(struct wlan_objmgr_psoc *psoc,
+					       uint32_t *value);
+
+/**
+ * wlan_mlme_get_wmm_uapsd_be_sus_intv() - Get Uapsd suspension
+ * interval for BE
+ * @psoc: pointer to psoc object
+ * @value: pointer to the value which will be filled for the caller
+ *
+ * Return: QDF Status
+ */
+QDF_STATUS wlan_mlme_get_wmm_uapsd_be_sus_intv(struct wlan_objmgr_psoc *psoc,
+					       uint32_t *value);
+
+/**
+ * wlan_mlme_get_wmm_dir_ac_vo() - Get TSPEC direction
+ * for VO
+ * @psoc: pointer to psoc object
+ * @value: Value that needs to be set from the caller
+ *
+ * Return: QDF Status
+ */
+QDF_STATUS wlan_mlme_get_wmm_dir_ac_vo(struct wlan_objmgr_psoc *psoc,
+				       uint8_t *value);
+
 /**
  * wlan_mlme_get_wmm_nom_msdu_size_ac_vo() - Get normal
  * MSDU size for VO

+ 25 - 0
mlme/dispatcher/inc/wlan_mlme_public_struct.h

@@ -1039,6 +1039,29 @@ struct wlan_mlme_wmm_ac_vi {
 	uint32_t uapsd_vi_sus_intv;
 };
 
+/**
+ * struct wlan_mlme_wmm_ac_be - Default TSPEC parameters
+ * for AC_BE
+ * @dir_ac_be: TSPEC direction for BE
+ * @nom_msdu_size_ac_be: normal MSDU size for BE
+ * @mean_data_rate_ac_be: mean data rate for BE
+ * @min_phy_rate_ac_be: min PHY rate for BE
+ * @sba_ac_be: surplus bandwidth allowance for BE
+ * @uapsd_be_srv_intv: Uapsd service interval for BE
+ * @uapsd_be_sus_intv: Uapsd suspension interval for BE
+
+ */
+struct wlan_mlme_wmm_ac_be {
+	uint8_t dir_ac_be;
+	uint16_t nom_msdu_size_ac_be;
+	uint32_t mean_data_rate_ac_be;
+	uint32_t min_phy_rate_ac_be;
+	uint16_t sba_ac_be;
+	uint32_t uapsd_be_srv_intv;
+	uint32_t uapsd_be_sus_intv;
+
+};
+
 /**
  * struct wlan_mlme_wmm_params - WMM CFG Items
  * @qos_enabled: AP is enabled with 11E
@@ -1047,6 +1070,7 @@ struct wlan_mlme_wmm_ac_vi {
  * @wsm_enabled: AP is enabled with WSM
  * @ac_vo: Default TSPEC parameters for AC_VO
  * @ac_vi: Default TSPEC parameters for AC_VI
+ * @ac_be: Default TSPEC parameters for AC_BE
  */
 struct wlan_mlme_wmm_params {
 	bool qos_enabled;
@@ -1056,6 +1080,7 @@ struct wlan_mlme_wmm_params {
 	uint32_t edca_profile;
 	struct wlan_mlme_wmm_ac_vo ac_vo;
 	struct wlan_mlme_wmm_ac_vi ac_vi;
+	struct wlan_mlme_wmm_ac_be ac_be;
 };
 
 /**

+ 117 - 0
mlme/dispatcher/inc/wlan_mlme_ucfg_api.h

@@ -1815,4 +1815,121 @@ ucfg_mlme_get_wmm_uapsd_vi_sus_intv(struct wlan_objmgr_psoc *psoc,
 	return wlan_mlme_get_wmm_uapsd_vi_sus_intv(psoc, value);
 }
 
+/**
+ * ucfg_mlme_get_wmm_dir_ac_be() - Get TSPEC direction
+ * for BE
+ * @psoc: pointer to psoc object
+ * @value: Value that needs to be set from the caller
+ *
+ * Inline UCFG API to be used by HDD/OSIF callers
+ *
+ * Return: QDF Status
+ */
+static inline QDF_STATUS
+ucfg_mlme_get_wmm_dir_ac_be(struct wlan_objmgr_psoc *psoc, uint8_t *value)
+{
+	return wlan_mlme_get_wmm_dir_ac_be(psoc, value);
+}
+
+/**
+ * ucfg_mlme_get_wmm_nom_msdu_size_ac_be() - Get normal
+ * MSDU size for BE
+ * @psoc: pointer to psoc object
+ * @value: Value that needs to be set from the caller
+ *
+ * Inline UCFG API to be used by HDD/OSIF callers
+ *
+ * Return: QDF Status
+ */
+static inline QDF_STATUS
+ucfg_mlme_get_wmm_nom_msdu_size_ac_be(struct wlan_objmgr_psoc *psoc,
+				      uint16_t *value)
+{
+	return wlan_mlme_get_wmm_nom_msdu_size_ac_be(psoc, value);
+}
+
+/**
+ * ucfg_mlme_get_wmm_mean_data_rate_ac_be() - mean data
+ * rate for BE
+ * @psoc: pointer to psoc object
+ * @value: Value that needs to be set from the caller
+ *
+ * Inline UCFG API to be used by HDD/OSIF callers
+ *
+ * Return: QDF Status
+ */
+static inline QDF_STATUS
+ucfg_mlme_get_wmm_mean_data_rate_ac_be(struct wlan_objmgr_psoc *psoc,
+				       uint32_t *value)
+{
+	return wlan_mlme_get_wmm_mean_data_rate_ac_be(psoc, value);
+}
+
+/**
+ * ucfg_mlme_get_wmm_min_phy_rate_ac_be() - min PHY
+ * rate for BE
+ * @psoc: pointer to psoc object
+ * @value: Value that needs to be set from the caller
+ *
+ * Inline UCFG API to be used by HDD/OSIF callers
+ *
+ * Return: QDF Status
+ */
+static inline QDF_STATUS
+ucfg_mlme_get_wmm_min_phy_rate_ac_be(struct wlan_objmgr_psoc *psoc,
+				     uint32_t *value)
+{
+	return wlan_mlme_get_wmm_min_phy_rate_ac_be(psoc, value);
+}
+
+/**
+ * ucfg_mlme_get_wmm_sba_ac_be() - surplus bandwidth
+ * allowance for BE
+ * @psoc: pointer to psoc object
+ * @value: Value that needs to be set from the caller
+ *
+ * Inline UCFG API to be used by HDD/OSIF callers
+ *
+ * Return: QDF Status
+ */
+static inline QDF_STATUS
+ucfg_mlme_get_wmm_sba_ac_be(struct wlan_objmgr_psoc *psoc, uint16_t *value)
+{
+	return wlan_mlme_get_wmm_sba_ac_be(psoc, value);
+}
+
+/**
+ * ucfg_mlme_get_wmm_uapsd_be_srv_intv() - Get Uapsd service
+ * interval for BE
+ * @psoc: pointer to psoc object
+ * @value: pointer to the value which will be filled for the caller
+ *
+ * Inline UCFG API to be used by HDD/OSIF callers
+ *
+ * Return: QDF Status
+ */
+static inline QDF_STATUS
+ucfg_mlme_get_wmm_uapsd_be_srv_intv(struct wlan_objmgr_psoc *psoc,
+				    uint32_t *value)
+{
+	return wlan_mlme_get_wmm_uapsd_be_srv_intv(psoc, value);
+}
+
+/**
+ * ucfg_mlme_get_wmm_uapsd_be_sus_intv() - Get Uapsd suspension
+ * interval for BE
+ * @psoc: pointer to psoc object
+ * @value: Value that needs to be set from the caller
+ *
+ * Inline UCFG API to be used by HDD/OSIF callers
+ *
+ * Return: QDF Status
+ */
+static inline QDF_STATUS
+ucfg_mlme_get_wmm_uapsd_be_sus_intv(struct wlan_objmgr_psoc *psoc,
+				    uint32_t *value)
+{
+	return wlan_mlme_get_wmm_uapsd_be_sus_intv(psoc, value);
+}
+
 #endif /* _WLAN_MLME_UCFG_API_H_ */

+ 114 - 0
mlme/dispatcher/src/wlan_mlme_api.c

@@ -794,6 +794,120 @@ QDF_STATUS wlan_mlme_get_wmm_uapsd_vi_sus_intv(struct wlan_objmgr_psoc *psoc,
 	return QDF_STATUS_SUCCESS;
 }
 
+QDF_STATUS
+wlan_mlme_get_wmm_dir_ac_be(struct wlan_objmgr_psoc *psoc, uint8_t *value)
+{
+	struct wlan_mlme_psoc_obj *mlme_obj;
+
+	mlme_obj = mlme_get_psoc_obj(psoc);
+	if (!mlme_obj) {
+		mlme_err("Failed to get MLME Obj");
+		return QDF_STATUS_E_FAILURE;
+	}
+
+	*value = mlme_obj->cfg.wmm_params.ac_be.dir_ac_be;
+
+	return QDF_STATUS_SUCCESS;
+}
+
+QDF_STATUS wlan_mlme_get_wmm_nom_msdu_size_ac_be(struct wlan_objmgr_psoc *psoc,
+						 uint16_t *value)
+{
+	struct wlan_mlme_psoc_obj *mlme_obj;
+
+	mlme_obj = mlme_get_psoc_obj(psoc);
+	if (!mlme_obj) {
+		mlme_err("Failed to get MLME Obj");
+		return QDF_STATUS_E_FAILURE;
+	}
+
+	*value = mlme_obj->cfg.wmm_params.ac_be.nom_msdu_size_ac_be;
+
+	return QDF_STATUS_SUCCESS;
+}
+
+QDF_STATUS
+wlan_mlme_get_wmm_mean_data_rate_ac_be(struct wlan_objmgr_psoc *psoc,
+				       uint32_t *value)
+{
+	struct wlan_mlme_psoc_obj *mlme_obj;
+
+	mlme_obj = mlme_get_psoc_obj(psoc);
+	if (!mlme_obj) {
+		mlme_err("Failed to get MLME Obj");
+		return QDF_STATUS_E_FAILURE;
+	}
+
+	*value = mlme_obj->cfg.wmm_params.ac_be.mean_data_rate_ac_be;
+
+	return QDF_STATUS_SUCCESS;
+}
+
+QDF_STATUS
+wlan_mlme_get_wmm_min_phy_rate_ac_be(struct wlan_objmgr_psoc *psoc,
+				     uint32_t *value)
+{
+	struct wlan_mlme_psoc_obj *mlme_obj;
+
+	mlme_obj = mlme_get_psoc_obj(psoc);
+	if (!mlme_obj) {
+		mlme_err("Failed to get MLME Obj");
+		return QDF_STATUS_E_FAILURE;
+	}
+
+	*value = mlme_obj->cfg.wmm_params.ac_be.min_phy_rate_ac_be;
+
+	return QDF_STATUS_SUCCESS;
+}
+
+QDF_STATUS
+wlan_mlme_get_wmm_sba_ac_be(struct wlan_objmgr_psoc *psoc, uint16_t *value)
+{
+	struct wlan_mlme_psoc_obj *mlme_obj;
+
+	mlme_obj = mlme_get_psoc_obj(psoc);
+	if (!mlme_obj) {
+		mlme_err("Failed to get MLME Obj");
+		return QDF_STATUS_E_FAILURE;
+	}
+
+	*value = mlme_obj->cfg.wmm_params.ac_be.sba_ac_be;
+
+	return QDF_STATUS_SUCCESS;
+}
+
+QDF_STATUS wlan_mlme_get_wmm_uapsd_be_srv_intv(struct wlan_objmgr_psoc *psoc,
+					       uint32_t *value)
+{
+	struct wlan_mlme_psoc_obj *mlme_obj;
+
+	mlme_obj = mlme_get_psoc_obj(psoc);
+	if (!mlme_obj) {
+		mlme_err("Failed to get MLME Obj");
+		return QDF_STATUS_E_FAILURE;
+	}
+
+	*value = mlme_obj->cfg.wmm_params.ac_be.uapsd_be_srv_intv;
+
+	return QDF_STATUS_SUCCESS;
+}
+
+QDF_STATUS wlan_mlme_get_wmm_uapsd_be_sus_intv(struct wlan_objmgr_psoc *psoc,
+					       uint32_t *value)
+{
+	struct wlan_mlme_psoc_obj *mlme_obj;
+
+	mlme_obj = mlme_get_psoc_obj(psoc);
+	if (!mlme_obj) {
+		mlme_err("Failed to get MLME Obj");
+		return QDF_STATUS_E_FAILURE;
+	}
+
+	*value = mlme_obj->cfg.wmm_params.ac_be.uapsd_be_sus_intv;
+
+	return QDF_STATUS_SUCCESS;
+}
+
 QDF_STATUS wlan_mlme_set_sap_listen_interval(struct wlan_objmgr_psoc *psoc,
 					     int value)
 {