Hi,

I'm experiencing a rather obscure problem with Ethernet - sometimes a packet sent by the empeg gets mangled in transit. By this I mean that the data sent by the CPU to the chip is not the same as what's received on the other end - the next-to-last byte of the frame gets modified from 0x0a to 0x00. I'm fairly confident that the problem is on empeg's end - I see the same behaviour with several remote hosts.

The strange thing is that this is data dependent and happens deterministically with the same packet. (That packet happens to be part of an NFS request, the server always ignores it, so NFS effectively stops dead in its tracks...)

The patch below seems to fix the problem for me. I don't have a good understanding of the driver or the chip, so no idea whether this is the best way of solving it and what is causing the problem in the first place.

Regards,
Borislav

diff -Nur linux-2.2.14-1.01/drivers/net/smc9194_tifon.c linux-2.2.14-1.01-eth/drivers/net/smc9194_tifon.c
--- linux-2.2.14-1.01/drivers/net/smc9194_tifon.c Wed Jun 14 11:41:38 2000
+++ linux-2.2.14-1.01-eth/drivers/net/smc9194_tifon.c Fri Oct 13 02:27:22 2000
@@ -893,6 +893,9 @@
/* and let the chipset deal with it */
outw( MC_ENQUEUE , ioaddr + MMU_CMD );

+ /* without this we sometimes get mangled packets */
+ udelay(1000);
+
PRINTK2((CARDNAME": Sent packet of length 0x%x \n",length));