diff --git a/target_if/mlme/vdev_mgr/src/target_if_vdev_mgr_tx_ops.c b/target_if/mlme/vdev_mgr/src/target_if_vdev_mgr_tx_ops.c index c1c032649c..83bb0ad81c 100644 --- a/target_if/mlme/vdev_mgr/src/target_if_vdev_mgr_tx_ops.c +++ b/target_if/mlme/vdev_mgr/src/target_if_vdev_mgr_tx_ops.c @@ -306,6 +306,12 @@ target_if_vdev_mlme_id_2_wmi(uint32_t cfg_id) case WLAN_MLME_CFG_LISTEN_INTERVAL: wmi_id = wmi_vdev_param_listen_interval; break; + case WLAN_MLME_CFG_ENABLE_MULTI_GROUP_KEY: + wmi_id = wmi_vdev_param_enable_multi_group_key; + break; + case WLAN_MLME_CFG_MAX_GROUP_KEYS: + wmi_id = wmi_vdev_param_max_group_keys; + break; default: wmi_id = cfg_id; break; diff --git a/umac/mlme/vdev_mgr/dispatcher/inc/wlan_vdev_mgr_ucfg_api.h b/umac/mlme/vdev_mgr/dispatcher/inc/wlan_vdev_mgr_ucfg_api.h index 3b6bab0b96..84d1875f23 100644 --- a/umac/mlme/vdev_mgr/dispatcher/inc/wlan_vdev_mgr_ucfg_api.h +++ b/umac/mlme/vdev_mgr/dispatcher/inc/wlan_vdev_mgr_ucfg_api.h @@ -101,6 +101,8 @@ enum wlan_mlme_cfg_id { WLAN_MLME_CFG_BCN_TX_RATE, WLAN_MLME_CFG_BCN_TX_RATE_CODE, WLAN_MLME_CFG_RATEMASK_CAPS, + WLAN_MLME_CFG_ENABLE_MULTI_GROUP_KEY, + WLAN_MLME_CFG_MAX_GROUP_KEYS, WLAN_MLME_CFG_MAX }; diff --git a/umac/mlme/vdev_mgr/dispatcher/src/wlan_vdev_mgr_utils_api.c b/umac/mlme/vdev_mgr/dispatcher/src/wlan_vdev_mgr_utils_api.c index 192c6ad07b..f52a36227f 100644 --- a/umac/mlme/vdev_mgr/dispatcher/src/wlan_vdev_mgr_utils_api.c +++ b/umac/mlme/vdev_mgr/dispatcher/src/wlan_vdev_mgr_utils_api.c @@ -112,7 +112,7 @@ wlan_util_vdev_mlme_set_param(struct vdev_mlme_obj *vdev_mlme, struct vdev_mlme_proto *mlme_proto; struct vdev_mlme_mgmt *mlme_mgmt; struct vdev_mlme_inactivity_params *inactivity_params; - int is_wmi_cmd = 0; + bool is_wmi_cmd = false; int ret = QDF_STATUS_SUCCESS; struct vdev_set_params param = {0}; @@ -128,27 +128,27 @@ wlan_util_vdev_mlme_set_param(struct vdev_mlme_obj *vdev_mlme, switch (param_id) { case WLAN_MLME_CFG_DTIM_PERIOD: mlme_proto->generic.dtim_period = mlme_cfg.value; - is_wmi_cmd = 1; + is_wmi_cmd = true; break; case WLAN_MLME_CFG_SLOT_TIME: mlme_proto->generic.slot_time = mlme_cfg.value; - is_wmi_cmd = 1; + is_wmi_cmd = true; break; case WLAN_MLME_CFG_PROTECTION_MODE: mlme_proto->generic.protection_mode = mlme_cfg.value; - is_wmi_cmd = 1; + is_wmi_cmd = true; break; case WLAN_MLME_CFG_BEACON_INTERVAL: mlme_proto->generic.beacon_interval = mlme_cfg.value; - is_wmi_cmd = 1; + is_wmi_cmd = true; break; case WLAN_MLME_CFG_LDPC: mlme_proto->generic.ldpc = mlme_cfg.value; - is_wmi_cmd = 1; + is_wmi_cmd = true; break; case WLAN_MLME_CFG_NSS: mlme_proto->generic.nss = mlme_cfg.value; - is_wmi_cmd = 1; + is_wmi_cmd = true; break; case WLAN_MLME_CFG_TSF_ADJUST: mlme_proto->generic.tsfadjust = mlme_cfg.tsf; @@ -181,22 +181,22 @@ wlan_util_vdev_mlme_set_param(struct vdev_mlme_obj *vdev_mlme, mlme_proto->vht_info.bfee_sts_cap = mlme_cfg.value; break; case WLAN_MLME_CFG_TXBF_CAPS: - is_wmi_cmd = 1; + is_wmi_cmd = true; break; case WLAN_MLME_CFG_HT_CAPS: mlme_proto->ht_info.ht_caps = mlme_cfg.value; break; case WLAN_MLME_CFG_HE_OPS: mlme_proto->he_ops_info.he_ops = mlme_cfg.value; - is_wmi_cmd = 1; + is_wmi_cmd = true; break; case WLAN_MLME_CFG_RTS_THRESHOLD: mlme_mgmt->generic.rts_threshold = mlme_cfg.value; - is_wmi_cmd = 1; + is_wmi_cmd = true; break; case WLAN_MLME_CFG_FRAG_THRESHOLD: mlme_mgmt->generic.frag_threshold = mlme_cfg.value; - is_wmi_cmd = 1; + is_wmi_cmd = true; break; case WLAN_MLME_CFG_PROBE_DELAY: mlme_mgmt->generic.probe_delay = mlme_cfg.value; @@ -206,19 +206,19 @@ wlan_util_vdev_mlme_set_param(struct vdev_mlme_obj *vdev_mlme, break; case WLAN_MLME_CFG_DROP_UNENCRY: mlme_mgmt->generic.drop_unencry = mlme_cfg.value; - is_wmi_cmd = 1; + is_wmi_cmd = true; break; case WLAN_MLME_CFG_TX_PWR_LIMIT: mlme_mgmt->generic.tx_pwrlimit = mlme_cfg.value; break; case WLAN_MLME_CFG_TX_POWER: mlme_mgmt->generic.tx_power = mlme_cfg.value; - is_wmi_cmd = 1; + is_wmi_cmd = true; break; case WLAN_MLME_CFG_AMPDU: mlme_mgmt->generic.ampdu = mlme_cfg.value; mlme_cfg.value = (mlme_cfg.value << 8) + 0xFF; - is_wmi_cmd = 1; + is_wmi_cmd = true; break; case WLAN_MLME_CFG_AMPDU_SIZE: mlme_mgmt->generic.ampdu = mlme_cfg.value; @@ -226,7 +226,7 @@ wlan_util_vdev_mlme_set_param(struct vdev_mlme_obj *vdev_mlme, case WLAN_MLME_CFG_AMSDU: mlme_mgmt->generic.amsdu = mlme_cfg.value; mlme_cfg.value = (mlme_cfg.value << 8) + 0xFF; - is_wmi_cmd = 1; + is_wmi_cmd = true; break; case WLAN_MLME_CFG_AMSDU_SIZE: mlme_mgmt->generic.amsdu = mlme_cfg.value; @@ -240,17 +240,17 @@ wlan_util_vdev_mlme_set_param(struct vdev_mlme_obj *vdev_mlme, case WLAN_MLME_CFG_MIN_IDLE_INACTIVE_TIME: inactivity_params->keepalive_min_idle_inactive_time_secs = mlme_cfg.value; - is_wmi_cmd = 1; + is_wmi_cmd = true; break; case WLAN_MLME_CFG_MAX_IDLE_INACTIVE_TIME: inactivity_params->keepalive_max_idle_inactive_time_secs = mlme_cfg.value; - is_wmi_cmd = 1; + is_wmi_cmd = true; break; case WLAN_MLME_CFG_MAX_UNRESPONSIVE_INACTIVE_TIME: inactivity_params->keepalive_max_unresponsive_time_secs = mlme_cfg.value; - is_wmi_cmd = 1; + is_wmi_cmd = true; break; case WLAN_MLME_CFG_RATE_FLAGS: mlme_mgmt->rate_info.rate_flags = mlme_cfg.value; @@ -281,7 +281,7 @@ wlan_util_vdev_mlme_set_param(struct vdev_mlme_obj *vdev_mlme, break; case WLAN_MLME_CFG_LISTEN_INTERVAL: mlme_mgmt->powersave_info.listen_interval = mlme_cfg.value; - is_wmi_cmd = 1; + is_wmi_cmd = true; break; case WLAN_MLME_CFG_MODDTIM_CNT: mlme_mgmt->powersave_info.moddtim_cnt = mlme_cfg.value; @@ -345,10 +345,16 @@ wlan_util_vdev_mlme_set_param(struct vdev_mlme_obj *vdev_mlme, mlme_mgmt->rate_info.bcn_tx_rate = mlme_cfg.value; break; case WLAN_MLME_CFG_BCN_TX_RATE_CODE: - is_wmi_cmd = 1; + is_wmi_cmd = true; break; case WLAN_MLME_CFG_TX_MGMT_RATE_CODE: - is_wmi_cmd = 1; + is_wmi_cmd = true; + break; + case WLAN_MLME_CFG_ENABLE_MULTI_GROUP_KEY: + is_wmi_cmd = true; + break; + case WLAN_MLME_CFG_MAX_GROUP_KEYS: + is_wmi_cmd = true; break; default: break; diff --git a/wmi/inc/wmi_unified_param.h b/wmi/inc/wmi_unified_param.h index 82c33584b2..b175f1759b 100644 --- a/wmi/inc/wmi_unified_param.h +++ b/wmi/inc/wmi_unified_param.h @@ -5157,6 +5157,8 @@ typedef enum { wmi_vdev_param_rawmode_open_war, wmi_vdev_param_max_mtu_size, wmi_vdev_param_mcast_rc_stale_period, + wmi_vdev_param_enable_multi_group_key, + wmi_vdev_param_max_group_keys, } wmi_conv_vdev_param_id; /** @@ -5474,6 +5476,7 @@ struct wmi_host_fw_abi_ver { * by the AP * @max_bssid_indicator: max number of MBSS VAPs * @three_way_coex_config_legacy_en: enable three way coex legacy feature + * @max_num_group_keys: max number of group keys supported for VLAN */ typedef struct { uint32_t num_vdevs; @@ -5557,6 +5560,7 @@ typedef struct { eapol_minrate_ac_set:2; bool tstamp64_en; bool three_way_coex_config_legacy_en; + uint32_t max_num_group_keys; } target_resource_config; /** diff --git a/wmi/src/wmi_unified_tlv.c b/wmi/src/wmi_unified_tlv.c index 823c00fb7c..77ee7e7b77 100644 --- a/wmi/src/wmi_unified_tlv.c +++ b/wmi/src/wmi_unified_tlv.c @@ -472,6 +472,9 @@ static const uint32_t vdev_param_tlv[] = { [wmi_vdev_param_max_mtu_size] = WMI_VDEV_PARAM_MAX_MTU_SIZE, [wmi_vdev_param_mcast_rc_stale_period] = WMI_VDEV_PARAM_MCAST_RC_STALE_PERIOD, + [wmi_vdev_param_enable_multi_group_key] = + WMI_VDEV_PARAM_ENABLE_MULTI_GROUP_KEY, + [wmi_vdev_param_max_group_keys] = WMI_VDEV_PARAM_NUM_GROUP_KEYS, }; #endif @@ -6474,6 +6477,7 @@ void wmi_copy_resource_config(wmi_resource_config *resource_cfg, resource_cfg->num_packet_filters = tgt_res_cfg->num_packet_filters; resource_cfg->num_max_sta_vdevs = tgt_res_cfg->num_max_sta_vdevs; resource_cfg->max_bssid_indicator = tgt_res_cfg->max_bssid_indicator; + resource_cfg->max_num_group_keys = tgt_res_cfg->max_num_group_keys; if (tgt_res_cfg->atf_config) WMI_RSRC_CFG_FLAG_ATF_CONFIG_ENABLE_SET(resource_cfg->flag1, 1); if (tgt_res_cfg->mgmt_comp_evt_bundle_support)