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;