mirror of
https://github.com/reactos/reactos.git
synced 2024-07-04 03:34:16 +00:00
- Merge aicom-network-fixes up to r36337
svn path=/trunk/; revision=36338
This commit is contained in:
parent
324b9250cc
commit
42c8a616ec
|
@ -68,17 +68,6 @@ NdisWriteConfiguration(
|
||||||
PVOID Data;
|
PVOID Data;
|
||||||
WCHAR Buff[25];
|
WCHAR Buff[25];
|
||||||
|
|
||||||
if(ParameterType != NdisParameterInteger &&
|
|
||||||
ParameterType != NdisParameterHexInteger &&
|
|
||||||
ParameterType != NdisParameterString &&
|
|
||||||
ParameterType != NdisParameterMultiString &&
|
|
||||||
ParameterType != NdisParameterBinary
|
|
||||||
)
|
|
||||||
{
|
|
||||||
*Status = NDIS_STATUS_NOT_SUPPORTED;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* reset parameter type to standard reg types */
|
/* reset parameter type to standard reg types */
|
||||||
switch(ParameterType)
|
switch(ParameterType)
|
||||||
{
|
{
|
||||||
|
@ -118,7 +107,7 @@ NdisWriteConfiguration(
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
*Status = NDIS_STATUS_FAILURE;
|
*Status = NDIS_STATUS_NOT_SUPPORTED;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -342,6 +331,7 @@ NdisReadConfiguration(
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
NDIS_DbgPrint(MID_TRACE,("unsupported parameter type\n"));
|
NDIS_DbgPrint(MID_TRACE,("unsupported parameter type\n"));
|
||||||
|
*Status = NDIS_STATUS_NOT_SUPPORTED;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -87,6 +87,7 @@ NdisAcquireReadWriteLock(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Lock->Context = PsGetCurrentThread();
|
||||||
LockState->LockState = 3;
|
LockState->LockState = 3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -818,7 +818,10 @@ VOID NTAPI MiniportWorker(IN PVOID WorkItem)
|
||||||
KeLowerIrql(RaiseOldIrql);
|
KeLowerIrql(RaiseOldIrql);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if( NdisStatus != NDIS_STATUS_PENDING ) {
|
|
||||||
|
if( NdisStatus == NDIS_STATUS_RESOURCES )
|
||||||
|
MiniQueueWorkItem(Adapter, WorkItemType, WorkItemContext);
|
||||||
|
else if( NdisStatus != NDIS_STATUS_PENDING ) {
|
||||||
NdisMSendComplete
|
NdisMSendComplete
|
||||||
( Adapter, (PNDIS_PACKET)WorkItemContext, NdisStatus );
|
( Adapter, (PNDIS_PACKET)WorkItemContext, NdisStatus );
|
||||||
Adapter->MiniportBusy = FALSE;
|
Adapter->MiniportBusy = FALSE;
|
||||||
|
@ -1143,7 +1146,6 @@ NdisMRegisterAdapterShutdownHandler(
|
||||||
* ShutdownHandler: Function to call to handle the bugcheck
|
* ShutdownHandler: Function to call to handle the bugcheck
|
||||||
* NOTES:
|
* NOTES:
|
||||||
* - I'm not sure about ShutdownContext
|
* - I'm not sure about ShutdownContext
|
||||||
* - FIXME - memory leak below
|
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
PLOGICAL_ADAPTER Adapter = (PLOGICAL_ADAPTER)MiniportHandle;
|
PLOGICAL_ADAPTER Adapter = (PLOGICAL_ADAPTER)MiniportHandle;
|
||||||
|
@ -1164,9 +1166,10 @@ NdisMRegisterAdapterShutdownHandler(
|
||||||
BugcheckContext->ShutdownHandler = ShutdownHandler;
|
BugcheckContext->ShutdownHandler = ShutdownHandler;
|
||||||
BugcheckContext->DriverContext = ShutdownContext;
|
BugcheckContext->DriverContext = ShutdownContext;
|
||||||
|
|
||||||
/* not sure if this needs to be initialized or not... oh well, it's a leak. */
|
|
||||||
BugcheckContext->CallbackRecord = ExAllocatePool(NonPagedPool, sizeof(KBUGCHECK_CALLBACK_RECORD));
|
BugcheckContext->CallbackRecord = ExAllocatePool(NonPagedPool, sizeof(KBUGCHECK_CALLBACK_RECORD));
|
||||||
|
|
||||||
|
KeInitializeCallbackRecord(BugcheckContext->CallbackRecord);
|
||||||
|
|
||||||
KeRegisterBugCheckCallback(BugcheckContext->CallbackRecord, NdisIBugcheckCallback,
|
KeRegisterBugCheckCallback(BugcheckContext->CallbackRecord, NdisIBugcheckCallback,
|
||||||
BugcheckContext, sizeof(BugcheckContext), (PUCHAR)"Ndis Miniport");
|
BugcheckContext, sizeof(BugcheckContext), (PUCHAR)"Ndis Miniport");
|
||||||
}
|
}
|
||||||
|
|
|
@ -1207,11 +1207,6 @@ NDIS_STATUS LANRegisterAdapter(
|
||||||
/* Convert returned link speed to bps (it is in 100bps increments) */
|
/* Convert returned link speed to bps (it is in 100bps increments) */
|
||||||
IF->Speed = Speed * 100L;
|
IF->Speed = Speed * 100L;
|
||||||
|
|
||||||
/* Add adapter to the adapter list */
|
|
||||||
ExInterlockedInsertTailList(&AdapterListHead,
|
|
||||||
&IF->ListEntry,
|
|
||||||
&AdapterListLock);
|
|
||||||
|
|
||||||
/* Bind adapter to IP layer */
|
/* Bind adapter to IP layer */
|
||||||
if( !BindAdapter(IF, RegistryPath) ) {
|
if( !BindAdapter(IF, RegistryPath) ) {
|
||||||
TI_DbgPrint(DEBUG_DATALINK,("denying adapter %wZ (BindAdapter)\n", AdapterName));
|
TI_DbgPrint(DEBUG_DATALINK,("denying adapter %wZ (BindAdapter)\n", AdapterName));
|
||||||
|
@ -1219,6 +1214,11 @@ NDIS_STATUS LANRegisterAdapter(
|
||||||
return NDIS_STATUS_NOT_ACCEPTED;
|
return NDIS_STATUS_NOT_ACCEPTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Add adapter to the adapter list */
|
||||||
|
ExInterlockedInsertTailList(&AdapterListHead,
|
||||||
|
&IF->ListEntry,
|
||||||
|
&AdapterListLock);
|
||||||
|
|
||||||
TI_DbgPrint(DEBUG_DATALINK, ("Leaving.\n"));
|
TI_DbgPrint(DEBUG_DATALINK, ("Leaving.\n"));
|
||||||
|
|
||||||
return NDIS_STATUS_SUCCESS;
|
return NDIS_STATUS_SUCCESS;
|
||||||
|
|
|
@ -409,6 +409,11 @@ NTSTATUS FileOpenConnection(
|
||||||
|
|
||||||
Status = TCPSocket( Connection, AF_INET, SOCK_STREAM, IPPROTO_TCP );
|
Status = TCPSocket( Connection, AF_INET, SOCK_STREAM, IPPROTO_TCP );
|
||||||
|
|
||||||
|
if( !NT_SUCCESS(Status) ) {
|
||||||
|
TCPFreeConnectionEndpoint( Connection );
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
/* Return connection endpoint file object */
|
/* Return connection endpoint file object */
|
||||||
Request->Handle.ConnectionContext = Connection;
|
Request->Handle.ConnectionContext = Connection;
|
||||||
|
|
||||||
|
|
|
@ -26,6 +26,8 @@ PVOID PoolAllocateBuffer(
|
||||||
|
|
||||||
Buffer = ExAllocatePool(NonPagedPool, Size);
|
Buffer = ExAllocatePool(NonPagedPool, Size);
|
||||||
|
|
||||||
|
RtlZeroMemory(Buffer, Size);
|
||||||
|
|
||||||
TI_DbgPrint(DEBUG_MEMORY, ("Allocated (%i) bytes at (0x%X).\n", Size, Buffer));
|
TI_DbgPrint(DEBUG_MEMORY, ("Allocated (%i) bytes at (0x%X).\n", Size, Buffer));
|
||||||
|
|
||||||
return Buffer;
|
return Buffer;
|
||||||
|
|
|
@ -34,10 +34,7 @@ VOID IPSendComplete
|
||||||
("Called. Context (0x%X) NdisPacket (0x%X) NdisStatus (0x%X)\n",
|
("Called. Context (0x%X) NdisPacket (0x%X) NdisStatus (0x%X)\n",
|
||||||
Context, NdisPacket, NdisStatus));
|
Context, NdisPacket, NdisStatus));
|
||||||
|
|
||||||
/* FIXME: Stop sending fragments and cleanup datagram buffers if
|
if (NT_SUCCESS(NdisStatus) && PrepareNextFragment(IFC)) {
|
||||||
there was an error */
|
|
||||||
|
|
||||||
if (PrepareNextFragment(IFC)) {
|
|
||||||
/* A fragment was prepared for transmission, so send it */
|
/* A fragment was prepared for transmission, so send it */
|
||||||
IPSendFragment(IFC->NdisPacket, IFC->NCE, IFC);
|
IPSendFragment(IFC->NdisPacket, IFC->NCE, IFC);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -117,6 +117,7 @@ VOID TCPAbortListenForSocket( PCONNECTION_ENDPOINT Listener,
|
||||||
if( Bucket->AssociatedEndpoint == Connection ) {
|
if( Bucket->AssociatedEndpoint == Connection ) {
|
||||||
RemoveEntryList( ListEntry->Blink );
|
RemoveEntryList( ListEntry->Blink );
|
||||||
ExFreePool( Bucket );
|
ExFreePool( Bucket );
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -141,10 +142,14 @@ NTSTATUS TCPAccept
|
||||||
|
|
||||||
if( Status == STATUS_PENDING ) {
|
if( Status == STATUS_PENDING ) {
|
||||||
Bucket = ExAllocatePool( NonPagedPool, sizeof(*Bucket) );
|
Bucket = ExAllocatePool( NonPagedPool, sizeof(*Bucket) );
|
||||||
Bucket->AssociatedEndpoint = Connection;
|
|
||||||
Bucket->Request.RequestNotifyObject = Complete;
|
if( Bucket ) {
|
||||||
Bucket->Request.RequestContext = Context;
|
Bucket->AssociatedEndpoint = Connection;
|
||||||
InsertHeadList( &Listener->ListenRequest, &Bucket->Entry );
|
Bucket->Request.RequestNotifyObject = Complete;
|
||||||
|
Bucket->Request.RequestContext = Context;
|
||||||
|
InsertHeadList( &Listener->ListenRequest, &Bucket->Entry );
|
||||||
|
} else
|
||||||
|
Status = STATUS_NO_MEMORY;
|
||||||
}
|
}
|
||||||
|
|
||||||
TcpipRecursiveMutexLeave( &TCPLock );
|
TcpipRecursiveMutexLeave( &TCPLock );
|
||||||
|
|
|
@ -104,8 +104,7 @@ int TCPPacketSend(void *ClientData, OSK_PCHAR data, OSK_UINT len ) {
|
||||||
|
|
||||||
IPSendDatagram( &Packet, NCE, TCPPacketSendComplete, NULL );
|
IPSendDatagram( &Packet, NCE, TCPPacketSendComplete, NULL );
|
||||||
|
|
||||||
if( !NT_SUCCESS(NdisStatus) ) return OSK_EINVAL;
|
return 0;
|
||||||
else return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int TCPSleep( void *ClientData, void *token, int priority, char *msg,
|
int TCPSleep( void *ClientData, void *token, int priority, char *msg,
|
||||||
|
@ -144,7 +143,9 @@ int TCPSleep( void *ClientData, void *token, int priority, char *msg,
|
||||||
TcpipRecursiveMutexEnter( &TCPLock, TRUE );
|
TcpipRecursiveMutexEnter( &TCPLock, TRUE );
|
||||||
|
|
||||||
PoolFreeBuffer( SleepingThread );
|
PoolFreeBuffer( SleepingThread );
|
||||||
}
|
} else
|
||||||
|
return OSK_ENOBUFS;
|
||||||
|
|
||||||
TI_DbgPrint(DEBUG_TCP,("Waiting finished: %x\n", token));
|
TI_DbgPrint(DEBUG_TCP,("Waiting finished: %x\n", token));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue