summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@zytor.com>2007-05-31 15:46:48 -0700
committerH. Peter Anvin <hpa@zytor.com>2007-05-31 15:46:48 -0700
commit6db864e0a1c3cfa447892805782198c0c52f560d (patch)
treeb3924187b7557803d002d0b197431ec26c213808
parentf12b67b9b1870fca92fdd6ef12873934d8ac63de (diff)
downloadsyslinux-6db864e0a1c3cfa447892805782198c0c52f560d.tar.gz
Disable polling for ARP during idle.
Disable polling for ARP during idle. On some PXE stacks, e.g. Marvell, this just takes way too long. Compared to that, losing an ARP is a relatively benign event.
-rw-r--r--pxelinux.asm19
1 files changed, 17 insertions, 2 deletions
diff --git a/pxelinux.asm b/pxelinux.asm
index a5402c73..b9c541e7 100644
--- a/pxelinux.asm
+++ b/pxelinux.asm
@@ -53,15 +53,26 @@ SECTOR_SIZE equ TFTP_BLOCKSIZE
;
; This is what we need to do when idle
-;
-%define HAVE_IDLE 1 ; idle is not a noop
+; *** This is disabled because some PXE stacks wait for unacceptably
+; *** long if there are no packets receivable.
+
+%define HAVE_IDLE 0 ; idle is not a noop
+%if HAVE_IDLE
%macro RESET_IDLE 0
call reset_idle
%endmacro
%macro DO_IDLE 0
call check_for_arp
%endmacro
+%else
+%macro RESET_IDLE 0
+ ; Nothing
+%endmacro
+%macro DO_IDLE 0
+ ; Nothing
+%endmacro
+%endif
;
; TFTP operation codes
@@ -2282,6 +2293,8 @@ genipopt:
; passed since the last poll, and reset this when a character is
; received (RESET_IDLE).
;
+%if HAVE_IDLE
+
reset_idle:
push ax
mov ax,[cs:BIOS_timer]
@@ -2321,6 +2334,8 @@ check_for_arp:
RESET_IDLE
ret
+%endif ; HAVE_IDLE
+
; -----------------------------------------------------------------------------
; Common modules
; -----------------------------------------------------------------------------