mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-11 07:03:09 -04:00
Merge "msm: ipa: QMI update for firwall config"
This commit is contained in:
commit
18a0904a03
4 changed files with 54 additions and 4 deletions
|
|
@ -1324,13 +1324,25 @@ int ipa3_qmi_filter_notify_send(
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (req->rule_id_ex_len == 0) {
|
||||
IPAWANDBG(" delete UL filter rule for pipe %d\n",
|
||||
req->source_pipe_index);
|
||||
} else if (req->rule_id_ex_len > QMI_IPA_MAX_FILTERS_EX2_V01) {
|
||||
IPAWANERR(" UL filter rule for pipe %d exceed max (%u)\n",
|
||||
req->source_pipe_index,
|
||||
req->rule_id_ex_len);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (req->install_status != IPA_QMI_RESULT_SUCCESS_V01) {
|
||||
IPAWANERR(" UL filter rule for pipe %d install_status = %d\n",
|
||||
req->source_pipe_index, req->install_status);
|
||||
return -EINVAL;
|
||||
} else if (req->rule_id_valid != 1) {
|
||||
IPAWANERR(" UL filter rule for pipe %d rule_id_valid = %d\n",
|
||||
req->source_pipe_index, req->rule_id_valid);
|
||||
} else if ((req->rule_id_valid != 1) &&
|
||||
(req->rule_id_ex_valid != 1)) {
|
||||
IPAWANERR(" UL filter rule for pipe %d rule_id_valid = %d/%d\n",
|
||||
req->source_pipe_index, req->rule_id_valid,
|
||||
req->rule_id_ex_valid);
|
||||
return -EINVAL;
|
||||
} else if (req->source_pipe_index >= ipa3_ctx->ipa_num_pipes) {
|
||||
IPAWANDBG(
|
||||
|
|
|
|||
|
|
@ -109,6 +109,9 @@ struct ipa3_qmi_context {
|
|||
int num_ipa_offload_connection;
|
||||
struct ipa_offload_connection_val
|
||||
ipa_offload_cache[QMI_IPA_MAX_FILTERS_V01];
|
||||
uint8_t ul_firewall_indices_list_valid;
|
||||
uint32_t ul_firewall_indices_list_len;
|
||||
uint32_t ul_firewall_indices_list[QMI_IPA_MAX_FILTERS_V01];
|
||||
};
|
||||
|
||||
struct ipa3_rmnet_mux_val {
|
||||
|
|
|
|||
|
|
@ -2296,7 +2296,7 @@ struct qmi_elem_info ipa3_fltr_installed_notif_req_msg_data_v01_ei[] = {
|
|||
{
|
||||
.data_type = QMI_DATA_LEN,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint8_t),
|
||||
.elem_size = sizeof(uint32_t),
|
||||
.array_type = NO_ARRAY,
|
||||
.tlv_type = 0x19,
|
||||
.offset = offsetof(
|
||||
|
|
|
|||
|
|
@ -679,6 +679,41 @@ int ipa3_copy_ul_filter_rule_to_ipa(struct ipa_install_fltr_rule_req_msg_v01
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (rule_req->ul_firewall_indices_list_valid) {
|
||||
IPAWANDBG("Receive ul_firewall_indices_list_len = (%d)",
|
||||
rule_req->ul_firewall_indices_list_len);
|
||||
|
||||
if (rule_req->ul_firewall_indices_list_len >
|
||||
rmnet_ipa3_ctx->num_q6_rules) {
|
||||
IPAWANERR("UL rule indices are not valid: (%d/%d)\n",
|
||||
rule_req->xlat_filter_indices_list_len,
|
||||
rmnet_ipa3_ctx->num_q6_rules);
|
||||
goto failure;
|
||||
}
|
||||
|
||||
ipa3_qmi_ctx->ul_firewall_indices_list_valid = 1;
|
||||
ipa3_qmi_ctx->ul_firewall_indices_list_len =
|
||||
rule_req->ul_firewall_indices_list_len;
|
||||
|
||||
for (i = 0; i < rule_req->ul_firewall_indices_list_len; i++) {
|
||||
ipa3_qmi_ctx->ul_firewall_indices_list[i] =
|
||||
rule_req->ul_firewall_indices_list[i];
|
||||
}
|
||||
|
||||
for (i = 0; i < rule_req->ul_firewall_indices_list_len; i++) {
|
||||
if (rule_req->ul_firewall_indices_list[i]
|
||||
>= rmnet_ipa3_ctx->num_q6_rules) {
|
||||
IPAWANERR("UL rule idx is wrong: %d\n",
|
||||
rule_req->ul_firewall_indices_list[i]);
|
||||
goto failure;
|
||||
} else {
|
||||
ipa3_qmi_ctx->q6_ul_filter_rule
|
||||
[rule_req->ul_firewall_indices_list[i]]
|
||||
.replicate_needed = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
goto success;
|
||||
|
||||
failure:
|
||||
|
|
|
|||
Loading…
Reference in a new issue