mirror of
https://github.com/reactos/reactos.git
synced 2024-10-04 08:25:53 +00:00
- Only call the ProtocolReceivePacket handler if the protocol registered one
- Remove some unneeded code - Immediately send the loopback packet if possible svn path=/branches/aicom-network-fixes/; revision=36649
This commit is contained in:
parent
38d2e13461
commit
30f8dc548c
|
@ -182,26 +182,6 @@ MiniIndicateData(
|
|||
AdapterBinding = CONTAINING_RECORD(CurrentEntry, ADAPTER_BINDING, AdapterListEntry);
|
||||
NDIS_DbgPrint(DEBUG_MINIPORT, ("AdapterBinding = %x\n", AdapterBinding));
|
||||
|
||||
#ifdef DBG
|
||||
if(!AdapterBinding)
|
||||
{
|
||||
NDIS_DbgPrint(MIN_TRACE, ("AdapterBinding was null\n"));
|
||||
break;
|
||||
}
|
||||
|
||||
if(!AdapterBinding->ProtocolBinding)
|
||||
{
|
||||
NDIS_DbgPrint(MIN_TRACE, ("AdapterBinding->ProtocolBinding was null\n"));
|
||||
break;
|
||||
}
|
||||
|
||||
if(!AdapterBinding->ProtocolBinding->Chars.ReceiveHandler)
|
||||
{
|
||||
NDIS_DbgPrint(MIN_TRACE, ("AdapterBinding->ProtocolBinding->Chars.ReceiveHandler was null\n"));
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
NDIS_DbgPrint
|
||||
(MID_TRACE,
|
||||
("XXX (%x) %x %x %x %x %x %x %x XXX\n",
|
||||
|
@ -261,11 +241,14 @@ MiniIndicateReceivePacket(
|
|||
{
|
||||
AdapterBinding = CONTAINING_RECORD(CurrentEntry, ADAPTER_BINDING, AdapterListEntry);
|
||||
|
||||
for (i = 0; i < NumberOfPackets; i++)
|
||||
if (AdapterBinding->ProtocolBinding->Chars.ReceivePacketHandler)
|
||||
{
|
||||
(*AdapterBinding->ProtocolBinding->Chars.ReceivePacketHandler)(
|
||||
AdapterBinding->NdisOpenBlock.ProtocolBindingContext,
|
||||
PacketArray[i]);
|
||||
for (i = 0; i < NumberOfPackets; i++)
|
||||
{
|
||||
(*AdapterBinding->ProtocolBinding->Chars.ReceivePacketHandler)(
|
||||
AdapterBinding->NdisOpenBlock.ProtocolBindingContext,
|
||||
PacketArray[i]);
|
||||
}
|
||||
}
|
||||
|
||||
CurrentEntry = CurrentEntry->Flink;
|
||||
|
|
|
@ -215,14 +215,18 @@ ProSend(
|
|||
if ((Adapter->NdisMiniportBlock.MacOptions & NDIS_MAC_OPTION_NO_LOOPBACK) &&
|
||||
MiniAdapterHasAddress(Adapter, Packet))
|
||||
{
|
||||
NDIS_DbgPrint(MID_TRACE, ("Queuing packet.\n"));
|
||||
if(Adapter->MiniportBusy) {
|
||||
MiniQueueWorkItem(Adapter, NdisWorkItemSendLoopback, Packet);
|
||||
KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, SpinOldIrql);
|
||||
return NDIS_STATUS_PENDING;
|
||||
}
|
||||
|
||||
MiniQueueWorkItem(Adapter, NdisWorkItemSendLoopback, (PVOID)Packet);
|
||||
KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, SpinOldIrql);
|
||||
return NDIS_STATUS_PENDING;
|
||||
KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, SpinOldIrql);
|
||||
|
||||
return ProIndicatePacket(Adapter, Packet);
|
||||
} else {
|
||||
if(Adapter->MiniportBusy) {
|
||||
MiniQueueWorkItem(Adapter, NdisWorkItemSend, (PVOID)Packet);
|
||||
MiniQueueWorkItem(Adapter, NdisWorkItemSend, Packet);
|
||||
KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, SpinOldIrql);
|
||||
return NDIS_STATUS_PENDING;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue