mirror of
https://github.com/reactos/reactos.git
synced 2024-07-12 07:35:10 +00:00
- Send NDIS_STATUS_RESET_START to all bound protocols before we reset
- Send NDIS_STATUS_RESET_END to all bound protocols after we reset - Set MiniportBusy to TRUE if the MiniportReset handler returned NDIS_STATUS_PENDING svn path=/branches/aicom-network-fixes/; revision=36635
This commit is contained in:
parent
e92e21d4cf
commit
b0e7e05ba2
|
@ -298,7 +298,13 @@ MiniResetComplete(
|
|||
IN NDIS_STATUS Status,
|
||||
IN BOOLEAN AddressingReset)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
PLOGICAL_ADAPTER Adapter = MiniportAdapterHandle;
|
||||
KIRQL OldIrql;
|
||||
NDIS_DbgPrint(MIN_TRACE, ("FIXME: MiniResetComplete is partially implemented\n"));
|
||||
NdisMIndicateStatus(Adapter, NDIS_STATUS_RESET_END, NULL, 0);
|
||||
KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &OldIrql);
|
||||
Adapter->MiniportBusy = FALSE;
|
||||
KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, OldIrql);
|
||||
}
|
||||
|
||||
|
||||
|
@ -631,12 +637,24 @@ MiniReset(
|
|||
return NDIS_STATUS_PENDING;
|
||||
}
|
||||
|
||||
NdisMIndicateStatus(Adapter, NDIS_STATUS_RESET_START, NULL, 0);
|
||||
NdisMIndicateStatusComplete(Adapter);
|
||||
|
||||
KeRaiseIrql(DISPATCH_LEVEL, &OldIrql);
|
||||
Status = (*Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.ResetHandler)(
|
||||
Adapter->NdisMiniportBlock.MiniportAdapterContext,
|
||||
AddressingReset);
|
||||
KeLowerIrql(OldIrql);
|
||||
|
||||
if (Status != NDIS_STATUS_PENDING) {
|
||||
NdisMIndicateStatus(Adapter, NDIS_STATUS_RESET_END, NULL, 0);
|
||||
NdisMIndicateStatusComplete(Adapter);
|
||||
} else {
|
||||
KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &OldIrql);
|
||||
Adapter->MiniportBusy = TRUE;
|
||||
KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, OldIrql);
|
||||
}
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
@ -953,6 +971,9 @@ VOID NTAPI MiniportWorker(IN PVOID WorkItem)
|
|||
break;
|
||||
|
||||
case NdisWorkItemResetRequested:
|
||||
NdisMIndicateStatus(Adapter, NDIS_STATUS_RESET_START, NULL, 0);
|
||||
NdisMIndicateStatusComplete(Adapter);
|
||||
|
||||
KeRaiseIrql(DISPATCH_LEVEL, &OldIrql);
|
||||
NdisStatus = (*Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.ResetHandler)(
|
||||
Adapter->NdisMiniportBlock.MiniportAdapterContext,
|
||||
|
|
Loading…
Reference in a new issue