Clean excessive miniport adapter state checks
Signed-off-by: Simon Rozman <simon@rozman.si>
This commit is contained in:
parent
6d230d616e
commit
5cecd1536c
12
wintun.c
12
wintun.c
@ -768,10 +768,7 @@ static NDIS_STATUS TunPause(NDIS_HANDLE MiniportAdapterContext, PNDIS_MINIPORT_P
|
|||||||
TUN_CTX *ctx = (TUN_CTX *)MiniportAdapterContext;
|
TUN_CTX *ctx = (TUN_CTX *)MiniportAdapterContext;
|
||||||
|
|
||||||
InterlockedIncrement64(&ctx->ActiveTransactionCount);
|
InterlockedIncrement64(&ctx->ActiveTransactionCount);
|
||||||
if (InterlockedCompareExchange((LONG *)&ctx->State, TUN_STATE_PAUSING, TUN_STATE_RUNNING) != TUN_STATE_RUNNING) {
|
InterlockedExchange((LONG *)&ctx->State, TUN_STATE_PAUSING);
|
||||||
InterlockedDecrement64(&ctx->ActiveTransactionCount);
|
|
||||||
return NDIS_STATUS_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
TunQueueClear(ctx);
|
TunQueueClear(ctx);
|
||||||
|
|
||||||
@ -783,9 +780,8 @@ _Use_decl_annotations_
|
|||||||
static NDIS_STATUS TunRestart(NDIS_HANDLE MiniportAdapterContext, PNDIS_MINIPORT_RESTART_PARAMETERS MiniportRestartParameters)
|
static NDIS_STATUS TunRestart(NDIS_HANDLE MiniportAdapterContext, PNDIS_MINIPORT_RESTART_PARAMETERS MiniportRestartParameters)
|
||||||
{
|
{
|
||||||
TUN_CTX *ctx = (TUN_CTX *)MiniportAdapterContext;
|
TUN_CTX *ctx = (TUN_CTX *)MiniportAdapterContext;
|
||||||
if (InterlockedCompareExchange((LONG *)&ctx->State, TUN_STATE_RESTARTING, TUN_STATE_PAUSED) != TUN_STATE_PAUSED)
|
|
||||||
return NDIS_STATUS_FAILURE;
|
|
||||||
|
|
||||||
|
//InterlockedExchange((LONG *)&ctx->State, TUN_STATE_RESTARTING);
|
||||||
InterlockedExchange((LONG *)&ctx->State, TUN_STATE_RUNNING);
|
InterlockedExchange((LONG *)&ctx->State, TUN_STATE_RUNNING);
|
||||||
return NDIS_STATUS_SUCCESS;
|
return NDIS_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
@ -1098,10 +1094,8 @@ _Use_decl_annotations_
|
|||||||
static void TunHaltEx(NDIS_HANDLE MiniportAdapterContext, NDIS_HALT_ACTION HaltAction)
|
static void TunHaltEx(NDIS_HANDLE MiniportAdapterContext, NDIS_HALT_ACTION HaltAction)
|
||||||
{
|
{
|
||||||
TUN_CTX *ctx = (TUN_CTX *)MiniportAdapterContext;
|
TUN_CTX *ctx = (TUN_CTX *)MiniportAdapterContext;
|
||||||
if (InterlockedCompareExchange((LONG *)&ctx->State, TUN_STATE_HALTING, TUN_STATE_PAUSED) != TUN_STATE_PAUSED)
|
|
||||||
return;
|
|
||||||
|
|
||||||
ASSERT(!InterlockedGet64(&ctx->ActiveTransactionCount));
|
InterlockedExchange((LONG *)&ctx->State, TUN_STATE_HALTING);
|
||||||
|
|
||||||
/* Cancel pending IRPs to unblock waiting clients. */
|
/* Cancel pending IRPs to unblock waiting clients. */
|
||||||
for (IRP *pending_irp; (pending_irp = IoCsqRemoveNextIrp(&ctx->Device.ReadQueue.Csq, NULL)) != NULL;)
|
for (IRP *pending_irp; (pending_irp = IoCsqRemoveNextIrp(&ctx->Device.ReadQueue.Csq, NULL)) != NULL;)
|
||||||
|
Loading…
Reference in New Issue
Block a user