Sashiko has found one pretty valid issue and one low-hanging-fruit in this
patch. Just in case, here is diff that addresses those:
Author: Larysa Zaremba [off-list ref]
Date: Mon Jul 20 18:00:25 2026 +0200
fixup! libie: add control queue support
diff --git a/drivers/net/ethernet/intel/libie/controlq.c b/drivers/net/ethernet/intel/libie/controlq.c
index 0a179957bfef..1eee507dd484 100644
--- a/drivers/net/ethernet/intel/libie/controlq.c
+++ b/drivers/net/ethernet/intel/libie/controlq.c
@@ -127,6 +127,7 @@ int libie_ctlq_post_rx_buffs(struct libie_ctlq_info *ctlq)
if (likely(ctlq->next_to_post != ntp)) {
ctlq->next_to_post = ntp;
+ dma_wmb();
writel(ntp, ctlq->reg.tail);
}
@@ -331,11 +332,6 @@ libie_ctlq_add(struct libie_ctlq_ctx *ctx,
qinfo->len > FIELD_MAX(LIBIE_CTLQ_MBX_ATQ_LEN))
return ERR_PTR(-EOPNOTSUPP);
- /* libie_ctlq_init was not called */
- scoped_guard(spinlock, &ctx->ctlqs_lock)
- if (!ctx->ctlqs.next)
- return ERR_PTR(-EINVAL);
-
ctlq = kvzalloc_obj(*ctlq);
if (!ctlq)
return ERR_PTR(-ENOMEM);