[syslinux] [PATCH 3/4] Removing the udp_reader efi_binding

Julien Viard de Galbert jviarddegalbert at online.net
Wed May 31 07:01:23 PDT 2017


Hello,

----- Mail original -----
> De: "Gene Cumm" <gene.cumm at gmail.com>
> À: "Julien Viard de Galbert" <jviarddegalbert at online.net>, "Matt Fleming" <matt at console-pimps.org>
> Cc: "For discussion of Syslinux and tftp-hpa" <syslinux at zytor.com>
> Envoyé: Mercredi 31 Mai 2017 13:45:00
> Objet: Re: [syslinux] [PATCH 3/4] Removing the udp_reader efi_binding

> On Wed, May 31, 2017 at 3:56 AM, Julien Viard de Galbert via Syslinux
> <syslinux at zytor.com> wrote:
>> This extra socket cause the EFI udp stack to duplicate every packet
>> to be able to provide them to both udp_reader and socket->net.efi.binding.
>> The ones in socket->net.efi.binding were never read so they accumulated in
>> the stack on EFI side making the stack slower and slower.
>> Slow enough to not be able to download a kernel+initramfs before the EFI
>> timeout (5 minutes).
>>
>> Signed-off-by: Julien Viard de Galbert <jviarddegalbert at online.net>
>> ---
>>  efi/udp.c | 24 ++----------------------
>>  1 file changed, 2 insertions(+), 22 deletions(-)
> 
> That almost certainly explains the decaying download rates.
> 

Yes I tracked this from the EFI side (tianocore) until I found that the
datagram where duplicated in the stack this caused most of the delay in
the udp receive function... Only then I could come up with this patch :)

>>  extern EFI_GUID Udp4ServiceBindingProtocol, Udp4Protocol;
>>
>> -/*
>> - * This UDP binding is configured to operate in promiscuous mode. It is
>> - * only used for reading packets. It has no associated state unlike
>> - * socket->net.efi.binding, which has a remote IP address and port
>> - * number.
>> - */
> 
> This part has me puzzled why Matt was creating a promiscuous binding
> instead of re-using the existing binding.
> 
Yes, to me it looks like some remaining code from a different trial were 
promiscuous mode was needed...

> --
> -Gene

Best Regards,

Julien VdG



More information about the Syslinux mailing list