summaryrefslogtreecommitdiffstats
path: root/src/arch/i386/drivers/net/undinet.c
diff options
context:
space:
mode:
authorMichael Brown2007-07-03 14:17:58 +0200
committerMichael Brown2007-07-03 14:17:58 +0200
commitadb3dd03e58baba29808971d5bc718b0d5958a41 (patch)
tree70abfc695ff7c21c1368b16253e59e4630a6969d /src/arch/i386/drivers/net/undinet.c
parentEnable/disable interrupts in driver open/close. (diff)
downloadipxe-adb3dd03e58baba29808971d5bc718b0d5958a41.tar.gz
ipxe-adb3dd03e58baba29808971d5bc718b0d5958a41.tar.xz
ipxe-adb3dd03e58baba29808971d5bc718b0d5958a41.zip
Document TX completion bug.
Diffstat (limited to 'src/arch/i386/drivers/net/undinet.c')
-rw-r--r--src/arch/i386/drivers/net/undinet.c10
1 files changed, 10 insertions, 0 deletions
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 );