From abb95099b038df048d64cff55e809f61108958a5 Mon Sep 17 00:00:00 2001 From: Michael Friesen <3517159+mtfriesen@users.noreply.github.com> Date: Tue, 18 Nov 2025 15:47:25 -0500 Subject: [PATCH] ensure queues exist before trying to set offloads (#926) --- src/xdp/xsk.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/xdp/xsk.c b/src/xdp/xsk.c index 968531ef..18ca1cec 100644 --- a/src/xdp/xsk.c +++ b/src/xdp/xsk.c @@ -3825,7 +3825,12 @@ XskSetTxOffloadChecksumWorker( XSK_BINDING_WORKITEM *WorkItem = (XSK_BINDING_WORKITEM *)Item; XSK *Xsk = WorkItem->Xsk; - WorkItem->CompletionStatus = XdpTxQueueEnableChecksumOffload(Xsk->Tx.Xdp.Queue); + if (Xsk->Tx.Xdp.Queue != NULL) { + WorkItem->CompletionStatus = XdpTxQueueEnableChecksumOffload(Xsk->Tx.Xdp.Queue); + } else { + WorkItem->CompletionStatus = STATUS_INVALID_DEVICE_STATE; + } + KeSetEvent(&WorkItem->CompletionEvent, 0, FALSE); } @@ -3837,7 +3842,13 @@ XskSetRxOffloadChecksumWorker( { XSK_BINDING_WORKITEM *WorkItem = (XSK_BINDING_WORKITEM *)Item; XSK *Xsk = WorkItem->Xsk; - WorkItem->CompletionStatus = XdpRxQueueEnableChecksumOffload(Xsk->Rx.Xdp.Queue); + + if (Xsk->Rx.Xdp.Queue != NULL) { + WorkItem->CompletionStatus = XdpRxQueueEnableChecksumOffload(Xsk->Rx.Xdp.Queue); + } else { + WorkItem->CompletionStatus = STATUS_INVALID_DEVICE_STATE; + } + KeSetEvent(&WorkItem->CompletionEvent, 0, FALSE); }