mirror of
https://github.com/reactos/reactos.git
synced 2025-08-03 15:36:04 +00:00
- Queue a work item in MiniReset if the adapter is currently busy
- Handle NdisWorkItemResetRequested in MiniportWorker - Remove a fixme svn path=/branches/aicom-network-fixes/; revision=36551
This commit is contained in:
parent
337a43d553
commit
9826b2ad04
1 changed files with 15 additions and 4 deletions
|
@ -619,14 +619,18 @@ MiniReset(
|
||||||
* Status of the operation
|
* Status of the operation
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
NDIS_STATUS Status = NDIS_STATUS_FAILURE;
|
NDIS_STATUS Status;
|
||||||
KIRQL OldIrql;
|
KIRQL OldIrql;
|
||||||
|
|
||||||
/* FIXME: What should we return if there isn't a reset handler? */
|
if (Adapter->MiniportBusy) {
|
||||||
|
KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &OldIrql);
|
||||||
|
MiniQueueWorkItem(Adapter, NdisWorkItemResetRequested, NULL);
|
||||||
|
KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, OldIrql);
|
||||||
|
return NDIS_STATUS_PENDING;
|
||||||
|
}
|
||||||
|
|
||||||
KeRaiseIrql(DISPATCH_LEVEL, &OldIrql);
|
KeRaiseIrql(DISPATCH_LEVEL, &OldIrql);
|
||||||
if (Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.ResetHandler)
|
Status = (*Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.ResetHandler)(
|
||||||
Status = (*Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.ResetHandler)(
|
|
||||||
Adapter->NdisMiniportBlock.MiniportAdapterContext,
|
Adapter->NdisMiniportBlock.MiniportAdapterContext,
|
||||||
AddressingReset);
|
AddressingReset);
|
||||||
KeLowerIrql(OldIrql);
|
KeLowerIrql(OldIrql);
|
||||||
|
@ -841,6 +845,7 @@ VOID NTAPI MiniportWorker(IN PVOID WorkItem)
|
||||||
NDIS_STATUS NdisStatus;
|
NDIS_STATUS NdisStatus;
|
||||||
PVOID WorkItemContext;
|
PVOID WorkItemContext;
|
||||||
NDIS_WORK_ITEM_TYPE WorkItemType;
|
NDIS_WORK_ITEM_TYPE WorkItemType;
|
||||||
|
BOOLEAN AddressingReset;
|
||||||
|
|
||||||
KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &OldIrql);
|
KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &OldIrql);
|
||||||
|
|
||||||
|
@ -938,6 +943,12 @@ VOID NTAPI MiniportWorker(IN PVOID WorkItem)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NdisWorkItemResetRequested:
|
case NdisWorkItemResetRequested:
|
||||||
|
NdisStatus = MiniReset(Adapter, &AddressingReset);
|
||||||
|
|
||||||
|
if (NdisStatus == NDIS_STATUS_PENDING)
|
||||||
|
break;
|
||||||
|
|
||||||
|
MiniResetComplete(Adapter, NdisStatus, AddressingReset);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NdisWorkItemResetInProgress:
|
case NdisWorkItemResetInProgress:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue