From c8edf34ac9cfb69a3e4ee9be4e4d12ce57a20a93 Mon Sep 17 00:00:00 2001 From: Sivakanth Vaka Date: Mon, 4 Mar 2024 16:59:59 +0530 Subject: [PATCH] ipa: Added changes to move the hdr entry to free list Added changes to move the hdr free offset list after deteting the hdrs from the hdr table if delted hdr is pointing to the some proc ctx. Signed-off-by: Sivakanth Vaka Signed-off-by: Avinash Kumar Change-Id: Ic1f20fc8070ae7a45c2d7a5abd5b9c56a96c49cf --- drivers/platform/msm/ipa/ipa_v3/ipa_hdr.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_hdr.c b/drivers/platform/msm/ipa/ipa_v3/ipa_hdr.c index a3f090def566..28285a6eed57 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipa_hdr.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipa_hdr.c @@ -710,7 +710,10 @@ static int __ipa3_del_hdr_proc_ctx(u32 proc_ctx_hdl, return 0; } - if (release_hdr) + if (entry->hdr && entry == entry->hdr->proc_ctx) + entry->hdr->proc_ctx = NULL; + + if (entry->hdr && release_hdr) __ipa3_del_hdr(entry->hdr->id, false); /* move the offset entry to appropriate free list */ @@ -774,17 +777,19 @@ int __ipa3_del_hdr(u32 hdr_hdl, bool by_user) return 0; } + if (entry->proc_ctx && entry == entry->proc_ctx->hdr) + entry->proc_ctx->hdr = NULL; + if (entry->is_hdr_proc_ctx || entry->proc_ctx) { dma_unmap_single(ipa3_ctx->pdev, entry->phys_base, entry->hdr_len, DMA_TO_DEVICE); __ipa3_del_hdr_proc_ctx(entry->proc_ctx->id, false, false); - } else { - /* move the offset entry to appropriate free list */ - list_move(&entry->offset_entry->link, - &htbl->head_free_offset_list[entry->offset_entry->bin]); } + /* move the offset entry to appropriate free list */ + list_move(&entry->offset_entry->link, + &htbl->head_free_offset_list[entry->offset_entry->bin]); list_del(&entry->link); htbl->hdr_cnt--; entry->cookie = 0;