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:
Gurumoorthi Gnanasambandhan
2019-07-25 10:24:10 +05:30
committed by nshrivas
parent 17d1e0f676
commit 80e1ae17a6
5 changed files with 43 additions and 21 deletions

View File

@@ -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;

View File

@@ -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
}; };

View File

@@ -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;

View File

@@ -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;
/** /**

View File

@@ -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)