Browse Source

qcacld-3.0: Add the MLME CFG items to new MLME component

Add the following mlme cfg items:
CFG_AP_PROTECTION_MODE_NAME
CFG_AP_OBSS_PROTECTION_MODE_NAME
CFG_AP_STA_SECURITY_SEPERATION_NAME
CFG_ENABLE_BT_CHAIN_SEPARATION
CFG_AP_QOS_UAPSD_MODE_NAME

Change-Id: Iabdfb7c2492c234cfc3e8f71f33801f0034e578d
CRs-Fixed: 2350626
Pragaspathi Thilagaraj 6 years ago
parent
commit
4b5c0601a2

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

@@ -267,6 +267,9 @@ static void mlme_init_chainmask_cfg(struct wlan_objmgr_psoc *psoc,
 
 	chainmask_info->rx_chain_mask_5g =
 		cfg_get(psoc, CFG_RX_CHAIN_MASK_5G);
+
+	chainmask_info->enable_bt_chain_separation =
+		cfg_get(psoc, CFG_ENABLE_BT_CHAIN_SEPARATION);
 }
 
 #ifdef WLAN_FEATURE_11W
@@ -690,6 +693,8 @@ static void mlme_init_qos_cfg(struct wlan_objmgr_psoc *psoc,
 				cfg_get(psoc, CFG_TX_NON_AGGR_SW_RETRY_VO);
 	qos_aggr_params->sap_max_inactivity_override =
 				cfg_get(psoc, CFG_SAP_MAX_INACTIVITY_OVERRIDE);
+	qos_aggr_params->sap_uapsd_enabled =
+				cfg_get(psoc, CFG_SAP_QOS_UAPSD);
 }
 
 static void mlme_init_mbo_cfg(struct wlan_objmgr_psoc *psoc,
@@ -877,6 +882,10 @@ static void mlme_init_sap_protection_cfg(struct wlan_objmgr_psoc *psoc,
 				cfg_default(CFG_FORCE_POLICY_PROTECTION);
 	sap_protection_params->ignore_peer_ht_opmode =
 				cfg_get(psoc, CFG_IGNORE_PEER_HT_MODE);
+	sap_protection_params->enable_ap_obss_protection =
+				cfg_get(psoc, CFG_AP_OBSS_PROTECTION_ENABLE);
+	sap_protection_params->ap_protection_mode =
+				cfg_get(psoc, CFG_AP_PROTECTION_MODE);
 }
 
 #ifdef WLAN_FEATURE_11AX

+ 28 - 1
components/mlme/dispatcher/inc/cfg_mlme_chainmask.h

@@ -318,6 +318,32 @@
 			CFG_VALUE_OR_DEFAULT, \
 			"5Ghz Tx Chainmask")
 
+/*
+ * <ini>
+ * enable_bt_chain_separation - Enables/disables bt /wlan chainmask assignment
+ * @Min: 0
+ * @Max: 1
+ * @Default: 0
+ *
+ * This ini disables/enables chainmask setting on 2x2, mainly used for ROME
+ * BT/WLAN chainmask assignment.
+ *
+ * 0, Disable
+ * 1, Enable
+ *
+ * Related: NA
+ *
+ * Supported Feature: 11n/11ac
+ *
+ * Usage: External
+ *
+ * </ini>
+ */
+#define CFG_ENABLE_BT_CHAIN_SEPARATION CFG_INI_BOOL( \
+				"enableBTChainSeparation", \
+				0, \
+				"Enable/disable BT chainmask assignment")
+
 #define CFG_CHAINMASK_ALL \
 	CFG(CFG_VHT_ENABLE_1x1_TX_CHAINMASK) \
 	CFG(CFG_VHT_ENABLE_1x1_RX_CHAINMASK) \
@@ -328,6 +354,7 @@
 	CFG(CFG_TX_CHAIN_MASK_2G) \
 	CFG(CFG_RX_CHAIN_MASK_2G) \
 	CFG(CFG_TX_CHAIN_MASK_5G) \
-	CFG(CFG_RX_CHAIN_MASK_5G)
+	CFG(CFG_RX_CHAIN_MASK_5G) \
+	CFG(CFG_ENABLE_BT_CHAIN_SEPARATION)
 
 #endif /* __CFG_CHAINMASK_H */

+ 24 - 1
components/mlme/dispatcher/inc/cfg_qos.h

@@ -425,6 +425,28 @@
 			0, \
 			"SAP maximum inactivity override flag")
 
+/*
+ * <ini>
+ * gEnableApUapsd - Enable/disable UAPSD for SoftAP
+ * @Min: 0
+ * @Max: 1
+ * @Default: 1
+ *
+ * This ini is used to setup setup U-APSD for Acs at association
+ *
+ * Related: None.
+ *
+ * Supported Feature: SAP
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_SAP_QOS_UAPSD CFG_INI_BOOL( \
+			"gEnableApUapsd", \
+			1, \
+			"Enable UAPSD for SAP")
+
 #define CFG_QOS_ALL \
 	CFG(CFG_SAP_MAX_INACTIVITY_OVERRIDE) \
 	CFG(CFG_TX_AGGREGATION_SIZE) \
@@ -440,6 +462,7 @@
 	CFG(CFG_TX_NON_AGGR_SW_RETRY_BE) \
 	CFG(CFG_TX_NON_AGGR_SW_RETRY_BK) \
 	CFG(CFG_TX_NON_AGGR_SW_RETRY_VI) \
-	CFG(CFG_TX_NON_AGGR_SW_RETRY_VO)
+	CFG(CFG_TX_NON_AGGR_SW_RETRY_VO) \
+	CFG(CFG_SAP_QOS_UAPSD)
 
 #endif /* __CFG_MLME_QOS_H */

