[ros-diffs] [cgutman] 36649: - Only call the ProtocolReceivePacket handler if the protocol registered one - Remove some unneeded code - Immediately send the loopback packet if possible

cgutman at svn.reactos.org cgutman at svn.reactos.org
Sat Oct 4 23:55:02 CEST 2008


Author: cgutman
Date: Sat Oct  4 16:55:01 2008
New Revision: 36649

URL: http://svn.reactos.org/svn/reactos?rev=36649&view=rev
Log:
 - Only call the ProtocolReceivePacket handler if the protocol registered one
 - Remove some unneeded code
 - Immediately send the loopback packet if possible

Modified:
    branches/aicom-network-fixes/drivers/network/ndis/ndis/miniport.c
    branches/aicom-network-fixes/drivers/network/ndis/ndis/protocol.c

Modified: branches/aicom-network-fixes/drivers/network/ndis/ndis/miniport.c
URL: http://svn.reactos.org/svn/reactos/branches/aicom-network-fixes/drivers/network/ndis/ndis/miniport.c?rev=36649&r1=36648&r2=36649&view=diff
==============================================================================
--- branches/aicom-network-fixes/drivers/network/ndis/ndis/miniport.c [iso-8859-1] (original)
+++ branches/aicom-network-fixes/drivers/network/ndis/ndis/miniport.c [iso-8859-1] Sat Oct  4 16:55:01 2008
@@ -182,26 +182,6 @@
           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 @@
   {
       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;

Modified: branches/aicom-network-fixes/drivers/network/ndis/ndis/protocol.c
URL: http://svn.reactos.org/svn/reactos/branches/aicom-network-fixes/drivers/network/ndis/ndis/protocol.c?rev=36649&r1=36648&r2=36649&view=diff
==============================================================================
--- branches/aicom-network-fixes/drivers/network/ndis/ndis/protocol.c [iso-8859-1] (original)
+++ branches/aicom-network-fixes/drivers/network/ndis/ndis/protocol.c [iso-8859-1] Sat Oct  4 16:55:01 2008
@@ -215,14 +215,18 @@
   if ((Adapter->NdisMiniportBlock.MacOptions & NDIS_MAC_OPTION_NO_LOOPBACK) &&
       MiniAdapterHasAddress(Adapter, Packet))
     {
-      NDIS_DbgPrint(MID_TRACE, ("Queuing packet.\n"));
-
-      MiniQueueWorkItem(Adapter, NdisWorkItemSendLoopback, (PVOID)Packet);
-      KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, SpinOldIrql);
-      return NDIS_STATUS_PENDING;
+        if(Adapter->MiniportBusy) {
+           MiniQueueWorkItem(Adapter, NdisWorkItemSendLoopback, 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;
         }



More information about the Ros-diffs mailing list