hi Sorin, Looks good overall. I just one one comment about the patch which I’ve inlined.
How did you test this BTW? > VOID > @@ -1309,7 +1405,7 @@ OvsTunnelFilterThreadUninit(POVS_TUNFLT_THREAD_CONTEXT > threadCtx) > * -------------------------------------------------------------------------- > * This function creates a new tunnel filter request and push it to a thread > * queue. If the thread stop event is signaled, the request is completed with > - * STATUS_CANCELLED without pushing it to any queue. > + * STATUS_REQUEST_ABORTED without pushing it to any queue. > * -------------------------------------------------------------------------- > */ > NTSTATUS > @@ -1321,7 +1417,7 @@ OvsTunnelFilterQueueRequest(PIRP irp, > PVOID tunnelContext) > { > POVS_TUNFLT_REQUEST request = NULL; > - NTSTATUS status = STATUS_PENDING; > + NTSTATUS status = STATUS_SUCCESS; > BOOLEAN error = TRUE; > UINT64 timeout = 0; > > @@ -1334,8 +1430,8 @@ OvsTunnelFilterQueueRequest(PIRP irp, > FALSE, > (LARGE_INTEGER *)&timeout)) { > /* The stop event is signaled. Completed the IRP with > - * STATUS_CANCELLED. */ > - status = STATUS_CANCELLED; > + * STATUS_REQUEST_ABORTED. */ > + status = STATUS_REQUEST_ABORTED; > break; > } > > @@ -1366,7 +1462,10 @@ OvsTunnelFilterQueueRequest(PIRP irp, > request->callback = callback; > request->context = tunnelContext; > > - OvsTunnelFilterThreadPush(request); > + status = OvsTunnelFilterThreadPush(request); > + if (!NT_SUCCESS(status)) { > + break; > + } > > error = FALSE; > } while (error); > @@ -1379,13 +1478,14 @@ OvsTunnelFilterQueueRequest(PIRP irp, > } > } > > - return status; > + /* Return pending to indicate that the IRP will be completed later. */ > + return STATUS_PENDING; You are returning STATUS_PENDING at the end of the function. You should be returning ‘status’. _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev