diff -urN gpxe-0.9.7/src/arch/i386/interface/pxe/pxe_undi.c gpxe-0.9.7-avoidspuriousirq/src/arch/i386/interface/pxe/pxe_undi.c --- gpxe-0.9.7/src/arch/i386/interface/pxe/pxe_undi.c 2009-08-21 21:00:26.000000000 -0400 +++ gpxe-0.9.7-avoidspuriousirq/src/arch/i386/interface/pxe/pxe_undi.c 2009-08-21 20:59:51.000000000 -0400 @@ -277,14 +277,15 @@ } } + /* Flag transmission as in-progress */ + undi_tx_count++; /* Transmit packet */ if ( ( rc = netdev_tx ( pxe_netdev, iobuf ) ) != 0 ) { + undi_tx_count--; undi_transmit->Status = PXENV_STATUS ( rc ); return PXENV_EXIT_FAILURE; } - /* Flag transmission as in-progress */ - undi_tx_count++; undi_transmit->Status = PXENV_STATUS_SUCCESS; return PXENV_EXIT_SUCCESS;