summaryrefslogtreecommitdiffstats
path: root/src/arch/i386
diff options
context:
space:
mode:
authorMichael Brown2014-05-03 02:07:38 +0200
committerMichael Brown2014-05-03 19:52:15 +0200
commit206bd7bb64ddda692056ce1ebd68efbf794af803 (patch)
tree3e57d935054a8f759d1963eadb6dafdbd2b3b74c /src/arch/i386
parent[pxe] Profile UNDI transmit datapath (diff)
downloadipxe-206bd7bb64ddda692056ce1ebd68efbf794af803.tar.gz
ipxe-206bd7bb64ddda692056ce1ebd68efbf794af803.tar.xz
ipxe-206bd7bb64ddda692056ce1ebd68efbf794af803.zip
[pxe] Work around missing PXENV_UNDI_OPEN only when necessary
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/arch/i386')
-rw-r--r--src/arch/i386/interface/pxe/pxe_undi.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/arch/i386/interface/pxe/pxe_undi.c b/src/arch/i386/interface/pxe/pxe_undi.c
index a17b9b3b0..29e586ed2 100644
--- a/src/arch/i386/interface/pxe/pxe_undi.c
+++ b/src/arch/i386/interface/pxe/pxe_undi.c
@@ -330,8 +330,10 @@ pxenv_undi_transmit ( struct s_PXENV_UNDI_TRANSMIT *undi_transmit ) {
* processing at this point, to work around callers that never
* call PXENV_UNDI_OPEN before attempting to use the UNDI API.
*/
- netdev_rx_freeze ( pxe_netdev );
- netdev_irq ( pxe_netdev, 1 );
+ if ( ! netdev_rx_frozen ( pxe_netdev ) ) {
+ netdev_rx_freeze ( pxe_netdev );
+ netdev_irq ( pxe_netdev, 1 );
+ }
/* Identify network-layer protocol */
switch ( undi_transmit->Protocol ) {