mirror of
https://github.com/reactos/reactos.git
synced 2025-08-04 01:35:43 +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;
|
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
|
NDIS_STATUS
|
||||||
FASTCALL
|
FASTCALL
|
||||||
|
@ -1421,6 +1442,8 @@ NdisIPnPStartDevice(
|
||||||
PNDIS_CONFIGURATION_PARAMETER ConfigParam;
|
PNDIS_CONFIGURATION_PARAMETER ConfigParam;
|
||||||
NDIS_HANDLE ConfigHandle;
|
NDIS_HANDLE ConfigHandle;
|
||||||
ULONG Size;
|
ULONG Size;
|
||||||
|
HANDLE HangTimerHandle;
|
||||||
|
|
||||||
/* FIXME - KIRQL OldIrql; */
|
/* FIXME - KIRQL OldIrql; */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1640,6 +1663,10 @@ NdisIPnPStartDevice(
|
||||||
Adapter->NdisMiniportBlock.OldPnPDeviceState = Adapter->NdisMiniportBlock.PnPDeviceState;
|
Adapter->NdisMiniportBlock.OldPnPDeviceState = Adapter->NdisMiniportBlock.PnPDeviceState;
|
||||||
Adapter->NdisMiniportBlock.PnPDeviceState = NdisPnPDeviceStarted;
|
Adapter->NdisMiniportBlock.PnPDeviceState = NdisPnPDeviceStarted;
|
||||||
|
|
||||||
|
PsCreateSystemThread(&HangTimerHandle, THREAD_ALL_ACCESS, 0, 0, 0,
|
||||||
|
HangTimer, Adapter);
|
||||||
|
ZwClose(HangTimerHandle);
|
||||||
|
|
||||||
/* Put adapter in adapter list for this miniport */
|
/* Put adapter in adapter list for this miniport */
|
||||||
ExInterlockedInsertTailList(&Adapter->NdisMiniportBlock.DriverHandle->DeviceList, &Adapter->MiniportListEntry, &Adapter->NdisMiniportBlock.DriverHandle->Lock);
|
ExInterlockedInsertTailList(&Adapter->NdisMiniportBlock.DriverHandle->DeviceList, &Adapter->MiniportListEntry, &Adapter->NdisMiniportBlock.DriverHandle->Lock);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue