diff --git a/components/mlme/core/src/wlan_mlme_main.c b/components/mlme/core/src/wlan_mlme_main.c index 62a06e4ae77a..b69cd36be012 100644 --- a/components/mlme/core/src/wlan_mlme_main.c +++ b/components/mlme/core/src/wlan_mlme_main.c @@ -146,6 +146,18 @@ static void mlme_init_generic_cfg(struct wlan_objmgr_psoc *psoc, static void mlme_init_edca_ani_cfg(struct wlan_mlme_edca_params *edca_params) { + /* initialize the max allowed array length for read/write */ + edca_params->ani_acbe_l.max_len = CFG_EDCA_DATA_LEN; + edca_params->ani_acbk_l.max_len = CFG_EDCA_DATA_LEN; + edca_params->ani_acvi_l.max_len = CFG_EDCA_DATA_LEN; + edca_params->ani_acvo_l.max_len = CFG_EDCA_DATA_LEN; + + edca_params->ani_acbe_b.max_len = CFG_EDCA_DATA_LEN; + edca_params->ani_acbk_b.max_len = CFG_EDCA_DATA_LEN; + edca_params->ani_acvi_b.max_len = CFG_EDCA_DATA_LEN; + edca_params->ani_acvo_b.max_len = CFG_EDCA_DATA_LEN; + + /* parse the ETSI edca parameters from cfg string for BK,BE,VI,VO ac */ qdf_uint8_array_parse(cfg_default(CFG_EDCA_ANI_ACBK_LOCAL), edca_params->ani_acbk_l.data, CFG_EDCA_DATA_LEN, @@ -189,6 +201,18 @@ static void mlme_init_edca_ani_cfg(struct wlan_mlme_edca_params *edca_params) static void mlme_init_edca_wme_cfg(struct wlan_mlme_edca_params *edca_params) { + /* initialize the max allowed array length for read/write */ + edca_params->wme_acbk_l.max_len = CFG_EDCA_DATA_LEN; + edca_params->wme_acbe_l.max_len = CFG_EDCA_DATA_LEN; + edca_params->wme_acvi_l.max_len = CFG_EDCA_DATA_LEN; + edca_params->wme_acvo_l.max_len = CFG_EDCA_DATA_LEN; + + edca_params->wme_acbk_b.max_len = CFG_EDCA_DATA_LEN; + edca_params->wme_acbe_b.max_len = CFG_EDCA_DATA_LEN; + edca_params->wme_acvi_b.max_len = CFG_EDCA_DATA_LEN; + edca_params->wme_acvo_b.max_len = CFG_EDCA_DATA_LEN; + + /* parse the WME edca parameters from cfg string for BK,BE,VI,VO ac */ qdf_uint8_array_parse(cfg_default(CFG_EDCA_WME_ACBK_LOCAL), edca_params->wme_acbk_l.data, CFG_EDCA_DATA_LEN, @@ -232,6 +256,18 @@ static void mlme_init_edca_wme_cfg(struct wlan_mlme_edca_params *edca_params) static void mlme_init_edca_etsi_cfg(struct wlan_mlme_edca_params *edca_params) { + /* initialize the max allowed array length for read/write */ + edca_params->etsi_acbe_l.max_len = CFG_EDCA_DATA_LEN; + edca_params->etsi_acbk_l.max_len = CFG_EDCA_DATA_LEN; + edca_params->etsi_acvi_l.max_len = CFG_EDCA_DATA_LEN; + edca_params->etsi_acvo_l.max_len = CFG_EDCA_DATA_LEN; + + edca_params->etsi_acbe_b.max_len = CFG_EDCA_DATA_LEN; + edca_params->etsi_acbk_b.max_len = CFG_EDCA_DATA_LEN; + edca_params->etsi_acvi_b.max_len = CFG_EDCA_DATA_LEN; + edca_params->etsi_acvo_b.max_len = CFG_EDCA_DATA_LEN; + + /* parse the ETSI edca parameters from cfg string for BK,BE,VI,VO ac */ qdf_uint8_array_parse(cfg_default(CFG_EDCA_ETSI_ACBK_LOCAL), edca_params->etsi_acbk_l.data, CFG_EDCA_DATA_LEN, diff --git a/components/mlme/dispatcher/inc/wlan_mlme_api.h b/components/mlme/dispatcher/inc/wlan_mlme_api.h index 4803ffd48550..2dfd9d0100d6 100644 --- a/components/mlme/dispatcher/inc/wlan_mlme_api.h +++ b/components/mlme/dispatcher/inc/wlan_mlme_api.h @@ -25,9 +25,43 @@ #include #include #include - #include "sme_api.h" +/** + * wlan_mlme_get_cfg_str() - Copy the uint8_t array for a particular CFG + * @dst: pointer to the destination buffer. + * @cfg_str: pointer to the cfg string structure + * @len: length to be copied + * + * Return: QDF_STATUS_SUCCESS or QDF_STATUS_E_FAILURE + */ +QDF_STATUS wlan_mlme_get_cfg_str(uint8_t *dst, struct mlme_cfg_str *cfg_str, + qdf_size_t *len); + +/** + * wlan_mlme_set_cfg_str() - Set values for a particular CFG + * @src: pointer to the source buffer. + * @dst_cfg_str: pointer to the cfg string structure to be modified + * @len: length to be written + * + * Return: QDF_STATUS_SUCCESS or QDF_STATUS_E_FAILURE + */ +QDF_STATUS wlan_mlme_set_cfg_str(uint8_t *src, struct mlme_cfg_str *dst_cfg_str, + qdf_size_t len); + +/** + * wlan_mlme_get_edca_params() - get the EDCA parameters corresponding to the + * edca profile access category + * @edca_params: pointer to mlme edca parameters structure + * @data: data to which the parameter is to be copied + * @edca_ac: edca ac type enum passed to get the cfg value + * + * Return QDF_STATUS_SUCCESS or QDF_STATUS_E_FAILURE + * + */ +QDF_STATUS wlan_mlme_get_edca_params(struct wlan_mlme_edca_params *edca_params, + uint8_t *data, enum e_edca_type edca_ac); + /** * wlan_mlme_get_ht_cap_info() - Get the HT cap info config * @psoc: pointer to psoc object diff --git a/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h b/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h index 332dfd763cd6..08632f719ad7 100644 --- a/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h +++ b/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h @@ -28,17 +28,20 @@ #define CFG_PMKID_MODES_OKC (0x1) #define CFG_PMKID_MODES_PMKSA_CACHING (0x2) -#define CFG_EDCA_DATA_LEN 17 +#define CFG_STR_DATA_LEN 17 +#define CFG_EDCA_DATA_LEN 17 /** * struct mlme_cfg_str - generic structure for all mlme CFG string items * - * @len: length of the string + * @max_len: maximum data length allowed + * @len: valid no. of elements of the data * @data: uint8_t array to store values */ struct mlme_cfg_str { + qdf_size_t max_len; qdf_size_t len; - uint8_t data[CFG_EDCA_DATA_LEN]; + uint8_t data[CFG_STR_DATA_LEN]; }; /** @@ -96,25 +99,37 @@ enum e_edca_type { edca_etsi_acvo_bcast }; +#define CFG_EDCA_PROFILE_ACM_IDX 0 +#define CFG_EDCA_PROFILE_AIFSN_IDX 1 +#define CFG_EDCA_PROFILE_CWMINA_IDX 2 +#define CFG_EDCA_PROFILE_CWMAXA_IDX 4 +#define CFG_EDCA_PROFILE_TXOPA_IDX 6 +#define CFG_EDCA_PROFILE_CWMINB_IDX 7 +#define CFG_EDCA_PROFILE_CWMAXB_IDX 9 +#define CFG_EDCA_PROFILE_TXOPB_IDX 11 +#define CFG_EDCA_PROFILE_CWMING_IDX 12 +#define CFG_EDCA_PROFILE_CWMAXG_IDX 14 +#define CFG_EDCA_PROFILE_TXOPG_IDX 16 + /** * struct mlme_edca_params - EDCA pramaters related config items * - * @ani_acbk_l: EDCA parameters for ANI local access category background - * @ani_acbe_l: EDCA parameters for ANI local access category best effort - * @ani_acvi_l: EDCA parameters for ANI local access category video - * @ani_acvo_l: EDCA parameters for ANI local access category voice - * @ani_acbk_b: EDCA parameters for ANI bcast access category background - * @ani_acbe_b: EDCA parameters for ANI bcast access category best effort - * @ani_acvi_b: EDCA parameters for ANI bcast access category video - * @ani_acvo_b: EDCA parameters for ANI bcast access category voice - * @wme_acbk_l: EDCA parameters for WME local access category background - * @wme_acbe_l: EDCA parameters for WME local access category best effort - * @wme_acvi_l: EDCA parameters for WME local access category video - * @wme_acvo_l: EDCA parameters for WME local access category voice - * @wme_acbk_b: EDCA parameters for WME bcast access category background - * @wme_acbe_b: EDCA parameters for WME bcast access category best effort - * @wme_acvi_b: EDCA parameters for WME bcast access category video - * @wme_acvo_b: EDCA parameters for WME bcast access category voice + * @ani_acbk_l: EDCA parameters for ANI local access category background + * @ani_acbe_l: EDCA parameters for ANI local access category best effort + * @ani_acvi_l: EDCA parameters for ANI local access category video + * @ani_acvo_l: EDCA parameters for ANI local access category voice + * @ani_acbk_b: EDCA parameters for ANI bcast access category background + * @ani_acbe_b: EDCA parameters for ANI bcast access category best effort + * @ani_acvi_b: EDCA parameters for ANI bcast access category video + * @ani_acvo_b: EDCA parameters for ANI bcast access category voice + * @wme_acbk_l: EDCA parameters for WME local access category background + * @wme_acbe_l: EDCA parameters for WME local access category best effort + * @wme_acvi_l: EDCA parameters for WME local access category video + * @wme_acvo_l: EDCA parameters for WME local access category voice + * @wme_acbk_b: EDCA parameters for WME bcast access category background + * @wme_acbe_b: EDCA parameters for WME bcast access category best effort + * @wme_acvi_b: EDCA parameters for WME bcast access category video + * @wme_acvo_b: EDCA parameters for WME bcast access category voice * @etsi_acbk_l: EDCA parameters for ETSI local access category background * @etsi_acbe_l: EDCA parameters for ETSI local access category best effort * @etsi_acvi_l: EDCA parameters for ETSI local access category video diff --git a/components/mlme/dispatcher/src/wlan_mlme_api.c b/components/mlme/dispatcher/src/wlan_mlme_api.c index f287bb11604b..934030d4fd0f 100644 --- a/components/mlme/dispatcher/src/wlan_mlme_api.c +++ b/components/mlme/dispatcher/src/wlan_mlme_api.c @@ -25,6 +25,35 @@ #include "wma_types.h" #include "wmi_unified.h" +QDF_STATUS wlan_mlme_get_cfg_str(uint8_t *dst, struct mlme_cfg_str *cfg_str, + qdf_size_t *len) +{ + if (*len < cfg_str->len) { + mlme_err("Invalid len %zd", *len); + return QDF_STATUS_E_INVAL; + } + + *len = cfg_str->len; + qdf_mem_copy(dst, cfg_str->data, *len); + + return QDF_STATUS_SUCCESS; +} + +QDF_STATUS wlan_mlme_set_cfg_str(uint8_t *src, struct mlme_cfg_str *dst_cfg_str, + qdf_size_t len) +{ + if (len > dst_cfg_str->max_len) { + mlme_err("Invalid len %zd (>%zd)", len, + dst_cfg_str->max_len); + return QDF_STATUS_E_INVAL; + } + + dst_cfg_str->len = len; + qdf_mem_copy(dst_cfg_str->data, src, len); + + return QDF_STATUS_SUCCESS; +} + QDF_STATUS wlan_mlme_get_ht_cap_info(struct wlan_objmgr_psoc *psoc, struct mlme_ht_capabilities_info *ht_cap_info) @@ -518,3 +547,135 @@ QDF_STATUS wlan_mlme_set_enable_bcast_probe_rsp(struct wlan_objmgr_psoc *psoc, mlme_obj->cfg.oce.enable_bcast_probe_rsp = value; return QDF_STATUS_SUCCESS; } + +QDF_STATUS wlan_mlme_get_edca_params(struct wlan_mlme_edca_params *edca_params, + uint8_t *data, enum e_edca_type edca_ac) +{ + qdf_size_t len; + + switch (edca_ac) { + case edca_ani_acbe_local: + len = edca_params->ani_acbe_l.len; + wlan_mlme_get_cfg_str(data, &edca_params->ani_acbe_l, &len); + break; + + case edca_ani_acbk_local: + len = edca_params->ani_acbk_l.len; + wlan_mlme_get_cfg_str(data, &edca_params->ani_acbk_l, &len); + break; + + case edca_ani_acvi_local: + len = edca_params->ani_acvi_l.len; + wlan_mlme_get_cfg_str(data, &edca_params->ani_acvi_l, &len); + break; + + case edca_ani_acvo_local: + len = edca_params->ani_acvo_l.len; + wlan_mlme_get_cfg_str(data, &edca_params->ani_acvo_l, &len); + break; + + case edca_ani_acbk_bcast: + len = edca_params->ani_acbk_b.len; + wlan_mlme_get_cfg_str(data, &edca_params->ani_acbk_b, &len); + break; + + case edca_ani_acbe_bcast: + len = edca_params->ani_acbe_b.len; + wlan_mlme_get_cfg_str(data, &edca_params->ani_acbe_b, &len); + break; + + case edca_ani_acvi_bcast: + len = edca_params->ani_acvi_b.len; + wlan_mlme_get_cfg_str(data, &edca_params->ani_acvi_b, &len); + break; + + case edca_ani_acvo_bcast: + len = edca_params->ani_acvo_b.len; + wlan_mlme_get_cfg_str(data, &edca_params->ani_acvo_b, &len); + break; + + case edca_wme_acbe_local: + len = edca_params->wme_acbe_l.len; + wlan_mlme_get_cfg_str(data, &edca_params->wme_acbe_l, &len); + break; + + case edca_wme_acbk_local: + len = edca_params->wme_acbk_l.len; + wlan_mlme_get_cfg_str(data, &edca_params->wme_acbk_l, &len); + break; + + case edca_wme_acvi_local: + len = edca_params->wme_acvi_l.len; + wlan_mlme_get_cfg_str(data, &edca_params->wme_acvi_l, &len); + break; + + case edca_wme_acvo_local: + len = edca_params->wme_acvo_l.len; + wlan_mlme_get_cfg_str(data, &edca_params->wme_acvo_l, &len); + break; + + case edca_wme_acbe_bcast: + len = edca_params->wme_acbe_b.len; + wlan_mlme_get_cfg_str(data, &edca_params->wme_acbe_b, &len); + break; + + case edca_wme_acbk_bcast: + len = edca_params->wme_acbk_b.len; + wlan_mlme_get_cfg_str(data, &edca_params->wme_acbk_b, &len); + break; + + case edca_wme_acvi_bcast: + len = edca_params->wme_acvi_b.len; + wlan_mlme_get_cfg_str(data, &edca_params->wme_acvi_b, &len); + break; + + case edca_wme_acvo_bcast: + len = edca_params->wme_acvo_b.len; + wlan_mlme_get_cfg_str(data, &edca_params->wme_acvo_b, &len); + break; + + case edca_etsi_acbe_local: + len = edca_params->etsi_acbe_l.len; + wlan_mlme_get_cfg_str(data, &edca_params->etsi_acbe_l, &len); + break; + + case edca_etsi_acbk_local: + len = edca_params->etsi_acbk_l.len; + wlan_mlme_get_cfg_str(data, &edca_params->etsi_acbk_l, &len); + break; + + case edca_etsi_acvi_local: + len = edca_params->etsi_acvi_l.len; + wlan_mlme_get_cfg_str(data, &edca_params->etsi_acvi_l, &len); + break; + + case edca_etsi_acvo_local: + len = edca_params->etsi_acvo_l.len; + wlan_mlme_get_cfg_str(data, &edca_params->etsi_acvo_l, &len); + break; + + case edca_etsi_acbe_bcast: + len = edca_params->etsi_acbe_b.len; + wlan_mlme_get_cfg_str(data, &edca_params->etsi_acbe_b, &len); + break; + + case edca_etsi_acbk_bcast: + len = edca_params->etsi_acbk_b.len; + wlan_mlme_get_cfg_str(data, &edca_params->etsi_acbk_b, &len); + break; + + case edca_etsi_acvi_bcast: + len = edca_params->etsi_acvi_b.len; + wlan_mlme_get_cfg_str(data, &edca_params->etsi_acvi_b, &len); + break; + + case edca_etsi_acvo_bcast: + len = edca_params->etsi_acvo_b.len; + wlan_mlme_get_cfg_str(data, &edca_params->etsi_acvo_b, &len); + break; + default: + mlme_err("Invalid edca access category"); + return QDF_STATUS_E_INVAL; + } + return QDF_STATUS_SUCCESS; +} diff --git a/core/mac/inc/wni_cfg.h b/core/mac/inc/wni_cfg.h index cd763fc132bf..11121456b367 100644 --- a/core/mac/inc/wni_cfg.h +++ b/core/mac/inc/wni_cfg.h @@ -84,22 +84,6 @@ enum { WNI_CFG_MAX_SP_LENGTH, WNI_CFG_WSM_ENABLED, WNI_CFG_EDCA_PROFILE, - WNI_CFG_EDCA_ANI_ACBK_LOCAL, - WNI_CFG_EDCA_ANI_ACBE_LOCAL, - WNI_CFG_EDCA_ANI_ACVI_LOCAL, - WNI_CFG_EDCA_ANI_ACVO_LOCAL, - WNI_CFG_EDCA_ANI_ACBK, - WNI_CFG_EDCA_ANI_ACBE, - WNI_CFG_EDCA_ANI_ACVI, - WNI_CFG_EDCA_ANI_ACVO, - WNI_CFG_EDCA_WME_ACBK_LOCAL, - WNI_CFG_EDCA_WME_ACBE_LOCAL, - WNI_CFG_EDCA_WME_ACVI_LOCAL, - WNI_CFG_EDCA_WME_ACVO_LOCAL, - WNI_CFG_EDCA_WME_ACBK, - WNI_CFG_EDCA_WME_ACBE, - WNI_CFG_EDCA_WME_ACVI, - WNI_CFG_EDCA_WME_ACVO, WNI_CFG_LOCAL_POWER_CONSTRAINT, WNI_CFG_ADMIT_POLICY, WNI_CFG_ADMIT_BWFACTOR, @@ -287,14 +271,6 @@ enum { WNI_CFG_SAP_MAX_MCS_DATA, WNI_CFG_RATE_FOR_TX_MGMT_2G, WNI_CFG_RATE_FOR_TX_MGMT_5G, - WNI_CFG_EDCA_ETSI_ACBK_LOCAL, - WNI_CFG_EDCA_ETSI_ACBE_LOCAL, - WNI_CFG_EDCA_ETSI_ACVI_LOCAL, - WNI_CFG_EDCA_ETSI_ACVO_LOCAL, - WNI_CFG_EDCA_ETSI_ACBK, - WNI_CFG_EDCA_ETSI_ACBE, - WNI_CFG_EDCA_ETSI_ACVI, - WNI_CFG_EDCA_ETSI_ACVO, WNI_CFG_OBSS_DETECTION_OFFLOAD, WNI_CFG_OBSS_COLOR_COLLISION_OFFLOAD, WNI_CFG_TWT_REQUESTOR, @@ -327,30 +303,6 @@ enum { #define WNI_CFG_MAX_TX_POWER_2_4_LEN 128 #define WNI_CFG_MAX_TX_POWER_5_LEN 128 #define WNI_CFG_COUNTRY_CODE_LEN 3 -#define WNI_CFG_EDCA_ANI_ACBK_LOCAL_LEN 20 -#define WNI_CFG_EDCA_ANI_ACBE_LOCAL_LEN 20 -#define WNI_CFG_EDCA_ANI_ACVI_LOCAL_LEN 20 -#define WNI_CFG_EDCA_ANI_ACVO_LOCAL_LEN 20 -#define WNI_CFG_EDCA_ANI_ACBK_LEN 20 -#define WNI_CFG_EDCA_ANI_ACBE_LEN 20 -#define WNI_CFG_EDCA_ANI_ACVI_LEN 20 -#define WNI_CFG_EDCA_ANI_ACVO_LEN 20 -#define WNI_CFG_EDCA_WME_ACBK_LOCAL_LEN 20 -#define WNI_CFG_EDCA_WME_ACBE_LOCAL_LEN 20 -#define WNI_CFG_EDCA_WME_ACVI_LOCAL_LEN 20 -#define WNI_CFG_EDCA_WME_ACVO_LOCAL_LEN 20 -#define WNI_CFG_EDCA_WME_ACBK_LEN 20 -#define WNI_CFG_EDCA_WME_ACBE_LEN 20 -#define WNI_CFG_EDCA_WME_ACVI_LEN 20 -#define WNI_CFG_EDCA_WME_ACVO_LEN 20 -#define WNI_CFG_EDCA_ETSI_ACBK_LOCAL_LEN 20 -#define WNI_CFG_EDCA_ETSI_ACBE_LOCAL_LEN 20 -#define WNI_CFG_EDCA_ETSI_ACVI_LOCAL_LEN 20 -#define WNI_CFG_EDCA_ETSI_ACVO_LOCAL_LEN 20 -#define WNI_CFG_EDCA_ETSI_ACBK_LEN 20 -#define WNI_CFG_EDCA_ETSI_ACBE_LEN 20 -#define WNI_CFG_EDCA_ETSI_ACVI_LEN 20 -#define WNI_CFG_EDCA_ETSI_ACVO_LEN 20 #define WNI_CFG_SCAN_CONTROL_LIST_LEN 128 #define WNI_CFG_SUPPORTED_MCS_SET_LEN 16 #define WNI_CFG_BASIC_MCS_SET_LEN 16 @@ -668,17 +620,6 @@ enum { #define WNI_CFG_EDCA_PROFILE_TIT_DEMO 2 #define WNI_CFG_EDCA_PROFILE_ETSI_EUROPE 3 #define WNI_CFG_EDCA_PROFILE_MAX 4 -#define WNI_CFG_EDCA_PROFILE_ACM_IDX 0 -#define WNI_CFG_EDCA_PROFILE_AIFSN_IDX 1 -#define WNI_CFG_EDCA_PROFILE_CWMINA_IDX 2 -#define WNI_CFG_EDCA_PROFILE_CWMAXA_IDX 4 -#define WNI_CFG_EDCA_PROFILE_TXOPA_IDX 6 -#define WNI_CFG_EDCA_PROFILE_CWMINB_IDX 7 -#define WNI_CFG_EDCA_PROFILE_CWMAXB_IDX 9 -#define WNI_CFG_EDCA_PROFILE_TXOPB_IDX 11 -#define WNI_CFG_EDCA_PROFILE_CWMING_IDX 12 -#define WNI_CFG_EDCA_PROFILE_CWMAXG_IDX 14 -#define WNI_CFG_EDCA_PROFILE_TXOPG_IDX 16 #define WNI_CFG_LOCAL_POWER_CONSTRAINT_STAMIN 0 #define WNI_CFG_LOCAL_POWER_CONSTRAINT_STAMAX 255 diff --git a/core/mac/src/cfg/cfg_param_name.c b/core/mac/src/cfg/cfg_param_name.c index ae6fa029e397..f6343e1bc638 100644 --- a/core/mac/src/cfg/cfg_param_name.c +++ b/core/mac/src/cfg/cfg_param_name.c @@ -99,22 +99,6 @@ const char *cfg_get_string(uint16_t cfg_id) CASE_RETURN_STRING(WNI_CFG_MAX_SP_LENGTH); CASE_RETURN_STRING(WNI_CFG_WSM_ENABLED); CASE_RETURN_STRING(WNI_CFG_EDCA_PROFILE); - CASE_RETURN_STRING(WNI_CFG_EDCA_ANI_ACBK_LOCAL); - CASE_RETURN_STRING(WNI_CFG_EDCA_ANI_ACBE_LOCAL); - CASE_RETURN_STRING(WNI_CFG_EDCA_ANI_ACVI_LOCAL); - CASE_RETURN_STRING(WNI_CFG_EDCA_ANI_ACVO_LOCAL); - CASE_RETURN_STRING(WNI_CFG_EDCA_ANI_ACBK); - CASE_RETURN_STRING(WNI_CFG_EDCA_ANI_ACBE); - CASE_RETURN_STRING(WNI_CFG_EDCA_ANI_ACVI); - CASE_RETURN_STRING(WNI_CFG_EDCA_ANI_ACVO); - CASE_RETURN_STRING(WNI_CFG_EDCA_WME_ACBK_LOCAL); - CASE_RETURN_STRING(WNI_CFG_EDCA_WME_ACBE_LOCAL); - CASE_RETURN_STRING(WNI_CFG_EDCA_WME_ACVI_LOCAL); - CASE_RETURN_STRING(WNI_CFG_EDCA_WME_ACVO_LOCAL); - CASE_RETURN_STRING(WNI_CFG_EDCA_WME_ACBK); - CASE_RETURN_STRING(WNI_CFG_EDCA_WME_ACBE); - CASE_RETURN_STRING(WNI_CFG_EDCA_WME_ACVI); - CASE_RETURN_STRING(WNI_CFG_EDCA_WME_ACVO); CASE_RETURN_STRING(WNI_CFG_LOCAL_POWER_CONSTRAINT); CASE_RETURN_STRING(WNI_CFG_ADMIT_POLICY); CASE_RETURN_STRING(WNI_CFG_ADMIT_BWFACTOR); @@ -294,14 +278,6 @@ const char *cfg_get_string(uint16_t cfg_id) CASE_RETURN_STRING(WNI_CFG_SAP_MAX_MCS_DATA); CASE_RETURN_STRING(WNI_CFG_RATE_FOR_TX_MGMT_2G); CASE_RETURN_STRING(WNI_CFG_RATE_FOR_TX_MGMT_5G); - CASE_RETURN_STRING(WNI_CFG_EDCA_ETSI_ACBK_LOCAL); - CASE_RETURN_STRING(WNI_CFG_EDCA_ETSI_ACBE_LOCAL); - CASE_RETURN_STRING(WNI_CFG_EDCA_ETSI_ACVI_LOCAL); - CASE_RETURN_STRING(WNI_CFG_EDCA_ETSI_ACVO_LOCAL); - CASE_RETURN_STRING(WNI_CFG_EDCA_ETSI_ACBK); - CASE_RETURN_STRING(WNI_CFG_EDCA_ETSI_ACBE); - CASE_RETURN_STRING(WNI_CFG_EDCA_ETSI_ACVI); - CASE_RETURN_STRING(WNI_CFG_EDCA_ETSI_ACVO); CASE_RETURN_STRING(WNI_CFG_OBSS_DETECTION_OFFLOAD); CASE_RETURN_STRING(WNI_CFG_OBSS_COLOR_COLLISION_OFFLOAD); CASE_RETURN_STRING(WNI_CFG_TWT_REQUESTOR); diff --git a/core/mac/src/cfg/cfg_proc_msg.c b/core/mac/src/cfg/cfg_proc_msg.c index 84c1986e9b47..856c5c4c35e0 100644 --- a/core/mac/src/cfg/cfg_proc_msg.c +++ b/core/mac/src/cfg/cfg_proc_msg.c @@ -310,54 +310,6 @@ cgstatic cfg_static[CFG_PARAM_MAX_NUM] = { WNI_CFG_EDCA_PROFILE_STAMIN, WNI_CFG_EDCA_PROFILE_STAMAX, WNI_CFG_EDCA_PROFILE_STADEF}, - {WNI_CFG_EDCA_ANI_ACBK_LOCAL, - CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART, - 0, 0, 0}, - {WNI_CFG_EDCA_ANI_ACBE_LOCAL, - CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART, - 0, 0, 0}, - {WNI_CFG_EDCA_ANI_ACVI_LOCAL, - CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART, - 0, 0, 0}, - {WNI_CFG_EDCA_ANI_ACVO_LOCAL, - CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART, - 0, 0, 0}, - {WNI_CFG_EDCA_ANI_ACBK, - CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART, - 0, 0, 0}, - {WNI_CFG_EDCA_ANI_ACBE, - CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART, - 0, 0, 0}, - {WNI_CFG_EDCA_ANI_ACVI, - CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART, - 0, 0, 0}, - {WNI_CFG_EDCA_ANI_ACVO, - CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART, - 0, 0, 0}, - {WNI_CFG_EDCA_WME_ACBK_LOCAL, - CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART, - 0, 0, 0}, - {WNI_CFG_EDCA_WME_ACBE_LOCAL, - CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART, - 0, 0, 0}, - {WNI_CFG_EDCA_WME_ACVI_LOCAL, - CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART, - 0, 0, 0}, - {WNI_CFG_EDCA_WME_ACVO_LOCAL, - CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART, - 0, 0, 0}, - {WNI_CFG_EDCA_WME_ACBK, - CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART, - 0, 0, 0}, - {WNI_CFG_EDCA_WME_ACBE, - CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART, - 0, 0, 0}, - {WNI_CFG_EDCA_WME_ACVI, - CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART, - 0, 0, 0}, - {WNI_CFG_EDCA_WME_ACVO, - CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART, - 0, 0, 0}, {WNI_CFG_LOCAL_POWER_CONSTRAINT, CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT | CFG_CTL_RESTART, @@ -1279,30 +1231,6 @@ cgstatic cfg_static[CFG_PARAM_MAX_NUM] = { WNI_CFG_RATE_FOR_TX_MGMT_5G_STAMIN, WNI_CFG_RATE_FOR_TX_MGMT_5G_STAMAX, WNI_CFG_RATE_FOR_TX_MGMT_5G_STADEF}, - {WNI_CFG_EDCA_ETSI_ACBK_LOCAL, - CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART, - 0, 0, 0}, - {WNI_CFG_EDCA_ETSI_ACBE_LOCAL, - CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART, - 0, 0, 0}, - {WNI_CFG_EDCA_ETSI_ACVI_LOCAL, - CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART, - 0, 0, 0}, - {WNI_CFG_EDCA_ETSI_ACVO_LOCAL, - CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART, - 0, 0, 0}, - {WNI_CFG_EDCA_ETSI_ACBK, - CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART, - 0, 0, 0}, - {WNI_CFG_EDCA_ETSI_ACBE, - CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART, - 0, 0, 0}, - {WNI_CFG_EDCA_ETSI_ACVI, - CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART, - 0, 0, 0}, - {WNI_CFG_EDCA_ETSI_ACVO, - CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_RESTART, - 0, 0, 0}, {WNI_CFG_OBSS_DETECTION_OFFLOAD, CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT, 0, 1, 0}, @@ -1406,83 +1334,6 @@ cfgstatic_string cfg_static_string[CFG_MAX_STATIC_STRING] = { WNI_CFG_COUNTRY_CODE_LEN, 0, {0} }, - {WNI_CFG_EDCA_ANI_ACBK_LOCAL, - WNI_CFG_EDCA_ANI_ACBK_LOCAL_LEN, - 17, - {0x0, 0x7, 0x0, 0xf, 0x3, 0xff, 0x0, 0x0, 0x1f, 0x3, 0xff, 0x0, 0x0, - 0xf, 0x3, 0xff, 0x0} }, - {WNI_CFG_EDCA_ANI_ACBE_LOCAL, - WNI_CFG_EDCA_ANI_ACBE_LOCAL_LEN, - 17, - {0x0, 0x2, 0x0, 0xf, 0x3, 0xff, 0x64, 0x0, 0x1f, 0x3, 0xff, 0x64, 0x0, - 0xf, 0x3, 0xff, 0x64} }, - {WNI_CFG_EDCA_ANI_ACVI_LOCAL, - WNI_CFG_EDCA_ANI_ACVI_LOCAL_LEN, - 17, - {0x0, 0x2, 0x0, 0x7, 0x0, 0xf, 0xc8, 0x0, 0xf, 0x0, 0x1f, 0xbc, 0x0, - 0x7, 0x0, 0xf, 0xc8} }, - {WNI_CFG_EDCA_ANI_ACVO_LOCAL, - WNI_CFG_EDCA_ANI_ACVO_LOCAL_LEN, - 17, - {0x0, 0x2, 0x0, 0x3, 0x0, 0x7, 0x64, 0x0, 0x7, 0x0, 0xf, 0x66, 0x0, - 0x3, 0x0, 0x7, 0x64} }, - {WNI_CFG_EDCA_ANI_ACBK, - WNI_CFG_EDCA_ANI_ACBK_LEN, - 17, - {0x0, 0x7, 0x0, 0xf, 0x3, 0xff, 0x0, 0x0, 0x1f, 0x3, 0xff, 0x0, 0x0, - 0xf, 0x3, 0xff, 0x0} }, - {WNI_CFG_EDCA_ANI_ACBE, - WNI_CFG_EDCA_ANI_ACBE_LEN, - 17, - {0x0, 0x2, 0x0, 0xf, 0x3, 0xff, 0x64, 0x0, 0x1f, 0x3, 0xff, 0x64, 0x0, - 0xf, 0x3, 0xff, 0x64} }, - {WNI_CFG_EDCA_ANI_ACVI, - WNI_CFG_EDCA_ANI_ACVI_LEN, - 17, {0x0, 0x2, 0x0, 0x7, 0x0, 0xf, 0xc8, 0x0, 0xf, 0x0, 0x1f, - 0xbc, 0x0, 0x7, 0x0, 0xf, 0xc8} }, - {WNI_CFG_EDCA_ANI_ACVO, - WNI_CFG_EDCA_ANI_ACVO_LEN, - 17, - {0x0, 0x2, 0x0, 0x3, 0x0, 0x7, 0x64, 0x0, 0x7, 0x0, 0xf, 0x66, 0x0, 0x3, - 0x0, 0x7, 0x64} }, - {WNI_CFG_EDCA_WME_ACBK_LOCAL, - WNI_CFG_EDCA_WME_ACBK_LOCAL_LEN, - 17, {0x0, 0x7, 0x0, 0xf, 0x3, 0xff, 0x0, 0x0, 0x1f, 0x3, 0xff, - 0x0, 0x0, 0xf, 0x3, 0xff, 0x0} }, - {WNI_CFG_EDCA_WME_ACBE_LOCAL, - WNI_CFG_EDCA_WME_ACBE_LOCAL_LEN, - 17, {0x0, 0x3, 0x0, 0xf, 0x0, 0x3f, 0x0, 0x0, 0x1f, 0x3, 0xff, - 0x0, 0x0, 0xf, 0x0, 0x3f, 0x0} }, - {WNI_CFG_EDCA_WME_ACVI_LOCAL, - WNI_CFG_EDCA_WME_ACVI_LOCAL_LEN, - 17, - {0x0, 0x1, 0x0, 0x7, 0x0, 0xf, 0x5e, 0x0, 0x7, 0x0, 0xf, 0xbc, 0x0, 0x7, - 0x0, 0xf, 0x5e} }, - {WNI_CFG_EDCA_WME_ACVO_LOCAL, - WNI_CFG_EDCA_WME_ACVO_LOCAL_LEN, - 17, - {0x0, 0x1, 0x0, 0x3, 0x0, 0x7, 0x2f, 0x0, 0x3, 0x0, 0x7, 0x66, 0x0, 0x3, - 0x0, 0x7, 0x2f} }, - {WNI_CFG_EDCA_WME_ACBK, - WNI_CFG_EDCA_WME_ACBK_LEN, - 17, - {0x0, 0x7, 0x0, 0xf, 0x3, 0xff, 0x0, 0x0, 0xf, 0x3, 0xff, 0x0, 0x0, 0xf, - 0x3, 0xff, 0x0} }, - {WNI_CFG_EDCA_WME_ACBE, - WNI_CFG_EDCA_WME_ACBE_LEN, - 17, - {0x0, 0x3, 0x0, 0xf, 0x3, 0xff, 0x0, 0x0, 0xf, 0x3, 0xff, 0x0, 0x0, 0xf, - 0x3, 0xff, 0x0} }, - {WNI_CFG_EDCA_WME_ACVI, - WNI_CFG_EDCA_WME_ACVI_LEN, - 17, - {0x0, 0x2, 0x0, 0x7, 0x0, 0xf, 0x5e, 0x0, 0x7, 0x0, 0xf, 0xbc, 0x0, 0x7, - 0x0, 0xf, 0x5e} }, - {WNI_CFG_EDCA_WME_ACVO, - WNI_CFG_EDCA_WME_ACVO_LEN, - 17, - {0x0, 0x2, 0x0, 0x3, 0x0, 0x7, 0x2f, 0x0, 0x3, 0x0, 0x7, 0x66, 0x0, 0x3, - 0x0, 0x7, 0x2f} }, {WNI_CFG_SCAN_CONTROL_LIST, WNI_CFG_SCAN_CONTROL_LIST_LEN, 114, @@ -1524,46 +1375,6 @@ cfgstatic_string cfg_static_string[CFG_MAX_STATIC_STRING] = { WNI_CFG_HE_PPET_LEN, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0} }, - {WNI_CFG_EDCA_ETSI_ACBK_LOCAL, - WNI_CFG_EDCA_ETSI_ACBK_LOCAL_LEN, - 17, - {0x0, 0x7, 0x0, 0xf, 0x3, 0xff, 0xbb, 0x0, 0x1f, 0x3, 0xff, 0x0, 0x0, - 0xf, 0x3, 0xff, 0x0} }, - {WNI_CFG_EDCA_ETSI_ACBE_LOCAL, - WNI_CFG_EDCA_ETSI_ACBE_LOCAL_LEN, - 17, - {0x0, 0x3, 0x0, 0xf, 0x0, 0x3f, 0xbb, 0x0, 0x1f, 0x3, 0xff, 0x0, 0x0, - 0xf, 0x0, 0x3f, 0x0} }, - {WNI_CFG_EDCA_ETSI_ACVI_LOCAL, - WNI_CFG_EDCA_ETSI_ACVI_LOCAL_LEN, - 17, - {0x0, 0x1, 0x0, 0x7, 0x0, 0xf, 0x7d, 0x0, 0x7, 0x0, 0xf, 0xbc, 0x0, - 0x7, 0x0, 0xf, 0x5e} }, - {WNI_CFG_EDCA_ETSI_ACVO_LOCAL, - WNI_CFG_EDCA_ETSI_ACVO_LOCAL_LEN, - 17, - {0x0, 0x1, 0x0, 0x3, 0x0, 0x7, 0x3e, 0x0, 0x3, 0x0, 0x7, 0x66, 0x0, - 0x3, 0x0, 0x7, 0x2f} }, - {WNI_CFG_EDCA_ETSI_ACBK, - WNI_CFG_EDCA_ETSI_ACBK_LEN, - 17, - {0x0, 0x7, 0x0, 0xf, 0x3, 0xff, 0xbb, 0x0, 0xf, 0x3, 0xff, 0x0, 0x0, - 0xf, 0x3, 0xff, 0x0} }, - {WNI_CFG_EDCA_ETSI_ACBE, - WNI_CFG_EDCA_ETSI_ACBE_LEN, - 17, - {0x0, 0x3, 0x0, 0xf, 0x3, 0xff, 0xbb, 0x0, 0xf, 0x3, 0xff, 0x0, 0x0, - 0xf, 0x3, 0xff, 0x0} }, - {WNI_CFG_EDCA_ETSI_ACVI, - WNI_CFG_EDCA_ETSI_ACVI_LEN, - 17, - {0x0, 0x2, 0x0, 0x7, 0x0, 0xf, 0x7d, 0x0, 0x7, 0x0, 0xf, 0xbc, 0x0, - 0x7, 0x0, 0xf, 0x5e} }, - {WNI_CFG_EDCA_ETSI_ACVO, - WNI_CFG_EDCA_ETSI_ACVO_LEN, - 17, - {0x0, 0x2, 0x0, 0x3, 0x0, 0x7, 0x3e, 0x0, 0x3, 0x0, 0x7, 0x66, 0x0, - 0x3, 0x0, 0x7, 0x2f} }, }; /*--------------------------------------------------------------------*/ diff --git a/core/mac/src/pe/sch/sch_message.c b/core/mac/src/pe/sch/sch_message.c index c75cd561a7cd..68dfc188702d 100644 --- a/core/mac/src/pe/sch/sch_message.c +++ b/core/mac/src/pe/sch/sch_message.c @@ -26,6 +26,7 @@ #include "lim_send_messages.h" #include "sch_api.h" +#include "wlan_mlme_api.h" /* / Minimum beacon interval allowed (in Kus) */ #define SCH_BEACON_INTERVAL_MIN 10 @@ -39,10 +40,10 @@ /* local functions */ static QDF_STATUS get_wmm_local_params(tpAniSirGlobal pMac, - uint32_t params[][WNI_CFG_EDCA_ANI_ACBK_LOCAL_LEN]); + uint32_t params[][CFG_EDCA_DATA_LEN]); static void set_sch_edca_params(tpAniSirGlobal pMac, - uint32_t params[][WNI_CFG_EDCA_ANI_ACBK_LOCAL_LEN], + uint32_t params[][CFG_EDCA_DATA_LEN], tpPESession psessionEntry); /* -------------------------------------------------------------------- */ @@ -120,31 +121,6 @@ void sch_process_message(tpAniSirGlobal pMac, struct scheduler_msg *pSchMsg) sch_edca_profile_update(pMac, psessionEntry); break; - case WNI_CFG_EDCA_ANI_ACBK_LOCAL: - case WNI_CFG_EDCA_ANI_ACBE_LOCAL: - case WNI_CFG_EDCA_ANI_ACVI_LOCAL: - case WNI_CFG_EDCA_ANI_ACVO_LOCAL: - case WNI_CFG_EDCA_WME_ACBK_LOCAL: - case WNI_CFG_EDCA_WME_ACBE_LOCAL: - case WNI_CFG_EDCA_WME_ACVI_LOCAL: - case WNI_CFG_EDCA_WME_ACVO_LOCAL: - if (LIM_IS_AP_ROLE(psessionEntry)) - sch_qos_update_local(pMac, psessionEntry); - break; - - case WNI_CFG_EDCA_ANI_ACBK: - case WNI_CFG_EDCA_ANI_ACBE: - case WNI_CFG_EDCA_ANI_ACVI: - case WNI_CFG_EDCA_ANI_ACVO: - case WNI_CFG_EDCA_WME_ACBK: - case WNI_CFG_EDCA_WME_ACBE: - case WNI_CFG_EDCA_WME_ACVI: - case WNI_CFG_EDCA_WME_ACVO: - if (LIM_IS_AP_ROLE(psessionEntry)) { - sch_qos_update_broadcast(pMac, psessionEntry); - } - break; - default: pe_err("Cfg param %d indication not handled", pSchMsg->bodyval); @@ -157,34 +133,40 @@ void sch_process_message(tpAniSirGlobal pMac, struct scheduler_msg *pSchMsg) } -/* get the local or broadcast parameters based on the profile sepcified in the config */ -/* params are delivered in this order: BK, BE, VI, VO */ +/** + * sch_get_params() - get the local or broadcast parameters based on the profile + * sepcified in the config params are delivered in this order: BE, BK, VI, VO + */ static QDF_STATUS sch_get_params(tpAniSirGlobal pMac, - uint32_t params[][WNI_CFG_EDCA_ANI_ACBK_LOCAL_LEN], + uint32_t params[][CFG_EDCA_DATA_LEN], uint8_t local) { uint32_t val; uint32_t i, idx; uint32_t *prf; + struct wlan_mlme_edca_params *edca_params; + QDF_STATUS status; uint8_t country_code_str[WNI_CFG_COUNTRY_CODE_LEN]; uint32_t country_code_len = WNI_CFG_COUNTRY_CODE_LEN; - uint32_t ani_l[] = { - WNI_CFG_EDCA_ANI_ACBE_LOCAL, WNI_CFG_EDCA_ANI_ACBK_LOCAL, - WNI_CFG_EDCA_ANI_ACVI_LOCAL, WNI_CFG_EDCA_ANI_ACVO_LOCAL}; - uint32_t wme_l[] = { - WNI_CFG_EDCA_WME_ACBE_LOCAL, WNI_CFG_EDCA_WME_ACBK_LOCAL, - WNI_CFG_EDCA_WME_ACVI_LOCAL, WNI_CFG_EDCA_WME_ACVO_LOCAL}; - uint32_t etsi_l[] = {WNI_CFG_EDCA_ETSI_ACBE_LOCAL, - WNI_CFG_EDCA_ETSI_ACBK_LOCAL, - WNI_CFG_EDCA_ETSI_ACVI_LOCAL, - WNI_CFG_EDCA_ETSI_ACVO_LOCAL}; - uint32_t ani_b[] = { WNI_CFG_EDCA_ANI_ACBE, WNI_CFG_EDCA_ANI_ACBK, - WNI_CFG_EDCA_ANI_ACVI, WNI_CFG_EDCA_ANI_ACVO}; - uint32_t wme_b[] = { WNI_CFG_EDCA_WME_ACBE, WNI_CFG_EDCA_WME_ACBK, - WNI_CFG_EDCA_WME_ACVI, WNI_CFG_EDCA_WME_ACVO}; - uint32_t etsi_b[] = {WNI_CFG_EDCA_ETSI_ACBE, WNI_CFG_EDCA_ETSI_ACBK, - WNI_CFG_EDCA_ETSI_ACVI, WNI_CFG_EDCA_ETSI_ACVO}; + uint32_t ani_l[] = {edca_ani_acbe_local, edca_ani_acbk_local, + edca_ani_acvi_local, edca_ani_acvo_local}; + + uint32_t wme_l[] = {edca_wme_acbe_local, edca_wme_acbk_local, + edca_wme_acvi_local, edca_wme_acvo_local}; + + uint32_t etsi_l[] = {edca_etsi_acbe_local, edca_etsi_acbk_local, + edca_etsi_acvi_local, edca_etsi_acvo_local}; + + uint32_t ani_b[] = {edca_ani_acbe_bcast, edca_ani_acbk_bcast, + edca_ani_acvi_bcast, edca_ani_acvo_bcast}; + + uint32_t wme_b[] = {edca_wme_acbe_bcast, edca_wme_acbk_bcast, + edca_wme_acvi_bcast, edca_wme_acvo_bcast}; + + uint32_t etsi_b[] = {edca_etsi_acbe_bcast, edca_etsi_acbk_bcast, + edca_etsi_acvi_bcast, edca_etsi_acvo_bcast}; + edca_params = &pMac->mlme_cfg->edca_params; if (wlan_cfg_get_str(pMac, WNI_CFG_COUNTRY_CODE, country_code_str, &country_code_len) == QDF_STATUS_SUCCESS && @@ -237,21 +219,17 @@ sch_get_params(tpAniSirGlobal pMac, } for (i = 0; i < 4; i++) { - uint8_t data[WNI_CFG_EDCA_ANI_ACBK_LEN]; - uint32_t len = WNI_CFG_EDCA_ANI_ACBK_LOCAL_LEN; + uint8_t data[CFG_EDCA_DATA_LEN]; - if (wlan_cfg_get_str - (pMac, (uint16_t) prf[i], (uint8_t *) &data[0], - &len) != QDF_STATUS_SUCCESS) { - pe_err("cfgGet failed for %d", prf[i]); + status = wlan_mlme_get_edca_params(edca_params, + (uint8_t *)&data[0], + (uint8_t)prf[i]); + if (QDF_IS_STATUS_ERROR(status)) { + pe_err("Get failed for ac:%d", i); return QDF_STATUS_E_FAILURE; } - if (len > WNI_CFG_EDCA_ANI_ACBK_LOCAL_LEN) { - pe_err("cfgGet for %d: length is %d instead of %d", - prf[i], len, WNI_CFG_EDCA_ANI_ACBK_LOCAL_LEN); - return QDF_STATUS_E_FAILURE; - } - for (idx = 0; idx < len; idx++) + + for (idx = 0; idx < CFG_EDCA_DATA_LEN; idx++) params[i][idx] = (uint32_t) data[idx]; } pe_debug("GetParams: local=%d, profile = %d Done", local, val); @@ -327,7 +305,7 @@ broadcast_wmm_of_concurrent_sta_session(tpAniSirGlobal mac_ctx, void sch_qos_update_broadcast(tpAniSirGlobal pMac, tpPESession psessionEntry) { - uint32_t params[4][WNI_CFG_EDCA_ANI_ACBK_LOCAL_LEN]; + uint32_t params[4][CFG_EDCA_DATA_LEN]; uint32_t cwminidx, cwmaxidx, txopidx; uint32_t phyMode; uint8_t i; @@ -343,31 +321,31 @@ void sch_qos_update_broadcast(tpAniSirGlobal pMac, tpPESession psessionEntry) pe_debug("QosUpdBcast: mode %d", phyMode); if (phyMode == WNI_CFG_PHY_MODE_11G) { - cwminidx = WNI_CFG_EDCA_PROFILE_CWMING_IDX; - cwmaxidx = WNI_CFG_EDCA_PROFILE_CWMAXG_IDX; - txopidx = WNI_CFG_EDCA_PROFILE_TXOPG_IDX; + cwminidx = CFG_EDCA_PROFILE_CWMING_IDX; + cwmaxidx = CFG_EDCA_PROFILE_CWMAXG_IDX; + txopidx = CFG_EDCA_PROFILE_TXOPG_IDX; } else if (phyMode == WNI_CFG_PHY_MODE_11B) { - cwminidx = WNI_CFG_EDCA_PROFILE_CWMINB_IDX; - cwmaxidx = WNI_CFG_EDCA_PROFILE_CWMAXB_IDX; - txopidx = WNI_CFG_EDCA_PROFILE_TXOPB_IDX; + cwminidx = CFG_EDCA_PROFILE_CWMINB_IDX; + cwmaxidx = CFG_EDCA_PROFILE_CWMAXB_IDX; + txopidx = CFG_EDCA_PROFILE_TXOPB_IDX; } else { /* This can happen if mode is not set yet, assume 11a mode */ - cwminidx = WNI_CFG_EDCA_PROFILE_CWMINA_IDX; - cwmaxidx = WNI_CFG_EDCA_PROFILE_CWMAXA_IDX; - txopidx = WNI_CFG_EDCA_PROFILE_TXOPA_IDX; + cwminidx = CFG_EDCA_PROFILE_CWMINA_IDX; + cwmaxidx = CFG_EDCA_PROFILE_CWMAXA_IDX; + txopidx = CFG_EDCA_PROFILE_TXOPA_IDX; } for (i = 0; i < MAX_NUM_AC; i++) { if (psessionEntry->gLimEdcaParamsBC[i].aci.acm != - (uint8_t) params[i][WNI_CFG_EDCA_PROFILE_ACM_IDX]) { + (uint8_t)params[i][CFG_EDCA_PROFILE_ACM_IDX]) { psessionEntry->gLimEdcaParamsBC[i].aci.acm = - (uint8_t) params[i][WNI_CFG_EDCA_PROFILE_ACM_IDX]; + (uint8_t)params[i][CFG_EDCA_PROFILE_ACM_IDX]; updated = true; } if (psessionEntry->gLimEdcaParamsBC[i].aci.aifsn != - (uint8_t) params[i][WNI_CFG_EDCA_PROFILE_AIFSN_IDX]) { + (uint8_t)params[i][CFG_EDCA_PROFILE_AIFSN_IDX]) { psessionEntry->gLimEdcaParamsBC[i].aci.aifsn = - (uint8_t) params[i][WNI_CFG_EDCA_PROFILE_AIFSN_IDX]; + (uint8_t)params[i][CFG_EDCA_PROFILE_AIFSN_IDX]; updated = true; } if (psessionEntry->gLimEdcaParamsBC[i].cw.min != @@ -383,9 +361,9 @@ void sch_qos_update_broadcast(tpAniSirGlobal pMac, tpPESession psessionEntry) updated = true; } if (psessionEntry->gLimEdcaParamsBC[i].txoplimit != - (uint16_t) params[i][txopidx]) { + (uint16_t)params[i][txopidx]) { psessionEntry->gLimEdcaParamsBC[i].txoplimit = - (uint16_t) params[i][txopidx]; + (uint16_t)params[i][txopidx]; updated = true; } @@ -416,7 +394,7 @@ void sch_qos_update_broadcast(tpAniSirGlobal pMac, tpPESession psessionEntry) void sch_qos_update_local(tpAniSirGlobal pMac, tpPESession psessionEntry) { - uint32_t params[4][WNI_CFG_EDCA_ANI_ACBK_LOCAL_LEN]; + uint32_t params[4][CFG_EDCA_DATA_LEN]; QDF_STATUS status; status = sch_get_params(pMac, params, true /*local */); @@ -432,16 +410,17 @@ void sch_qos_update_local(tpAniSirGlobal pMac, tpPESession psessionEntry) psessionEntry->bssIdx, false); } -/** ---------------------------------------------------------- - \fn sch_set_default_edca_params - \brief This function sets the gLimEdcaParams to the default - \ local wmm profile. - \param tpAniSirGlobal pMac - \return none - \ ------------------------------------------------------------ */ +/** + * sch_set_default_edca_params() - This function sets the gLimEdcaParams to the + * default local wmm profile. + * @pMac - Global mac context + * @psessionEntry - PE session + * + * return none + */ void sch_set_default_edca_params(tpAniSirGlobal pMac, tpPESession psessionEntry) { - uint32_t params[4][WNI_CFG_EDCA_ANI_ACBK_LOCAL_LEN]; + uint32_t params[4][CFG_EDCA_DATA_LEN]; if (get_wmm_local_params(pMac, params) != QDF_STATUS_SUCCESS) { pe_err("get_wmm_local_params() failed"); @@ -452,16 +431,18 @@ void sch_set_default_edca_params(tpAniSirGlobal pMac, tpPESession psessionEntry) return; } -/** ---------------------------------------------------------- - \fn set_sch_edca_params - \brief This function fills in the gLimEdcaParams structure - \ with the given edca params. - \param tpAniSirGlobal pMac - \return none - \ ------------------------------------------------------------ */ +/** + * set_sch_edca_params() - This function fills in the gLimEdcaParams structure + * with the given edca params. + * @pMac - global mac context + * @psessionEntry - PE session + * @params - EDCA parameters + * + * Return none + */ static void set_sch_edca_params(tpAniSirGlobal pMac, - uint32_t params[][WNI_CFG_EDCA_ANI_ACBK_LOCAL_LEN], + uint32_t params[][CFG_EDCA_DATA_LEN], tpPESession psessionEntry) { uint32_t i; @@ -473,33 +454,33 @@ set_sch_edca_params(tpAniSirGlobal pMac, pe_debug("lim_get_phy_mode() = %d", phyMode); /* if (pMac->lim.gLimPhyMode == WNI_CFG_PHY_MODE_11G) */ if (phyMode == WNI_CFG_PHY_MODE_11G) { - cwminidx = WNI_CFG_EDCA_PROFILE_CWMING_IDX; - cwmaxidx = WNI_CFG_EDCA_PROFILE_CWMAXG_IDX; - txopidx = WNI_CFG_EDCA_PROFILE_TXOPG_IDX; + cwminidx = CFG_EDCA_PROFILE_CWMING_IDX; + cwmaxidx = CFG_EDCA_PROFILE_CWMAXG_IDX; + txopidx = CFG_EDCA_PROFILE_TXOPG_IDX; } /* else if (pMac->lim.gLimPhyMode == WNI_CFG_PHY_MODE_11B) */ else if (phyMode == WNI_CFG_PHY_MODE_11B) { - cwminidx = WNI_CFG_EDCA_PROFILE_CWMINB_IDX; - cwmaxidx = WNI_CFG_EDCA_PROFILE_CWMAXB_IDX; - txopidx = WNI_CFG_EDCA_PROFILE_TXOPB_IDX; + cwminidx = CFG_EDCA_PROFILE_CWMINB_IDX; + cwmaxidx = CFG_EDCA_PROFILE_CWMAXB_IDX; + txopidx = CFG_EDCA_PROFILE_TXOPB_IDX; } else { /* This can happen if mode is not set yet, assume 11a mode */ - cwminidx = WNI_CFG_EDCA_PROFILE_CWMINA_IDX; - cwmaxidx = WNI_CFG_EDCA_PROFILE_CWMAXA_IDX; - txopidx = WNI_CFG_EDCA_PROFILE_TXOPA_IDX; + cwminidx = CFG_EDCA_PROFILE_CWMINA_IDX; + cwmaxidx = CFG_EDCA_PROFILE_CWMAXA_IDX; + txopidx = CFG_EDCA_PROFILE_TXOPA_IDX; } for (i = 0; i < MAX_NUM_AC; i++) { psessionEntry->gLimEdcaParams[i].aci.acm = - (uint8_t) params[i][WNI_CFG_EDCA_PROFILE_ACM_IDX]; + (uint8_t)params[i][CFG_EDCA_PROFILE_ACM_IDX]; psessionEntry->gLimEdcaParams[i].aci.aifsn = - (uint8_t) params[i][WNI_CFG_EDCA_PROFILE_AIFSN_IDX]; + (uint8_t)params[i][CFG_EDCA_PROFILE_AIFSN_IDX]; psessionEntry->gLimEdcaParams[i].cw.min = convert_cw(GET_CW(¶ms[i][cwminidx])); psessionEntry->gLimEdcaParams[i].cw.max = convert_cw(GET_CW(¶ms[i][cwmaxidx])); psessionEntry->gLimEdcaParams[i].txoplimit = - (uint16_t) params[i][txopidx]; + (uint16_t)params[i][txopidx]; pe_debug("AC :%d: AIFSN: %d, ACM %d, CWmin %d, CWmax %d, TxOp %d", i, psessionEntry->gLimEdcaParams[i].aci.aifsn, @@ -512,53 +493,54 @@ set_sch_edca_params(tpAniSirGlobal pMac, return; } -/** ---------------------------------------------------------- - \fn get_wmm_local_params - \brief This function gets the WMM local edca parameters. - \param tpAniSirGlobal pMac - \param uint32_t params[][WNI_CFG_EDCA_ANI_ACBK_LOCAL_LEN] - \return none - \ ------------------------------------------------------------ */ +/** + * get_wmm_local_params() - This function gets the WMM local edca parameters. + * @pMac + * @params[][WNI_CFG_EDCA_ANI_ACBK_LOCAL_LEN] + * + * Return none + */ static QDF_STATUS -get_wmm_local_params(tpAniSirGlobal pMac, - uint32_t params[][WNI_CFG_EDCA_ANI_ACBK_LOCAL_LEN]) +get_wmm_local_params(tpAniSirGlobal mac_ctx, + uint32_t params[][CFG_EDCA_DATA_LEN]) { uint32_t i, idx; - uint32_t *prf; - uint32_t wme_l[] = { - WNI_CFG_EDCA_WME_ACBE_LOCAL, WNI_CFG_EDCA_WME_ACBK_LOCAL, - WNI_CFG_EDCA_WME_ACVI_LOCAL, WNI_CFG_EDCA_WME_ACVO_LOCAL}; + QDF_STATUS status; + struct wlan_mlme_edca_params *edca_params; + uint32_t wme_l[] = {edca_wme_acbe_local, edca_wme_acbk_local, + edca_wme_acvi_local, edca_wme_acvo_local}; - prf = &wme_l[0]; + if (!mac_ctx->mlme_cfg) { + pe_err("NULL mlme cfg"); + return QDF_STATUS_E_FAILURE; + } + + edca_params = &mac_ctx->mlme_cfg->edca_params; for (i = 0; i < 4; i++) { - uint8_t data[WNI_CFG_EDCA_ANI_ACBK_LEN]; - uint32_t len = WNI_CFG_EDCA_ANI_ACBK_LOCAL_LEN; + uint8_t data[CFG_EDCA_DATA_LEN]; - if (wlan_cfg_get_str - (pMac, (uint16_t) prf[i], (uint8_t *) &data[0], - &len) != QDF_STATUS_SUCCESS) { - pe_err("cfgGet failed for %d", prf[i]); + status = wlan_mlme_get_edca_params(edca_params, + (uint8_t *)&data[0], + (uint8_t)wme_l[i]); + if (QDF_IS_STATUS_ERROR(status)) { + pe_err("Get failed for ac:[%d]", i); return QDF_STATUS_E_FAILURE; } - if (len > WNI_CFG_EDCA_ANI_ACBK_LOCAL_LEN) { - pe_err("cfgGet for %d: length is %d instead of %d", - prf[i], len, WNI_CFG_EDCA_ANI_ACBK_LOCAL_LEN); - return QDF_STATUS_E_FAILURE; - } - for (idx = 0; idx < len; idx++) + for (idx = 0; idx < CFG_EDCA_DATA_LEN; idx++) params[i][idx] = (uint32_t) data[idx]; } return QDF_STATUS_SUCCESS; } -/** ---------------------------------------------------------- - \fn sch_edca_profile_update - \brief This function updates the local and broadcast - \ EDCA params in the gLimEdcaParams structure. It also - \ updates the edcaParamSetCount. - \param tpAniSirGlobal pMac - \return none - \ ------------------------------------------------------------ */ +/** + * sch_edca_profile_update() - This function updates the local and broadcast + * EDCA params in the gLimEdcaParams structure. It also updates the + * edcaParamSetCount. + * + * @pMac - global mac context + * + * Return none + */ void sch_edca_profile_update(tpAniSirGlobal pMac, tpPESession psessionEntry) { if (LIM_IS_AP_ROLE(psessionEntry) ||