From adb3dd03e58baba29808971d5bc718b0d5958a41 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Tue, 3 Jul 2007 13:17:58 +0100 Subject: [PATCH] Document TX completion bug. --- src/arch/i386/drivers/net/undinet.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/arch/i386/drivers/net/undinet.c b/src/arch/i386/drivers/net/undinet.c index 6bc0fc36..07106591 100644 --- a/src/arch/i386/drivers/net/undinet.c +++ b/src/arch/i386/drivers/net/undinet.c @@ -333,6 +333,16 @@ static int undinet_transmit ( struct net_device *netdev, size_t len = iob_len ( iobuf ); int rc; + /* Technically, we ought to make sure that the previous + * transmission has completed before we re-use the buffer. + * However, this would break a gPXE-running-over-Etherboot + * setup, since Etherboot fails to generate TX completions. + * In practice this won't be a problem, since our TX datapath + * has a very low packet volume and we can get away with + * assuming that a TX will be complete by the time we want to + * transmit the next packet. + */ + /* Copy packet to UNDI I/O buffer */ if ( len > sizeof ( basemem_packet ) ) len = sizeof ( basemem_packet );