reactos/drivers/net/ndis/ndis
diff -u -r1.47 -r1.48
--- miniport.c 13 Dec 2004 17:16:36 -0000 1.47
+++ miniport.c 18 Dec 2004 19:32:40 -0000 1.48
@@ -18,6 +18,14 @@
#include <buffer.h>
#endif /* DBG */
+#undef NdisMSendComplete
+VOID
+EXPORT
+NdisMSendComplete(
+ IN NDIS_HANDLE MiniportAdapterHandle,
+ IN PNDIS_PACKET Packet,
+ IN NDIS_STATUS Status);
+
/* Root of the scm database */
#define SERVICES_ROOT L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\"
@@ -819,6 +827,8 @@
*/
(*Adapter->Miniport->Chars.SendPacketsHandler)(
Adapter->NdisMiniportBlock.MiniportAdapterContext, (PPNDIS_PACKET)&WorkItemContext, 1);
+ NdisStatus =
+ NDIS_GET_PACKET_STATUS((PNDIS_PACKET)WorkItemContext);
NDIS_DbgPrint(MAX_TRACE, ("back from miniport's SendPackets handler\n"));
}
@@ -831,7 +841,9 @@
NDIS_DbgPrint(MAX_TRACE, ("back from miniport's Send handler\n"));
}
-
+ NdisMSendComplete
+ ( Adapter, (PNDIS_PACKET)WorkItemContext, NdisStatus );
+ Adapter->MiniportBusy = FALSE;
break;
case NdisWorkItemSendLoopback:
@@ -1831,8 +1843,6 @@
MiniResetComplete(MiniportAdapterHandle, Status, AddressingReset);
}
-#undef NdisMSendComplete
-
/*
* @implemented
reactos/drivers/net/ndis/ndis
diff -u -r1.24 -r1.25
--- protocol.c 13 Dec 2004 20:09:26 -0000 1.24
+++ protocol.c 18 Dec 2004 19:32:40 -0000 1.25
@@ -13,6 +13,13 @@
#include "ndissys.h"
#include <buffer.h>
+VOID
+EXPORT
+NdisMSendComplete(
+ IN NDIS_HANDLE MiniportAdapterHandle,
+ IN PNDIS_PACKET Packet,
+ IN NDIS_STATUS Status);
+
#define SERVICES_KEY L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\"
#define LINKAGE_KEY L"\\Linkage"
#define PARAMETERS_KEY L"\\Parameters\\"
@@ -359,11 +366,14 @@
NDIS_DbgPrint(MAX_TRACE, ("Calling miniport's Send handler\n"));
NdisStatus = (*Adapter->Miniport->Chars.SendHandler)(Adapter->NdisMiniportBlock.MiniportAdapterContext, Packet, 0);
NDIS_DbgPrint(MAX_TRACE, ("back from miniport's send handler\n"));
-
+ if( NdisStatus != NDIS_STATUS_PENDING ) {
+ NdisMSendComplete( Adapter, Packet, NdisStatus );
+ Adapter->MiniportBusy = FALSE;
+ }
KeLowerIrql(RaiseOldIrql);
}
}
-
+
/* XXX why the hell do we do this? */
NDIS_DbgPrint(MAX_TRACE, ("acquiring miniport block lock\n"));
KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &SpinOldIrql);
@@ -736,7 +746,7 @@
UNICODE_STRING RegistryPath;
WCHAR *RegistryPathStr;
- RegistryPathStr = ExAllocatePool(PagedPool, sizeof(SERVICES_KEY) + ProtocolCharacteristics->Name.Length + sizeof(LINKAGE_KEY));
+ RegistryPathStr = ExAllocatePoolWithTag(PagedPool, sizeof(SERVICES_KEY) + ProtocolCharacteristics->Name.Length + sizeof(LINKAGE_KEY), NDIS_TAG + __LINE__);
if(!RegistryPathStr)
{
NDIS_DbgPrint(MIN_TRACE, ("Insufficient resources.\n"));
@@ -785,7 +795,7 @@
return;
}
- KeyInformation = ExAllocatePool(PagedPool, sizeof(KEY_VALUE_PARTIAL_INFORMATION) + ResultLength);
+ KeyInformation = ExAllocatePoolWithTag(PagedPool, sizeof(KEY_VALUE_PARTIAL_INFORMATION) + ResultLength, NDIS_TAG + __LINE__);
if(!KeyInformation)
{
NDIS_DbgPrint(MIN_TRACE, ("Insufficient resources.\n"));
@@ -856,7 +866,7 @@
NDIS_DbgPrint(MAX_TRACE, ("Calling protocol's BindAdapter handler with DeviceName %wZ and RegistryPath %wZ\n",
&DeviceName, &RegistryPath));
-
+
/* XXX SD must do something with bind context */
*NdisProtocolHandle = Protocol;