qcacmn: ATF multiradio support

Changes added to support multiradio feature.
Included pdev_id and/or vdev_id in required ATF specific WMI data
structures. All ATF commands will be sent with pdev_id and/or vdev_id.

Change-Id: I723a9a6e4a67a417d4aa2b392285dc4afa590a21
CRs-Fixed: 2052786
This commit is contained in:
Subrat Mishra
2017-04-03 12:32:42 +05:30
committed by snandini
parent 0692a1aa70
commit a1c92f584a
2 changed files with 53 additions and 26 deletions

View File

@@ -3214,14 +3214,16 @@ send_set_bwf_cmd_non_tlv(wmi_unified_t wmi_handle,
return QDF_STATUS_E_FAILURE;
}
cmd = (wmi_peer_bwf_request *)wmi_buf_data(buf);
qdf_mem_copy((void *)&(cmd->num_peers),
(void *)&(param->num_peers),
sizeof(u_int32_t));
qdf_mem_copy(&(cmd->num_peers), &(param->num_peers), sizeof(uint32_t));
peer_info = (struct wmi_bwf_peer_info *)&(cmd->peer_info[0]);
for (i = 0; i < param->num_peers; i++) {
qdf_mem_copy((void *)&(peer_info[i]),
(void *)&(param->peer_info[i]),
sizeof(struct wmi_bwf_peer_info));
qdf_mem_copy(&(peer_info[i].peer_macaddr),
&(param->peer_info[i].peer_macaddr),
sizeof(wmi_mac_addr));
peer_info[i].bwf_guaranteed_bandwidth =
param->peer_info[i].throughput;
peer_info[i].bwf_max_airtime = param->peer_info[i].max_airtime;
peer_info[i].bwf_peer_priority = param->peer_info[i].priority;
}
retval = wmi_unified_cmd_send(wmi_handle, buf, len,
@@ -3258,13 +3260,13 @@ send_set_atf_cmd_non_tlv(wmi_unified_t wmi_handle,
}
cmd = (wmi_peer_atf_request *)wmi_buf_data(buf);
qdf_mem_copy((void *)&(cmd->num_peers), (void *)&(param->num_peers),
sizeof(uint32_t));
qdf_mem_copy(&(cmd->num_peers), &(param->num_peers), sizeof(uint32_t));
peer_info = (struct wmi_atf_peer_info *)&(cmd->peer_info[0]);
for (i = 0; i < param->num_peers; i++) {
qdf_mem_copy((void *)&(peer_info[i]),
(void *)&(param->peer_info[i]),
sizeof(struct wmi_atf_peer_info));
qdf_mem_copy(&(peer_info[i].peer_macaddr),
&(param->peer_info[i].peer_macaddr),
sizeof(wmi_mac_addr));
peer_info[i].atf_units = param->peer_info[i].percentage_peer;
}
/* qdf_print("wmi_unified_pdev_set_atf peer_num=%d\n", cmd->num_peers); */
retval = wmi_unified_cmd_send(wmi_handle, buf, len,
@@ -3297,17 +3299,21 @@ send_atf_peer_request_cmd_non_tlv(wmi_unified_t wmi_handle,
}
cmd = (wmi_peer_atf_ext_request *)wmi_buf_data(buf);
qdf_mem_copy((void *)&(cmd->num_peers), (void *)&(param->num_peers),
sizeof(uint32_t));
qdf_mem_copy(&(cmd->num_peers), &(param->num_peers), sizeof(uint32_t));
peer_ext_info =
(struct wmi_atf_peer_ext_info *)&(cmd->peer_ext_info[0]);
for (i = 0; i < param->num_peers; i++) {
qdf_mem_copy((void *)&(peer_ext_info[i]),
(void *)&(param->peer_ext_info[i]),
sizeof(struct wmi_atf_peer_ext_info));
qdf_mem_copy(&(peer_ext_info[i].peer_macaddr),
&(param->peer_ext_info[i].peer_macaddr),
sizeof(wmi_mac_addr));
peer_ext_info[i].atf_groupid =
param->peer_ext_info[i].group_index;
peer_ext_info[i].atf_units_reserved =
param->peer_ext_info[i].atf_index_reserved;
}
retval = wmi_unified_cmd_send(wmi_handle, buf, len,
WMI_PEER_ATF_EXT_REQUEST_CMDID);
return retval;
}
@@ -3336,16 +3342,18 @@ send_set_atf_grouping_cmd_non_tlv(wmi_unified_t wmi_handle,
}
cmd = (wmi_atf_ssid_grp_request *)wmi_buf_data(buf);
qdf_mem_copy((void *)&(cmd->num_groups), (void *)&(param->num_groups),
qdf_mem_copy(&(cmd->num_groups), &(param->num_groups),
sizeof(uint32_t));
group_info = (struct wmi_atf_group_info *)&(cmd->group_info[0]);
for (i = 0; i < param->num_groups; i++) {
qdf_mem_copy((void *)&(group_info[i]),
(void *)&(param->group_info[i]),
sizeof(struct wmi_atf_group_info));
group_info[i].atf_group_units =
param->group_info[i].percentage_group;
group_info[i].atf_group_units_reserved =
param->group_info[i].atf_group_units_reserved;
}
retval = wmi_unified_cmd_send(wmi_handle, buf, len,
WMI_ATF_SSID_GROUPING_REQUEST_CMDID);
return retval;
}

View File

@@ -10464,7 +10464,14 @@ send_set_atf_cmd_tlv(wmi_unified_t wmi_handle,
WMITLV_TAG_STRUC_wmi_atf_peer_info,
WMITLV_GET_STRUCT_TLVLEN(
wmi_atf_peer_info));
qdf_mem_copy(&(peer_info->peer_macaddr),
&(param->peer_info[i].peer_macaddr),
sizeof(wmi_mac_addr));
peer_info->atf_units = param->peer_info[i].percentage_peer;
peer_info->vdev_id = param->peer_info[i].vdev_id;
peer_info->pdev_id =
wmi_handle->ops->convert_pdev_id_host_to_target(
param->peer_info[i].pdev_id);
/*
* TLV definition for peer atf request fixed param combines
* extension stats. Legacy FW for WIN (Non-TLV) has peer atf
@@ -10987,6 +10994,11 @@ send_set_bwf_cmd_tlv(wmi_unified_t wmi_handle,
qdf_mem_copy(&peer_info->peer_macaddr,
&param->peer_info[i].peer_macaddr,
sizeof(param->peer_info[i].peer_macaddr));
peer_info->vdev_id =
param->peer_info[i].vdev_id;
peer_info->pdev_id =
wmi_handle->ops->convert_pdev_id_host_to_target(
param->peer_info[i].pdev_id);
peer_info++;
}
@@ -11586,6 +11598,9 @@ void wmi_copy_resource_config(wmi_resource_config *resource_cfg,
resource_cfg->bpf_instruction_size = tgt_res_cfg->bpf_instruction_size;
resource_cfg->max_bssid_rx_filters = tgt_res_cfg->max_bssid_rx_filters;
resource_cfg->use_pdev_id = tgt_res_cfg->use_pdev_id;
WMI_RSRC_CFG_FLAG_ATF_CONFIG_ENABLE_SET(resource_cfg->flag1,
tgt_res_cfg->atf_config);
}
#ifdef CONFIG_MCL
/**
@@ -18272,7 +18287,7 @@ static void populate_tlv_service(uint32_t *wmi_service)
WMI_SERVICE_UNAVAILABLE;
wmi_service[wmi_service_enhanced_proxy_sta] = WMI_SERVICE_UNAVAILABLE;
wmi_service[wmi_service_tt] = WMI_SERVICE_UNAVAILABLE;
wmi_service[wmi_service_atf] = WMI_SERVICE_UNAVAILABLE;
wmi_service[wmi_service_atf] = WMI_SERVICE_ATF;
wmi_service[wmi_service_peer_caching] = WMI_SERVICE_UNAVAILABLE;
wmi_service[wmi_service_coex_gpio] = WMI_SERVICE_UNAVAILABLE;
wmi_service[wmi_service_aux_spectral_intf] = WMI_SERVICE_UNAVAILABLE;
@@ -18494,8 +18509,10 @@ static void populate_pdev_param_tlv(uint32_t *pdev_param)
pdev_param[wmi_pdev_param_noise_threshold] = WMI_UNAVAILABLE_PARAM;
pdev_param[wmi_pdev_param_dpd_enable] = WMI_UNAVAILABLE_PARAM;
pdev_param[wmi_pdev_param_set_mcast_bcast_echo] = WMI_UNAVAILABLE_PARAM;
pdev_param[wmi_pdev_param_atf_strict_sch] = WMI_UNAVAILABLE_PARAM;
pdev_param[wmi_pdev_param_atf_sched_duration] = WMI_UNAVAILABLE_PARAM;
pdev_param[wmi_pdev_param_atf_strict_sch] =
WMI_PDEV_PARAM_ATF_STRICT_SCH;
pdev_param[wmi_pdev_param_atf_sched_duration] =
WMI_PDEV_PARAM_ATF_SCHED_DURATION;
pdev_param[wmi_pdev_param_ant_plzn] = WMI_UNAVAILABLE_PARAM;
pdev_param[wmi_pdev_param_sensitivity_level] = WMI_UNAVAILABLE_PARAM;
pdev_param[wmi_pdev_param_signed_txpower_2g] = WMI_UNAVAILABLE_PARAM;
@@ -18512,11 +18529,13 @@ static void populate_pdev_param_tlv(uint32_t *pdev_param)
pdev_param[wmi_pdev_param_txpower_decr_db] = WMI_UNAVAILABLE_PARAM;
pdev_param[wmi_pdev_param_rx_batchmode] = WMI_UNAVAILABLE_PARAM;
pdev_param[wmi_pdev_param_packet_aggr_delay] = WMI_UNAVAILABLE_PARAM;
pdev_param[wmi_pdev_param_atf_obss_noise_sch] = WMI_UNAVAILABLE_PARAM;
pdev_param[wmi_pdev_param_atf_obss_noise_sch] =
WMI_PDEV_PARAM_ATF_OBSS_NOISE_SCH;
pdev_param[wmi_pdev_param_atf_obss_noise_scaling_factor] =
WMI_UNAVAILABLE_PARAM;
WMI_PDEV_PARAM_ATF_OBSS_NOISE_SCALING_FACTOR;
pdev_param[wmi_pdev_param_cust_txpower_scale] = WMI_UNAVAILABLE_PARAM;
pdev_param[wmi_pdev_param_atf_dynamic_enable] = WMI_UNAVAILABLE_PARAM;
pdev_param[wmi_pdev_param_atf_dynamic_enable] =
WMI_PDEV_PARAM_ATF_DYNAMIC_ENABLE;
pdev_param[wmi_pdev_param_atf_ssid_group_policy] =
WMI_UNAVAILABLE_PARAM;
pdev_param[wmi_pdev_param_igmpmld_override] = WMI_UNAVAILABLE_PARAM;