Minor fix to get ROS pinging reliably over ne2000 as tested on hardware and bochs.
authorRobert Dickenson <robd@reactos.org>
Tue, 24 Sep 2002 14:34:41 +0000 (14:34 +0000)
committerRobert Dickenson <robd@reactos.org>
Tue, 24 Sep 2002 14:34:41 +0000 (14:34 +0000)
svn path=/trunk/; revision=3542

reactos/drivers/net/dd/ne2000/include/ne2000.h
reactos/drivers/net/dd/ne2000/ne2000/8390.c
reactos/drivers/net/dd/ne2000/ne2000/main.c
reactos/drivers/net/ndis/ndis/miniport.c

index b630afe..0da7d50 100644 (file)
@@ -54,6 +54,7 @@
 
 /* Default number of transmit buffers */
 #define DRIVER_DEFAULT_TX_BUFFER_COUNT 12
 
 /* Default number of transmit buffers */
 #define DRIVER_DEFAULT_TX_BUFFER_COUNT 12
+#define BUFFERS_PER_TX_BUF 1
 
 /* Interrupt Mask Register value */
 #define DRIVER_INTERRUPT_MASK   IMR_ALLE - IMR_RDCE
 
 /* Interrupt Mask Register value */
 #define DRIVER_INTERRUPT_MASK   IMR_ALLE - IMR_RDCE
