*/
{
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 */
- 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];
/* 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->TXStart,
Length));
}
/* Now output some data */
-
Count = Length;
/* Initialize RSAR0 and RSAR1 - Remote Start Address Registers */
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"));
&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]));
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);
}
if (Adapter->ReceiveError) {
- NDIS_DbgPrint(MAX_TRACE, ("Receive error.\n"));
+ NDIS_DbgPrint(MID_TRACE, ("Receive error.\n"));
/* Skip this packet */
Adapter->NextPacket = Adapter->CurrentPage;
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) {
- NDIS_DbgPrint(MAX_TRACE, ("No more packets.\n"));
+ NDIS_DbgPrint(MID_TRACE, ("No more packets.\n"));
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);
}
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;
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;
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));
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;
}
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);
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 */
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;
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:
- NDIS_DbgPrint(MAX_TRACE, ("Receive interrupt.\n"));
+ NDIS_DbgPrint(MID_TRACE, ("Receive interrupt.\n"));
HandleReceive(Adapter);
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:
- NDIS_DbgPrint(MAX_TRACE, ("Transmit interrupt.\n"));
+ NDIS_DbgPrint(MID_TRACE, ("Transmit interrupt.\n"));
HandleTransmit(Adapter);
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);
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;
}
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);
#ifdef DBG
/* See debug.h for debug/trace constants */
+//DWORD DebugTraceLevel = MID_TRACE;
ULONG DebugTraceLevel = MIN_TRACE;
#endif /* DBG */
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);
return Status;
}
- NDIS_DbgPrint(MAX_TRACE, ("BOARDDATA:\n"));
+ NDIS_DbgPrint(MID_TRACE, ("BOARDDATA:\n"));
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],
/* 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));
- 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));
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:
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:
- 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:
{
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,
SrcData = RecvStart;
}
- NDIS_DbgPrint(MAX_TRACE, ("Transferred (%d) bytes.\n", BytesToTransfer));
+ NDIS_DbgPrint(MID_TRACE, ("Transferred (%d) bytes.\n", BytesToTransfer));
*BytesTransferred = BytesCopied;