Browse Source

qcacld-3.0: ADD MLME INI items of WMM AC_BK

Add the following WMM BE VO ini configs to MLME cfg:
1. CFG_QOS_WMM_INFRA_DIR_AC_BK_NAME
2. CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BK_NAME
3. CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BK_NAME
4. CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BK_NAME
5. CFG_QOS_WMM_INFRA_SBA_AC_BK_NAME
6. CFG_QOS_WMM_INFRA_UAPSD_BK_SRV_INTV_NAME
7. CFG_QOS_WMM_INFRA_UAPSD_BK_SUS_INTV_NAME

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

Change-Id: I1f8e6f0fa1ff15eda36a20ee06772c4a1ddd9ca8
CRs-Fixed: 2327690
Abhinav Kumar 6 years ago
parent
commit
2af8c12ac9

+ 15 - 0
components/mlme/core/src/wlan_mlme_main.c

@@ -1293,6 +1293,21 @@ static void mlme_init_wmm_in_cfg(struct wlan_objmgr_psoc *psoc,
 		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);
+
+	wmm_params->ac_bk.dir_ac_bk =
+		cfg_get(psoc, CFG_QOS_WMM_DIR_AC_BK);
+	wmm_params->ac_bk.nom_msdu_size_ac_bk =
+		cfg_get(psoc, CFG_QOS_WMM_NOM_MSDU_SIZE_AC_BK);
+	wmm_params->ac_bk.mean_data_rate_ac_bk =
+		cfg_get(psoc, CFG_QOS_WMM_MEAN_DATA_RATE_AC_BK);
+	wmm_params->ac_bk.min_phy_rate_ac_bk =
+		cfg_get(psoc, CFG_QOS_WMM_MIN_PHY_RATE_AC_BK);
+	wmm_params->ac_bk.sba_ac_bk =
+		cfg_get(psoc, CFG_QOS_WMM_SBA_AC_BK);
+	wmm_params->ac_bk.uapsd_bk_srv_intv =
+		cfg_get(psoc, CFG_QOS_WMM_UAPSD_BK_SRV_INTV);
+	wmm_params->ac_bk.uapsd_bk_sus_intv =
+		cfg_get(psoc, CFG_QOS_WMM_UAPSD_BK_SUS_INTV);
 }
 
 static void mlme_init_wps_params_cfg(struct wlan_objmgr_psoc *psoc,

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

@@ -581,6 +581,181 @@
 		CFG_VALUE_OR_DEFAULT, \
 		"Infra uapsd vi sus intv")
 
+/*
+ * <ini>
+ * InfraDirAcBk - Set TSPEC direction for BK
+ * @Min: 0
+ * @Max: 3
+ * @Default: 3
+ *
+ * This ini is used to set TSPEC direction for BK
+ *
+ * Related: None.
+ *
+ * Supported Feature: WMM
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_QOS_WMM_DIR_AC_BK CFG_INI_UINT( \
+		"InfraDirAcBk", \
+		0, \
+		3, \
+		3, \
+		CFG_VALUE_OR_DEFAULT, \
+		"TSPEC direction for BK")
+
+/*
+ * <ini>
+ * InfraNomMsduSizeAcBk - Set normal MSDU size for BK
+ * @Min: 0x0
+ * @Max: 0xFFFF
+ * @Default: 0x85DC
+ *
+ * This ini is used to set normal MSDU size for BK
+ *
+ * Related: None.
+ *
+ * Supported Feature: WMM
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_QOS_WMM_NOM_MSDU_SIZE_AC_BK CFG_INI_UINT( \
+		"InfraNomMsduSizeAcBk", \
+		0x0, \
+		0xFFFF, \
+		0x85DC, \
+		CFG_VALUE_OR_DEFAULT, \
+		"MSDU size for BK")
+
+/*
+ * <ini>
+ * InfraMeanDataRateAcBk - Set mean data rate for BK
+ * @Min: 0x0
+ * @Max: 0xFFFFFFFF
+ * @Default: 0x493E0
+ *
+ * This ini is used to set mean data rate for BK
+ *
+ * Related: None.
+ *
+ * Supported Feature: WMM
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_QOS_WMM_MEAN_DATA_RATE_AC_BK CFG_INI_UINT( \
+		"InfraMeanDataRateAcBk", \
+		0x0, \
+		0xFFFFFFFF, \
+		0x493E0, \
+		CFG_VALUE_OR_DEFAULT, \
+		"data rate for BK")
+
+/*
+ * <ini>
+ * InfraMinPhyRateAcBke - Set min PHY rate for BK
+ * @Min: 0x0
+ * @Max: 0xFFFFFFFF
+ * @Default: 0x5B8D80
+ *
+ * This ini is used to set min PHY rate for BK
+ *
+ * Related: None.
+ *
+ * Supported Feature: WMM
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_QOS_WMM_MIN_PHY_RATE_AC_BK CFG_INI_UINT( \
+		"InfraMinPhyRateAcBk", \
+		0x0, \
+		0xFFFFFFFF, \
+		0x5B8D80, \
+		CFG_VALUE_OR_DEFAULT, \
+		"min PHY rate for BK")
+
+/*
+ * <ini>
+ * InfraSbaAcBk - Set surplus bandwidth allowance for BK
+ * @Min: 0x2001
+ * @Max: 0xFFFF
+ * @Default: 0x2001
+ *
+ * This ini is used to set surplus bandwidth allowance for BK
+ *
+ * Related: None.
+ *
+ * Supported Feature: WMM
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_QOS_WMM_SBA_AC_BK CFG_INI_UINT( \
+		"InfraSbaAcBk", \
+		0x2001, \
+		0xFFFF, \
+		0x2001, \
+		CFG_VALUE_OR_DEFAULT, \
+		"surplus bandwidth allowance for BK")
+
+/*
+ * <ini>
+ * InfraUapsdBkSrvIntv - Set Uapsd service interval for BK
+ * @Min: 0
+ * @Max: 4294967295UL
+ * @Default: 300
+ *
+ * This ini is used to set Uapsd service interval for BK
+ *
+ * Related: None.
+ *
+ * Supported Feature: WMM
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_QOS_WMM_UAPSD_BK_SRV_INTV CFG_INI_UINT( \
+		"InfraUapsdBkSrvIntv", \
+		0, \
+		4294967295UL, \
+		300, \
+		CFG_VALUE_OR_DEFAULT, \
+		"Infra uapsd bk srv intv")
+
+/*
+ * <ini>
+ * InfraUapsdBkSuspIntv - Set Uapsd suspension interval for BK
+ * @Min: 0
+ * @Max: 4294967295UL
+ * @Default: 2000
+ *
+ * This ini is used to set Uapsd suspension interval for BK
+ *
+ * Related: None.
+ *
+ * Supported Feature: WMM
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_QOS_WMM_UAPSD_BK_SUS_INTV CFG_INI_UINT( \
+		"InfraUapsdBkSuspIntv", \
+		0, \
+		4294967295UL, \
+		2000, \
+		CFG_VALUE_OR_DEFAULT, \
+		"Infra uapsd bk sus intv")
+
 #define CFG_WMM_PARAMS_ALL \
 	CFG(CFG_QOS_ENABLED) \
 	CFG(CFG_WME_ENABLED) \
@@ -607,6 +782,13 @@
 	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)
+	CFG(CFG_QOS_WMM_UAPSD_BE_SUS_INTV) \
+	CFG(CFG_QOS_WMM_DIR_AC_BK) \
+	CFG(CFG_QOS_WMM_NOM_MSDU_SIZE_AC_BK) \
+	CFG(CFG_QOS_WMM_MEAN_DATA_RATE_AC_BK) \
+	CFG(CFG_QOS_WMM_MIN_PHY_RATE_AC_BK) \
+	CFG(CFG_QOS_WMM_SBA_AC_BK) \
+	CFG(CFG_QOS_WMM_UAPSD_BK_SRV_INTV) \
+	CFG(CFG_QOS_WMM_UAPSD_BK_SUS_INTV)
 
 #endif /* __CFG_MLME_FE_WMM_H */

+ 82 - 0
components/mlme/dispatcher/inc/wlan_mlme_api.h

@@ -801,6 +801,88 @@ QDF_STATUS wlan_mlme_get_wmm_uapsd_be_srv_intv(struct wlan_objmgr_psoc *psoc,
 QDF_STATUS wlan_mlme_get_wmm_uapsd_be_sus_intv(struct wlan_objmgr_psoc *psoc,
 					       uint32_t *value);
 
+/**
+ * wlan_mlme_get_wmm_dir_ac_bk() - Get TSPEC direction
+ * for BK
+ * @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_bk(struct wlan_objmgr_psoc *psoc, uint8_t *value);
+
+/**
+ * wlan_mlme_get_wmm_nom_msdu_size_ac_bk() - Get normal
+ * MSDU size for BK
+ * @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_bk(struct wlan_objmgr_psoc *psoc,
+				      uint16_t *value);
+
+/**
+ * wlan_mlme_get_wmm_mean_data_rate_ac_bk() - mean data
+ * rate for BK
+ * @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_bk(struct wlan_objmgr_psoc *psoc,
+				       uint32_t *value);
+
+/**
+ * wlan_mlme_get_wmm_min_phy_rate_ac_bk() - min PHY
+ * rate for BK
+ * @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_bk(struct wlan_objmgr_psoc *psoc,
+				     uint32_t *value);
+
+/**
+ * wlan_mlme_get_wmm_sba_ac_bk() - 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_bk(struct wlan_objmgr_psoc *psoc, uint16_t *value);
+
+/**
+ * wlan_mlme_get_wmm_uapsd_bk_srv_intv() - Get Uapsd service
+ * interval for BK
+ * @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_bk_srv_intv(struct wlan_objmgr_psoc *psoc,
+				    uint32_t *value);
+
+/**
+ * wlan_mlme_get_wmm_uapsd_bk_sus_intv() - Get Uapsd suspension
+ * interval for BK
+ * @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_bk_sus_intv(struct wlan_objmgr_psoc *psoc,
+				    uint32_t *value);
+
 /**
  * wlan_mlme_get_wmm_dir_ac_vo() - Get TSPEC direction
  * for VO

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

@@ -1062,6 +1062,27 @@ struct wlan_mlme_wmm_ac_be {
 
 };
 
+/**
+ * struct wlan_mlme_wmm_ac_bk - Default TSPEC parameters
+ * for AC_BK
+ * @dir_ac_bk: TSPEC direction for BK
+ * @nom_msdu_size_ac_bk: normal MSDU size for BK
+ * @mean_data_rate_ac_bk: mean data rate for BK
+ * @min_phy_rate_ac_bk: min PHY rate for BK
+ * @sba_ac_bk: surplus bandwidth allowance for BK
+ * @uapsd_bk_srv_intv: Uapsd service interval for BK
+ * @uapsd_bk_sus_intv: Uapsd suspension interval for BK
+ */
+struct wlan_mlme_wmm_ac_bk {
+	uint8_t dir_ac_bk;
+	uint16_t nom_msdu_size_ac_bk;
+	uint32_t mean_data_rate_ac_bk;
+	uint32_t min_phy_rate_ac_bk;
+	uint16_t sba_ac_bk;
+	uint32_t uapsd_bk_srv_intv;
+	uint32_t uapsd_bk_sus_intv;
+};
+
 /**
  * struct wlan_mlme_wmm_params - WMM CFG Items
  * @qos_enabled: AP is enabled with 11E
@@ -1071,6 +1092,7 @@ struct wlan_mlme_wmm_ac_be {
  * @ac_vo: Default TSPEC parameters for AC_VO
  * @ac_vi: Default TSPEC parameters for AC_VI
  * @ac_be: Default TSPEC parameters for AC_BE
+ * @ac_bk: Default TSPEC parameters for AC_BK
  */
 struct wlan_mlme_wmm_params {
 	bool qos_enabled;
@@ -1081,6 +1103,7 @@ struct wlan_mlme_wmm_params {
 	struct wlan_mlme_wmm_ac_vo ac_vo;
 	struct wlan_mlme_wmm_ac_vi ac_vi;
 	struct wlan_mlme_wmm_ac_be ac_be;
+	struct wlan_mlme_wmm_ac_bk ac_bk;
 };
 
 /**

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

@@ -1932,4 +1932,121 @@ ucfg_mlme_get_wmm_uapsd_be_sus_intv(struct wlan_objmgr_psoc *psoc,
 	return wlan_mlme_get_wmm_uapsd_be_sus_intv(psoc, value);
 }
 
+/**
+ * ucfg_mlme_get_wmm_dir_ac_bk() - Get TSPEC direction
+ * for BK
+ * @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_bk(struct wlan_objmgr_psoc *psoc, uint8_t *value)
+{
+	return wlan_mlme_get_wmm_dir_ac_bk(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_bk(struct wlan_objmgr_psoc *psoc,
+				      uint16_t *value)
+{
+	return wlan_mlme_get_wmm_nom_msdu_size_ac_bk(psoc, value);
+}
+
+/**
+ * ucfg_mlme_get_wmm_mean_data_rate_ac_bk() - mean data
+ * rate for BK
+ * @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_bk(struct wlan_objmgr_psoc *psoc,
+				       uint32_t *value)
+{
+	return wlan_mlme_get_wmm_mean_data_rate_ac_bk(psoc, value);
+}
+
+/**
+ * ucfg_mlme_get_wmm_min_phy_rate_ac_bk() - 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_bk(struct wlan_objmgr_psoc *psoc,
+				     uint32_t *value)
+{
+	return wlan_mlme_get_wmm_min_phy_rate_ac_bk(psoc, value);
+}
+
+/**
+ * ucfg_mlme_get_wmm_sba_ac_bk() - 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_bk(struct wlan_objmgr_psoc *psoc, uint16_t *value)
+{
+	return wlan_mlme_get_wmm_sba_ac_bk(psoc, value);
+}
+
+/**
+ * ucfg_mlme_get_wmm_uapsd_bk_srv_intv() - Get Uapsd service
+ * interval for BK
+ * @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_bk_srv_intv(struct wlan_objmgr_psoc *psoc,
+				    uint32_t *value)
+{
+	return wlan_mlme_get_wmm_uapsd_bk_srv_intv(psoc, value);
+}
+
+/**
+ * ucfg_mlme_get_wmm_uapsd_bk_sus_intv() - Get Uapsd suspension
+ * interval for BK
+ * @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_bk_sus_intv(struct wlan_objmgr_psoc *psoc,
+				    uint32_t *value)
+{
+	return wlan_mlme_get_wmm_uapsd_bk_sus_intv(psoc, value);
+}
+
 #endif /* _WLAN_MLME_UCFG_API_H_ */

+ 116 - 0
components/mlme/dispatcher/src/wlan_mlme_api.c

@@ -908,6 +908,122 @@ QDF_STATUS wlan_mlme_get_wmm_uapsd_be_sus_intv(struct wlan_objmgr_psoc *psoc,
 	return QDF_STATUS_SUCCESS;
 }
 
+QDF_STATUS
+wlan_mlme_get_wmm_dir_ac_bk(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_bk.dir_ac_bk;
+
+	return QDF_STATUS_SUCCESS;
+}
+
+QDF_STATUS wlan_mlme_get_wmm_nom_msdu_size_ac_bk(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_bk.nom_msdu_size_ac_bk;
+
+	return QDF_STATUS_SUCCESS;
+}
+
+QDF_STATUS
+wlan_mlme_get_wmm_mean_data_rate_ac_bk(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_bk.mean_data_rate_ac_bk;
+
+	return QDF_STATUS_SUCCESS;
+}
+
+QDF_STATUS
+wlan_mlme_get_wmm_min_phy_rate_ac_bk(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_bk.min_phy_rate_ac_bk;
+
+	return QDF_STATUS_SUCCESS;
+}
+
+QDF_STATUS
+wlan_mlme_get_wmm_sba_ac_bk(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_bk.sba_ac_bk;
+
+	return QDF_STATUS_SUCCESS;
+}
+
+QDF_STATUS
+wlan_mlme_get_wmm_uapsd_bk_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_bk.uapsd_bk_srv_intv;
+
+	return QDF_STATUS_SUCCESS;
+}
+
+QDF_STATUS
+wlan_mlme_get_wmm_uapsd_bk_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_bk.uapsd_bk_sus_intv;
+
+	return QDF_STATUS_SUCCESS;
+}
+
 QDF_STATUS wlan_mlme_set_sap_listen_interval(struct wlan_objmgr_psoc *psoc,
 					     int value)
 {

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

@@ -2741,161 +2741,6 @@ enum station_keepalive_method {
 #define CFG_QOS_IMPLICIT_SETUP_ENABLED_MAX              (1)
 #define CFG_QOS_IMPLICIT_SETUP_ENABLED_DEFAULT          (0)
 
-/*
- * <ini>
- * InfraUapsdBkSrvIntv - Set Uapsd service interval for BK
- * @Min: 0
- * @Max: 4294967295UL
- * @Default: 300
- *
- * This ini is used to set Uapsd service interval for BK
- *
- * Related: None.
- *
- * Supported Feature: WMM
- *
- * Usage: Internal/External
- *
- * </ini>
- */
-#define CFG_QOS_WMM_INFRA_UAPSD_BK_SRV_INTV_NAME         "InfraUapsdBkSrvIntv"
-#define CFG_QOS_WMM_INFRA_UAPSD_BK_SRV_INTV_MIN           (0)
-#define CFG_QOS_WMM_INFRA_UAPSD_BK_SRV_INTV_MAX           (4294967295UL)
-#define CFG_QOS_WMM_INFRA_UAPSD_BK_SRV_INTV_DEFAULT       (300)
-
-/*
- * <ini>
- * InfraUapsdBkSuspIntv - Set Uapsd suspension interval for BK
- * @Min: 0
- * @Max: 4294967295UL
- * @Default: 2000
- *
- * This ini is used to set Uapsd suspension interval for BK
- *
- * Related: None.
- *
- * Supported Feature: WMM
- *
- * Usage: Internal/External
- *
- * </ini>
- */
-#define CFG_QOS_WMM_INFRA_UAPSD_BK_SUS_INTV_NAME         "InfraUapsdBkSuspIntv"
-#define CFG_QOS_WMM_INFRA_UAPSD_BK_SUS_INTV_MIN           (0)
-#define CFG_QOS_WMM_INFRA_UAPSD_BK_SUS_INTV_MAX           (4294967295UL)
-#define CFG_QOS_WMM_INFRA_UAPSD_BK_SUS_INTV_DEFAULT       (2000)
-
- /* default TSPEC parameters for AC_Bk*/
-/*
- * <ini>
- * InfraDirAcBk - Set TSPEC direction for BK
- * @Min: 0
- * @Max: 3
- * @Default: 3
- *
- * This ini is used to set TSPEC direction for BK
- *
- * Related: None.
- *
- * Supported Feature: WMM
- *
- * Usage: Internal/External
- *
- * </ini>
- */
-#define CFG_QOS_WMM_INFRA_DIR_AC_BK_NAME   "InfraDirAcBk"
-#define CFG_QOS_WMM_INFRA_DIR_AC_BK_MIN     (0)
-#define CFG_QOS_WMM_INFRA_DIR_AC_BK_MAX     (3)
-#define CFG_QOS_WMM_INFRA_DIR_AC_BK_DEFAULT (3) /*WLAN_QCT_CUST_WMM_TSDIR_BOTH*/
-
-/*
- * <ini>
- * InfraNomMsduSizeAcBk - Set normal MSDU size for BK
- * @Min: 0x0
- * @Max: 0xFFFF
- * @Default: 0x85DC
- *
- * This ini is used to set normal MSDU size for BK
- *
- * Related: None.
- *
- * Supported Feature: WMM
- *
- * Usage: Internal/External
- *
- * </ini>
- */
-#define CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BK_NAME      "InfraNomMsduSizeAcBk"
-#define CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BK_MIN        (0x0)
-#define CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BK_MAX        (0xFFFF)
-#define CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BK_DEFAULT    (0x85DC)
-
-/*
- * <ini>
- * InfraMeanDataRateAcBk - Set mean data rate for BK
- * @Min: 0x0
- * @Max: 0xFFFFFFFF
- * @Default: 0x493E0
- *
- * This ini is used to set mean data rate for BK
- *
- * Related: None.
- *
- * Supported Feature: WMM
- *
- * Usage: Internal/External
- *
- * </ini>
- */
-#define CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BK_NAME    "InfraMeanDataRateAcBk"
-#define CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BK_MIN      (0x0)
-#define CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BK_MAX      (0xFFFFFFFF)
-#define CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BK_DEFAULT  (0x493E0)
-
-/*
- * <ini>
- * InfraMinPhyRateAcBke - Set min PHY rate for BK
- * @Min: 0x0
- * @Max: 0xFFFFFFFF
- * @Default: 0x5B8D80
- *
- * This ini is used to set min PHY rate for BK
- *
- * Related: None.
- *
- * Supported Feature: WMM
- *
- * Usage: Internal/External
- *
- * </ini>
- */
-#define CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BK_NAME        "InfraMinPhyRateAcBk"
-#define CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BK_MIN          (0x0)
-#define CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BK_MAX          (0xFFFFFFFF)
-#define CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BK_DEFAULT      (0x5B8D80)
-
-/*
- * <ini>
- * InfraSbaAcBk - Set surplus bandwidth allowance for BK
- * @Min: 0x2001
- * @Max: 0xFFFF
- * @Default: 0x2001
- *
- * This ini is used to set surplus bandwidth allowance for BK
- *
- * Related: None.
- *
- * Supported Feature: WMM
- *
- * Usage: Internal/External
- *
- * </ini>
- */
- #define CFG_QOS_WMM_INFRA_SBA_AC_BK_NAME                   "InfraSbaAcBk"
- #define CFG_QOS_WMM_INFRA_SBA_AC_BK_MIN                     (0x2001)
- #define CFG_QOS_WMM_INFRA_SBA_AC_BK_MAX                     (0xFFFF)
- #define CFG_QOS_WMM_INFRA_SBA_AC_BK_DEFAULT                 (0x2001)
-
 /*
  * <ini>
  * burstSizeDefinition - Set TS burst size
@@ -6798,8 +6643,6 @@ struct hdd_config {
 	enum hdd_wmm_user_mode WmmMode;
 	bool b80211eIsEnabled;
 	uint8_t UapsdMask;      /* what ACs to setup U-APSD for at assoc */
-	uint32_t InfraUapsdBkSrvIntv;
-	uint32_t InfraUapsdBkSuspIntv;
 	bool isFastRoamIniFeatureEnabled;
 	bool MAWCEnabled;
 #ifdef FEATURE_WLAN_ESE
@@ -6812,13 +6655,6 @@ struct hdd_config {
 	bool isRoamOffloadScanEnabled;
 	bool bImplicitQosEnabled;
 
-	/* default TSPEC parameters for AC_BK */
-	enum sme_qos_wmm_dir_type InfraDirAcBk;
-	uint16_t InfraNomMsduSizeAcBk;
-	uint32_t InfraMeanDataRateAcBk;
-	uint32_t InfraMinPhyRateAcBk;
-	uint16_t InfraSbaAcBk;
-
 	uint32_t DelayedTriggerFrmInt;
 
 	char enableConcurrentSTA[CFG_CONCURRENT_IFACE_MAX_LEN];

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

@@ -770,22 +770,6 @@ struct reg_table_entry g_registry_table[] = {
 		     CFG_QOS_WMM_UAPSD_MASK_MIN,
 		     CFG_QOS_WMM_UAPSD_MASK_MAX),
 
-	REG_VARIABLE(CFG_QOS_WMM_INFRA_UAPSD_BK_SRV_INTV_NAME,
-		     WLAN_PARAM_Integer,
-		     struct hdd_config, InfraUapsdBkSrvIntv,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_QOS_WMM_INFRA_UAPSD_BK_SRV_INTV_DEFAULT,
-		     CFG_QOS_WMM_INFRA_UAPSD_BK_SRV_INTV_MIN,
-		     CFG_QOS_WMM_INFRA_UAPSD_BK_SRV_INTV_MAX),
-
-	REG_VARIABLE(CFG_QOS_WMM_INFRA_UAPSD_BK_SUS_INTV_NAME,
-		     WLAN_PARAM_Integer,
-		     struct hdd_config, InfraUapsdBkSuspIntv,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_QOS_WMM_INFRA_UAPSD_BK_SUS_INTV_DEFAULT,
-		     CFG_QOS_WMM_INFRA_UAPSD_BK_SUS_INTV_MIN,
-		     CFG_QOS_WMM_INFRA_UAPSD_BK_SUS_INTV_MAX),
-
 #ifdef FEATURE_WLAN_ESE
 	REG_VARIABLE(CFG_QOS_WMM_INFRA_INACTIVITY_INTERVAL_NAME,
 		     WLAN_PARAM_Integer,
@@ -867,44 +851,6 @@ struct reg_table_entry g_registry_table[] = {
 			     CFG_ROAM_SCAN_OFFLOAD_ENABLED_MAX,
 			     cb_notify_update_roam_scan_offload_enabled, 0),
 
-	REG_VARIABLE(CFG_QOS_WMM_INFRA_DIR_AC_BK_NAME, WLAN_PARAM_Integer,
-		     struct hdd_config, InfraDirAcBk,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_QOS_WMM_INFRA_DIR_AC_BK_DEFAULT,
-		     CFG_QOS_WMM_INFRA_DIR_AC_BK_MIN,
-		     CFG_QOS_WMM_INFRA_DIR_AC_BK_MAX),
-
-	REG_VARIABLE(CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BK_NAME,
-		     WLAN_PARAM_HexInteger,
-		     struct hdd_config, InfraNomMsduSizeAcBk,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BK_DEFAULT,
-		     CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BK_MIN,
-		     CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BK_MAX),
-
-	REG_VARIABLE(CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BK_NAME,
-		     WLAN_PARAM_HexInteger,
-		     struct hdd_config, InfraMeanDataRateAcBk,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BK_DEFAULT,
-		     CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BK_MIN,
-		     CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BK_MAX),
-
-	REG_VARIABLE(CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BK_NAME,
-		     WLAN_PARAM_HexInteger,
-		     struct hdd_config, InfraMinPhyRateAcBk,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BK_DEFAULT,
-		     CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BK_MIN,
-		     CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BK_MAX),
-
-	REG_VARIABLE(CFG_QOS_WMM_INFRA_SBA_AC_BK_NAME, WLAN_PARAM_HexInteger,
-		     struct hdd_config, InfraSbaAcBk,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_QOS_WMM_INFRA_SBA_AC_BK_DEFAULT,
-		     CFG_QOS_WMM_INFRA_SBA_AC_BK_MIN,
-		     CFG_QOS_WMM_INFRA_SBA_AC_BK_MAX),
-
 	REG_VARIABLE(CFG_TL_DELAYED_TRGR_FRM_INT_NAME, WLAN_PARAM_Integer,
 		     struct hdd_config, DelayedTriggerFrmInt,
 		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,

+ 83 - 27
core/hdd/src/wlan_hdd_wmm.c

@@ -1264,22 +1264,63 @@ static void __hdd_wmm_do_implicit_qos(struct work_struct *work)
 				((WLAN_HDD_GET_CTX(adapter))->config->
 				 UapsdMask & SME_QOS_UAPSD_BK) ? 1 : 0;
 		}
-		qosInfo.ts_info.direction =
-			(WLAN_HDD_GET_CTX(adapter))->config->InfraDirAcBk;
+
+		status = ucfg_mlme_get_wmm_dir_ac_bk(hdd_ctx->psoc, &dir_ac);
+		if (!QDF_IS_STATUS_SUCCESS(status)) {
+			hdd_err("Get infra_dir_ac_bk failed");
+			return;
+		}
+		qosInfo.ts_info.direction = dir_ac;
+
 		qosInfo.ts_info.tid = 255;
-		qosInfo.mean_data_rate =
-			(WLAN_HDD_GET_CTX(adapter))->config->
-			InfraMeanDataRateAcBk;
-		qosInfo.min_phy_rate =
-			(WLAN_HDD_GET_CTX(adapter))->config->InfraMinPhyRateAcBk;
-		qosInfo.min_service_interval =
-			(WLAN_HDD_GET_CTX(adapter))->config->InfraUapsdBkSrvIntv;
-		qosInfo.nominal_msdu_size =
-			(WLAN_HDD_GET_CTX(adapter))->config->InfraNomMsduSizeAcBk;
-		qosInfo.surplus_bw_allowance =
-			(WLAN_HDD_GET_CTX(adapter))->config->InfraSbaAcBk;
-		qosInfo.suspension_interval =
-			(WLAN_HDD_GET_CTX(adapter))->config->InfraUapsdBkSuspIntv;
+		status = ucfg_mlme_get_wmm_uapsd_bk_srv_intv(hdd_ctx->psoc,
+							     &uapsd_value);
+		if (!QDF_IS_STATUS_SUCCESS(status)) {
+			hdd_err("Get uapsd_bk_srv_intv failed");
+			return;
+		}
+		qosInfo.min_service_interval = uapsd_value;
+
+		status = ucfg_mlme_get_wmm_uapsd_bk_sus_intv(hdd_ctx->psoc,
+							     &uapsd_value);
+		if (!QDF_IS_STATUS_SUCCESS(status)) {
+			hdd_err("Get uapsd_bk_sus_intv failed");
+			return;
+		}
+		qosInfo.suspension_interval = uapsd_value;
+
+		status = ucfg_mlme_get_wmm_mean_data_rate_ac_bk(hdd_ctx->psoc,
+								&rate_ac);
+		if (!QDF_IS_STATUS_SUCCESS(status)) {
+			hdd_err("Get mean_data_rate_ac_bk failed");
+			return;
+		}
+		qosInfo.mean_data_rate = rate_ac;
+
+		status = ucfg_mlme_get_wmm_min_phy_rate_ac_bk(hdd_ctx->psoc,
+							      &rate_ac);
+		if (!QDF_IS_STATUS_SUCCESS(status)) {
+			hdd_err("Get min_phy_rate_ac_bk failed");
+			return;
+		}
+		qosInfo.min_phy_rate = rate_ac;
+
+		status =
+		  ucfg_mlme_get_wmm_nom_msdu_size_ac_bk(hdd_ctx->psoc,
+							&nom_msdu_size_ac);
+		if (!QDF_IS_STATUS_SUCCESS(status)) {
+			hdd_err("Get nom_msdu_size_ac_bk failed");
+			return;
+		}
+		qosInfo.nominal_msdu_size = nom_msdu_size_ac;
+
+		status = ucfg_mlme_get_wmm_sba_ac_bk(hdd_ctx->psoc, &sba_ac);
+		if (!QDF_IS_STATUS_SUCCESS(status)) {
+			hdd_err("Get sba_ac_bk failed");
+			return;
+		}
+		qosInfo.surplus_bw_allowance = sba_ac;
+
 		break;
 	}
 #ifdef FEATURE_WLAN_ESE
@@ -2028,15 +2069,26 @@ QDF_STATUS hdd_wmm_assoc(struct hdd_adapter *adapter,
 	}
 
 	if (uapsdMask & HDD_AC_BK) {
-		status =
-			sme_enable_uapsd_for_ac((WLAN_HDD_GET_STATION_CTX_PTR
-							    (adapter))->conn_info.staId[0],
-						   SME_AC_BK, 2, 2,
-						   hdd_ctx->config->InfraUapsdBkSrvIntv,
-						   hdd_ctx->config->InfraUapsdBkSuspIntv,
-						   SME_QOS_WMM_TS_DIR_BOTH, 1,
-						   adapter->session_id,
-						   hdd_ctx->config->DelayedTriggerFrmInt);
+		status = ucfg_mlme_get_wmm_uapsd_bk_srv_intv(hdd_ctx->psoc,
+							     &srv_value);
+		if (!QDF_IS_STATUS_SUCCESS(status)) {
+			hdd_err("Get uapsd_bk_srv_intv failed");
+			return QDF_STATUS_SUCCESS;
+		}
+		status = ucfg_mlme_get_wmm_uapsd_bk_sus_intv(hdd_ctx->psoc,
+							     &sus_value);
+		if (!QDF_IS_STATUS_SUCCESS(status)) {
+			hdd_err("Get uapsd_bk_sus_intv failed");
+			return QDF_STATUS_SUCCESS;
+		}
+
+		status = sme_enable_uapsd_for_ac(
+				(WLAN_HDD_GET_STATION_CTX_PTR(
+				adapter))->conn_info.staId[0],
+				SME_AC_BK, 2, 2, srv_value, sus_value,
+				SME_QOS_WMM_TS_DIR_BOTH, 1,
+				adapter->session_id,
+				hdd_ctx->config->DelayedTriggerFrmInt);
 
 		QDF_ASSERT(QDF_IS_STATUS_SUCCESS(status));
 	}
@@ -2217,10 +2269,14 @@ QDF_STATUS hdd_wmm_get_uapsd_mask(struct hdd_adapter *adapter,
 			uapsdMask &= ~HDD_AC_VI;
 		}
 
-		if ((WLAN_HDD_GET_CTX(adapter))->config->
-		    InfraUapsdBkSrvIntv == 0) {
-			uapsdMask &= ~HDD_AC_BK;
+		status = ucfg_mlme_get_wmm_uapsd_bk_srv_intv(hdd_ctx->psoc,
+							     &uapsd_value);
+		if (!QDF_IS_STATUS_SUCCESS(status)) {
+			hdd_err("Get uapsd_bk_srv_intv failed");
+			return QDF_STATUS_E_FAILURE;
 		}
+		if (uapsd_value == 0)
+			uapsdMask &= ~HDD_AC_BK;
 
 		status = ucfg_mlme_get_wmm_uapsd_be_srv_intv(hdd_ctx->psoc,
 							     &uapsd_value);