+ 58 - 1
components/mlme/dispatcher/inc/cfg_sap_protection.h

@@ -61,9 +61,66 @@
 		0, \
 		"ignore the peer ht mode")
 
+/*
+ * <ini>
+ * gApProtection - Set AP protection parameter
+ * @Min: 0x0
+ * @Max: 0xFFFF
+ * @Default: 0xBFFF
+ *
+ * This ini is used to set AP protection parameter
+ * Bit map for CFG_AP_PROTECTION_MODE_DEFAULT
+ * LOWER byte for associated stations
+ * UPPER byte for overlapping stations
+ * each byte will have the following info
+ * bit15 bit14 bit13     bit12  bit11 bit10    bit9     bit8
+ * OBSS  RIFS  LSIG_TXOP NON_GF HT20  FROM_11G FROM_11B FROM_11A
+ * bit7  bit6  bit5      bit4   bit3  bit2     bit1     bit0
+ * OBSS  RIFS  LSIG_TXOP NON_GF HT_20 FROM_11G FROM_11B FROM_11A
+ *
+ * Related: None.
+ *
+ * Supported Feature: SAP
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_AP_PROTECTION_MODE CFG_INI_UINT( \
+				"gApProtection", \
+				0x0, \
+				0xFFFF, \
+				0xBFFF, \
+				CFG_VALUE_OR_DEFAULT, \
+				"AP protection mode bitmap")
+
+/*
+ * <ini>
+ * gEnableApOBSSProt - Enable/Disable AP OBSS protection
+ * @Min: 0
+ * @Max: 1
+ * @Default: 0
+ *
+ * This ini is used to enable/disable AP OBSS protection
+ *
+ * Related: None.
+ *
+ * Supported Feature: SAP
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_AP_OBSS_PROTECTION_ENABLE CFG_INI_BOOL( \
+		"gEnableApOBSSProt", \
+		0, \
+		"Enable/Disable AP OBSS protection")
+
 #define CFG_SAP_PROTECTION_ALL \
 	CFG(CFG_PROTECTION_ENABLED) \
 	CFG(CFG_FORCE_POLICY_PROTECTION) \
-	CFG(CFG_IGNORE_PEER_HT_MODE)
+	CFG(CFG_IGNORE_PEER_HT_MODE) \
+	CFG(CFG_AP_PROTECTION_MODE) \
+	CFG(CFG_AP_OBSS_PROTECTION_ENABLE)
 
 #endif /* __CFG_MLME_SAP_PROTECTION_H */

+ 52 - 8
components/mlme/dispatcher/inc/wlan_mlme_api.h

