msm: camera: reqmgr: Fix frame drop issue

When the req id of a slot is -1, we don't update the
last applied idx for this slot, if a bubble issue is
reported on previous slot, then we won't reset its
status to ADDED, then we will force reset it during
moving to new slot, then this slot will be reset, its
status will be NO_REQ after reset, then wr idx will be
increased even though the wr idx isn't equal to rd idx.
This change updates the wr idx only when wr idx is equal
to rd idx, and always update last applied idx.

CRs-Fixed: 3157732
Change-Id: I9e6cae019f93c7c12e81708a84e1ac28bf64bbc8
Signed-off-by: Depeng Shao <quic_depengs@quicinc.com>
This commit is contained in:
Depeng Shao
2022-04-14 21:04:43 +08:00
committato da Camera Software Integration
parent be308d6b3e
commit 92f47b510a

Vedi File

@@ -842,7 +842,8 @@ static int __cam_req_mgr_check_next_req_slot(
if (in_q->wr_idx != idx)
CAM_WARN(CAM_CRM,
"CHECK here wr %d, rd %d", in_q->wr_idx, idx);
__cam_req_mgr_inc_idx(&in_q->wr_idx, 1, in_q->num_slots);
else
__cam_req_mgr_inc_idx(&in_q->wr_idx, 1, in_q->num_slots);
}
return rc;
@@ -2032,8 +2033,7 @@ static int __cam_req_mgr_process_req(struct cam_req_mgr_core_link *link,
}
}
if (slot->req_id > 0)
in_q->last_applied_idx = idx;
in_q->last_applied_idx = idx;
__cam_req_mgr_dec_idx(
&idx, reset_step + 1,