Module Name:    src
Committed By:   jdolecek
Date:           Sun Nov  5 18:24:31 UTC 2023

Modified Files:
        src/sys/external/bsd/ena-com: ena_com.c

Log Message:
ena(4): destroy all wait_event

Code contributed by KUSABA Takeshi <t-kus...@iij.ad.jp>


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/ena-com/ena_com.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/external/bsd/ena-com/ena_com.c
diff -u src/sys/external/bsd/ena-com/ena_com.c:1.3 src/sys/external/bsd/ena-com/ena_com.c:1.4
--- src/sys/external/bsd/ena-com/ena_com.c:1.3	Sun Nov  5 18:21:54 2023
+++ src/sys/external/bsd/ena-com/ena_com.c	Sun Nov  5 18:24:31 2023
@@ -1584,13 +1584,20 @@ void ena_com_admin_destroy(struct ena_co
 	struct ena_com_admin_sq *sq = &admin_queue->sq;
 	struct ena_com_aenq *aenq = &ena_dev->aenq;
 	u16 size;
-
-	ENA_WAIT_EVENT_DESTROY(admin_queue->comp_ctx->wait_event);
+	int i;
 
 	ENA_SPINLOCK_DESTROY(admin_queue->q_lock);
 
 	if (admin_queue->comp_ctx) {
-		size_t s = admin_queue->q_depth * sizeof(struct ena_comp_ctx);
+		size_t s;
+
+		for (i = 0; i < admin_queue->q_depth; i++) {
+			struct ena_comp_ctx *comp_ctx = get_comp_ctxt(admin_queue, i, false);
+			if (comp_ctx != NULL)
+				ENA_WAIT_EVENT_DESTROY(comp_ctx->wait_event);
+		}
+
+		s = admin_queue->q_depth * sizeof(struct ena_comp_ctx);
 		ENA_MEM_FREE(ena_dev->dmadev, admin_queue->comp_ctx, s);
 	}
 	admin_queue->comp_ctx = NULL;

Reply via email to