[syslinux] tftp file size limit: pxelinux.0 vs. syslinux.efi
H. Peter Anvin
hpa at zytor.com
Tue Nov 29 13:01:02 PST 2016
On 11/28/16 15:16, John Z. Bohach via Syslinux wrote:
> That's roughly a 100x slow-down. What happens on the BIOS side is that after
> the 65535'th data packet, the counter restarts and file transfer continues.
> It takes about 17 seconds to download the entire ~250 MB. Works pretty well.
> However, in the case of the UEFI environment, after ~155 seconds, only ~93 MB
> has been transferred, and what I observe in the traffic is that the tftp
> client in syslinux.efi is ACK-ing the last packet received over and over
> without ACK-ing the next packet, even though the server has sent several
> additional packets (which are now waiting to be ACK-ed). I've glanced at the
> code in tftp.c and this appears related to the variable "timeout" though I
> haven't dug deep enough to be able to confirm exactly the progression of the
> timeout through the TimeoutTable, but it appears that the pointer has hit the
> "null" at the end of the table and we're giving up on the transfer.
> So my thought is that the UEFI environment, or the code executing therein, is
> _much_ slower than during standard BIOS boot, and we are in fact hitting a
> built-in timeout in the tftp client portion of syslinux.efi likely due to some
> slowness in UEFI environment. If you have any suggestions on where to modify
> the code, I can increase the timeout values to try to confirm if this is in
> fact what is happening.
> I am using syslinux-6.03 that I built myself on a fairly recent motherboard.
First, please try syslinux-6.04-pre1, or better yet, the current git tree.
However, if the UEFI network driver is significantly inferior to the
BIOS network driver (which could happen if the BIOS developer cared more
about the latter; they usually do not share code) then there isn't much
that can be done.
More information about the Syslinux