X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Modules%2FNetwork%2FNE2000%2Fne2000.c;h=d5eadb778b7913478011268b5f23735aad5b56e4;hb=4fc7efa62f7a33e0c8a499f5a175419c2d16c273;hp=60f9ac2d13d9ef18cbc41b03de2c33c26db55aae;hpb=bd8dc898108f10c0498f4dc5d0164a50b5ff2e5c;p=tpg%2Facess2.git diff --git a/Modules/Network/NE2000/ne2000.c b/Modules/Network/NE2000/ne2000.c index 60f9ac2d..d5eadb77 100644 --- a/Modules/Network/NE2000/ne2000.c +++ b/Modules/Network/NE2000/ne2000.c @@ -29,7 +29,7 @@ static const struct { {0x10EC, 0x8029}, // Realtek 8029 {0x10EC, 0x8129} // Realtek 8129 }; -#define NUM_COMPAT_DEVICES (sizeof(csaCOMPAT_DEVICES)/sizeof(csaCOMPAT_DEVICES[0])) +#define NUM_COMPAT_DEVICES ((int)(sizeof(csaCOMPAT_DEVICES)/sizeof(csaCOMPAT_DEVICES[0]))) enum eNe2k_Page0Read { CMD = 0, //!< the master command register @@ -85,7 +85,7 @@ typedef struct sNe2k_Card { // === PROTOTYPES === int Ne2k_Install(char **Arguments); char *Ne2k_ReadDir(tVFS_Node *Node, int Pos); -tVFS_Node *Ne2k_FindDir(tVFS_Node *Node, char *Name); +tVFS_Node *Ne2k_FindDir(tVFS_Node *Node, const char *Name); int Ne2k_IOCtl(tVFS_Node *Node, int ID, void *Data); Uint64 Ne2k_Write(tVFS_Node *Node, Uint64 Offset, Uint64 Length, void *Buffer); Uint64 Ne2k_Read(tVFS_Node *Node, Uint64 Offset, Uint64 Length, void *Buffer); @@ -128,7 +128,7 @@ int Ne2k_Install(char **Options) } if( giNe2k_CardCount == 0 ) { - Warning("[Ne2k ] No cards detected"); + Log_Warning("Ne2k", "No cards detected"); return MODULE_ERR_NOTNEEDED; } @@ -162,7 +162,7 @@ int Ne2k_Install(char **Options) outb( base + CURR, RX_FIRST ); // Current RX page outb( base + CMD, 0x21 ); // No DMA and Stop outb( base + DCR, 0x49 ); // Set WORD mode - outb( base + IMR, 0x00 ); + outb( base + IMR, 0x00 ); // Interrupt Mask Register outb( base + ISR, 0xFF ); outb( base + RCR, 0x20 ); // Reciever to Monitor outb( base + TCR, 0x02 ); // Transmitter OFF (TCR.LB = 1, Internal Loopback) @@ -199,21 +199,13 @@ int Ne2k_Install(char **Options) Ne2k_WriteReg(base, MAC5, gpNe2k_Cards[ k ].MacAddr[5]); */ - Log_Log("NE2K", "Card %i 0x%04x %02x:%02x:%02x:%02x:%02x:%02x", - k, base, + Log_Log("Ne2k", "Card %i 0x%04x IRQ%i %02x:%02x:%02x:%02x:%02x:%02x", + k, base, gpNe2k_Cards[ k ].IRQ, gpNe2k_Cards[k].MacAddr[0], gpNe2k_Cards[k].MacAddr[1], gpNe2k_Cards[k].MacAddr[2], gpNe2k_Cards[k].MacAddr[3], gpNe2k_Cards[k].MacAddr[4], gpNe2k_Cards[k].MacAddr[5] ); - Log("[NE2K]: Card #%i: IRQ=%i, IOBase=0x%x", - k, gpNe2k_Cards[ k ].IRQ, gpNe2k_Cards[ k ].IOBase); - Log("MAC Address %x:%x:%x:%x:%x:%x", - gpNe2k_Cards[ k ].MacAddr[0], gpNe2k_Cards[ k ].MacAddr[1], - gpNe2k_Cards[ k ].MacAddr[2], gpNe2k_Cards[ k ].MacAddr[3], - gpNe2k_Cards[ k ].MacAddr[4], gpNe2k_Cards[ k ].MacAddr[5] - ); - // Set VFS Node gpNe2k_Cards[ k ].Name[0] = '0'+k; gpNe2k_Cards[ k ].Name[1] = '\0'; @@ -244,9 +236,9 @@ char *Ne2k_ReadDir(tVFS_Node *Node, int Pos) } /** - * \fn tVFS_Node *Ne2k_FindDir(tVFS_Node *Node, char *Name) + * \fn tVFS_Node *Ne2k_FindDir(tVFS_Node *Node, const char *Name) */ -tVFS_Node *Ne2k_FindDir(tVFS_Node *Node, char *Name) +tVFS_Node *Ne2k_FindDir(tVFS_Node *Node, const char *Name) { if(Name[0] == '\0' || Name[1] != '\0') return NULL; @@ -264,23 +256,7 @@ int Ne2k_IOCtl(tVFS_Node *Node, int ID, void *Data) ENTER("pNode iID pData", Node, ID, Data); switch( ID ) { - case DRV_IOCTL_TYPE: - LEAVE('i', DRV_TYPE_NETWORK); - return DRV_TYPE_NETWORK; - - case DRV_IOCTL_IDENT: - tmp = ModUtil_SetIdent(Data, "Ne2k"); - LEAVE('i', tmp); - return tmp; - - case DRV_IOCTL_VERSION: - LEAVE('x', VERSION); - return VERSION; - - case DRV_IOCTL_LOOKUP: - tmp = ModUtil_LookupString( (char**)casIOCtls, Data ); - LEAVE('i', tmp); - return tmp; + BASE_IOCTLS(DRV_TYPE_NETWORK, "NE2000", VERSION, casIOCtls); } // If this is the root, return @@ -320,7 +296,8 @@ Uint64 Ne2k_Write(tVFS_Node *Node, Uint64 Offset, Uint64 Length, void *Buffer) // Sanity Check Length if(Length > TX_BUF_SIZE*256) { - Warning( + Log_Warning( + "Ne2k", "Ne2k_Write - Attempting to send over TX_BUF_SIZE*256 (%i) bytes (%i)", TX_BUF_SIZE*256, Length ); @@ -389,6 +366,7 @@ Uint64 Ne2k_Read(tVFS_Node *Node, Uint64 Offset, Uint64 Length, void *Buffer) ENTER("pNode XOffset XLength pBuffer", Node, Offset, Length, Buffer); + // TODO: Use MutexP/MutexV instead while(Card->NumWaitingPackets == 0) Threads_Yield(); // Make sure that the card is in page 0 @@ -518,5 +496,5 @@ void Ne2k_IRQHandler(int IntNum) return ; } } - Warning("[NE2K ] Recieved Unknown IRQ %i", IntNum); + Log_Warning("Ne2k", "Recieved Unknown IRQ %i", IntNum); }