mirror of
https://github.com/reactos/reactos.git
synced 2025-05-02 20:30:33 +00:00
- Merge aicom-network-fixes up to r36009
svn path=/trunk/; revision=36010
This commit is contained in:
parent
76153f2508
commit
d158ab5aa3
10 changed files with 58 additions and 29 deletions
|
@ -1293,8 +1293,7 @@ NdisIPnPStartDevice(
|
|||
* NdisMQueryAdapterResources.
|
||||
*/
|
||||
|
||||
if (Stack->Parameters.StartDevice.AllocatedResources != NULL &&
|
||||
Stack->Parameters.StartDevice.AllocatedResourcesTranslated != NULL)
|
||||
if (Stack->Parameters.StartDevice.AllocatedResources != NULL)
|
||||
{
|
||||
ResourceCount = Stack->Parameters.StartDevice.AllocatedResources->List[0].
|
||||
PartialResourceList.Count;
|
||||
|
@ -1310,24 +1309,31 @@ NdisIPnPStartDevice(
|
|||
return STATUS_INSUFFICIENT_RESOURCES;
|
||||
}
|
||||
|
||||
RtlCopyMemory(Adapter->NdisMiniportBlock.AllocatedResources,
|
||||
Stack->Parameters.StartDevice.AllocatedResources,
|
||||
ResourceListSize);
|
||||
}
|
||||
|
||||
if (Stack->Parameters.StartDevice.AllocatedResourcesTranslated != NULL)
|
||||
{
|
||||
ResourceCount = Stack->Parameters.StartDevice.AllocatedResources->List[0].
|
||||
PartialResourceList.Count;
|
||||
ResourceListSize =
|
||||
FIELD_OFFSET(CM_RESOURCE_LIST, List[0].PartialResourceList.
|
||||
PartialDescriptors[ResourceCount]);
|
||||
|
||||
Adapter->NdisMiniportBlock.AllocatedResourcesTranslated =
|
||||
ExAllocatePool(PagedPool, ResourceListSize);
|
||||
if (Adapter->NdisMiniportBlock.AllocatedResourcesTranslated == NULL)
|
||||
{
|
||||
ExFreePool(Adapter->NdisMiniportBlock.AllocatedResources);
|
||||
Adapter->NdisMiniportBlock.AllocatedResources = NULL;
|
||||
ExInterlockedRemoveEntryList( &Adapter->ListEntry, &AdapterListLock );
|
||||
return STATUS_INSUFFICIENT_RESOURCES;
|
||||
}
|
||||
|
||||
RtlCopyMemory(Adapter->NdisMiniportBlock.AllocatedResources,
|
||||
Stack->Parameters.StartDevice.AllocatedResources,
|
||||
ResourceListSize);
|
||||
|
||||
RtlCopyMemory(Adapter->NdisMiniportBlock.AllocatedResourcesTranslated,
|
||||
Stack->Parameters.StartDevice.AllocatedResourcesTranslated,
|
||||
ResourceListSize);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Store the Bus Type, Bus Number and Slot information. It's used by
|
||||
|
|
|
@ -805,10 +805,11 @@ NdisRegisterProtocol(
|
|||
NtStatus = ZwQueryValueKey(DriverKeyHandle, &ValueName, KeyValuePartialInformation, KeyInformation,
|
||||
sizeof(KEY_VALUE_PARTIAL_INFORMATION) + ResultLength, &ResultLength);
|
||||
|
||||
ZwClose(DriverKeyHandle);
|
||||
|
||||
if(!NT_SUCCESS(NtStatus))
|
||||
{
|
||||
NDIS_DbgPrint(MIN_TRACE, ("Unable to query the Bind value\n"));
|
||||
ZwClose(DriverKeyHandle);
|
||||
ExFreePool(KeyInformation);
|
||||
ExFreePool(Protocol);
|
||||
*Status = NDIS_STATUS_FAILURE;
|
||||
|
@ -893,7 +894,8 @@ NdisRegisterProtocol(
|
|||
*/
|
||||
}
|
||||
|
||||
*Status = NDIS_STATUS_SUCCESS;
|
||||
ExFreePool(KeyInformation);
|
||||
*Status = NDIS_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -322,9 +322,6 @@ NdisOpenFile(
|
|||
0, // PVOID EaBuffer
|
||||
0 ); // ULONG EaLength
|
||||
|
||||
//if ( !NT_SUCCESS(*Status) )
|
||||
// goto cleanup;
|
||||
|
||||
cleanup:
|
||||
if ( FullFileName.Buffer != NULL )
|
||||
{
|
||||
|
|
|
@ -20,9 +20,9 @@ typedef struct _PORT_SET {
|
|||
FAST_MUTEX Mutex;
|
||||
} PORT_SET, *PPORT_SET;
|
||||
|
||||
VOID PortsStartup( PPORT_SET PortSet,
|
||||
UINT StartingPort,
|
||||
UINT PortsToManage );
|
||||
NTSTATUS PortsStartup( PPORT_SET PortSet,
|
||||
UINT StartingPort,
|
||||
UINT PortsToManage );
|
||||
VOID PortsShutdown( PPORT_SET PortSet );
|
||||
VOID DeallocatePort( PPORT_SET PortSet, ULONG Port );
|
||||
BOOLEAN AllocatePort( PPORT_SET PortSet, ULONG Port );
|
||||
|
|
|
@ -319,11 +319,11 @@ NDIS_STATUS PrependPacket( PNDIS_PACKET Packet, PCHAR Data, UINT Length,
|
|||
|
||||
if( Copy ) {
|
||||
NewBuf = ExAllocatePool( NonPagedPool, Length );
|
||||
if( !NewBuf ) return STATUS_NO_MEMORY;
|
||||
if( !NewBuf ) return NDIS_STATUS_RESOURCES;
|
||||
RtlCopyMemory( NewBuf, Data, Length );
|
||||
} else NewBuf = Data;
|
||||
|
||||
NdisAllocateBuffer( &Status, &Buffer, GlobalBufferPool, Data, Length );
|
||||
NdisAllocateBuffer( &Status, &Buffer, GlobalBufferPool, NewBuf, Length );
|
||||
if( Status != NDIS_STATUS_SUCCESS ) return Status;
|
||||
|
||||
NdisChainBufferAtFront( Packet, Buffer );
|
||||
|
@ -351,7 +351,7 @@ NDIS_STATUS AllocatePacketWithBufferX( PNDIS_PACKET *NdisPacket,
|
|||
PCHAR NewData;
|
||||
|
||||
NewData = ExAllocatePool( NonPagedPool, Len );
|
||||
if( !NewData ) return NDIS_STATUS_NOT_ACCEPTED; // XXX
|
||||
if( !NewData ) return NDIS_STATUS_RESOURCES;
|
||||
TrackWithTag(EXALLOC_TAG, NewData, File, Line);
|
||||
|
||||
if( Data ) RtlCopyMemory(NewData, Data, Len);
|
||||
|
|
|
@ -29,7 +29,7 @@ TDI_STATUS InfoTdiQueryGetInterfaceMIB(TDIEntityID *ID,
|
|||
(PIFENTRY)ExAllocatePool( NonPagedPool,
|
||||
sizeof(IFENTRY) + MAX_IFDESCR_LEN );
|
||||
|
||||
if( !OutData ) return TDI_INVALID_REQUEST; /* Out of memory */
|
||||
if( !OutData ) return TDI_NO_RESOURCES; /* Out of memory */
|
||||
|
||||
RtlZeroMemory( OutData, sizeof(IFENTRY) + MAX_IFDESCR_LEN );
|
||||
|
||||
|
|
|
@ -711,8 +711,8 @@ DriverEntry(
|
|||
/* Setup network layer and transport layer entities */
|
||||
KeInitializeSpinLock(&EntityListLock);
|
||||
EntityList = ExAllocatePool(NonPagedPool, sizeof(TDIEntityID) * MAX_TDI_ENTITIES );
|
||||
if (!NT_SUCCESS(Status)) {
|
||||
TI_DbgPrint(MIN_TRACE, ("Insufficient resources.\n"));
|
||||
if (!EntityList) {
|
||||
TI_DbgPrint(MIN_TRACE, ("Insufficient resources.\n"));
|
||||
TiUnload(DriverObject);
|
||||
return STATUS_INSUFFICIENT_RESOURCES;
|
||||
}
|
||||
|
@ -760,9 +760,23 @@ DriverEntry(
|
|||
IPStartup(RegistryPath);
|
||||
|
||||
/* Initialize transport level protocol subsystems */
|
||||
RawIPStartup();
|
||||
UDPStartup();
|
||||
TCPStartup();
|
||||
Status = RawIPStartup();
|
||||
if( !NT_SUCCESS(Status) ) {
|
||||
TiUnload(DriverObject);
|
||||
return Status;
|
||||
}
|
||||
|
||||
Status = UDPStartup();
|
||||
if( !NT_SUCCESS(Status) ) {
|
||||
TiUnload(DriverObject);
|
||||
return Status;
|
||||
}
|
||||
|
||||
Status = TCPStartup();
|
||||
if( !NT_SUCCESS(Status) ) {
|
||||
TiUnload(DriverObject);
|
||||
return Status;
|
||||
}
|
||||
|
||||
/* Initialize the lan worker */
|
||||
LANStartup();
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
#include "precomp.h"
|
||||
|
||||
VOID PortsStartup( PPORT_SET PortSet,
|
||||
NTSTATUS PortsStartup( PPORT_SET PortSet,
|
||||
UINT StartingPort,
|
||||
UINT PortsToManage ) {
|
||||
PortSet->StartingPort = StartingPort;
|
||||
|
@ -19,11 +19,13 @@ VOID PortsStartup( PPORT_SET PortSet,
|
|||
PortSet->PortsToOversee - 1;
|
||||
PortSet->ProtoBitBuffer =
|
||||
PoolAllocateBuffer( (PortSet->PortsToOversee + 7) / 8 );
|
||||
if(!PortSet->ProtoBitBuffer) return STATUS_INSUFFICIENT_RESOURCES;
|
||||
RtlInitializeBitMap( &PortSet->ProtoBitmap,
|
||||
PortSet->ProtoBitBuffer,
|
||||
PortSet->PortsToOversee );
|
||||
RtlClearAllBits( &PortSet->ProtoBitmap );
|
||||
ExInitializeFastMutex( &PortSet->Mutex );
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
VOID PortsShutdown( PPORT_SET PortSet ) {
|
||||
|
|
|
@ -455,7 +455,11 @@ NTSTATUS TCPStartup(VOID)
|
|||
return Status;
|
||||
}
|
||||
|
||||
PortsStartup( &TCPPorts, 1, 0xfffe );
|
||||
Status = PortsStartup( &TCPPorts, 1, 0xfffe );
|
||||
if( !NT_SUCCESS(Status) ) {
|
||||
TCPMemShutdown();
|
||||
return Status;
|
||||
}
|
||||
|
||||
RegisterOskitTCPEventHandlers( &EventHandlers );
|
||||
InitOskitTCP();
|
||||
|
|
|
@ -302,8 +302,12 @@ NTSTATUS UDPStartup(
|
|||
#ifdef __NTDRIVER__
|
||||
RtlZeroMemory(&UDPStats, sizeof(UDP_STATISTICS));
|
||||
#endif
|
||||
|
||||
NTSTATUS Status;
|
||||
|
||||
PortsStartup( &UDPPorts, 1, 0xfffe );
|
||||
Status = PortsStartup( &UDPPorts, 1, 0xfffe );
|
||||
|
||||
if( !NT_SUCCESS(Status) ) return Status;
|
||||
|
||||
/* Register this protocol with IP layer */
|
||||
IPRegisterProtocol(IPPROTO_UDP, UDPReceive);
|
||||
|
|
Loading…
Reference in a new issue