Loading drivers/platform/msm/ipa/ipa_v3/ipa.c +22 −1 Original line number Diff line number Diff line Loading @@ -260,6 +260,24 @@ static int ipa3_clean_modem_rule(void) return val; } static int ipa3_clean_mhip_dl_rule(void) { struct ipa_remove_offload_connection_req_msg_v01 req; memset(&req, 0, sizeof(struct ipa_remove_offload_connection_req_msg_v01)); req.clean_all_rules_valid = true; req.clean_all_rules = true; if (ipa3_qmi_rmv_offload_request_send(&req)) { IPAWANDBG("clean dl rule cache failed\n"); return -EFAULT; } return 0; } static int ipa3_active_clients_panic_notifier(struct notifier_block *this, unsigned long event, void *ptr) { Loading Loading @@ -2553,6 +2571,9 @@ static long ipa3_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) memset(&nat_del, 0, sizeof(nat_del)); nat_del.table_index = 0; retval = ipa3_nat_del_cmd(&nat_del); if (ipa3_ctx->platform_type == IPA_PLAT_TYPE_APQ) retval = ipa3_clean_mhip_dl_rule(); else retval = ipa3_clean_modem_rule(); ipa3_counter_id_remove_all(); break; Loading drivers/platform/msm/ipa/ipa_v3/ipa_qmi_service.c +9 −0 Original line number Diff line number Diff line Loading @@ -1077,6 +1077,15 @@ int ipa3_qmi_rmv_offload_request_send( req_desc.msg_id = QMI_IPA_REMOVE_OFFLOAD_CONNECTION_REQ_V01; req_desc.ei_array = ipa_remove_offload_connection_req_msg_v01_ei; /* clean the Dl rules in the cache if flag is set */ if (req->clean_all_rules) { for (i = 0; i < QMI_IPA_MAX_FILTERS_V01; i++) if (ipa3_qmi_ctx->ipa_offload_cache[i].valid) ipa3_qmi_ctx->ipa_offload_cache[i].valid = false; } memset(&resp, 0, sizeof(struct ipa_remove_offload_connection_resp_msg_v01)); resp_desc.max_msg_len = Loading Loading
drivers/platform/msm/ipa/ipa_v3/ipa.c +22 −1 Original line number Diff line number Diff line Loading @@ -260,6 +260,24 @@ static int ipa3_clean_modem_rule(void) return val; } static int ipa3_clean_mhip_dl_rule(void) { struct ipa_remove_offload_connection_req_msg_v01 req; memset(&req, 0, sizeof(struct ipa_remove_offload_connection_req_msg_v01)); req.clean_all_rules_valid = true; req.clean_all_rules = true; if (ipa3_qmi_rmv_offload_request_send(&req)) { IPAWANDBG("clean dl rule cache failed\n"); return -EFAULT; } return 0; } static int ipa3_active_clients_panic_notifier(struct notifier_block *this, unsigned long event, void *ptr) { Loading Loading @@ -2553,6 +2571,9 @@ static long ipa3_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) memset(&nat_del, 0, sizeof(nat_del)); nat_del.table_index = 0; retval = ipa3_nat_del_cmd(&nat_del); if (ipa3_ctx->platform_type == IPA_PLAT_TYPE_APQ) retval = ipa3_clean_mhip_dl_rule(); else retval = ipa3_clean_modem_rule(); ipa3_counter_id_remove_all(); break; Loading
drivers/platform/msm/ipa/ipa_v3/ipa_qmi_service.c +9 −0 Original line number Diff line number Diff line Loading @@ -1077,6 +1077,15 @@ int ipa3_qmi_rmv_offload_request_send( req_desc.msg_id = QMI_IPA_REMOVE_OFFLOAD_CONNECTION_REQ_V01; req_desc.ei_array = ipa_remove_offload_connection_req_msg_v01_ei; /* clean the Dl rules in the cache if flag is set */ if (req->clean_all_rules) { for (i = 0; i < QMI_IPA_MAX_FILTERS_V01; i++) if (ipa3_qmi_ctx->ipa_offload_cache[i].valid) ipa3_qmi_ctx->ipa_offload_cache[i].valid = false; } memset(&resp, 0, sizeof(struct ipa_remove_offload_connection_resp_msg_v01)); resp_desc.max_msg_len = Loading