index 59a6999..2c285d2 100644 (file)
@@ -502,10 +502,22 @@ VOID NICStartTransmit(
  */
 {
     UINT Length;
  */
 {
     UINT Length;
+       UCHAR FrameStart;
+    UCHAR Tmp;
+
+    NDIS_DbgPrint(MAX_TRACE, ("Called.\n"));
+
+       //FrameStart = Adapter->TXStart + Adapter->TXCurrent * DRIVER_BLOCK_SIZE;
+       //FrameStart = Adapter->TXStart;
+       FrameStart = (UCHAR)(Adapter->TXStart + (UCHAR)(Adapter->TXCurrent * BUFFERS_PER_TX_BUF));
 
     /* Set start of frame */
 
     /* Set start of frame */
-    NdisRawWritePortUchar(Adapter->IOBase + PG0_TPSR,
-        Adapter->TXStart + Adapter->TXCurrent * DRIVER_BLOCK_SIZE);
+    NdisRawReadPortUchar(Adapter->IOBase + PG0_TPSR, &Tmp);
+//    NdisRawWritePortUchar(Adapter->IOBase + PG0_TPSR,
+//        Adapter->TXStart + Adapter->TXCurrent * DRIVER_BLOCK_SIZE);
+
+    NdisRawWritePortUchar(Adapter->IOBase + PG0_TPSR, FrameStart);
+    //NDIS_DbgPrint(MID_TRACE, ("Setting start of frame to (%d).\n", FrameStart));
 
     /* Set length of frame */
     Length = Adapter->TXSize[Adapter->TXCurrent];
 
     /* Set length of frame */
     Length = Adapter->TXSize[Adapter->TXCurrent];
@@ -515,8 +527,10 @@ VOID NICStartTransmit(
     /* Start transmitting */
     NdisRawWritePortUchar(Adapter->IOBase + PG0_CR, CR_STA | CR_TXP | CR_RD2);
 
     /* Start transmitting */
     NdisRawWritePortUchar(Adapter->IOBase + PG0_CR, CR_STA | CR_TXP | CR_RD2);
 
-    NDIS_DbgPrint(MAX_TRACE, ("Transmitting. Buffer (%d)  Size (%d).\n",
+    NDIS_DbgPrint(MID_TRACE, ("Transmitting. FrameStart (%d)  TXCurrent (%d)  TXStart (%d)  Length (%d).\n\n", 
+               FrameStart,
         Adapter->TXCurrent,
         Adapter->TXCurrent,
+               Adapter->TXStart,
         Length));
 
 }
         Length));
 
 }
@@ -698,7 +712,6 @@ VOID NICWriteDataAlign(
 
 
     /* Now output some data */
 
 
     /* Now output some data */
-
     Count = Length;
 
     /* Initialize RSAR0 and RSAR1 - Remote Start Address Registers */
     Count = Length;
 
     /* Initialize RSAR0 and RSAR1 - Remote Start Address Registers */
@@ -853,7 +866,7 @@ VOID NICIndicatePacket(
                 Adapter->PacketOffset + sizeof(PACKET_HEADER),
                 IndicateLength + DRIVER_HEADER_SIZE);
 
                 Adapter->PacketOffset + sizeof(PACKET_HEADER),
                 IndicateLength + DRIVER_HEADER_SIZE);
 
-    NDIS_DbgPrint(MAX_TRACE, ("Indicating (%d) bytes.\n", IndicateLength));
+    NDIS_DbgPrint(MID_TRACE, ("Indicating (%d) bytes.\n", IndicateLength));
 
 #if 0
     NDIS_DbgPrint(MAX_TRACE, ("FRAME:\n"));
 
 #if 0
     NDIS_DbgPrint(MAX_TRACE, ("FRAME:\n"));
@@ -965,7 +978,7 @@ VOID NICWritePacket(
                     &SrcBuffer,
                     &Adapter->TXSize[Adapter->TXNext]);
 
                     &SrcBuffer,
                     &Adapter->TXSize[Adapter->TXNext]);
 
-    NDIS_DbgPrint(MAX_TRACE, ("Packet Size (%d) is now (%d).\n",
+    NDIS_DbgPrint(MID_TRACE, ("Packet (%d) is now size (%d).\n",
         Adapter->TXNext,
         Adapter->TXSize[Adapter->TXNext]));
 
         Adapter->TXNext,
         Adapter->TXSize[Adapter->TXNext]));
 
@@ -1109,7 +1122,7 @@ VOID HandleReceive(
 
     if (Adapter->BufferOverflow) {
 
 
     if (Adapter->BufferOverflow) {
 
-        NDIS_DbgPrint(MAX_TRACE, ("Receive ring overflow.\n"));
+        NDIS_DbgPrint(MID_TRACE, ("Receive ring overflow.\n"));
 
         /* Select page 0 and stop the NIC */
         NdisRawWritePortUchar(Adapter->IOBase + PG0_CR, CR_STP | CR_RD2 | CR_PAGE0);
 
         /* Select page 0 and stop the NIC */
         NdisRawWritePortUchar(Adapter->IOBase + PG0_CR, CR_STP | CR_RD2 | CR_PAGE0);
@@ -1149,7 +1162,7 @@ VOID HandleReceive(
     }
 
     if (Adapter->ReceiveError) {
     }
 
     if (Adapter->ReceiveError) {
-        NDIS_DbgPrint(MAX_TRACE, ("Receive error.\n"));
+        NDIS_DbgPrint(MID_TRACE, ("Receive error.\n"));
 
         /* Skip this packet */
         Adapter->NextPacket = Adapter->CurrentPage;
 
         /* Skip this packet */
         Adapter->NextPacket = Adapter->CurrentPage;
@@ -1161,15 +1174,15 @@ VOID HandleReceive(
     for (;;) {
         NICGetCurrentPage(Adapter);
 
     for (;;) {
         NICGetCurrentPage(Adapter);
 
-        NDIS_DbgPrint(MAX_TRACE, ("Current page (0x%X)  NextPacket (0x%X).\n",
+        NDIS_DbgPrint(MID_TRACE, ("Current page (0x%X)  NextPacket (0x%X).\n",
             Adapter->CurrentPage,
             Adapter->NextPacket));
 
         if (Adapter->CurrentPage == Adapter->NextPacket) {
             Adapter->CurrentPage,
             Adapter->NextPacket));
 
         if (Adapter->CurrentPage == Adapter->NextPacket) {
-            NDIS_DbgPrint(MAX_TRACE, ("No more packets.\n"));
+            NDIS_DbgPrint(MID_TRACE, ("No more packets.\n"));
             break;
         } else {
             break;
         } else {
-            NDIS_DbgPrint(MAX_TRACE, ("Got a packet in the receive ring.\n"));
+            NDIS_DbgPrint(MID_TRACE, ("Got a packet in the receive ring.\n"));
 
             /* Read packet from receive buffer ring */
             NICReadPacket(Adapter);
 
             /* Read packet from receive buffer ring */
             NICReadPacket(Adapter);
@@ -1185,7 +1198,7 @@ VOID HandleReceive(
     }
 
     if ((Adapter->TransmitPending) && (Adapter->TXCurrent != -1)) {
     }
 
     if ((Adapter->TransmitPending) && (Adapter->TXCurrent != -1)) {
-        NDIS_DbgPrint(MAX_TRACE, ("Retransmitting current packet at (%d).\n", Adapter->TXCurrent));
+        NDIS_DbgPrint(MID_TRACE, ("Retransmitting current packet at (%d).\n", Adapter->TXCurrent));
         /* Retransmit packet */
         NICStartTransmit(Adapter);
         Adapter->TransmitPending = FALSE;
         /* Retransmit packet */
         NICStartTransmit(Adapter);
         Adapter->TransmitPending = FALSE;
@@ -1207,6 +1220,10 @@ VOID HandleTransmit(
     UINT Length;
     UINT BufferCount;
 
     UINT Length;
     UINT BufferCount;
 
+//    PIP_PACKET pIPPacket;
+//    pIPPacket = (PIP_PACKET)
+//    DisplayIPPacket(pIPPacket);
+
     if (Adapter->TransmitError) {
         /* FIXME: Retransmit now or let upper layer protocols handle retransmit? */
         Adapter->TransmitError = FALSE;
     if (Adapter->TransmitError) {
         /* FIXME: Retransmit now or let upper layer protocols handle retransmit? */
         Adapter->TransmitError = FALSE;
@@ -1216,7 +1233,7 @@ VOID HandleTransmit(
     Length      = Adapter->TXSize[Adapter->TXCurrent];
     BufferCount = (Length + DRIVER_BLOCK_SIZE - 1) / DRIVER_BLOCK_SIZE;
 
     Length      = Adapter->TXSize[Adapter->TXCurrent];
     BufferCount = (Length + DRIVER_BLOCK_SIZE - 1) / DRIVER_BLOCK_SIZE;
 
-    NDIS_DbgPrint(MAX_TRACE, ("Freeing (%d) buffers at (%d).\n",
+    NDIS_DbgPrint(MID_TRACE, ("Freeing (%d) buffers at (%d).\n",
         BufferCount,
         Adapter->TXCurrent));
 
         BufferCount,
         Adapter->TXCurrent));
 
@@ -1225,7 +1242,7 @@ VOID HandleTransmit(
     Adapter->TXCurrent = (Adapter->TXCurrent + BufferCount) % Adapter->TXCount;
 
     if (Adapter->TXSize[Adapter->TXCurrent] == 0) {
     Adapter->TXCurrent = (Adapter->TXCurrent + BufferCount) % Adapter->TXCount;
 
     if (Adapter->TXSize[Adapter->TXCurrent] == 0) {
-        NDIS_DbgPrint(MAX_TRACE, ("No more packets in transmit buffer.\n"));
+        NDIS_DbgPrint(MID_TRACE, ("No more packets in transmit buffer.\n"));
 
         Adapter->TXCurrent = -1;
     }
 
         Adapter->TXCurrent = -1;
     }
@@ -1256,7 +1273,7 @@ VOID MiniportHandleInterrupt(
     ISRMask = Adapter->InterruptMask;
     NdisRawReadPortUchar(Adapter->IOBase + PG0_ISR, &ISRValue);
 
     ISRMask = Adapter->InterruptMask;
     NdisRawReadPortUchar(Adapter->IOBase + PG0_ISR, &ISRValue);
 
-    NDIS_DbgPrint(MAX_TRACE, ("ISRValue (0x%X).\n", ISRValue));
+    NDIS_DbgPrint(MID_TRACE, ("ISRValue (0x%X).\n", ISRValue));
 
     Adapter->InterruptStatus |= (ISRValue & ISRMask);
 
 
     Adapter->InterruptStatus |= (ISRValue & ISRMask);
 
@@ -1267,7 +1284,7 @@ VOID MiniportHandleInterrupt(
     Mask = 0x01;
     while (Adapter->InterruptStatus != 0x00) {
 
     Mask = 0x01;
     while (Adapter->InterruptStatus != 0x00) {
 
-        NDIS_DbgPrint(MAX_TRACE, ("Adapter->InterruptStatus (0x%X)  Mask (0x%X).\n",
+        NDIS_DbgPrint(MID_TRACE, ("Adapter->InterruptStatus (0x%X)  Mask (0x%X).\n",
             Adapter->InterruptStatus, Mask));
 
         /* Find next interrupt type */
             Adapter->InterruptStatus, Mask));
 
         /* Find next interrupt type */
@@ -1276,7 +1293,7 @@ VOID MiniportHandleInterrupt(
 
         switch (Adapter->InterruptStatus & Mask) {
         case ISR_OVW:   
 
         switch (Adapter->InterruptStatus & Mask) {
         case ISR_OVW:   
-            NDIS_DbgPrint(MAX_TRACE, ("Overflow interrupt.\n"));
+            NDIS_DbgPrint(MID_TRACE, ("Overflow interrupt.\n"));
             /* Overflow. Handled almost the same way as a receive interrupt */
             Adapter->BufferOverflow = TRUE;
 
             /* Overflow. Handled almost the same way as a receive interrupt */
             Adapter->BufferOverflow = TRUE;
 
@@ -1286,13 +1303,13 @@ VOID MiniportHandleInterrupt(
             break;
 
         case ISR_RXE:
             break;
 
         case ISR_RXE:
-            NDIS_DbgPrint(MAX_TRACE, ("Receive error interrupt.\n"));
+            NDIS_DbgPrint(MID_TRACE, ("Receive error interrupt.\n"));
             NICUpdateCounters(Adapter);
 
             Adapter->ReceiveError = TRUE;
             
         case ISR_PRX:
             NICUpdateCounters(Adapter);
 
             Adapter->ReceiveError = TRUE;
             
         case ISR_PRX:
-            NDIS_DbgPrint(MAX_TRACE, ("Receive interrupt.\n"));
+            NDIS_DbgPrint(MID_TRACE, ("Receive interrupt.\n"));
 
             HandleReceive(Adapter);
 
 
             HandleReceive(Adapter);
 
@@ -1300,13 +1317,13 @@ VOID MiniportHandleInterrupt(
             break;  
 
         case ISR_TXE:
             break;  
 
         case ISR_TXE:
-            NDIS_DbgPrint(MAX_TRACE, ("Transmit error interrupt.\n"));
+            NDIS_DbgPrint(MID_TRACE, ("Transmit error interrupt.\n"));
             NICUpdateCounters(Adapter);
 
             Adapter->TransmitError = TRUE;
 
         case ISR_PTX:
             NICUpdateCounters(Adapter);
 
             Adapter->TransmitError = TRUE;
 
         case ISR_PTX:
-            NDIS_DbgPrint(MAX_TRACE, ("Transmit interrupt.\n"));
+            NDIS_DbgPrint(MID_TRACE, ("Transmit interrupt.\n"));
 
             HandleTransmit(Adapter);
 
 
             HandleTransmit(Adapter);
 
@@ -1314,7 +1331,7 @@ VOID MiniportHandleInterrupt(
             break;
 
         case ISR_CNT:
             break;
 
         case ISR_CNT:
-            NDIS_DbgPrint(MAX_TRACE, ("Counter interrupt.\n"));
+            NDIS_DbgPrint(MID_TRACE, ("Counter interrupt.\n"));
             /* Counter overflow. Read counters from the NIC */
             NICUpdateCounters(Adapter);
 
             /* Counter overflow. Read counters from the NIC */
             NICUpdateCounters(Adapter);
 
@@ -1322,7 +1339,7 @@ VOID MiniportHandleInterrupt(
             break;
 
         default:
             break;
 
         default:
-            NDIS_DbgPrint(MAX_TRACE, ("Unknown interrupt. Adapter->InterruptStatus (0x%X).\n", Adapter->InterruptStatus));
+            NDIS_DbgPrint(MID_TRACE, ("Unknown interrupt. Adapter->InterruptStatus (0x%X).\n", Adapter->InterruptStatus));
             Adapter->InterruptStatus &= ~Mask;
             break;
         }
             Adapter->InterruptStatus &= ~Mask;
             break;
         }
@@ -1333,7 +1350,7 @@ VOID MiniportHandleInterrupt(
 
         NdisRawReadPortUchar(Adapter->IOBase + PG0_ISR, &ISRValue);
 
 
         NdisRawReadPortUchar(Adapter->IOBase + PG0_ISR, &ISRValue);
 
-        NDIS_DbgPrint(MAX_TRACE, ("ISRValue (0x%X).\n", ISRValue));
+        NDIS_DbgPrint(MID_TRACE, ("ISRValue (0x%X).\n", ISRValue));
 
         Adapter->InterruptStatus |= (ISRValue & ISRMask);
 
 
         Adapter->InterruptStatus |= (ISRValue & ISRMask);
 
index b4178a2..be3acee 100644 (file)
@@ -13,6 +13,7 @@
 #ifdef DBG
 
 /* See debug.h for debug/trace constants */
 #ifdef DBG
 
 /* See debug.h for debug/trace constants */
+//DWORD DebugTraceLevel = MID_TRACE;
 ULONG DebugTraceLevel = MIN_TRACE;
 
 #endif /* DBG */
 ULONG DebugTraceLevel = MIN_TRACE;
 
 #endif /* DBG */
@@ -130,7 +131,9 @@ VOID MiniportHalt(
             Adapter->IOBase);
 
     /* Remove adapter from global adapter list */
             Adapter->IOBase);
 
     /* Remove adapter from global adapter list */
-    RemoveEntryList(&Adapter->ListEntry);
+    if ((&Adapter->ListEntry)->Blink != NULL) {
+        RemoveEntryList(&Adapter->ListEntry);
+       }
 
     /* Free adapter context area */
     NdisFreeMemory(Adapter, sizeof(NIC_ADAPTER), 0);
 
     /* Free adapter context area */
     NdisFreeMemory(Adapter, sizeof(NIC_ADAPTER), 0);
@@ -225,9 +228,9 @@ NDIS_STATUS MiniportInitialize(
         return Status;
     }
 
         return Status;
     }
 
-    NDIS_DbgPrint(MAX_TRACE, ("BOARDDATA:\n"));
+    NDIS_DbgPrint(MID_TRACE, ("BOARDDATA:\n"));
     for (i = 0; i < 4; i++) {
     for (i = 0; i < 4; i++) {
-        NDIS_DbgPrint(MAX_TRACE, ("%02X %02X %02X %02X\n",
+        NDIS_DbgPrint(MID_TRACE, ("%02X %02X %02X %02X\n",
             Adapter->SAPROM[i*4+0],
             Adapter->SAPROM[i*4+1],
             Adapter->SAPROM[i*4+2],
             Adapter->SAPROM[i*4+0],
             Adapter->SAPROM[i*4+1],
             Adapter->SAPROM[i*4+2],
@@ -249,12 +252,12 @@ NDIS_STATUS MiniportInitialize(
     /* Setup the NIC */
     NICSetup(Adapter);
 
     /* Setup the NIC */
     NICSetup(Adapter);
 
-    NDIS_DbgPrint(MAX_TRACE, ("TXStart (0x%X)  TXCount (0x%X)  PageStart (0x%X)\n",
+    NDIS_DbgPrint(MID_TRACE, ("TXStart (0x%X)  TXCount (0x%X)  PageStart (0x%X)\n",
         Adapter->TXStart,
         Adapter->TXCount,
         Adapter->PageStart));
 
         Adapter->TXStart,
         Adapter->TXCount,
         Adapter->PageStart));
 
-    NDIS_DbgPrint(MAX_TRACE, ("PageStop (0x%X)  CurrentPage (0x%X)  NextPacket (0x%X).\n",
+    NDIS_DbgPrint(MID_TRACE, ("PageStop (0x%X)  CurrentPage (0x%X)  NextPacket (0x%X).\n",
         Adapter->PageStop,
         Adapter->CurrentPage,
         Adapter->NextPacket));
         Adapter->PageStop,
         Adapter->CurrentPage,
         Adapter->NextPacket));
@@ -413,7 +416,7 @@ NDIS_STATUS MiniportQueryInformation(
         GenericULONG = DRIVER_FRAME_SIZE;
         break;
     case OID_GEN_PROTOCOL_OPTIONS:
         GenericULONG = DRIVER_FRAME_SIZE;
         break;
     case OID_GEN_PROTOCOL_OPTIONS:
-        NDIS_DbgPrint(MAX_TRACE, ("OID_GEN_PROTOCOL_OPTIONS.\n"));
+        NDIS_DbgPrint(MID_TRACE, ("OID_GEN_PROTOCOL_OPTIONS.\n"));
         Status = NDIS_STATUS_NOT_SUPPORTED;
         break;
     case OID_GEN_MAC_OPTIONS:
         Status = NDIS_STATUS_NOT_SUPPORTED;
         break;
     case OID_GEN_MAC_OPTIONS:
@@ -437,14 +440,14 @@ NDIS_STATUS MiniportQueryInformation(
         CopySize = DRIVER_LENGTH_OF_ADDRESS;
         break;
     case OID_802_3_MULTICAST_LIST:
         CopySize = DRIVER_LENGTH_OF_ADDRESS;
         break;
     case OID_802_3_MULTICAST_LIST:
-        NDIS_DbgPrint(MAX_TRACE, ("OID_802_3_MULTICAST_LIST.\n"));
+        NDIS_DbgPrint(MID_TRACE, ("OID_802_3_MULTICAST_LIST.\n"));
         Status = NDIS_STATUS_NOT_SUPPORTED;
         break;
     case OID_802_3_MAXIMUM_LIST_SIZE:
         GenericULONG = Adapter->MaxMulticastListSize;
         break;
     case OID_802_3_MAC_OPTIONS:
         Status = NDIS_STATUS_NOT_SUPPORTED;
         break;
     case OID_802_3_MAXIMUM_LIST_SIZE:
         GenericULONG = Adapter->MaxMulticastListSize;
         break;
     case OID_802_3_MAC_OPTIONS:
-        NDIS_DbgPrint(MAX_TRACE, ("OID_802_3_MAC_OPTIONS.\n"));
+        NDIS_DbgPrint(MID_TRACE, ("OID_802_3_MAC_OPTIONS.\n"));
         Status = NDIS_STATUS_NOT_SUPPORTED;
         break;
     default:
         Status = NDIS_STATUS_NOT_SUPPORTED;
         break;
     default:
@@ -531,7 +534,7 @@ NDIS_STATUS MiniportSend(
 {
     PNIC_ADAPTER Adapter = (PNIC_ADAPTER)MiniportAdapterContext;
 
 {
     PNIC_ADAPTER Adapter = (PNIC_ADAPTER)MiniportAdapterContext;
 
-    NDIS_DbgPrint(MAX_TRACE, ("Queueing packet.\n"));
+    NDIS_DbgPrint(MID_TRACE, ("Queueing packet.\n"));
 
 #ifdef NOCARD
     NdisMSendComplete(Adapter->MiniportAdapterHandle,
 
 #ifdef NOCARD
     NdisMSendComplete(Adapter->MiniportAdapterHandle,
@@ -738,7 +741,7 @@ NDIS_STATUS MiniportTransferData(
             SrcData = RecvStart;
     }
 
             SrcData = RecvStart;
     }
 
-    NDIS_DbgPrint(MAX_TRACE, ("Transferred (%d) bytes.\n", BytesToTransfer));
+    NDIS_DbgPrint(MID_TRACE, ("Transferred (%d) bytes.\n", BytesToTransfer));
 
     *BytesTransferred = BytesCopied;
 
 
     *BytesTransferred = BytesCopied;
 
index 3b1a69d..cd1d3e7 100644 (file)
@@ -7,12 +7,19 @@
  * REVISIONS:
  *   CSH 01/08-2000 Created
  */
  * REVISIONS:
  *   CSH 01/08-2000 Created
  */
+#define DBG
 #include <miniport.h>
 #include <protocol.h>
 #ifdef DBG
 #include <buffer.h>
 #endif /* DBG */
 
 #include <miniport.h>
 #include <protocol.h>
 #ifdef DBG
 #include <buffer.h>
 #endif /* DBG */
 
+#ifdef DBG
+/* See debug.h for debug/trace constants */
+ULONG DebugTraceLevel = MIN_TRACE;
+//ULONG DebugTraceLevel = (MAX_TRACE + DEBUG_MINIPORT);
+#endif /* DBG */
+
 
 /* Number of media we know */
 #define MEDIA_ARRAY_SIZE    15
 
 /* Number of media we know */
 #define MEDIA_ARRAY_SIZE    15
@@ -111,18 +118,18 @@ MiniIndicateData(
         DbgPrint("HEADER:");
         p = HeaderBuffer;
         for (i = 0; i < HeaderBufferSize; i++) {
         DbgPrint("HEADER:");
         p = HeaderBuffer;
         for (i = 0; i < HeaderBufferSize; i++) {
-            if (i % 12 == 0)
+            if (i % 16 == 0)
                 DbgPrint("\n%04X ", i);
             DbgPrint("%02X ", *p);
             (ULONG_PTR)p += 1;
         }
 
                 DbgPrint("\n%04X ", i);
             DbgPrint("%02X ", *p);
             (ULONG_PTR)p += 1;
         }
 
-        DbgPrint("\nFRAME:\n");
+        DbgPrint("\nFRAME:");
 
         p = LookaheadBuffer;
         Length = (LookaheadBufferSize < 64)? LookaheadBufferSize : 64;
         for (i = 0; i < Length; i++) {
 
         p = LookaheadBuffer;
         Length = (LookaheadBufferSize < 64)? LookaheadBufferSize : 64;
         for (i = 0; i < Length; i++) {
-            if (i % 12 == 0)
+            if (i % 16 == 0)
                 DbgPrint("\n%04X ", i);
             DbgPrint("%02X ", *p);
             (ULONG_PTR)p += 1;
                 DbgPrint("\n%04X ", i);
             DbgPrint("%02X ", *p);
             (ULONG_PTR)p += 1;
@@ -135,6 +142,11 @@ MiniIndicateData(
 
     KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &OldIrql);
     CurrentEntry = Adapter->ProtocolListHead.Flink;
 
     KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &OldIrql);
     CurrentEntry = Adapter->ProtocolListHead.Flink;
+
+    if (CurrentEntry == &Adapter->ProtocolListHead) {
+        NDIS_DbgPrint(DEBUG_MINIPORT, ("WARNING: No upper protocol layer.\n"));
+    }
+
     while (CurrentEntry != &Adapter->ProtocolListHead) {
            AdapterBinding = CONTAINING_RECORD(CurrentEntry,
                                            ADAPTER_BINDING,
     while (CurrentEntry != &Adapter->ProtocolListHead) {
            AdapterBinding = CONTAINING_RECORD(CurrentEntry,
                                            ADAPTER_BINDING,