@@ -372,7 +372,6 @@ wlan_mlme_get_acs_support_for_dfs_ltecoex(struct wlan_objmgr_psoc *psoc,
 
 /**
  * wlan_mlme_get_external_acs_policy() - Get the flag for external acs policy
- *
  * @psoc: pointer to psoc object
  * @value: Value that needs to be set from the caller
  *
@@ -405,7 +404,6 @@ QDF_STATUS wlan_mlme_get_ignore_peer_ht_mode(struct wlan_objmgr_psoc *psoc,
 					bool *value);
 /**
  * wlan_mlme_get_tx_chainmask_cck() - Get the tx_chainmask_cfg value
- *
  * @psoc: pointer to psoc object
  * @value: Value that needs to be set from the caller
  *
@@ -416,9 +414,8 @@ QDF_STATUS wlan_mlme_get_tx_chainmask_cck(struct wlan_objmgr_psoc *psoc,
 
 /**
  * wlan_mlme_get_tx_chainmask_1ss() - Get the tx_chainmask_1ss value
- *
  * @psoc: pointer to psoc object
- * @value: Value that needs to be set from the caller
+ * @value: Value that caller needs to get
  *
  * Return: QDF_STATUS_FAILURE or QDF_STATUS_SUCCESS
  */
@@ -427,7 +424,6 @@ QDF_STATUS wlan_mlme_get_tx_chainmask_1ss(struct wlan_objmgr_psoc *psoc,
 
 /**
  * wlan_mlme_get_num_11b_tx_chains() -  Get the number of 11b only tx chains
- *
  * @psoc: pointer to psoc object
  * @value: Value that needs to be set from the caller
  *
@@ -438,9 +434,8 @@ QDF_STATUS wlan_mlme_get_num_11b_tx_chains(struct wlan_objmgr_psoc *psoc,
 
 /**
  * wlan_mlme_get_num_11ag_tx_chains() - get the total number of 11a/g tx chains
- *
  * @psoc: pointer to psoc object
- * @value: Value that needs to be set from the caller
+ * @value: Value that caller needs to get
  *
  * Return: QDF_STATUS_FAILURE or QDF_STATUS_SUCCESS
  */
@@ -448,8 +443,17 @@ QDF_STATUS wlan_mlme_get_num_11ag_tx_chains(struct wlan_objmgr_psoc *psoc,
 					    uint16_t *value);
 
 /**
- * wlan_mlme_configure_chain_mask() - configure chainmask parameters
+ * wlan_mlme_get_bt_chain_separation_flag() - get the enable_bt_chain_separation
+ * flag
+ * @psoc: pointer to psoc object
+ * @value: Value that needs to be set from the caller
  *
+ * Return: QDF_STATUS_FAILURE or QDF_STATUS_SUCCESS
+ */
+QDF_STATUS wlan_mlme_get_bt_chain_separation_flag(struct wlan_objmgr_psoc *psoc,
+						  bool *value);
+/**
+ * wlan_mlme_configure_chain_mask() - configure chainmask parameters
  * @psoc: pointer to psoc object
  * @session_id: vdev_id
  *
@@ -737,6 +741,27 @@ QDF_STATUS mlme_update_tgt_he_caps_in_cfg(struct wlan_objmgr_psoc *psoc,
 					  struct wma_tgt_cfg *cfg);
 #endif
 
+/**
+ * wlan_mlme_get_ap_protection_mode() - Get ap_protection_mode value
+ * @psoc: pointer to psoc object
+ * @value: pointer to the value which needs to be filled for the caller
+ *
+ * Return: QDF Status
+ */
+QDF_STATUS wlan_mlme_get_ap_protection_mode(struct wlan_objmgr_psoc *psoc,
+					    uint16_t *value);
+
+/**
+ * wlan_mlme_is_ap_obss_prot_enabled() - Get ap_obss_protection is
+ * enabled/disabled
+ * @psoc: pointer to psoc object
+ * @value: pointer to the value which needs to be filled for the caller
+ *
+ * Return: QDF Status
+ */
+QDF_STATUS wlan_mlme_is_ap_obss_prot_enabled(struct wlan_objmgr_psoc *psoc,
+					     bool *value);
+
 /**
  * wlan_mlme_get_rts_threshold() - Get the RTS threshold config
  * @psoc: pointer to psoc object
@@ -1794,4 +1819,23 @@ QDF_STATUS mlme_update_vht_cap(struct wlan_objmgr_psoc *psoc,
  */
 QDF_STATUS mlme_update_nss_vht_cap(struct wlan_objmgr_psoc *psoc);
 
+/**
+ * wlan_mlme_is_sap_uapsd_enabled() - Get if SAP UAPSD is enabled/disabled
+ * @psoc: psoc context
+ * @value: value to be filled for caller
+ *
+ * Return: QDF_STATUS
+ */
+QDF_STATUS wlan_mlme_is_sap_uapsd_enabled(struct wlan_objmgr_psoc *psoc,
+					  bool *value);
+
+/**
+ * wlan_mlme_set_sap_uapsd_flag() - Enable/Disable SAP UAPSD
+ * @psoc:  psoc context
+ * @value: Enable/Disable control value for sap_uapsd_enabled field
+ *
+ * Return: QDF_STATUS
+ */
+QDF_STATUS wlan_mlme_set_sap_uapsd_flag(struct wlan_objmgr_psoc *psoc,
+					bool value);
 #endif /* _WLAN_MLME_API_H_ */

+ 12 - 7
components/mlme/dispatcher/inc/wlan_mlme_public_struct.h

@@ -697,6 +697,7 @@ struct wlan_mlme_vht_caps {
  * @tx_non_aggr_sw_retry_threshold_vo: non aggr sw retry threshold for VO
  * @sap_max_inactivity_override: Override updating ap_sta_inactivity from
  * hostapd.conf
+ * @sap_uapsd_enabled: Flag to enable/disable UAPSD for SAP
  */
 struct wlan_mlme_qos {
 	uint32_t tx_aggregation_size;
@@ -714,6 +715,7 @@ struct wlan_mlme_qos {
 	uint32_t tx_non_aggr_sw_retry_threshold_vi;
 	uint32_t tx_non_aggr_sw_retry_threshold_vo;
 	bool sap_max_inactivity_override;
+	bool sap_uapsd_enabled;
 };
 
 #ifdef WLAN_FEATURE_11AX
@@ -818,21 +820,22 @@ struct wlan_mlme_feature_flag {
 
 /*
  * struct wlan_mlme_sap_protection_cfg - SAP erp protection config items
- *
- * @protection_enabled:        Force enable protection. static via cfg
- * @protection_force_policy:   Protection force policy. Static via cfg
  * @ignore_peer_ht_opmode:     Ignore the ht opmode of the peer. Dynamic via INI
- *
+ * @enable_ap_obss_protection: enable/disable AP OBSS protection
+ * @protection_force_policy:   Protection force policy. Static via cfg
+ * @ap_protection_mode:        AP protection bitmap
+ * @protection_enabled:        Force enable protection. static via cfg
  */
 struct wlan_mlme_sap_protection {
-	uint32_t protection_enabled;
-	uint8_t protection_force_policy;
 	bool ignore_peer_ht_opmode;
+	bool enable_ap_obss_protection;
+	uint8_t protection_force_policy;
+	uint16_t ap_protection_mode;
+	uint32_t protection_enabled;
 };
 
 /*
  * struct wlan_mlme_chainmask - All chainmask related cfg items
- *
  * @txchainmask1x1:     To set transmit chainmask
  * @rxchainmask1x1:     To set rx chainmask
  * @tx_chain_mask_cck:  Used to enable/disable Cck ChainMask
@@ -843,6 +846,7 @@ struct wlan_mlme_sap_protection {
  * @rx_chain_mask_2g:   Tx chain mask for 2g
  * @tx_chain_mask_5g:   Tx chain mask for 5g
  * @rx_chain_mask_5g:   Rx chain mask for 5g
+ * @enable_bt_chain_separation: Enable/Disable BT/WLAN Host chain seperation
  */
 struct wlan_mlme_chainmask {
 	uint8_t txchainmask1x1;
@@ -855,6 +859,7 @@ struct wlan_mlme_chainmask {
 	uint8_t rx_chain_mask_2g;
 	uint8_t tx_chain_mask_5g;
 	uint8_t rx_chain_mask_5g;
+	bool enable_bt_chain_separation;
 };
 
 /* struct wlan_mlme_generic - Generic CFG config items

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

@@ -626,6 +626,20 @@ QDF_STATUS ucfg_mlme_get_num_11ag_tx_chains(struct wlan_objmgr_psoc *psoc,
 	return wlan_mlme_get_num_11ag_tx_chains(psoc, value);
 }
 
+/**
+ * ucfg_mlme_get_bt_chain_separation_flag() - bt chain separation enable/disable
+ * @psoc: pointer to psoc object
+ * @value: Value that needs to be got for the caller
+ *
+ * Return: QDF_STATUS_FAILURE or QDF_STATUS_SUCCESS
+ */
+static inline
+QDF_STATUS ucfg_mlme_get_bt_chain_separation_flag(struct wlan_objmgr_psoc *psoc,
+						  bool *value)
+{
+	return wlan_mlme_get_bt_chain_separation_flag(psoc, value);
+}
+
 /**
  * ucfg_mlme_configure_chain_mask() - configure chainmask parameters
  *
@@ -1152,6 +1166,40 @@ QDF_STATUS ucfg_mlme_get_oce_sap_enabled_info(struct wlan_objmgr_psoc *psoc,
 	return wlan_mlme_get_oce_sap_enabled_info(psoc, value);
 }
 
+/**
+ * ucfg_mlme_get_ap_protection_mode() - Get ap protection mode info
+ * @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 to get the
+ * ap protection mode value
+ *
+ * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE
+ */
+static inline
+QDF_STATUS ucfg_mlme_get_ap_protection_mode(struct wlan_objmgr_psoc *psoc,
+					    uint16_t *value)
+{
+	return wlan_mlme_get_ap_protection_mode(psoc, value);
+}
+
+/**
+ * ucfg_mlme_is_ap_obss_prot_enabled() - Get ap obss protection enable/disable
+ * @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 to get the
+ * obss protection enable value
+ *
+ * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE
+ */
+static inline
+QDF_STATUS ucfg_mlme_is_ap_obss_prot_enabled(struct wlan_objmgr_psoc *psoc,
+					     bool *value)
+{
+	return wlan_mlme_is_ap_obss_prot_enabled(psoc, value);
+}
+
 /**
  * ucfg_mlme_get_rts_threshold() - Get the rts threshold config
  * @psoc: pointer to psoc object
@@ -2458,6 +2506,7 @@ ucfg_mlme_get_ts_info_ack_policy(struct wlan_objmgr_psoc *psoc,
  * @psoc: pointer to psoc object
  * @value: Value that needs to be get from the caller
  *
+ *
  * Inline UCFG API to be used by HDD/OSIF callers
  *
  * Return: QDF Status
@@ -2468,4 +2517,34 @@ ucfg_mlme_get_ts_acm_value_for_ac(struct wlan_objmgr_psoc *psoc, bool *value)
 	return wlan_mlme_get_ts_acm_value_for_ac(psoc, value);
 }
 
+/*
+ * ucfg_mlme_is_sap_uapsd_enabled() - SAP UAPSD enabled status.
+ * @psoc: pointer to psoc object
+ * @value: sap uapsd enabled flag value requested from the caller
+ *
+ * Inline UCFG API to be used by HDD/OSIF callers
+ *
+ * Return: QDF Status
+ */
+static inline QDF_STATUS
+ucfg_mlme_is_sap_uapsd_enabled(struct wlan_objmgr_psoc *psoc, bool *value)
+{
+	return wlan_mlme_is_sap_uapsd_enabled(psoc, value);
+}
+
+/*
+ * ucfg_mlme_set_sap_uapsd_flag() - SAP UAPSD enabled status.
+ * @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_set_sap_uapsd_flag(struct wlan_objmgr_psoc *psoc, bool value)
+{
+	return wlan_mlme_set_sap_uapsd_flag(psoc, value);
+}
+
 #endif /* _WLAN_MLME_UCFG_API_H_ */

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

@@ -816,6 +816,20 @@ QDF_STATUS wlan_mlme_get_num_11b_tx_chains(struct wlan_objmgr_psoc *psoc,
 	return QDF_STATUS_SUCCESS;
 }
 
+QDF_STATUS wlan_mlme_get_bt_chain_separation_flag(struct wlan_objmgr_psoc *psoc,
+						  bool *value)
+{
+	struct wlan_mlme_psoc_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.chainmask_cfg.enable_bt_chain_separation;
+	return QDF_STATUS_SUCCESS;
+}
+
 QDF_STATUS wlan_mlme_get_num_11ag_tx_chains(struct wlan_objmgr_psoc *psoc,
 					    uint16_t *value)
 {
@@ -1935,6 +1949,36 @@ QDF_STATUS wlan_mlme_get_oce_sap_enabled_info(struct wlan_objmgr_psoc *psoc,
 	return QDF_STATUS_SUCCESS;
 }
 
+QDF_STATUS wlan_mlme_get_ap_protection_mode(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.sap_protection_cfg.ap_protection_mode;
+
+	return QDF_STATUS_SUCCESS;
+}
+
+QDF_STATUS wlan_mlme_is_ap_obss_prot_enabled(struct wlan_objmgr_psoc *psoc,
+					     bool *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.sap_protection_cfg.enable_ap_obss_protection;
+
+	return QDF_STATUS_SUCCESS;
+}
+
 QDF_STATUS wlan_mlme_get_rts_threshold(struct wlan_objmgr_psoc *psoc,
 				       uint32_t *value)
 {
@@ -2921,3 +2965,33 @@ QDF_STATUS mlme_update_nss_vht_cap(struct wlan_objmgr_psoc *psoc)
 
 	return QDF_STATUS_SUCCESS;
 }
+
+QDF_STATUS wlan_mlme_is_sap_uapsd_enabled(struct wlan_objmgr_psoc *psoc,
+					  bool *value)
+{
+	struct wlan_mlme_psoc_obj *mlme_obj;
+
+	mlme_obj = mlme_get_psoc_obj(psoc);
+	if (!mlme_obj) {
+		mlme_err("Get MLME Obj failed");
+		return QDF_STATUS_E_FAILURE;
+	}
+	*value = mlme_obj->cfg.qos_mlme_params.sap_uapsd_enabled;
+
+	return QDF_STATUS_SUCCESS;
+}
+
+QDF_STATUS wlan_mlme_set_sap_uapsd_flag(struct wlan_objmgr_psoc *psoc,
+					bool value)
+{
+	struct wlan_mlme_psoc_obj *mlme_obj;
+
+	mlme_obj = mlme_get_psoc_obj(psoc);
+	if (!mlme_obj) {
+		mlme_err("Get MLME Obj failed");
+		return QDF_STATUS_E_FAILURE;
+	}
+	mlme_obj->cfg.qos_mlme_params.sap_uapsd_enabled &= value;
+
+	return QDF_STATUS_SUCCESS;
+}

+ 0 - 1
core/cds/inc/cds_config.h

@@ -112,7 +112,6 @@ struct cds_config_info {
 	uint8_t sta_maxlimod_dtim;
 	enum qdf_driver_type driver_type;
 	uint8_t dfs_phyerr_filter_offload;
-	uint8_t ap_disable_intrabss_fwd;
 	uint8_t ap_maxoffload_peers;
 	uint8_t ap_maxoffload_reorderbuffs;
 #ifdef FEATURE_WLAN_RA_FILTERING

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

@@ -2168,28 +2168,6 @@ enum hdd_dot11_mode {
 #define CFG_DOT11_MODE_DEFAULT                 eHDD_DOT11_MODE_11ax
 #define CFG_DOT11_MODE_MAX                     eHDD_DOT11_MODE_11ax
 
-/*
- * <ini>
- * gEnableApUapsd - Enable/disable UAPSD for SoftAP
- * @Min: 0
- * @Max: 1
- * @Default: 1
- *
- * This ini is used to setup setup U-APSD for Acs at association
- *
- * Related: None.
- *
- * Supported Feature: SAP
- *
- * Usage: Internal/External
- *
- * </ini>
- */
-#define CFG_AP_QOS_UAPSD_MODE_NAME             "gEnableApUapsd"
-#define CFG_AP_QOS_UAPSD_MODE_MIN              (0)
-#define CFG_AP_QOS_UAPSD_MODE_MAX              (1)
-#define CFG_AP_QOS_UAPSD_MODE_DEFAULT          (1)
-
 /*
  * <ini>
  * gEnableApRandomBssid - Create ramdom BSSID
@@ -2235,58 +2213,6 @@ enum hdd_dot11_mode {
 #define CFG_AP_ENABLE_PROTECTION_MODE_MAX             (1)
 #define CFG_AP_ENABLE_PROTECTION_MODE_DEFAULT         (1)
 
-/*
- * <ini>
- * gApProtection - Set AP protection parameter
- * @Min: 0x0
- * @Max: 0xFFFF
- * @Default: 0xBFFF
- *
- * This ini is used to set AP protection parameter
- * Bit map for CFG_AP_PROTECTION_MODE_DEFAULT
- * LOWER byte for associated stations
- * UPPER byte for overlapping stations
- * each byte will have the following info
- * bit15 bit14 bit13     bit12  bit11 bit10    bit9     bit8
- * OBSS  RIFS  LSIG_TXOP NON_GF HT20  FROM_11G FROM_11B FROM_11A
- * bit7  bit6  bit5      bit4   bit3  bit2     bit1     bit0
- * OBSS  RIFS  LSIG_TXOP NON_GF HT_20 FROM_11G FROM_11B FROM_11A
- *
- * Related: None.
- *
- * Supported Feature: SAP
- *
- * Usage: Internal/External
- *
- * </ini>
- */
-#define CFG_AP_PROTECTION_MODE_NAME            "gApProtection"
-#define CFG_AP_PROTECTION_MODE_MIN             (0x0)
-#define CFG_AP_PROTECTION_MODE_MAX             (0xFFFF)
-#define CFG_AP_PROTECTION_MODE_DEFAULT         (0xBFFF)
-
-/*
- * <ini>
- * gEnableApOBSSProt - Enable/Disable AP OBSS protection
- * @Min: 0
- * @Max: 1
- * @Default: 0
- *
- * This ini is used to enable/disable AP OBSS protection
- *
- * Related: None.
- *
- * Supported Feature: SAP
- *
- * Usage: Internal/External
- *
- * </ini>
- */
-#define CFG_AP_OBSS_PROTECTION_MODE_NAME       "gEnableApOBSSProt"
-#define CFG_AP_OBSS_PROTECTION_MODE_MIN        (0)
-#define CFG_AP_OBSS_PROTECTION_MODE_MAX        (1)
-#define CFG_AP_OBSS_PROTECTION_MODE_DEFAULT    (0)
-
 #define CFG_DISABLE_PACKET_FILTER		"gDisablePacketFilter"
 #define CFG_DISABLE_PACKET_FILTER_MIN		(0)
 #define CFG_DISABLE_PACKET_FILTER_MAX		(1)
@@ -2999,33 +2925,6 @@ enum hdd_link_speed_rpt_type {
 	eHDD_LINK_SPEED_REPORT_MAX_SCALED = 2,
 };
 
-/*
- * <ini>
- * enableBTChainSeparation - Enables/disables bt /wlan chainmask assignment
- * @Min: 0
- * @Max: 1
- * @Default: 0
- *
- * This ini disables/enables chainmask setting on 2x2, mainly used for ROME
- * BT/WLAN chainmask assignment.
- *
- * 0, Disable
- * 1, Enable
- *
- * Related: NA
- *
- * Supported Feature: 11n/11ac
- *
- * Usage: External
- *
- * </ini>
- */
-
-#define CFG_ENABLE_BT_CHAIN_SEPARATION         "enableBTChainSeparation"
-#define CFG_ENABLE_BT_CHAIN_SEPARATION_MIN     (0)
-#define CFG_ENABLE_BT_CHAIN_SEPARATION_MAX     (1)
-#define CFG_ENABLE_BT_CHAIN_SEPARATION_DEFAULT (0)
-
 /*
  * <ini>
  * gDisableDFSChSwitch - Disable channel switch if radar is found
@@ -6026,11 +5925,8 @@ struct hdd_config {
 	uint8_t intfAddrMask;
 	struct qdf_mac_addr intfMacAddr[QDF_MAX_CONCURRENCY_PERSONA];
 
-	bool apUapsdEnabled;
 	bool apRandomBssidEnabled;
 	bool apProtEnabled;
-	uint16_t apProtection;
-	bool apOBSSProtEnabled;
 	enum station_keepalive_method sta_keepalive_method;
 	uint8_t nTxPowerCap;    /* In dBm */
 	bool allow_tpc_from_ap;
@@ -6372,7 +6268,6 @@ struct hdd_config {
 	bool action_oui_enable;
 	uint8_t action_oui_str[ACTION_OUI_MAXIMUM_ID][ACTION_OUI_MAX_STR_LEN];
 	uint16_t wmi_wq_watchdog_timeout;
-	bool enable_bt_chain_separation;
 	uint8_t enable_tx_sch_delay;
 	uint32_t enable_secondary_rate;
 	bool is_unit_test_framework_enabled;

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

@@ -476,13 +476,6 @@ struct reg_table_entry g_registry_table[] = {
 			    VAR_FLAGS_OPTIONAL,
 			    (void *)CFG_INTF3_MAC_ADDR_DEFAULT),
 
-	REG_VARIABLE(CFG_AP_QOS_UAPSD_MODE_NAME, WLAN_PARAM_Integer,
-		     struct hdd_config, apUapsdEnabled,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_AP_QOS_UAPSD_MODE_DEFAULT,
-		     CFG_AP_QOS_UAPSD_MODE_MIN,
-		     CFG_AP_QOS_UAPSD_MODE_MAX),
-
 	REG_VARIABLE(CFG_AP_ENABLE_RANDOM_BSSID_NAME, WLAN_PARAM_Integer,
 		     struct hdd_config, apRandomBssidEnabled,
 		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
@@ -497,20 +490,6 @@ struct reg_table_entry g_registry_table[] = {
 		     CFG_AP_ENABLE_PROTECTION_MODE_MIN,
 		     CFG_AP_ENABLE_PROTECTION_MODE_MAX),
 
-	REG_VARIABLE(CFG_AP_PROTECTION_MODE_NAME, WLAN_PARAM_HexInteger,
-		     struct hdd_config, apProtection,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_AP_PROTECTION_MODE_DEFAULT,
-		     CFG_AP_PROTECTION_MODE_MIN,
-		     CFG_AP_PROTECTION_MODE_MAX),
-
-	REG_VARIABLE(CFG_AP_OBSS_PROTECTION_MODE_NAME, WLAN_PARAM_Integer,
-		     struct hdd_config, apOBSSProtEnabled,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_AP_OBSS_PROTECTION_MODE_DEFAULT,
-		     CFG_AP_OBSS_PROTECTION_MODE_MIN,
-		     CFG_AP_OBSS_PROTECTION_MODE_MAX),
-
 #ifdef FEATURE_WLAN_DYNAMIC_CVM
 	REG_VARIABLE(CFG_VC_MODE_BITMAP, WLAN_PARAM_HexInteger,
 		struct hdd_config, vc_mode_cfg_bitmap,
@@ -1277,13 +1256,6 @@ struct reg_table_entry g_registry_table[] = {
 		     CFG_THROTTLE_DUTY_CYCLE_LEVEL3_MIN,
 		     CFG_THROTTLE_DUTY_CYCLE_LEVEL3_MAX),
 
-	REG_VARIABLE(CFG_ENABLE_BT_CHAIN_SEPARATION, WLAN_PARAM_Integer,
-		     struct hdd_config, enable_bt_chain_separation,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_ENABLE_BT_CHAIN_SEPARATION_DEFAULT,
-		     CFG_ENABLE_BT_CHAIN_SEPARATION_MIN,
-		     CFG_ENABLE_BT_CHAIN_SEPARATION_MAX),
-
 	REG_VARIABLE(CFG_DISABLE_DFS_CH_SWITCH, WLAN_PARAM_Integer,
 		     struct hdd_config, disableDFSChSwitch,
 		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,

+ 16 - 5
core/hdd/src/wlan_hdd_hostapd.c

@@ -4609,7 +4609,7 @@ int wlan_hdd_cfg80211_start_bss(struct hdd_adapter *adapter,
 	struct ieee80211_mgmt *pMgmt_frame;
 	struct ieee80211_mgmt mgmt;
 	const uint8_t *pIe = NULL;
-	uint16_t capab_info;
+	uint16_t capab_info, ap_prot = cfg_default(CFG_AP_PROTECTION_MODE);
 	eCsrAuthType RSNAuthType;
 	eCsrEncryptionType RSNEncryptType;
 	eCsrEncryptionType mcRSNEncryptType;
@@ -4634,10 +4634,10 @@ int wlan_hdd_cfg80211_start_bss(struct hdd_adapter *adapter,
 	bool val;
 	uint32_t auto_channel_select_weight =
 		cfg_default(CFG_AUTO_CHANNEL_SELECT_WEIGHT);
-	bool bval = false;
 	uint8_t pref_chan_location = 0;
 	bool sap_force_11n_for_11ac = 0;
 	bool go_force_11n_for_11ac = 0;
+	bool bval = false, ap_obss_prot = false, sap_uapsd = true;
 
 	hdd_enter();
 
@@ -5194,7 +5194,10 @@ int wlan_hdd_cfg80211_start_bss(struct hdd_adapter *adapter,
 	/* ht_capab is not what the name conveys,
 	 * this is used for protection bitmap
 	 */
-	pConfig->ht_capab = iniConfig->apProtection;
+	qdf_status = ucfg_mlme_get_ap_protection_mode(hdd_ctx->psoc, &ap_prot);
+	if (QDF_IS_STATUS_ERROR(qdf_status))
+		hdd_debug("Get ap protection mode failed using default value");
+	pConfig->ht_capab = ap_prot;
 
 	if (0 != wlan_hdd_cfg80211_update_apies(adapter)) {
 		hdd_err("SAP Not able to set AP IEs");
@@ -5202,9 +5205,17 @@ int wlan_hdd_cfg80211_start_bss(struct hdd_adapter *adapter,
 		goto error;
 	}
 	/* Uapsd Enabled Bit */
-	pConfig->UapsdEnable = iniConfig->apUapsdEnabled;
+	qdf_status = ucfg_mlme_is_sap_uapsd_enabled(hdd_ctx->psoc, &sap_uapsd);
+	if (QDF_IS_STATUS_ERROR(qdf_status))
+		hdd_debug("Get ap UAPSD enabled/disabled failed");
+	pConfig->UapsdEnable = sap_uapsd;
+
 	/* Enable OBSS protection */
-	pConfig->obssProtEnabled = iniConfig->apOBSSProtEnabled;
+	qdf_status = ucfg_mlme_is_ap_obss_prot_enabled(hdd_ctx->psoc,
+						       &ap_obss_prot);
+	if (QDF_IS_STATUS_ERROR(qdf_status))
+		hdd_debug("Get ap obss protection failed");
+	pConfig->obssProtEnabled = ap_obss_prot;
 
 #ifdef WLAN_FEATURE_11W
 	pConfig->mfpCapable = MFPCapable;

+ 12 - 11
core/hdd/src/wlan_hdd_main.c

@@ -1446,7 +1446,7 @@ static void hdd_update_tgt_services(struct hdd_context *hdd_ctx,
 	bool value;
 #endif
 	/* Set up UAPSD */
-	config->apUapsdEnabled &= cfg->uapsd;
+	ucfg_mlme_set_sap_uapsd_flag(hdd_ctx->psoc, cfg->uapsd);
 
 	/* 11AX mode support */
 	if ((config->dot11Mode == eHDD_DOT11_MODE_11ax ||
@@ -4558,17 +4558,21 @@ static int hdd_configure_chain_mask(struct hdd_adapter *adapter)
 	QDF_STATUS status;
 	struct wma_caps_per_phy non_dbs_phy_cap;
 	struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
-	bool bval = false;
+	bool enable2x2 = false, enable_bt_chain_sep = false;
 
-	status = ucfg_mlme_get_vht_enable2x2(hdd_ctx->psoc, &bval);
-	if (!QDF_IS_STATUS_SUCCESS(status))
+	status = ucfg_mlme_get_vht_enable2x2(hdd_ctx->psoc, &enable2x2);
+	if (QDF_IS_STATUS_ERROR(status))
 		hdd_err("unable to get vht_enable2x2");
 
+	status = ucfg_mlme_get_bt_chain_separation_flag(hdd_ctx->psoc,
+							&enable_bt_chain_sep);
+	if (QDF_IS_STATUS_ERROR(status))
+		hdd_debug("unable to get BT chain separation. using default");
+
 	hdd_debug("enable2x2: %d, lte_coex: %d, disable_DBS: %d",
-		  bval, hdd_ctx->lte_coex_ant_share,
+		  enable2x2, hdd_ctx->lte_coex_ant_share,
 		  hdd_ctx->config->dual_mac_feature_disable);
-	hdd_debug("enable_bt_chain_separation %d",
-		  hdd_ctx->config->enable_bt_chain_separation);
+	hdd_debug("enable_bt_chain_separation %d", enable_bt_chain_sep);
 
 	status = wma_get_caps_for_phyidx_hwmode(&non_dbs_phy_cap,
 						HW_MODE_DBS_NONE,
@@ -4586,7 +4590,7 @@ static int hdd_configure_chain_mask(struct hdd_adapter *adapter)
 		return 0;
 	}
 
-	if (bval && !hdd_ctx->config->enable_bt_chain_separation) {
+	if (enable2x2 && !enable_bt_chain_sep) {
 		hdd_debug("2x2 enabled. skip chain mask programming");
 		return 0;
 	}
@@ -9757,9 +9761,6 @@ static int hdd_update_cds_config(struct hdd_context *hdd_ctx)
 						    &value);
 	cds_cfg->ap_maxoffload_reorderbuffs = value;
 
-	cds_cfg->ap_disable_intrabss_fwd =
-		cfg_get(hdd_ctx->psoc, CFG_DP_AP_STA_SECURITY_SEPERATION);
-
 	cds_cfg->dfs_pri_multiplier =
 		hdd_ctx->config->dfsRadarPriMultiplier;
 	cds_cfg->reorder_offload =

+ 0 - 10
core/mac/inc/wni_cfg.h

@@ -43,8 +43,6 @@ enum {
 	WNI_CFG_SCAN_IN_POWERSAVE,
 	WNI_CFG_IBSS_AUTO_BSSID,
 	WNI_CFG_WPS_UUID,
-	WNI_CFG_TELE_BCN_WAKEUP_EN,
-	WNI_CFG_TELE_BCN_MAX_LI,
 	WNI_CFG_ENABLE_MCC_ADAPTIVE_SCHED,
 	WNI_CFG_DISABLE_LDPC_WITH_TXBF_AP,
 	WNI_CFG_IBSS_ATIM_WIN_SIZE,
@@ -403,14 +401,6 @@ enum {
 
 #define WNI_CFG_WPS_ENABLE_AP    1
 
-#define WNI_CFG_TELE_BCN_WAKEUP_EN_STAMIN    0
-#define WNI_CFG_TELE_BCN_WAKEUP_EN_STAMAX    1
-#define WNI_CFG_TELE_BCN_WAKEUP_EN_STADEF    0
-
-#define WNI_CFG_TELE_BCN_MAX_LI_STAMIN    0
-#define WNI_CFG_TELE_BCN_MAX_LI_STAMAX    7
-#define WNI_CFG_TELE_BCN_MAX_LI_STADEF    5
-
 #define WNI_CFG_ASSOC_STA_LIMIT_STAMIN    1
 #define WNI_CFG_ASSOC_STA_LIMIT_STAMAX    32
 #define WNI_CFG_ASSOC_STA_LIMIT_STADEF    10

+ 0 - 2
core/mac/src/cfg/cfg_param_name.c

@@ -57,8 +57,6 @@ const char *cfg_get_string(uint16_t cfg_id)
 	CASE_RETURN_STRING(WNI_CFG_AS_CAP);
 	CASE_RETURN_STRING(WNI_CFG_IBSS_AUTO_BSSID);
 	CASE_RETURN_STRING(WNI_CFG_WPS_UUID);
-	CASE_RETURN_STRING(WNI_CFG_TELE_BCN_WAKEUP_EN);
-	CASE_RETURN_STRING(WNI_CFG_TELE_BCN_MAX_LI);
 	CASE_RETURN_STRING(WNI_CFG_ENABLE_MCC_ADAPTIVE_SCHED);
 	CASE_RETURN_STRING(WNI_CFG_DISABLE_LDPC_WITH_TXBF_AP);
 	CASE_RETURN_STRING(WNI_CFG_IBSS_ATIM_WIN_SIZE);

+ 0 - 10
core/mac/src/cfg/cfg_proc_msg.c

@@ -116,16 +116,6 @@ cgstatic cfg_static[CFG_PARAM_MAX_NUM] = {
 	{WNI_CFG_WPS_UUID,
 	CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_NTF_LIM,
 	0, 0, 0},
-	{WNI_CFG_TELE_BCN_WAKEUP_EN,
-	CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT,
-	WNI_CFG_TELE_BCN_WAKEUP_EN_STAMIN,
-	WNI_CFG_TELE_BCN_WAKEUP_EN_STAMAX,
-	WNI_CFG_TELE_BCN_WAKEUP_EN_STADEF},
-	{WNI_CFG_TELE_BCN_MAX_LI,
-	CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT,
-	WNI_CFG_TELE_BCN_MAX_LI_STAMIN,
-	WNI_CFG_TELE_BCN_MAX_LI_STAMAX,
-	WNI_CFG_TELE_BCN_MAX_LI_STADEF},
 	{WNI_CFG_ENABLE_MCC_ADAPTIVE_SCHED,
 	CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT,
 	WNI_CFG_ENABLE_MCC_ADAPTIVE_SCHED_STAMIN,

+ 1 - 1
core/wma/inc/wma_tgt_cfg.h

@@ -44,7 +44,7 @@
  */
 struct wma_tgt_services {
 	uint32_t sta_power_save;
-	uint32_t uapsd;
+	bool uapsd;
 	uint32_t ap_dfs;
 	uint32_t en_11ac;
 	uint32_t arp_offload;