mirror of
https://github.com/reactos/reactos.git
synced 2025-08-03 21:36:11 +00:00
- Check for miniport hangs at the appropriate time
- Call MiniReset if required svn path=/branches/aicom-network-fixes/; revision=36441
This commit is contained in:
parent
be3ff9cec9
commit
0cabe4ffdb
1 changed files with 27 additions and 0 deletions
|
@ -634,6 +634,27 @@ MiniReset(
|
|||
return Status;
|
||||
}
|
||||
|
||||
VOID STDCALL
|
||||
HangTimer( PVOID Context )
|
||||
{
|
||||
PLOGICAL_ADAPTER Adapter = Context;
|
||||
BOOLEAN AddressingReset;
|
||||
|
||||
while (Adapter->NdisMiniportBlock.PnPDeviceState == NdisPnPDeviceStarted)
|
||||
{
|
||||
AddressingReset = FALSE;
|
||||
|
||||
NdisMSleep(Adapter->NdisMiniportBlock.CheckForHangSeconds * 1000000);
|
||||
|
||||
if (MiniCheckForHang(Adapter))
|
||||
MiniReset(Adapter, &AddressingReset);
|
||||
|
||||
/* FIXME: We should call MiniportSetInformation if AddressingReset is TRUE */
|
||||
}
|
||||
|
||||
PsTerminateSystemThread(STATUS_SUCCESS);
|
||||
}
|
||||
|
||||
|
||||
NDIS_STATUS
|
||||
FASTCALL
|
||||
|
@ -1421,6 +1442,8 @@ NdisIPnPStartDevice(
|
|||
PNDIS_CONFIGURATION_PARAMETER ConfigParam;
|
||||
NDIS_HANDLE ConfigHandle;
|
||||
ULONG Size;
|
||||
HANDLE HangTimerHandle;
|
||||
|
||||
/* FIXME - KIRQL OldIrql; */
|
||||
|
||||
/*
|
||||
|
@ -1640,6 +1663,10 @@ NdisIPnPStartDevice(
|
|||
Adapter->NdisMiniportBlock.OldPnPDeviceState = Adapter->NdisMiniportBlock.PnPDeviceState;
|
||||
Adapter->NdisMiniportBlock.PnPDeviceState = NdisPnPDeviceStarted;
|
||||
|
||||
PsCreateSystemThread(&HangTimerHandle, THREAD_ALL_ACCESS, 0, 0, 0,
|
||||
HangTimer, Adapter);
|
||||
ZwClose(HangTimerHandle);
|
||||
|
||||
/* Put adapter in adapter list for this miniport */
|
||||
ExInterlockedInsertTailList(&Adapter->NdisMiniportBlock.DriverHandle->DeviceList, &Adapter->MiniportListEntry, &Adapter->NdisMiniportBlock.DriverHandle->Lock);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue