diff options
| author | Skylar Chang <chiaweic@codeaurora.org> | 2018-05-03 02:18:34 -0700 |
|---|---|---|
| committer | Mohammed Javid <mjavid@codeaurora.org> | 2018-08-11 15:49:02 +0530 |
| commit | 726ce06fae16ba71bb89e045edb4a7cf3033ec88 (patch) | |
| tree | 0ffdb8787ecd2f9cf724259bc27db242f71f3a3e /drivers/platform/msm | |
| parent | bf2009f9d88d22df01a259912ed1cae48f24b31a (diff) | |
msm: ipa: fix the ipa-hw rules not clean
After getting reset ioctl from user-space
module, the caches in ipa-driver are clean
however ipa-hw still has it. The fix is
to commit those caches in ipa-hw.
Change-Id: Iee0009b2bf3cdff2979d1fdba629c86a7c5afe21
Acked-by: Pooja Kumari <kumarip@qti.qualcomm.com>
Signed-off-by: Mohammed Javid <mjavid@codeaurora.org>
Signed-off-by: Skylar Chang <chiaweic@codeaurora.org>
Diffstat (limited to 'drivers/platform/msm')
| -rw-r--r-- | drivers/platform/msm/ipa/ipa_v2/ipa_flt.c | 10 | ||||
| -rw-r--r-- | drivers/platform/msm/ipa/ipa_v2/ipa_hdr.c | 9 | ||||
| -rw-r--r-- | drivers/platform/msm/ipa/ipa_v2/ipa_rt.c | 9 | ||||
| -rw-r--r-- | drivers/platform/msm/ipa/ipa_v3/ipa_flt.c | 10 | ||||
| -rw-r--r-- | drivers/platform/msm/ipa/ipa_v3/ipa_hdr.c | 10 | ||||
| -rw-r--r-- | drivers/platform/msm/ipa/ipa_v3/ipa_rt.c | 9 |
6 files changed, 54 insertions, 3 deletions
diff --git a/drivers/platform/msm/ipa/ipa_v2/ipa_flt.c b/drivers/platform/msm/ipa/ipa_v2/ipa_flt.c index 6392c379b026..c29cbdf95057 100644 --- a/drivers/platform/msm/ipa/ipa_v2/ipa_flt.c +++ b/drivers/platform/msm/ipa/ipa_v2/ipa_flt.c @@ -1495,8 +1495,16 @@ int ipa2_reset_flt(enum ipa_ip_type ip, bool user_only) } } } - mutex_unlock(&ipa_ctx->lock); + /* commit the change to IPA-HW */ + if (ipa_ctx->ctrl->ipa_commit_flt(IPA_IP_v4) || + ipa_ctx->ctrl->ipa_commit_flt(IPA_IP_v6)) { + IPAERR_RL("fail to commit flt-rule\n"); + WARN_ON_RATELIMIT_IPA(1); + mutex_unlock(&ipa_ctx->lock); + return -EPERM; + } + mutex_unlock(&ipa_ctx->lock); return 0; } diff --git a/drivers/platform/msm/ipa/ipa_v2/ipa_hdr.c b/drivers/platform/msm/ipa/ipa_v2/ipa_hdr.c index e0868ad83bf4..38da0667e04e 100644 --- a/drivers/platform/msm/ipa/ipa_v2/ipa_hdr.c +++ b/drivers/platform/msm/ipa/ipa_v2/ipa_hdr.c @@ -1426,6 +1426,15 @@ int ipa2_reset_hdr(bool user_only) } mutex_unlock(&ipa_ctx->lock); + /* commit the change to IPA-HW */ + if (ipa_ctx->ctrl->ipa_commit_hdr()) { + IPAERR_RL("fail to commit hdr\n"); + WARN_ON_RATELIMIT_IPA(1); + mutex_unlock(&ipa_ctx->lock); + return -EFAULT; + } + + mutex_unlock(&ipa_ctx->lock); return 0; } diff --git a/drivers/platform/msm/ipa/ipa_v2/ipa_rt.c b/drivers/platform/msm/ipa/ipa_v2/ipa_rt.c index e4a3a72ee670..5bab6d0c626a 100644 --- a/drivers/platform/msm/ipa/ipa_v2/ipa_rt.c +++ b/drivers/platform/msm/ipa/ipa_v2/ipa_rt.c @@ -1443,6 +1443,15 @@ int ipa2_reset_rt(enum ipa_ip_type ip, bool user_only) } } } + + /* commit the change to IPA-HW */ + if (ipa_ctx->ctrl->ipa_commit_rt(IPA_IP_v4) || + ipa_ctx->ctrl->ipa_commit_rt(IPA_IP_v6)) { + IPAERR("fail to commit rt-rule\n"); + WARN_ON_RATELIMIT_IPA(1); + mutex_unlock(&ipa_ctx->lock); + return -EPERM; + } mutex_unlock(&ipa_ctx->lock); return 0; diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_flt.c b/drivers/platform/msm/ipa/ipa_v3/ipa_flt.c index f7d314ad7335..9afdfdb9292a 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipa_flt.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipa_flt.c @@ -1420,8 +1420,16 @@ int ipa3_reset_flt(enum ipa_ip_type ip, bool user_only) } } } - mutex_unlock(&ipa3_ctx->lock); + /* commit the change to IPA-HW */ + if (ipa3_ctx->ctrl->ipa3_commit_flt(IPA_IP_v4) || + ipa3_ctx->ctrl->ipa3_commit_flt(IPA_IP_v6)) { + IPAERR("fail to commit flt-rule\n"); + WARN_ON_RATELIMIT_IPA(1); + mutex_unlock(&ipa3_ctx->lock); + return -EPERM; + } + mutex_unlock(&ipa3_ctx->lock); return 0; } diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_hdr.c b/drivers/platform/msm/ipa/ipa_v3/ipa_hdr.c index 63e3f8578219..4e7176ac7709 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipa_hdr.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipa_hdr.c @@ -1168,8 +1168,16 @@ int ipa3_reset_hdr(bool user_only) ipa3_ctx->hdr_proc_ctx_tbl.end = end; IPADBG("hdr_proc_tbl.end = %d\n", end); } - mutex_unlock(&ipa3_ctx->lock); + /* commit the change to IPA-HW */ + if (ipa3_ctx->ctrl->ipa3_commit_hdr()) { + IPAERR("fail to commit hdr\n"); + WARN_ON_RATELIMIT_IPA(1); + mutex_unlock(&ipa3_ctx->lock); + return -EFAULT; + } + + mutex_unlock(&ipa3_ctx->lock); return 0; } diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_rt.c b/drivers/platform/msm/ipa/ipa_v3/ipa_rt.c index 203fd142b213..0e75d10bae54 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipa_rt.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipa_rt.c @@ -1576,6 +1576,15 @@ int ipa3_reset_rt(enum ipa_ip_type ip, bool user_only) } } } + + /* commit the change to IPA-HW */ + if (ipa3_ctx->ctrl->ipa3_commit_rt(IPA_IP_v4) || + ipa3_ctx->ctrl->ipa3_commit_rt(IPA_IP_v6)) { + IPAERR("fail to commit rt-rule\n"); + WARN_ON_RATELIMIT_IPA(1); + mutex_unlock(&ipa3_ctx->lock); + return -EPERM; + } mutex_unlock(&ipa3_ctx->lock); return 0; |
