lwIP watchdog not being serviced

Tim Harvey tharvey at gateworks.com
Wed May 28 18:29:22 CEST 2025


On Wed, May 28, 2025 at 12:57 AM Jerome Forissier
<jerome.forissier at linaro.org> wrote:
>
> Hi Tim,
>
> On 5/27/25 21:07, Tim Harvey wrote:
> > Hi Jerome,
> >
> > In my continued evaluation to see if I want to switch my boards over
> > to use lwIP I've noticed that the watchdog does not get serviced
> > during at least http/tftp which surprised me. This causes board resets
> > when transferring large files such as disk images.
> >
> > It seems lwIP is missing some calls to schedule(). Do you have a
> > suggestion for the right place to call this for lwIP?
>
> That's a good point. Anywhere in the receive loops should be OK, for
> example right after net_lwip_rx(udev, netif). But for simplicity and
> to avoid pattern duplication we may want to call schedule() as well
> as sys_check_timeouts() inside net_lwip_rx():
>
> int net_lwip_rx(struct udevice *udev, struct netif *netif)
> {
>         struct pbuf *pbuf;
>         uchar *packet;
>         int flags;
>         int len;
>         int i;
>
>         /* lwIP timers */
>         sys_check_timeouts();
>         /* Other tasks and actions */
>         schedule();
>
>         if (!eth_is_active(udev))
>                 return -EINVAL;
>         ...
> }
>

Hi Jerome,

I knew you would know exactly where to put it - works great. Shall I
submit a patch authored by you and signed-off by both of us?

Thanks,

Tim


More information about the U-Boot mailing list