aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Bowling <kbowling@FreeBSD.org>2026-08-12 01:51:18 +0000
committerKevin Bowling <kbowling@FreeBSD.org>2026-08-14 22:28:07 +0000
commitb4208a67edc2eb7898a9ff2a6f3990c6852910e4 (patch)
tree360499f0509eeccad1a027ac0d27fd7172b843cc
parentac56d36007a5a1a01fe69df370f272060e852e0b (diff)
iflib: Initialize the VFLR task unconditionally
The VFLR task was initialized only from drivers MSI-X interrupt assignment paths. ixl's legacy interrupt handler can nevertheless defer VFLR work, leaving an uninitialized task. Even with MSI-X, the admin interrupt was established before the task was initialized. Initialize it alongside the other private tasks. The existing detach check and private-taskqueue drains then cover its lifecycle for every interrupt mode and registration failure. MFC after: 2 weeks Sponsored by: BBOX.io
-rw-r--r--sys/net/iflib.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/net/iflib.c b/sys/net/iflib.c
index 9efd4b56c5d1..d4e23a70d569 100644
--- a/sys/net/iflib.c
+++ b/sys/net/iflib.c
@@ -5382,6 +5382,7 @@ iflib_device_register(device_t dev, void *sc, if_shared_ctx_t sctx, if_ctx_t *ct
TASK_INIT(&ctx->ifc_admin_task, 0, _task_fn_admin, ctx);
TASK_INIT(&ctx->ifc_led_task, 0, _task_fn_led, ctx);
+ TASK_INIT(&ctx->ifc_vflr_task, 0, _task_fn_iov, ctx);
IFLIB_REGISTER_FAIL_POINT(dev, register_after_taskqueue, err,
fail_cleanup);
@@ -6627,7 +6628,6 @@ iflib_softirq_alloc_generic(if_ctx_t ctx, if_irq_t irq, iflib_intr_type_t type,
NET_GROUPTASK_INIT(gtask, 0, fn, q);
break;
case IFLIB_INTR_IOV:
- TASK_INIT(&ctx->ifc_vflr_task, 0, _task_fn_iov, ctx);
return;
default:
panic("unknown net intr type");