aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaeyoon Choi <jaeyoon@FreeBSD.org>2026-01-05 02:35:52 +0000
committerJaeyoon Choi <jaeyoon@FreeBSD.org>2026-01-05 02:35:52 +0000
commitef2d7cc11d04728f2b97d2b0188d77be77d5c252 (patch)
treef14fd485a28bd87c77fd865ea0f18779ccfc5c56
parent9c923575606bbd29dcf0ec3384150d2d67136cbb (diff)
-rw-r--r--sys/dev/ufshci/ufshci_ctrlr.c8
-rw-r--r--sys/dev/ufshci/ufshci_private.h2
-rw-r--r--sys/dev/ufshci/ufshci_req_queue.c14
3 files changed, 8 insertions, 16 deletions
diff --git a/sys/dev/ufshci/ufshci_ctrlr.c b/sys/dev/ufshci/ufshci_ctrlr.c
index ce0da4cab907..0d7994a033c5 100644
--- a/sys/dev/ufshci/ufshci_ctrlr.c
+++ b/sys/dev/ufshci/ufshci_ctrlr.c
@@ -17,12 +17,8 @@ ufshci_ctrlr_fail(struct ufshci_controller *ctrlr)
{
ctrlr->is_failed = true;
- ufshci_req_queue_fail(ctrlr,
- ctrlr->task_mgmt_req_queue.qops.get_hw_queue(
- &ctrlr->task_mgmt_req_queue));
- ufshci_req_queue_fail(ctrlr,
- ctrlr->transfer_req_queue.qops.get_hw_queue(
- &ctrlr->transfer_req_queue));
+ ufshci_req_queue_fail(ctrlr, &ctrlr->task_mgmt_req_queue);
+ ufshci_req_queue_fail(ctrlr, &ctrlr->transfer_req_queue);
}
static void
diff --git a/sys/dev/ufshci/ufshci_private.h b/sys/dev/ufshci/ufshci_private.h
index bcb2bcef0230..0665f29d3896 100644
--- a/sys/dev/ufshci/ufshci_private.h
+++ b/sys/dev/ufshci/ufshci_private.h
@@ -499,7 +499,7 @@ int ufshci_utmr_req_queue_enable(struct ufshci_controller *ctrlr);
void ufshci_utr_req_queue_disable(struct ufshci_controller *ctrlr);
int ufshci_utr_req_queue_enable(struct ufshci_controller *ctrlr);
void ufshci_req_queue_fail(struct ufshci_controller *ctrlr,
- struct ufshci_hw_queue *hwq);
+ struct ufshci_req_queue *req_queue);
int ufshci_req_queue_submit_request(struct ufshci_req_queue *req_queue,
struct ufshci_request *req, bool is_admin);
void ufshci_req_queue_complete_tracker(struct ufshci_tracker *tr);
diff --git a/sys/dev/ufshci/ufshci_req_queue.c b/sys/dev/ufshci/ufshci_req_queue.c
index df7e4b159278..33008c6b1230 100644
--- a/sys/dev/ufshci/ufshci_req_queue.c
+++ b/sys/dev/ufshci/ufshci_req_queue.c
@@ -199,11 +199,10 @@ ufshci_req_queue_manual_complete_request(struct ufshci_req_queue *req_queue,
void
ufshci_req_queue_fail(struct ufshci_controller *ctrlr,
- struct ufshci_hw_queue *hwq)
+ struct ufshci_req_queue *req_queue)
{
- struct ufshci_req_queue *req_queue;
+ struct ufshci_hw_queue *hwq = req_queue->qops.get_hw_queue(req_queue);
struct ufshci_tracker *tr;
- struct ufshci_request *req;
int i;
if (!mtx_initialized(&hwq->qlock))
@@ -211,16 +210,13 @@ ufshci_req_queue_fail(struct ufshci_controller *ctrlr,
mtx_lock(&hwq->qlock);
- req_queue = &ctrlr->transfer_req_queue;
-
- for (i = 0; i < req_queue->num_entries; i++) {
+ for (i = 0; i < req_queue->num_trackers; i++) {
tr = hwq->act_tr[i];
- req = tr->req;
if (tr->slot_state == UFSHCI_SLOT_STATE_RESERVED) {
mtx_unlock(&hwq->qlock);
- ufshci_req_queue_manual_complete_request(req_queue, req,
- UFSHCI_DESC_ABORTED,
+ ufshci_req_queue_manual_complete_request(req_queue,
+ tr->req, UFSHCI_DESC_ABORTED,
UFSHCI_RESPONSE_CODE_GENERAL_FAILURE);
mtx_lock(&hwq->qlock);
} else if (tr->slot_state == UFSHCI_SLOT_STATE_SCHEDULED) {