diff --git a/mlme/core/src/wlan_mlme_main.c b/mlme/core/src/wlan_mlme_main.c index 7a39eae3aa..1f13adbd69 100644 --- a/mlme/core/src/wlan_mlme_main.c +++ b/mlme/core/src/wlan_mlme_main.c @@ -906,6 +906,10 @@ static void mlme_init_feature_flag_in_cfg( feature_flags->mcc_bcast_prob_rsp = cfg_get(psoc, CFG_FW_MCC_BCAST_PROB_RESP); feature_flags->enable_mcc = cfg_get(psoc, CFG_MCC_FEATURE); + feature_flags->channel_bonding_mode_24ghz = + cfg_get(psoc, CFG_CHANNEL_BONDING_MODE_24GHZ); + feature_flags->channel_bonding_mode_5ghz = + cfg_get(psoc, CFG_CHANNEL_BONDING_MODE_5GHZ); } static void mlme_init_sap_protection_cfg(struct wlan_objmgr_psoc *psoc, diff --git a/mlme/dispatcher/inc/cfg_mlme_feature_flag.h b/mlme/dispatcher/inc/cfg_mlme_feature_flag.h index b8e27059b7..7b9e1b8097 100644 --- a/mlme/dispatcher/inc/cfg_mlme_feature_flag.h +++ b/mlme/dispatcher/inc/cfg_mlme_feature_flag.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2018 The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2019 The Linux Foundation. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -158,6 +158,56 @@ CFG_VALUE_OR_DEFAULT, \ "Enable/Disable MCC feature.") +/* + * + * gChannelBondingMode24GHz - Configures Channel Bonding in 24 GHz + * @Min: 0 + * @Max: 10 + * @Default: 0 + * + * This ini is used to set default channel bonding mode 24GHZ + * + * Related: None + * + * Supported Feature: STA + * + * Usage: Internal/External + * + * + */ +#define CFG_CHANNEL_BONDING_MODE_24GHZ CFG_INI_UINT( \ + "gChannelBondingMode24GHz", \ + 0, \ + 10, \ + 0, \ + CFG_VALUE_OR_DEFAULT, \ + "Configures Channel Bonding in 24 GHz") + +/* + * + * gChannelBondingMode5GHz - Configures Channel Bonding in 5 GHz + * @Min: 0 + * @Max: 10 + * @Default: 0 + * + * This ini is used to set default channel bonding mode 5GHZ + * + * Related: None + * + * Supported Feature: STA + * + * Usage: Internal/External + * + * + */ +#define CFG_CHANNEL_BONDING_MODE_5GHZ CFG_INI_UINT( \ + "gChannelBondingMode5GHz", \ + 0, \ + 10, \ + 0, \ + CFG_VALUE_OR_DEFAULT, \ + "Configures Channel Bonding in 5 GHz") + #define CFG_FEATURE_FLAG_ALL \ CFG(CFG_ACCEPT_SHORT_SLOT_ASSOC_ONLY) \ CFG(CFG_HCF_ENABLED) \ @@ -169,7 +219,9 @@ CFG(CFG_11G_SHORT_SLOT_TIME_ENABLED) \ CFG(CFG_CHANNEL_BONDING_MODE) \ CFG(CFG_BLOCK_ACK_ENABLED) \ - CFG(CFG_ENABLE_AMPDUPS) + CFG(CFG_ENABLE_AMPDUPS) \ + CFG(CFG_CHANNEL_BONDING_MODE_24GHZ) \ + CFG(CFG_CHANNEL_BONDING_MODE_5GHZ) #endif /* __CFG_MLME_FEATURE_FLAG_H */ diff --git a/mlme/dispatcher/inc/wlan_mlme_public_struct.h b/mlme/dispatcher/inc/wlan_mlme_public_struct.h index 7fe41de971..e65c2bde62 100644 --- a/mlme/dispatcher/inc/wlan_mlme_public_struct.h +++ b/mlme/dispatcher/inc/wlan_mlme_public_struct.h @@ -893,11 +893,16 @@ struct wlan_mlme_rates { * @enable_hcf: enable HCF feature * @enable_rsn: enable RSN for connection * @enable_short_preamble_11g: enable short preamble for 11g + * @enable_short_slot_time_11g + * @enable_ampdu: enable AMPDU feature + * @enable_mcc: enable MCC feature + * @mcc_rts_cts_prot: RTS-CTS protection in MCC + * @mcc_bcast_prob_rsp: broadcast Probe Response in MCC * @channel_bonding_mode: channel bonding mode * @enable_block_ack: enable block ack feature - * @enable_ampdu: Enable AMPDU feature + * @channel_bonding_mode_24ghz: configures Channel Bonding in 24 GHz + * @channel_bonding_mode_5ghz: configures Channel Bonding in 5 GHz */ - struct wlan_mlme_feature_flag { bool accept_short_slot_assoc; bool enable_hcf; @@ -910,6 +915,8 @@ struct wlan_mlme_feature_flag { uint8_t mcc_bcast_prob_rsp; uint32_t channel_bonding_mode; uint32_t enable_block_ack; + uint32_t channel_bonding_mode_24ghz; + uint32_t channel_bonding_mode_5ghz; }; /* diff --git a/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h b/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h index 97b29c375f..008c79c9bc 100644 --- a/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h +++ b/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h @@ -3565,4 +3565,47 @@ ucfg_mlme_set_obss_detection_offload_enabled(struct wlan_objmgr_psoc *psoc, QDF_STATUS ucfg_mlme_set_obss_color_collision_offload_enabled( struct wlan_objmgr_psoc *psoc, uint8_t value); + +/** + * ucfg_mlme_get_channel_bonding_24ghz() - get channel bonding mode of 24ghz + * @psoc: pointer to psoc object + * @value: pointer to the value which will be filled for the caller + * + * Return: QDF Status + */ +QDF_STATUS +ucfg_mlme_get_channel_bonding_24ghz(struct wlan_objmgr_psoc *psoc, + uint32_t *value); + +/** + * ucfg_mlme_set_channel_bonding_24ghz() - set channel bonding mode for 24ghz + * @psoc: pointer to psoc object + * @value: channel bonding mode + * + * Return: QDF Status + */ +QDF_STATUS +ucfg_mlme_set_channel_bonding_24ghz(struct wlan_objmgr_psoc *psoc, + uint32_t value); +/** + * ucfg_mlme_get_channel_bonding_5ghz() - get channel bonding mode of 5ghz + * @psoc: pointer to psoc object + * @value: pointer to the value which will be filled for the caller + * + * Return: QDF Status + */ +QDF_STATUS +ucfg_mlme_get_channel_bonding_5ghz(struct wlan_objmgr_psoc *psoc, + uint32_t *value); + +/** + * ucfg_mlme_set_channel_bonding_5ghz() - set channel bonding mode for 5ghz + * @psoc: pointer to psoc object + * @value: channel bonding mode + * + * Return: QDF Status + */ +QDF_STATUS +ucfg_mlme_set_channel_bonding_5ghz(struct wlan_objmgr_psoc *psoc, + uint32_t value); #endif /* _WLAN_MLME_UCFG_API_H_ */ diff --git a/mlme/dispatcher/src/wlan_mlme_ucfg_api.c b/mlme/dispatcher/src/wlan_mlme_ucfg_api.c index 0289e6a491..047940c3f3 100644 --- a/mlme/dispatcher/src/wlan_mlme_ucfg_api.c +++ b/mlme/dispatcher/src/wlan_mlme_ucfg_api.c @@ -1534,3 +1534,66 @@ ucfg_mlme_set_obss_color_collision_offload_enabled( return QDF_STATUS_SUCCESS; } + +QDF_STATUS +ucfg_mlme_get_channel_bonding_24ghz(struct wlan_objmgr_psoc *psoc, + uint32_t *val) +{ + struct wlan_mlme_psoc_obj *mlme_obj; + + mlme_obj = mlme_get_psoc_obj(psoc); + if (!mlme_obj) { + *val = cfg_default(CFG_CHANNEL_BONDING_MODE_24GHZ); + return QDF_STATUS_E_INVAL; + } + *val = mlme_obj->cfg.feature_flags.channel_bonding_mode_24ghz; + + return QDF_STATUS_SUCCESS; +} + +QDF_STATUS +ucfg_mlme_set_channel_bonding_24ghz(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) + return QDF_STATUS_E_INVAL; + + mlme_obj->cfg.feature_flags.channel_bonding_mode_24ghz = value; + + return QDF_STATUS_SUCCESS; +} + +QDF_STATUS +ucfg_mlme_get_channel_bonding_5ghz(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) { + *value = cfg_default(CFG_CHANNEL_BONDING_MODE_5GHZ); + return QDF_STATUS_E_INVAL; + } + *value = mlme_obj->cfg.feature_flags.channel_bonding_mode_5ghz; + + return QDF_STATUS_SUCCESS; +} + +QDF_STATUS +ucfg_mlme_set_channel_bonding_5ghz(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) + return QDF_STATUS_E_INVAL; + + mlme_obj->cfg.feature_flags.channel_bonding_mode_5ghz = value; + + return QDF_STATUS_SUCCESS; +} +