Author: hyperion
Date: Mon Jul 6 22:19:05 2009
New Revision: 41786
URL:
http://svn.reactos.org/svn/reactos?rev=41786&view=rev
Log:
Reverting incomplete commit r41782 on request of the author
Modified:
trunk/reactos/drivers/network/tcpip/tcpip/main.c
Modified: trunk/reactos/drivers/network/tcpip/tcpip/main.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/network/tcpip/tcpi…
==============================================================================
--- trunk/reactos/drivers/network/tcpip/tcpip/main.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/network/tcpip/tcpip/main.c [iso-8859-1] Mon Jul 6 22:19:05
2009
@@ -883,51 +883,6 @@
NdisFreePacketPool(GlobalPacketPool);
NdisFreeBufferPool(GlobalBufferPool);
return Status;
- }
-
- /* Use direct I/O */
- IPDeviceObject->Flags |= DO_DIRECT_IO;
- RawIPDeviceObject->Flags |= DO_DIRECT_IO;
- UDPDeviceObject->Flags |= DO_DIRECT_IO;
- TCPDeviceObject->Flags |= DO_DIRECT_IO;
-
- /* Initialize the driver object with this driver's entry points */
- DriverObject->MajorFunction[IRP_MJ_CREATE] = TiDispatchOpenClose;
- DriverObject->MajorFunction[IRP_MJ_CLOSE] = TiDispatchOpenClose;
- DriverObject->MajorFunction[IRP_MJ_CLEANUP] = TiDispatchOpenClose;
- DriverObject->MajorFunction[IRP_MJ_INTERNAL_DEVICE_CONTROL] = TiDispatchInternal;
- DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = TiDispatch;
-
- DriverObject->DriverUnload = TiUnload;
-
- /* Initialize our periodic timer and its associated DPC object. When the
- timer expires, the IPTimeout deferred procedure call (DPC) is queued */
- ExInitializeWorkItem( &IpWorkItem, IPTimeout, NULL );
- KeInitializeDpc(&IPTimeoutDpc, IPTimeoutDpcFn, NULL);
- KeInitializeTimer(&IPTimer);
-
- /* Start the periodic timer with an initial and periodic
- relative expiration time of IP_TIMEOUT milliseconds */
- DueTime.QuadPart = -(LONGLONG)IP_TIMEOUT * 10000;
- KeSetTimerEx(&IPTimer, DueTime, IP_TIMEOUT, &IPTimeoutDpc);
-
- /* Open loopback adapter */
- Status = LoopRegisterAdapter(NULL, NULL);
- if (!NT_SUCCESS(Status)) {
- TI_DbgPrint(MIN_TRACE, ("Failed to create loopback adapter. Status
(0x%X).\n", Status));
- TCPShutdown();
- UDPShutdown();
- RawIPShutdown();
- IPShutdown();
- ChewShutdown();
- IoDeleteDevice(IPDeviceObject);
- IoDeleteDevice(RawIPDeviceObject);
- IoDeleteDevice(UDPDeviceObject);
- IoDeleteDevice(TCPDeviceObject);
- exFreePool(EntityList);
- NdisFreePacketPool(GlobalPacketPool);
- NdisFreeBufferPool(GlobalBufferPool);
- return Status;
}
/* Register protocol with NDIS */
@@ -958,6 +913,52 @@
return Status;
}
+ /* Open loopback adapter */
+ Status = LoopRegisterAdapter(NULL, NULL);
+ if (!NT_SUCCESS(Status)) {
+ TI_DbgPrint(MIN_TRACE, ("Failed to create loopback adapter. Status
(0x%X).\n", Status));
+ TCPShutdown();
+ UDPShutdown();
+ RawIPShutdown();
+ IPShutdown();
+ ChewShutdown();
+ IoDeleteDevice(IPDeviceObject);
+ IoDeleteDevice(RawIPDeviceObject);
+ IoDeleteDevice(UDPDeviceObject);
+ IoDeleteDevice(TCPDeviceObject);
+ exFreePool(EntityList);
+ NdisFreePacketPool(GlobalPacketPool);
+ NdisFreeBufferPool(GlobalBufferPool);
+ LANUnregisterProtocol();
+ return Status;
+ }
+
+ /* Use direct I/O */
+ IPDeviceObject->Flags |= DO_DIRECT_IO;
+ RawIPDeviceObject->Flags |= DO_DIRECT_IO;
+ UDPDeviceObject->Flags |= DO_DIRECT_IO;
+ TCPDeviceObject->Flags |= DO_DIRECT_IO;
+
+ /* Initialize the driver object with this driver's entry points */
+ DriverObject->MajorFunction[IRP_MJ_CREATE] = TiDispatchOpenClose;
+ DriverObject->MajorFunction[IRP_MJ_CLOSE] = TiDispatchOpenClose;
+ DriverObject->MajorFunction[IRP_MJ_CLEANUP] = TiDispatchOpenClose;
+ DriverObject->MajorFunction[IRP_MJ_INTERNAL_DEVICE_CONTROL] = TiDispatchInternal;
+ DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = TiDispatch;
+
+ DriverObject->DriverUnload = TiUnload;
+
+ /* Initialize our periodic timer and its associated DPC object. When the
+ timer expires, the IPTimeout deferred procedure call (DPC) is queued */
+ ExInitializeWorkItem( &IpWorkItem, IPTimeout, NULL );
+ KeInitializeDpc(&IPTimeoutDpc, IPTimeoutDpcFn, NULL);
+ KeInitializeTimer(&IPTimer);
+
+ /* Start the periodic timer with an initial and periodic
+ relative expiration time of IP_TIMEOUT milliseconds */
+ DueTime.QuadPart = -(LONGLONG)IP_TIMEOUT * 10000;
+ KeSetTimerEx(&IPTimer, DueTime, IP_TIMEOUT, &IPTimeoutDpc);
+
return STATUS_SUCCESS;
}