qcacmn: Enable/Disable multi group key support
Support to Enable/Disable multi group key and configure maximum number of group keys. Change-Id: Ie6ce2a38d0ad04a47f966fc281f35a8af7125447 CRs-Fixed: 2490599
This commit is contained in:

committed by
nshrivas

parent
17d1e0f676
commit
80e1ae17a6
@@ -306,6 +306,12 @@ target_if_vdev_mlme_id_2_wmi(uint32_t cfg_id)
|
|||||||
case WLAN_MLME_CFG_LISTEN_INTERVAL:
|
case WLAN_MLME_CFG_LISTEN_INTERVAL:
|
||||||
wmi_id = wmi_vdev_param_listen_interval;
|
wmi_id = wmi_vdev_param_listen_interval;
|
||||||
break;
|
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:
|
default:
|
||||||
wmi_id = cfg_id;
|
wmi_id = cfg_id;
|
||||||
break;
|
break;
|
||||||
|
@@ -101,6 +101,8 @@ enum wlan_mlme_cfg_id {
|
|||||||
WLAN_MLME_CFG_BCN_TX_RATE,
|
WLAN_MLME_CFG_BCN_TX_RATE,
|
||||||
WLAN_MLME_CFG_BCN_TX_RATE_CODE,
|
WLAN_MLME_CFG_BCN_TX_RATE_CODE,
|
||||||
WLAN_MLME_CFG_RATEMASK_CAPS,
|
WLAN_MLME_CFG_RATEMASK_CAPS,
|
||||||
|
WLAN_MLME_CFG_ENABLE_MULTI_GROUP_KEY,
|
||||||
|
WLAN_MLME_CFG_MAX_GROUP_KEYS,
|
||||||
WLAN_MLME_CFG_MAX
|
WLAN_MLME_CFG_MAX
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -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_proto *mlme_proto;
|
||||||
struct vdev_mlme_mgmt *mlme_mgmt;
|
struct vdev_mlme_mgmt *mlme_mgmt;
|
||||||
struct vdev_mlme_inactivity_params *inactivity_params;
|
struct vdev_mlme_inactivity_params *inactivity_params;
|
||||||
int is_wmi_cmd = 0;
|
bool is_wmi_cmd = false;
|
||||||
int ret = QDF_STATUS_SUCCESS;
|
int ret = QDF_STATUS_SUCCESS;
|
||||||
struct vdev_set_params param = {0};
|
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) {
|
switch (param_id) {
|
||||||
case WLAN_MLME_CFG_DTIM_PERIOD:
|
case WLAN_MLME_CFG_DTIM_PERIOD:
|
||||||
mlme_proto->generic.dtim_period = mlme_cfg.value;
|
mlme_proto->generic.dtim_period = mlme_cfg.value;
|
||||||
is_wmi_cmd = 1;
|
is_wmi_cmd = true;
|
||||||
break;
|
break;
|
||||||
case WLAN_MLME_CFG_SLOT_TIME:
|
case WLAN_MLME_CFG_SLOT_TIME:
|
||||||
mlme_proto->generic.slot_time = mlme_cfg.value;
|
mlme_proto->generic.slot_time = mlme_cfg.value;
|
||||||
is_wmi_cmd = 1;
|
is_wmi_cmd = true;
|
||||||
break;
|
break;
|
||||||
case WLAN_MLME_CFG_PROTECTION_MODE:
|
case WLAN_MLME_CFG_PROTECTION_MODE:
|
||||||
mlme_proto->generic.protection_mode = mlme_cfg.value;
|
mlme_proto->generic.protection_mode = mlme_cfg.value;
|
||||||
is_wmi_cmd = 1;
|
is_wmi_cmd = true;
|
||||||
break;
|
break;
|
||||||
case WLAN_MLME_CFG_BEACON_INTERVAL:
|
case WLAN_MLME_CFG_BEACON_INTERVAL:
|
||||||
mlme_proto->generic.beacon_interval = mlme_cfg.value;
|
mlme_proto->generic.beacon_interval = mlme_cfg.value;
|
||||||
is_wmi_cmd = 1;
|
is_wmi_cmd = true;
|
||||||
break;
|
break;
|
||||||
case WLAN_MLME_CFG_LDPC:
|
case WLAN_MLME_CFG_LDPC:
|
||||||
mlme_proto->generic.ldpc = mlme_cfg.value;
|
mlme_proto->generic.ldpc = mlme_cfg.value;
|
||||||
is_wmi_cmd = 1;
|
is_wmi_cmd = true;
|
||||||
break;
|
break;
|
||||||
case WLAN_MLME_CFG_NSS:
|
case WLAN_MLME_CFG_NSS:
|
||||||
mlme_proto->generic.nss = mlme_cfg.value;
|
mlme_proto->generic.nss = mlme_cfg.value;
|
||||||
is_wmi_cmd = 1;
|
is_wmi_cmd = true;
|
||||||
break;
|
break;
|
||||||
case WLAN_MLME_CFG_TSF_ADJUST:
|
case WLAN_MLME_CFG_TSF_ADJUST:
|
||||||
mlme_proto->generic.tsfadjust = mlme_cfg.tsf;
|
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;
|
mlme_proto->vht_info.bfee_sts_cap = mlme_cfg.value;
|
||||||
break;
|
break;
|
||||||
case WLAN_MLME_CFG_TXBF_CAPS:
|
case WLAN_MLME_CFG_TXBF_CAPS:
|
||||||
is_wmi_cmd = 1;
|
is_wmi_cmd = true;
|
||||||
break;
|
break;
|
||||||
case WLAN_MLME_CFG_HT_CAPS:
|
case WLAN_MLME_CFG_HT_CAPS:
|
||||||
mlme_proto->ht_info.ht_caps = mlme_cfg.value;
|
mlme_proto->ht_info.ht_caps = mlme_cfg.value;
|
||||||
break;
|
break;
|
||||||
case WLAN_MLME_CFG_HE_OPS:
|
case WLAN_MLME_CFG_HE_OPS:
|
||||||
mlme_proto->he_ops_info.he_ops = mlme_cfg.value;
|
mlme_proto->he_ops_info.he_ops = mlme_cfg.value;
|
||||||
is_wmi_cmd = 1;
|
is_wmi_cmd = true;
|
||||||
break;
|
break;
|
||||||
case WLAN_MLME_CFG_RTS_THRESHOLD:
|
case WLAN_MLME_CFG_RTS_THRESHOLD:
|
||||||
mlme_mgmt->generic.rts_threshold = mlme_cfg.value;
|
mlme_mgmt->generic.rts_threshold = mlme_cfg.value;
|
||||||
is_wmi_cmd = 1;
|
is_wmi_cmd = true;
|
||||||
break;
|
break;
|
||||||
case WLAN_MLME_CFG_FRAG_THRESHOLD:
|
case WLAN_MLME_CFG_FRAG_THRESHOLD:
|
||||||
mlme_mgmt->generic.frag_threshold = mlme_cfg.value;
|
mlme_mgmt->generic.frag_threshold = mlme_cfg.value;
|
||||||
is_wmi_cmd = 1;
|
is_wmi_cmd = true;
|
||||||
break;
|
break;
|
||||||
case WLAN_MLME_CFG_PROBE_DELAY:
|
case WLAN_MLME_CFG_PROBE_DELAY:
|
||||||
mlme_mgmt->generic.probe_delay = mlme_cfg.value;
|
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;
|
break;
|
||||||
case WLAN_MLME_CFG_DROP_UNENCRY:
|
case WLAN_MLME_CFG_DROP_UNENCRY:
|
||||||
mlme_mgmt->generic.drop_unencry = mlme_cfg.value;
|
mlme_mgmt->generic.drop_unencry = mlme_cfg.value;
|
||||||
is_wmi_cmd = 1;
|
is_wmi_cmd = true;
|
||||||
break;
|
break;
|
||||||
case WLAN_MLME_CFG_TX_PWR_LIMIT:
|
case WLAN_MLME_CFG_TX_PWR_LIMIT:
|
||||||
mlme_mgmt->generic.tx_pwrlimit = mlme_cfg.value;
|
mlme_mgmt->generic.tx_pwrlimit = mlme_cfg.value;
|
||||||
break;
|
break;
|
||||||
case WLAN_MLME_CFG_TX_POWER:
|
case WLAN_MLME_CFG_TX_POWER:
|
||||||
mlme_mgmt->generic.tx_power = mlme_cfg.value;
|
mlme_mgmt->generic.tx_power = mlme_cfg.value;
|
||||||
is_wmi_cmd = 1;
|
is_wmi_cmd = true;
|
||||||
break;
|
break;
|
||||||
case WLAN_MLME_CFG_AMPDU:
|
case WLAN_MLME_CFG_AMPDU:
|
||||||
mlme_mgmt->generic.ampdu = mlme_cfg.value;
|
mlme_mgmt->generic.ampdu = mlme_cfg.value;
|
||||||
mlme_cfg.value = (mlme_cfg.value << 8) + 0xFF;
|
mlme_cfg.value = (mlme_cfg.value << 8) + 0xFF;
|
||||||
is_wmi_cmd = 1;
|
is_wmi_cmd = true;
|
||||||
break;
|
break;
|
||||||
case WLAN_MLME_CFG_AMPDU_SIZE:
|
case WLAN_MLME_CFG_AMPDU_SIZE:
|
||||||
mlme_mgmt->generic.ampdu = mlme_cfg.value;
|
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:
|
case WLAN_MLME_CFG_AMSDU:
|
||||||
mlme_mgmt->generic.amsdu = mlme_cfg.value;
|
mlme_mgmt->generic.amsdu = mlme_cfg.value;
|
||||||
mlme_cfg.value = (mlme_cfg.value << 8) + 0xFF;
|
mlme_cfg.value = (mlme_cfg.value << 8) + 0xFF;
|
||||||
is_wmi_cmd = 1;
|
is_wmi_cmd = true;
|
||||||
break;
|
break;
|
||||||
case WLAN_MLME_CFG_AMSDU_SIZE:
|
case WLAN_MLME_CFG_AMSDU_SIZE:
|
||||||
mlme_mgmt->generic.amsdu = mlme_cfg.value;
|
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:
|
case WLAN_MLME_CFG_MIN_IDLE_INACTIVE_TIME:
|
||||||
inactivity_params->keepalive_min_idle_inactive_time_secs =
|
inactivity_params->keepalive_min_idle_inactive_time_secs =
|
||||||
mlme_cfg.value;
|
mlme_cfg.value;
|
||||||
is_wmi_cmd = 1;
|
is_wmi_cmd = true;
|
||||||
break;
|
break;
|
||||||
case WLAN_MLME_CFG_MAX_IDLE_INACTIVE_TIME:
|
case WLAN_MLME_CFG_MAX_IDLE_INACTIVE_TIME:
|
||||||
inactivity_params->keepalive_max_idle_inactive_time_secs =
|
inactivity_params->keepalive_max_idle_inactive_time_secs =
|
||||||
mlme_cfg.value;
|
mlme_cfg.value;
|
||||||
is_wmi_cmd = 1;
|
is_wmi_cmd = true;
|
||||||
break;
|
break;
|
||||||
case WLAN_MLME_CFG_MAX_UNRESPONSIVE_INACTIVE_TIME:
|
case WLAN_MLME_CFG_MAX_UNRESPONSIVE_INACTIVE_TIME:
|
||||||
inactivity_params->keepalive_max_unresponsive_time_secs =
|
inactivity_params->keepalive_max_unresponsive_time_secs =
|
||||||
mlme_cfg.value;
|
mlme_cfg.value;
|
||||||
is_wmi_cmd = 1;
|
is_wmi_cmd = true;
|
||||||
break;
|
break;
|
||||||
case WLAN_MLME_CFG_RATE_FLAGS:
|
case WLAN_MLME_CFG_RATE_FLAGS:
|
||||||
mlme_mgmt->rate_info.rate_flags = mlme_cfg.value;
|
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;
|
break;
|
||||||
case WLAN_MLME_CFG_LISTEN_INTERVAL:
|
case WLAN_MLME_CFG_LISTEN_INTERVAL:
|
||||||
mlme_mgmt->powersave_info.listen_interval = mlme_cfg.value;
|
mlme_mgmt->powersave_info.listen_interval = mlme_cfg.value;
|
||||||
is_wmi_cmd = 1;
|
is_wmi_cmd = true;
|
||||||
break;
|
break;
|
||||||
case WLAN_MLME_CFG_MODDTIM_CNT:
|
case WLAN_MLME_CFG_MODDTIM_CNT:
|
||||||
mlme_mgmt->powersave_info.moddtim_cnt = mlme_cfg.value;
|
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;
|
mlme_mgmt->rate_info.bcn_tx_rate = mlme_cfg.value;
|
||||||
break;
|
break;
|
||||||
case WLAN_MLME_CFG_BCN_TX_RATE_CODE:
|
case WLAN_MLME_CFG_BCN_TX_RATE_CODE:
|
||||||
is_wmi_cmd = 1;
|
is_wmi_cmd = true;
|
||||||
break;
|
break;
|
||||||
case WLAN_MLME_CFG_TX_MGMT_RATE_CODE:
|
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;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@@ -5157,6 +5157,8 @@ typedef enum {
|
|||||||
wmi_vdev_param_rawmode_open_war,
|
wmi_vdev_param_rawmode_open_war,
|
||||||
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_max_group_keys,
|
||||||
} wmi_conv_vdev_param_id;
|
} wmi_conv_vdev_param_id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -5474,6 +5476,7 @@ struct wmi_host_fw_abi_ver {
|
|||||||
* by the AP
|
* by the AP
|
||||||
* @max_bssid_indicator: max number of MBSS VAPs
|
* @max_bssid_indicator: max number of MBSS VAPs
|
||||||
* @three_way_coex_config_legacy_en: enable three way coex legacy feature
|
* @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 {
|
typedef struct {
|
||||||
uint32_t num_vdevs;
|
uint32_t num_vdevs;
|
||||||
@@ -5557,6 +5560,7 @@ typedef struct {
|
|||||||
eapol_minrate_ac_set:2;
|
eapol_minrate_ac_set:2;
|
||||||
bool tstamp64_en;
|
bool tstamp64_en;
|
||||||
bool three_way_coex_config_legacy_en;
|
bool three_way_coex_config_legacy_en;
|
||||||
|
uint32_t max_num_group_keys;
|
||||||
} target_resource_config;
|
} target_resource_config;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -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_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_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
|
#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_packet_filters = tgt_res_cfg->num_packet_filters;
|
||||||
resource_cfg->num_max_sta_vdevs = tgt_res_cfg->num_max_sta_vdevs;
|
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_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)
|
if (tgt_res_cfg->atf_config)
|
||||||
WMI_RSRC_CFG_FLAG_ATF_CONFIG_ENABLE_SET(resource_cfg->flag1, 1);
|
WMI_RSRC_CFG_FLAG_ATF_CONFIG_ENABLE_SET(resource_cfg->flag1, 1);
|
||||||
if (tgt_res_cfg->mgmt_comp_evt_bundle_support)
|
if (tgt_res_cfg->mgmt_comp_evt_bundle_support)
|
||||||
|
Reference in New Issue
Block a user