[syslinux] [PATCH][git-pull] lwIP PXE fixes

Gene Cumm gene.cumm at gmail.com
Mon Sep 23 14:30:26 PDT 2013


On Fri, Sep 20, 2013 at 5:15 AM, Matt Fleming <matt at console-pimps.org> wrote:
> On Tue, 17 Sep, at 04:23:08PM, Gene Cumm wrote:
>> On Tue, Sep 17, 2013 at 9:36 AM, Matt Fleming <matt at console-pimps.org> wrote:
>> > On Tue, 03 Sep, at 07:31:52PM, Gene Cumm wrote:
>> >> The following changes since commit 6438fbcb6cb7e0cd40e4bb3681ada047fe77ffdd:
>> >>   Gene Cumm (1):
>> >>         Allow for UNDIIF_ID_DEBUG in 1 mk line
>> >>
>> >> are available in the git repository at:
>> >>
>> >>   git://github.com/geneC/syslinux.git elflink-pxe-fixes-for-mfleming
>> >>   https://github.com/geneC/syslinux/tree/elflink-pxe-fixes-for-mfleming
>> >>
>> >> Gene Cumm (12):
>> >>       core/lwip/undi: Improve UNDIIF_ID_DEBUG messages
>> >>       core: mbox/semaphore NULL checks
>> >>       core: make mbox_post()/__sem_down_slow() check if valid
>> >>       PXELINUX: Use sendto() instead of connect()/send()/disconnect()
>> >>       PXELINUX: allow forcing poll by macro
>> >>       core: dprintf() the banner.
>> >>       undiif: show thread of execution on UNDIIF_ID_DEBUG
>> >>       PXELINUX: specify PXE/lwIP
>> >>       com32: Define ddprintf() macro
>> >>       PXE: use ddprintf macro
>> >>       core/lwip: Fix NULL pointer check
>> >>       PXE ISR: Force polling on select hardware WORKAROUND
>> >>
>> >
>> > Thanks Gene. I've pulled this into the elflink branch.
>> >
>> > Could you summarise what scenario these changes improve and on which
>> > hardware?
>>
>> The primary things are "Use sendto() instead of
>> connect()/send()/disconnect()" prevents a race-condition on systems
>> that have functional interrupts (iPXE and the below Dell systems).
>> Without this, the reply packet could be received by the core prior to
>> the disconnect() call, see that it doesn't have a matching PCB
>> (protocol control block, iirc) since the reply has a different far-end
>> UDP port than the original request, and lwIP will discard the packet
>> before PXELINUX can see it.
>>
>> On select platforms (Dell OptiPlex 760, Dell OptiPlex 960; perhaps
>> more), the interrupt appears to go "deaf" after a few seconds.  By
>> matching MAC OUI and flags value, force polling on these select
>> platforms.  I'm not sure if there's any better data available that
>> shallow in the core.  I believe PCI IDs can be fetched with functions
>> from other libraries and the UUID and DMI data (the most likely to be
>> useful is SYSPRODUCT) is available in ldlinux.c32.
>
> OK, these two paragraphs are super useful. Do the following modified
> commit messges look OK?
>
> commit 2bc2fb9d8d2df18ea4ac9b6394b550b9ea199ee7
> Author: Gene Cumm <gene.cumm at gmail.com>
> Date:   Thu Aug 15 22:20:46 2013 -0400
>
>     PXELINUX: Use sendto() instead of connect()/send()/disconnect()
>
>     This commit prevents a race-condition on systems that have functional
>     interrupts (iPXE and the below Dell systems).  Without this, the reply
>     packet could be received by the core prior to the disconnect() call, see
>     that it doesn't have a matching PCB (protocol control block, iirc) since
>     the reply has a different far-end UDP port than the original request,
>     and lwIP will discard the packet before PXELINUX can see it.
>
>     [ Expanded commit message - Matt]
>
>     Signed-off-by: Gene Cumm <gene.cumm at gmail.com>
>     Signed-off-by: Matt Fleming <matt.fleming at intel.com>
>
>
> commit 734e2d57f3ad7882aedbd3a039fb0950468f2fbd
> Author: Gene Cumm <gene.cumm at gmail.com>
> Date:   Tue Sep 3 19:19:38 2013 -0400
>
>     PXE ISR: Force polling on select hardware WORKAROUND
>
>     By OUI == 00:23:ae and flags == 0xdc1b
>
>     On select platforms (Dell OptiPlex 760, Dell OptiPlex 960; perhaps
>     more), the interrupt appears to go "deaf" after a few seconds.  By
>     matching MAC OUI and flags value, force polling on these select
>     platforms.  I'm not sure if there's any better data available that
>     shallow in the core.  I believe PCI IDs can be fetched with functions
>     from other libraries and the UUID and DMI data (the most likely to be
>     useful is SYSPRODUCT) is available in ldlinux.c32.
>
>     [ Expanded commit message - Matt ]
>
>     Signed-off-by: Gene Cumm <gene.cumm at gmail.com>
>     Signed-off-by: Matt Fleming <matt.fleming at intel.com>

The ", iirc" in the first commit isn't necessary.

I've made elflink-pxe-fixes-for-mfleming-2 or you can make the edit.

-- 
-Gene


More information about the Syslinux mailing list