Kernel/libc - Replace invalid '%C' strings with "(inval)"
[tpg/acess2.git] / KernelLand / Modules / Network / E1000 / e1000.c
index 21cc9ed..0ad49b0 100644 (file)
@@ -5,7 +5,7 @@
  * e1000.c
  * - Intel 8254x Network Card Driver (core)
  */
-#define DEBUG  1
+#define DEBUG  0
 #define        VERSION VER2(0,1)
 #include <acess.h>
 #include "e1000.h"
@@ -205,6 +205,7 @@ int E1000_SendPacket(void *Ptr, tIPStackBuffer *Buffer)
         int txd = first_txd;
        while( (idx = IPStack_Buffer_GetBuffer(Buffer, idx, &len, &ptr)) != -1 )
        {
+               //Debug_HexDump("E100 SendPacket", ptr, len);
                if( MM_GetPhysAddr(ptr) + len-1 != MM_GetPhysAddr((char*)ptr + len-1) )
                {
                        size_t  remlen = PAGE_SIZE - ((tVAddr)ptr & (PAGE_SIZE-1));
@@ -234,6 +235,7 @@ int E1000_SendPacket(void *Ptr, tIPStackBuffer *Buffer)
        Card->TXSrcBuffers[last_txd] = Buffer;
 
        __sync_synchronize();
+       #if DEBUG
        {
                volatile tTXDesc *txdp = Card->TXDescs + last_txd;
                LOG("%p %P: %llx %x %x", txdp, MM_GetPhysAddr((void*)txdp), txdp->Buffer, txdp->Length, txdp->CMD);
@@ -242,6 +244,7 @@ int E1000_SendPacket(void *Ptr, tIPStackBuffer *Buffer)
                LOG("%p %P: %llx %x %x", txdp, MM_GetPhysAddr((void*)txdp), txdp->Buffer, txdp->Length, txdp->CMD);
                MM_FreeTemp( (void*)txdp_base);
        }
+       #endif
        // Trigger TX
        IPStack_Buffer_LockBuffer(Buffer);
        LOG("Triggering TX - Buffers[%i]=%p", last_txd, Buffer);
@@ -313,8 +316,8 @@ void E1000_IRQHandler(int Num, void *Ptr)
                {
                        LOG("No completed TXDs");
                }
-       }
-       
+       }       
+
        if( icr & ICR_LSC )
        {
                // Link status change
@@ -347,7 +350,20 @@ void E1000_IRQHandler(int Num, void *Ptr)
                LOG("nPackets = %i", nPackets);
        }
        
-       icr &= ~(ICR_RXT0|ICR_LSC|ICR_TXQE|ICR_TXDW);
+       // Transmit Descriptor Low Threshold hit
+       if( icr & ICR_TXD_LOW )
+       {
+               
+       }
+
+       // Receive Descriptor Minimum Threshold Reached
+       // - We're reading too slow
+       if( icr & ICR_RXDMT0 )
+       {
+               LOG("RX descs running out");
+       }
+       
+       icr &= ~(ICR_RXT0|ICR_LSC|ICR_TXQE|ICR_TXDW|ICR_TXD_LOW|ICR_RXDMT0);
        if( icr )
                Log_Warning("E1000", "Unhandled ICR bits 0x%x", icr);
 }

UCC git Repository :: git.ucc.asn.au