mirror of
https://github.com/reactos/reactos.git
synced 2025-02-24 17:34:57 +00:00
- Set MiniportBusy to TRUE in MiniDequeueWorkItem instead of MiniQueueWorkItem
- Fail if another miniport request is still in progress svn path=/branches/aicom-network-fixes/; revision=36363
This commit is contained in:
parent
e6386dff73
commit
252f7c71da
1 changed files with 11 additions and 2 deletions
|
@ -634,8 +634,6 @@ MiniQueueWorkItem(
|
||||||
|
|
||||||
KeInsertQueueDpc(&Adapter->NdisMiniportBlock.DeferredDpc, NULL, NULL);
|
KeInsertQueueDpc(&Adapter->NdisMiniportBlock.DeferredDpc, NULL, NULL);
|
||||||
|
|
||||||
Adapter->MiniportBusy = TRUE;
|
|
||||||
|
|
||||||
return NDIS_STATUS_SUCCESS;
|
return NDIS_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -663,6 +661,12 @@ MiniDequeueWorkItem(
|
||||||
|
|
||||||
NDIS_DbgPrint(MAX_TRACE, ("Called.\n"));
|
NDIS_DbgPrint(MAX_TRACE, ("Called.\n"));
|
||||||
|
|
||||||
|
if (Adapter->MiniportBusy) {
|
||||||
|
NDIS_DbgPrint(MID_TRACE, ("Waiting for miniport to become free.\n"));
|
||||||
|
KeInsertQueueDpc(&Adapter->NdisMiniportBlock.DeferredDpc, NULL, NULL);
|
||||||
|
return NDIS_STATUS_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
Item = Adapter->WorkQueueHead;
|
Item = Adapter->WorkQueueHead;
|
||||||
|
|
||||||
if (Item)
|
if (Item)
|
||||||
|
@ -678,6 +682,8 @@ MiniDequeueWorkItem(
|
||||||
|
|
||||||
ExFreePool(Item);
|
ExFreePool(Item);
|
||||||
|
|
||||||
|
Adapter->MiniportBusy = TRUE;
|
||||||
|
|
||||||
return NDIS_STATUS_SUCCESS;
|
return NDIS_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -900,6 +906,9 @@ VOID NTAPI MiniportWorker(IN PVOID WorkItem)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( NdisStatus != NDIS_STATUS_PENDING )
|
||||||
|
Adapter->MiniportBusy = FALSE;
|
||||||
|
|
||||||
ExFreePool(WorkItem);
|
ExFreePool(WorkItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue