mirror of
https://github.com/reactos/reactos.git
synced 2024-08-03 10:00:56 +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 NDIS_STATUS Status,
|
||||||
IN BOOLEAN AddressingReset)
|
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;
|
return NDIS_STATUS_PENDING;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NdisMIndicateStatus(Adapter, NDIS_STATUS_RESET_START, NULL, 0);
|
||||||
|
NdisMIndicateStatusComplete(Adapter);
|
||||||
|
|
||||||
KeRaiseIrql(DISPATCH_LEVEL, &OldIrql);
|
KeRaiseIrql(DISPATCH_LEVEL, &OldIrql);
|
||||||
Status = (*Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.ResetHandler)(
|
Status = (*Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.ResetHandler)(
|
||||||
Adapter->NdisMiniportBlock.MiniportAdapterContext,
|
Adapter->NdisMiniportBlock.MiniportAdapterContext,
|
||||||
AddressingReset);
|
AddressingReset);
|
||||||
KeLowerIrql(OldIrql);
|
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;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -953,6 +971,9 @@ VOID NTAPI MiniportWorker(IN PVOID WorkItem)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NdisWorkItemResetRequested:
|
case NdisWorkItemResetRequested:
|
||||||
|
NdisMIndicateStatus(Adapter, NDIS_STATUS_RESET_START, NULL, 0);
|
||||||
|
NdisMIndicateStatusComplete(Adapter);
|
||||||
|
|
||||||
KeRaiseIrql(DISPATCH_LEVEL, &OldIrql);
|
KeRaiseIrql(DISPATCH_LEVEL, &OldIrql);
|
||||||
NdisStatus = (*Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.ResetHandler)(
|
NdisStatus = (*Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.ResetHandler)(
|
||||||
Adapter->NdisMiniportBlock.MiniportAdapterContext,
|
Adapter->NdisMiniportBlock.MiniportAdapterContext,
|
||||||
|
|
Loading…
Reference in a new issue