summaryrefslogtreecommitdiffstats
path: root/src/arch/i386/drivers/net/undinet.c
diff options
context:
space:
mode:
authorMichael Brown2007-01-09 21:18:31 +0100
committerMichael Brown2007-01-09 21:18:31 +0100
commitb7fcfe8ece36c80ddeca08aa3873063e2aefa536 (patch)
tree0c93c3baa8e256342a5795152ede5d336b2790e1 /src/arch/i386/drivers/net/undinet.c
parentMove start/stop/expire debug messages to DBG2() level. (diff)
downloadipxe-b7fcfe8ece36c80ddeca08aa3873063e2aefa536.tar.gz
ipxe-b7fcfe8ece36c80ddeca08aa3873063e2aefa536.tar.xz
ipxe-b7fcfe8ece36c80ddeca08aa3873063e2aefa536.zip
Added net device TX queue; this will be needed to support the PXE UNDI API
(which will need us to wait for TX completions). Added debug autocolourisation to netdevice.c
Diffstat (limited to 'src/arch/i386/drivers/net/undinet.c')
-rw-r--r--src/arch/i386/drivers/net/undinet.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/arch/i386/drivers/net/undinet.c b/src/arch/i386/drivers/net/undinet.c
index dc48c975..42b0cfb7 100644
--- a/src/arch/i386/drivers/net/undinet.c
+++ b/src/arch/i386/drivers/net/undinet.c
@@ -349,11 +349,15 @@ static int undinet_transmit ( struct net_device *netdev,
= ( ( unsigned ) & __from_data16 ( undinet_pkb ) );
/* Issue PXE API call */
- rc = undinet_call ( undinic, PXENV_UNDI_TRANSMIT, &undi_transmit,
- sizeof ( undi_transmit ) );
+ if ( ( rc = undinet_call ( undinic, PXENV_UNDI_TRANSMIT,
+ &undi_transmit,
+ sizeof ( undi_transmit ) ) ) != 0 )
+ goto done;
- /* Free packet buffer and return */
- free_pkb ( pkb );
+ /* Free packet buffer */
+ netdev_tx_complete ( netdev, pkb );
+
+ done:
return rc;
}