From 460d165b3dd47f096880ef45c15d2db78287946d Mon Sep 17 00:00:00 2001 From: Abhinav Kumar Date: Sun, 9 Sep 2018 12:41:28 +0530 Subject: [PATCH] qcacld-3.0: Add MLME CFG items and APIs for VHT Add the basic infra for MLME CFG items and the APIs to be used from other components for VHT - Part-2 Change-Id: I8f9c8286861c5a7b17d0261cad6c51b431e86f4a CRs-Fixed: 2322302 --- mlme/dispatcher/inc/wlan_mlme_api.h | 505 +++++++++++++++++++++++ mlme/dispatcher/inc/wlan_mlme_ucfg_api.h | 406 ++++++++++++++++++ mlme/dispatcher/src/wlan_mlme_api.c | 398 ++++++++++++++++++ 3 files changed, 1309 insertions(+) diff --git a/mlme/dispatcher/inc/wlan_mlme_api.h b/mlme/dispatcher/inc/wlan_mlme_api.h index d2a855dd87..efd939e488 100644 --- a/mlme/dispatcher/inc/wlan_mlme_api.h +++ b/mlme/dispatcher/inc/wlan_mlme_api.h @@ -686,5 +686,510 @@ wlan_mlme_get_wmm_uapsd_vo_srv_intv(struct wlan_objmgr_psoc *psoc, QDF_STATUS wlan_mlme_get_wmm_uapsd_vo_sus_intv(struct wlan_objmgr_psoc *psoc, uint32_t *value); +/** + * wlan_mlme_cfg_get_vht_max_mpdu_len() - gets vht max mpdu length from cfg item + * @psoc: psoc context + * @value: pointer to get required data + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_cfg_get_vht_max_mpdu_len(struct wlan_objmgr_psoc *psoc, + uint8_t *value); + +/** + * wlan_mlme_cfg_set_vht_max_mpdu_len() - sets vht max mpdu length into cfg item + * @psoc: psoc context + * @value: data to be set + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_cfg_set_vht_max_mpdu_len(struct wlan_objmgr_psoc *psoc, + uint8_t value); + +/** + * wlan_mlme_cfg_get_vht_chan_width() - gets vht supported channel width from + * cfg item + * @psoc: psoc context + * @value: pointer to get required data + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_cfg_get_vht_chan_width(struct wlan_objmgr_psoc *psoc, + uint8_t *value); + +/** + * wlan_mlme_cfg_set_vht_chan_width() - sets vht supported channel width into + * cfg item + * @psoc: psoc context + * @value: data to be set + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_cfg_set_vht_chan_width(struct wlan_objmgr_psoc *psoc, + uint8_t value); + +/** + * wlan_mlme_cfg_get_vht_ldpc_coding_cap() - gets vht ldpc coding cap from + * cfg item + * @psoc: psoc context + * @value: pointer to get required data + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_cfg_get_vht_ldpc_coding_cap(struct wlan_objmgr_psoc *psoc, + bool *value); + +/** + * wlan_mlme_cfg_set_vht_ldpc_coding_cap() - sets vht ldpc coding cap into + * cfg item + * @psoc: psoc context + * @value: data to be set + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_cfg_set_vht_ldpc_coding_cap(struct wlan_objmgr_psoc *psoc, + bool value); + +/** + * wlan_mlme_cfg_get_vht_short_gi_80mhz() - gets vht short gi 80MHz from + * cfg item + * @psoc: psoc context + * @value: pointer to get required data + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_cfg_get_vht_short_gi_80mhz(struct wlan_objmgr_psoc *psoc, + bool *value); + +/** + * wlan_mlme_cfg_set_vht_short_gi_80mhz() - sets vht short gi 80MHz into + * cfg item + * @psoc: psoc context + * @value: data to be set + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_cfg_set_vht_short_gi_80mhz(struct wlan_objmgr_psoc *psoc, + bool value); + +/** + * wlan_mlme_cfg_get_vht_short_gi_160mhz() - gets vht short gi 160MHz from + * cfg item + * @psoc: psoc context + * @value: pointer to get required data + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_cfg_get_vht_short_gi_160mhz(struct wlan_objmgr_psoc *psoc, + bool *value); + +/** + * wlan_mlme_cfg_set_vht_short_gi_160mhz() - sets vht short gi 160MHz into + * cfg item + * @psoc: psoc context + * @value: data to be set + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_cfg_set_vht_short_gi_160mhz(struct wlan_objmgr_psoc *psoc, + bool value); + +/** + * wlan_mlme_cfg_get_vht_tx_stbc() - gets vht tx stbc from + * cfg item + * @psoc: psoc context + * @value: pointer to get required data + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_cfg_get_vht_tx_stbc(struct wlan_objmgr_psoc *psoc, + bool *value); + +/** + * wlan_mlme_cfg_set_vht_tx_stbc() - sets vht tx stbc into + * cfg item + * @psoc: psoc context + * @value: data to be set + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_cfg_set_vht_tx_stbc(struct wlan_objmgr_psoc *psoc, + bool value); + +/** + * wlan_mlme_cfg_get_vht_rx_stbc() - gets vht rx stbc from + * cfg item + * @psoc: psoc context + * @value: pointer to get required data + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_cfg_get_vht_rx_stbc(struct wlan_objmgr_psoc *psoc, + bool *value); + +/** + * wlan_mlme_cfg_set_vht_rx_stbc() - sets vht rx stbc into + * cfg item + * @psoc: psoc context + * @value: data to be set + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_cfg_set_vht_rx_stbc(struct wlan_objmgr_psoc *psoc, + bool value); + +/** + * wlan_mlme_cfg_get_vht_su_bformer() - gets vht su beam former cap from + * cfg item + * @psoc: psoc context + * @value: pointer to get required data + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_cfg_get_vht_su_bformer(struct wlan_objmgr_psoc *psoc, + bool *value); + +/** + * wlan_mlme_cfg_set_vht_su_bformer() - sets vht su beam former cap into + * cfg item + * @psoc: psoc context + * @value: data to be set + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_cfg_set_vht_su_bformer(struct wlan_objmgr_psoc *psoc, + bool value); + +/** + * wlan_mlme_cfg_set_vht_su_bformee() - sets vht su beam formee cap into + * cfg item + * @psoc: psoc context + * @value: data to be set + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_cfg_set_vht_su_bformee(struct wlan_objmgr_psoc *psoc, + bool value); + +/** + * wlan_mlme_cfg_set_vht_tx_bfee_ant_supp() - sets vht Beamformee antenna support cap + * into cfg item + * @psoc: psoc context + * @value: data to be set + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_cfg_set_vht_tx_bfee_ant_supp(struct wlan_objmgr_psoc *psoc, + uint8_t value); + +/** + * wlan_mlme_cfg_set_vht_num_sounding_dim() - sets vht no of sounding dimensions + * into cfg item + * @psoc: psoc context + * @value: data to be set + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_cfg_set_vht_num_sounding_dim(struct wlan_objmgr_psoc *psoc, + uint8_t value); + +/** + * wlan_mlme_cfg_get_vht_mu_bformer() - gets vht mu beam former cap from + * cfg item + * @psoc: psoc context + * @value: pointer to get required data + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_cfg_get_vht_mu_bformer(struct wlan_objmgr_psoc *psoc, + bool *value); + +/** + * wlan_mlme_cfg_set_vht_mu_bformer() - sets vht mu beam former cap into + * cfg item + * @psoc: psoc context + * @value: data to be set + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_cfg_set_vht_mu_bformer(struct wlan_objmgr_psoc *psoc, + bool value); + +/** + * wlan_mlme_cfg_get_vht_mu_bformee() - gets vht mu beam formee cap from + * cfg item + * @psoc: psoc context + * @value: pointer to get required data + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_cfg_get_vht_mu_bformee(struct wlan_objmgr_psoc *psoc, + bool *value); + +/** + * wlan_mlme_cfg_set_vht_mu_bformee() - sets vht mu beam formee cap into + * cfg item + * @psoc: psoc context + * @value: data to be set + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_cfg_set_vht_mu_bformee(struct wlan_objmgr_psoc *psoc, + bool value); + +/** + * wlan_mlme_cfg_get_vht_txop_ps() - gets vht tx ops ps cap from + * cfg item + * @psoc: psoc context + * @value: pointer to get required data + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_cfg_get_vht_txop_ps(struct wlan_objmgr_psoc *psoc, + bool *value); + +/** + * wlan_mlme_cfg_set_vht_txop_ps() - sets vht tx ops ps cap into + * cfg item + * @psoc: psoc context + * @value: data to be set + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_cfg_set_vht_txop_ps(struct wlan_objmgr_psoc *psoc, + bool value); + +/** + * wlan_mlme_cfg_get_vht_ampdu_len_exp() - gets vht max AMPDU length exponent from + * cfg item + * @psoc: psoc context + * @value: pointer to get required data + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_cfg_get_vht_ampdu_len_exp(struct wlan_objmgr_psoc *psoc, + uint8_t *value); + +/** + * wlan_mlme_cfg_set_vht_ampdu_len_exp() - sets vht max AMPDU length exponent into + * cfg item + * @psoc: psoc context + * @value: data to be set + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_cfg_set_vht_ampdu_len_exp(struct wlan_objmgr_psoc *psoc, + uint8_t value); + +/** + * wlan_mlme_cfg_get_vht_rx_mcs_map() - gets vht rx mcs map from + * cfg item + * @psoc: psoc context + * @value: pointer to get required data + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_cfg_get_vht_rx_mcs_map(struct wlan_objmgr_psoc *psoc, + uint32_t *value); + +/** + * wlan_mlme_cfg_set_vht_rx_mcs_map() - sets rx mcs map into + * cfg item + * @psoc: psoc context + * @value: data to be set + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_cfg_set_vht_rx_mcs_map(struct wlan_objmgr_psoc *psoc, + uint32_t value); + +/** + * wlan_mlme_cfg_get_vht_tx_mcs_map() - gets vht tx mcs map from + * cfg item + * @psoc: psoc context + * @value: pointer to get required data + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_cfg_get_vht_tx_mcs_map(struct wlan_objmgr_psoc *psoc, + uint32_t *value); + +/** + * wlan_mlme_cfg_set_vht_tx_mcs_map() - sets tx mcs map into + * cfg item + * @psoc: psoc context + * @value: data to be set + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_cfg_set_vht_tx_mcs_map(struct wlan_objmgr_psoc *psoc, + uint32_t value); + +/** + * wlan_mlme_cfg_set_vht_rx_supp_data_rate() - sets rx supported data rate into + * cfg item + * @psoc: psoc context + * @value: data to be set + * + * Return: QDF_STATUS + */ +QDF_STATUS +wlan_mlme_cfg_set_vht_rx_supp_data_rate(struct wlan_objmgr_psoc *psoc, + uint32_t value); + +/** + * wlan_mlme_cfg_set_vht_tx_supp_data_rate() - sets tx supported data rate into + * cfg item + * @psoc: psoc context + * @value: data to be set + * + * Return: QDF_STATUS + */ +QDF_STATUS +wlan_mlme_cfg_set_vht_tx_supp_data_rate(struct wlan_objmgr_psoc *psoc, + uint32_t value); + +/** + * wlan_mlme_cfg_get_vht_basic_mcs_set() - gets basic mcs set from + * cfg item + * @psoc: psoc context + * @value: data to be set + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_cfg_get_vht_basic_mcs_set(struct wlan_objmgr_psoc *psoc, + uint32_t *value); + +/** + * wlan_mlme_cfg_set_vht_basic_mcs_set() - sets basic mcs set into + * cfg item + * @psoc: psoc context + * @value: data to be set + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_cfg_set_vht_basic_mcs_set(struct wlan_objmgr_psoc *psoc, + uint32_t value); + +/** + * wlan_mlme_get_vht_channel_width() - gets Channel width capability + * for 11ac + * @psoc: psoc context + * @value: data to be set + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_get_vht_channel_width(struct wlan_objmgr_psoc *psoc, + uint8_t *value); + +/** + * wlan_mlme_get_vht_rx_mcs_8_9() - VHT Rx MCS capability for 1x1 mode + * @psoc: psoc context + * @value: data to be set + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_get_vht_rx_mcs_8_9(struct wlan_objmgr_psoc *psoc, + uint8_t *value); + +/** + * wlan_mlme_get_vht_tx_mcs_8_9() - VHT Tx MCS capability for 1x1 mode + * @psoc: psoc context + * @value: data to be set + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_get_vht_tx_mcs_8_9(struct wlan_objmgr_psoc *psoc, + uint8_t *value); + +/** + * wlan_mlme_get_vht_rx_mcs_2x2() - VHT Rx MCS capability for 2x2 mode + * @psoc: psoc context + * @value: data to be set + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_get_vht_rx_mcs_2x2(struct wlan_objmgr_psoc *psoc, + uint8_t *value); + +/** + * wlan_mlme_get_vht_tx_mcs_2x2() - VHT Tx MCS capability for 2x2 mode + * @psoc: psoc context + * @value: data to be set + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_get_vht_tx_mcs_2x2(struct wlan_objmgr_psoc *psoc, + uint8_t *value); + +/** + * wlan_mlme_get_vht20_mcs9() - Enables VHT MCS9 in 20M BW operation + * @psoc: psoc context + * @value: data to be set + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_get_vht20_mcs9(struct wlan_objmgr_psoc *psoc, + bool *value); + +/** + * wlan_mlme_get_vht_enable2x2() - Enables/disables VHT Tx/Rx MCS values for 2x2 + * @psoc: psoc context + * @value: data to be set + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_get_vht_enable2x2(struct wlan_objmgr_psoc *psoc, + bool *value); + +/** + * wlan_mlme_set_vht_enable2x2() - Enables/disables VHT Tx/Rx MCS values for 2x2 + * @psoc: psoc context + * @value: data to be set + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_set_vht_enable2x2(struct wlan_objmgr_psoc *psoc, + bool value); + +/** + * wlan_mlme_get_vht_enable_paid() - Enables/disables paid feature + * @psoc: psoc context + * @value: data to be set + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_get_vht_enable_paid(struct wlan_objmgr_psoc *psoc, + bool *value); + +/** + * wlan_mlme_get_vht_enable_gid() - Enables/disables VHT GID feature + * @psoc: psoc context + * @value: data to be set + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_get_vht_enable_gid(struct wlan_objmgr_psoc *psoc, + bool *value); + +/** + * wlan_mlme_get_vht_for_24ghz() - Enables/disables VHT for 24 ghz + * @psoc: psoc context + * @value: data to be set + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_get_vht_for_24ghz(struct wlan_objmgr_psoc *psoc, + bool *value); + +/** + * wlan_mlme_get_vendor_vht_for_24ghz() - nables/disables vendor VHT for 24 ghz + * @psoc: psoc context + * @value: data to be set + * + * Return: QDF_STATUS + */ +QDF_STATUS wlan_mlme_get_vendor_vht_for_24ghz(struct wlan_objmgr_psoc *psoc, + bool *value); #endif /* _WLAN_MLME_API_H_ */ diff --git a/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h b/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h index 628ef1bf16..4678966978 100644 --- a/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h +++ b/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h @@ -1016,4 +1016,410 @@ QDF_STATUS ucfg_mlme_set_enable_bcast_probe_rsp(struct wlan_objmgr_psoc *psoc, { return wlan_mlme_set_enable_bcast_probe_rsp(psoc, value); } + +/** + * ucfg_mlme_cfg_set_vht_chan_width() - sets vht supported channel width into + * cfg item + * @psoc: psoc context + * @value: data to be set + * + * Inline UCFG API to be used by HDD/OSIF callers + * + * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE + */ +static inline +QDF_STATUS ucfg_mlme_cfg_set_vht_chan_width(struct wlan_objmgr_psoc *psoc, + uint8_t value) +{ + return wlan_mlme_cfg_set_vht_chan_width(psoc, value); +} + +/** + * ucfg_mlme_cfg_set_vht_ldpc_coding_cap() - sets vht ldpc coding cap into + * cfg item + * @psoc: psoc context + * @value: data to be set + * + * Inline UCFG API to be used by HDD/OSIF callers + * + * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE + */ +static inline QDF_STATUS +ucfg_mlme_cfg_set_vht_ldpc_coding_cap(struct wlan_objmgr_psoc *psoc, + bool value) +{ + return wlan_mlme_cfg_set_vht_ldpc_coding_cap(psoc, value); +} + +/** + * ucfg_mlme_cfg_get_vht_tx_stbc() - gets vht tx stbc from + * cfg item + * @psoc: psoc context + * @value: pointer to get required data + * + * Inline UCFG API to be used by HDD/OSIF callers to get the + * ignore_peer_ht_opmode flag value + * + * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE + */ +static inline QDF_STATUS +ucfg_mlme_cfg_get_vht_tx_stbc(struct wlan_objmgr_psoc *psoc, + bool *value) +{ + return wlan_mlme_cfg_get_vht_tx_stbc(psoc, value); +} + +/** + * ucfg_mlme_cfg_set_vht_tx_bfee_ant_supp() - sets vht Beamformee antenna + * support cap into cfg item + * @psoc: psoc context + * @value: data to be set + * + * Inline UCFG API to be used by HDD/OSIF callers + * + * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE + */ +static inline QDF_STATUS +ucfg_mlme_cfg_set_vht_tx_bfee_ant_supp(struct wlan_objmgr_psoc *psoc, + uint8_t value) +{ + return wlan_mlme_cfg_set_vht_tx_bfee_ant_supp(psoc, value); +} + +/** + * ucfg_mlme_cfg_get_vht_rx_mcs_map() - gets vht rx mcs map from + * cfg item + * @psoc: psoc context + * @value: pointer to get required data + * + * Inline UCFG API to be used by HDD/OSIF callers to get the + * ignore_peer_ht_opmode flag value + * + * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE + */ +static inline QDF_STATUS +ucfg_mlme_cfg_get_vht_rx_mcs_map(struct wlan_objmgr_psoc *psoc, + uint32_t *value) +{ + return wlan_mlme_cfg_get_vht_rx_mcs_map(psoc, value); +} + +/** + * ucfg_mlme_cfg_set_vht_rx_mcs_map() - sets rx mcs map into + * cfg item + * @psoc: psoc context + * @value: data to be set + * + * Inline UCFG API to be used by HDD/OSIF callers + * + * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE + */ +static inline QDF_STATUS +ucfg_mlme_cfg_set_vht_rx_mcs_map(struct wlan_objmgr_psoc *psoc, + uint32_t value) +{ + return wlan_mlme_cfg_set_vht_rx_mcs_map(psoc, value); +} + +/** + * ucfg_mlme_cfg_get_vht_tx_mcs_map() - gets vht tx mcs map from + * cfg item + * @psoc: psoc context + * @value: pointer to get required data + * + * Inline UCFG API to be used by HDD/OSIF callers to get the + * ignore_peer_ht_opmode flag value + * + * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE + */ +static inline QDF_STATUS +ucfg_mlme_cfg_get_vht_tx_mcs_map(struct wlan_objmgr_psoc *psoc, + uint32_t *value) +{ + return wlan_mlme_cfg_get_vht_tx_mcs_map(psoc, value); +} + +/** + * ucfg_mlme_cfg_set_vht_tx_mcs_map() - sets tx mcs map into + * cfg item + * @psoc: psoc context + * @value: data to be set + * + * Inline UCFG API to be used by HDD/OSIF callers + * + * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE + */ +static inline QDF_STATUS +ucfg_mlme_cfg_set_vht_tx_mcs_map(struct wlan_objmgr_psoc *psoc, + uint32_t value) +{ + return wlan_mlme_cfg_set_vht_tx_mcs_map(psoc, value); +} + +/** + * ucfg_mlme_cfg_set_vht_rx_supp_data_rate() - sets rx supported data + * rate into cfg item + * @psoc: psoc context + * @value: data to be set + * + * Inline UCFG API to be used by HDD/OSIF callers + * + * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE + */ +static inline QDF_STATUS +ucfg_mlme_cfg_set_vht_rx_supp_data_rate(struct wlan_objmgr_psoc *psoc, + uint32_t value) +{ + return wlan_mlme_cfg_set_vht_rx_supp_data_rate(psoc, value); +} + +/** + * ucfg_mlme_cfg_set_vht_tx_supp_data_rate() - sets tx supported data rate into + * cfg item + * @psoc: psoc context + * @value: data to be set + * + * Inline UCFG API to be used by HDD/OSIF callers + * + * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE + */ +static inline QDF_STATUS +ucfg_mlme_cfg_set_vht_tx_supp_data_rate(struct wlan_objmgr_psoc *psoc, + uint32_t value) +{ + return wlan_mlme_cfg_set_vht_tx_supp_data_rate(psoc, value); +} + +/** + * ucfg_mlme_cfg_get_vht_basic_mcs_set() - gets basic mcs set from + * cfg item + * @psoc: psoc context + * @value: data to be set + * + * Inline UCFG API to be used by HDD/OSIF callers to get the + * ignore_peer_ht_opmode flag value + * + * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE + */ +static inline QDF_STATUS +ucfg_mlme_cfg_get_vht_basic_mcs_set(struct wlan_objmgr_psoc *psoc, + uint32_t *value) +{ + return wlan_mlme_cfg_get_vht_basic_mcs_set(psoc, value); +} + +/** + * ucfg_mlme_cfg_set_vht_basic_mcs_set() - sets basic mcs set into + * cfg item + * @psoc: psoc context + * @value: data to be set + * + * Inline UCFG API to be used by HDD/OSIF callers to get the + * ignore_peer_ht_opmode flag value + * + * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE + */ +static inline QDF_STATUS +ucfg_mlme_cfg_set_vht_basic_mcs_set(struct wlan_objmgr_psoc *psoc, + uint32_t value) +{ + return wlan_mlme_cfg_set_vht_basic_mcs_set(psoc, value); +} + +/** + * ucfg_mlme_get_vht_channel_width() - gets Channel width capability + * for 11ac + * @psoc: psoc context + * @value: data to be set + * + * Inline UCFG API to be used by HDD/OSIF callers to get the + * ignore_peer_ht_opmode flag value + * + * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE + */ +static inline QDF_STATUS +ucfg_mlme_get_vht_channel_width(struct wlan_objmgr_psoc *psoc, uint8_t *value) +{ + return wlan_mlme_get_vht_channel_width(psoc, value); +} + +/** + * ucfg_mlme_get_vht_rx_mcs_8_9() - VHT Rx MCS capability for 1x1 mode + * for 11ac + * @psoc: psoc context + * @value: data to be set + * + * Inline UCFG API to be used by HDD/OSIF callers to get the + * ignore_peer_ht_opmode flag value + * + * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE + */ +static inline QDF_STATUS +ucfg_mlme_get_vht_rx_mcs_8_9(struct wlan_objmgr_psoc *psoc, uint8_t *value) +{ + return wlan_mlme_get_vht_rx_mcs_8_9(psoc, value); +} + +/** + * ucfg_mlme_get_vht_tx_mcs_8_9() - VHT Tx MCS capability for 1x1 mode + * for 11ac + * @psoc: psoc context + * @value: data to be set + * + * Inline UCFG API to be used by HDD/OSIF callers to get the + * ignore_peer_ht_opmode flag value + * + * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE + */ +static inline QDF_STATUS +ucfg_mlme_get_vht_tx_mcs_8_9(struct wlan_objmgr_psoc *psoc, uint8_t *value) +{ + return wlan_mlme_get_vht_tx_mcs_8_9(psoc, value); +} + +/** + * ucfg_mlme_get_vht_rx_mcs_2x2() - VHT Rx MCS capability for 2x2 mode + * for 11ac + * @psoc: psoc context + * @value: data to be set + * + * Inline UCFG API to be used by HDD/OSIF callers to get the + * ignore_peer_ht_opmode flag value + * + * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE + */ +static inline QDF_STATUS +ucfg_mlme_get_vht_rx_mcs_2x2(struct wlan_objmgr_psoc *psoc, uint8_t *value) +{ + return wlan_mlme_get_vht_rx_mcs_2x2(psoc, value); +} + +/** + * ucfg_mlme_get_vht_tx_mcs_2x2() - VHT Tx MCS capability for 2x2 mode + * for 11ac + * @psoc: psoc context + * @value: data to be set + * + * Inline UCFG API to be used by HDD/OSIF callers to get the + * ignore_peer_ht_opmode flag value + * + * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE + */ +static inline QDF_STATUS +ucfg_mlme_get_vht_tx_mcs_2x2(struct wlan_objmgr_psoc *psoc, uint8_t *value) +{ + return wlan_mlme_get_vht_tx_mcs_2x2(psoc, value); +} + +/** + * ucfg_mlme_get_vht20_mcs9() - Enables VHT MCS9 in 20M BW operation + * @psoc: psoc context + * @value: data to be set + * + * Inline UCFG API to be used by HDD/OSIF callers to get the + * ignore_peer_ht_opmode flag value + * + * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE + */ +static inline QDF_STATUS +ucfg_mlme_get_vht20_mcs9(struct wlan_objmgr_psoc *psoc, bool *value) +{ + return wlan_mlme_get_vht20_mcs9(psoc, value); +} + +/** + * ucfg_mlme_get_vht_enable2x2() - Enables/disables VHT Tx/Rx MCS values for 2x2 + * @psoc: psoc context + * @value: data to be set + * + * Inline UCFG API to be used by HDD/OSIF callers to get the + * ignore_peer_ht_opmode flag value + * + * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE + */ +static inline QDF_STATUS +ucfg_mlme_get_vht_enable2x2(struct wlan_objmgr_psoc *psoc, bool *value) +{ + return wlan_mlme_get_vht_enable2x2(psoc, value); +} + +/** + * ucfg_mlme_set_vht_enable2x2() - Enables/disables VHT Tx/Rx MCS values for 2x2 + * @psoc: psoc context + * @value: data to be set + * + * Inline UCFG API to be used by HDD/OSIF callers to get the + * ignore_peer_ht_opmode flag value + * + * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE + */ +static inline QDF_STATUS +ucfg_mlme_set_vht_enable2x2(struct wlan_objmgr_psoc *psoc, bool value) +{ + return wlan_mlme_set_vht_enable2x2(psoc, value); +} + +/** + * ucfg_mlme_get_vht_enable_paid() - Enables/disables paid feature + * @psoc: psoc context + * @value: data to be set + * + * Inline UCFG API to be used by HDD/OSIF callers to get the + * ignore_peer_ht_opmode flag value + * + * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE + */ +static inline QDF_STATUS +ucfg_mlme_get_vht_enable_paid(struct wlan_objmgr_psoc *psoc, bool *value) +{ + return wlan_mlme_get_vht_enable_paid(psoc, value); +} + +/** + * ucfg_mlme_get_vht_enable_gid() - Enables/disables gid feature + * @psoc: psoc context + * @value: data to be set + * + * Inline UCFG API to be used by HDD/OSIF callers to get the + * ignore_peer_ht_opmode flag value + * + * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE + */ +static inline QDF_STATUS +ucfg_mlme_get_vht_enable_gid(struct wlan_objmgr_psoc *psoc, bool *value) +{ + return wlan_mlme_get_vht_enable_gid(psoc, value); +} + +/** + * ucfg_mlme_get_vht_for_24ghz() - Enables/disables vht for 24ghz + * @psoc: psoc context + * @value: data to be set + * + * Inline UCFG API to be used by HDD/OSIF callers to get the + * ignore_peer_ht_opmode flag value + * + * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE + */ +static inline QDF_STATUS +ucfg_mlme_get_vht_for_24ghz(struct wlan_objmgr_psoc *psoc, bool *value) +{ + return wlan_mlme_get_vht_for_24ghz(psoc, value); +} + +/** + * ucfg_mlme_get_vendor_vht_for_24ghz() - Enables/disables vendor vht for 24ghz + * @psoc: psoc context + * @value: data to be set + * + * Inline UCFG API to be used by HDD/OSIF callers to get the + * ignore_peer_ht_opmode flag value + * + * Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE + */ +static inline QDF_STATUS +ucfg_mlme_get_vendor_vht_for_24ghz(struct wlan_objmgr_psoc *psoc, bool *value) +{ + return wlan_mlme_get_vendor_vht_for_24ghz(psoc, value); +} #endif /* _WLAN_MLME_UCFG_API_H_ */ diff --git a/mlme/dispatcher/src/wlan_mlme_api.c b/mlme/dispatcher/src/wlan_mlme_api.c index 42bc790304..46f5af691b 100644 --- a/mlme/dispatcher/src/wlan_mlme_api.c +++ b/mlme/dispatcher/src/wlan_mlme_api.c @@ -1210,5 +1210,403 @@ QDF_STATUS mlme_set_wep_key(struct wlan_mlme_wep_cfg *wep_params, mlme_err("Invalid key id:%d", wep_keyid); return QDF_STATUS_E_INVAL; } + + return QDF_STATUS_SUCCESS; +} + +QDF_STATUS +wlan_mlme_cfg_set_vht_chan_width(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; + } + + mlme_obj->cfg.vht_caps.vht_cap_info.supp_chan_width = value; + + return QDF_STATUS_SUCCESS; +} + + +QDF_STATUS +wlan_mlme_cfg_set_vht_ldpc_coding_cap(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; + } + + mlme_obj->cfg.vht_caps.vht_cap_info.ldpc_coding_cap = value; + + return QDF_STATUS_SUCCESS; +} + +QDF_STATUS +wlan_mlme_cfg_get_vht_tx_stbc(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.vht_caps.vht_cap_info.tx_stbc; + + return QDF_STATUS_SUCCESS; +} + + +QDF_STATUS +wlan_mlme_cfg_set_vht_tx_bfee_ant_supp(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; + } + + mlme_obj->cfg.vht_caps.vht_cap_info.tx_bfee_ant_supp = value; + + return QDF_STATUS_SUCCESS; +} + +QDF_STATUS +wlan_mlme_cfg_get_vht_rx_mcs_map(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.vht_caps.vht_cap_info.rx_mcs_map; + + return QDF_STATUS_SUCCESS; +} + +QDF_STATUS +wlan_mlme_cfg_set_vht_rx_mcs_map(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; + } + + mlme_obj->cfg.vht_caps.vht_cap_info.rx_mcs_map = value; + + return QDF_STATUS_SUCCESS; +} + +QDF_STATUS +wlan_mlme_cfg_get_vht_tx_mcs_map(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.vht_caps.vht_cap_info.tx_mcs_map; + + return QDF_STATUS_SUCCESS; +} + +QDF_STATUS +wlan_mlme_cfg_set_vht_tx_mcs_map(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; + } + + mlme_obj->cfg.vht_caps.vht_cap_info.tx_mcs_map = value; + + return QDF_STATUS_SUCCESS; +} + +QDF_STATUS +wlan_mlme_cfg_set_vht_rx_supp_data_rate(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; + } + + mlme_obj->cfg.vht_caps.vht_cap_info.rx_supp_data_rate = value; + + return QDF_STATUS_SUCCESS; +} + +QDF_STATUS +wlan_mlme_cfg_set_vht_tx_supp_data_rate(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; + } + + mlme_obj->cfg.vht_caps.vht_cap_info.tx_supp_data_rate = value; + + return QDF_STATUS_SUCCESS; +} + +QDF_STATUS +wlan_mlme_cfg_get_vht_basic_mcs_set(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.vht_caps.vht_cap_info.basic_mcs_set; + + return QDF_STATUS_SUCCESS; +} + +QDF_STATUS +wlan_mlme_cfg_set_vht_basic_mcs_set(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; + } + + mlme_obj->cfg.vht_caps.vht_cap_info.basic_mcs_set = value; + + return QDF_STATUS_SUCCESS; +} + +QDF_STATUS +wlan_mlme_get_vht_channel_width(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.vht_caps.vht_cap_info.channel_width; + + return QDF_STATUS_SUCCESS; +} + + +QDF_STATUS +wlan_mlme_get_vht_rx_mcs_8_9(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.vht_caps.vht_cap_info.rx_mcs; + + return QDF_STATUS_SUCCESS; +} + +QDF_STATUS +wlan_mlme_get_vht_tx_mcs_8_9(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.vht_caps.vht_cap_info.tx_mcs; + + return QDF_STATUS_SUCCESS; +} + +QDF_STATUS +wlan_mlme_get_vht_rx_mcs_2x2(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.vht_caps.vht_cap_info.rx_mcs2x2; + + return QDF_STATUS_SUCCESS; +} + +QDF_STATUS +wlan_mlme_get_vht_tx_mcs_2x2(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.vht_caps.vht_cap_info.tx_mcs2x2; + + return QDF_STATUS_SUCCESS; +} + +QDF_STATUS +wlan_mlme_get_vht20_mcs9(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.vht_caps.vht_cap_info.enable_vht20_mcs9; + + return QDF_STATUS_SUCCESS; +} + +QDF_STATUS +wlan_mlme_get_vht_enable2x2(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.vht_caps.vht_cap_info.enable2x2; + + return QDF_STATUS_SUCCESS; +} + +QDF_STATUS +wlan_mlme_set_vht_enable2x2(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; + } + + mlme_obj->cfg.vht_caps.vht_cap_info.enable2x2 = value; + + return QDF_STATUS_SUCCESS; +} + +QDF_STATUS +wlan_mlme_get_vht_enable_paid(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.vht_caps.vht_cap_info.enable_paid; + + return QDF_STATUS_SUCCESS; +} + +QDF_STATUS +wlan_mlme_get_vht_enable_gid(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.vht_caps.vht_cap_info.enable_gid; + + return QDF_STATUS_SUCCESS; +} + +QDF_STATUS +wlan_mlme_get_vht_for_24ghz(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.vht_caps.vht_cap_info.b24ghz_band; + + return QDF_STATUS_SUCCESS; +} + +QDF_STATUS +wlan_mlme_get_vendor_vht_for_24ghz(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.vht_caps.vht_cap_info.vendor_24ghz_band; + return QDF_STATUS_SUCCESS; }