Re: [PATCH 20/20] fastboot net: remove may_send

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Sascha,

Am 25.05.20 um 12:33 schrieb Sascha Hauer:
> This removes the may_send mechanism from fastboot over UDP. Without this
> fastboot transfers get stuck when on the command line something like
> "sleep 10" is executed before or during a fastboot session. In this case
> while (fbn->may_send == MAY_NOT_SEND) will never become false and
> barebox is cought in that loop.

I am not able to reproduce the problem you have without this patch.
If I start "sleep 10" on the serial console and then use fastboot to
execute something else, the host will repeat the UDP packet with the
command until the sleep is over. At that point the board sends an ACK
packet and starts to execute the command.

Starting a big download and then executing sleep 10 on the console
also works. The download continues while sleep is executing. Only the
"Downloading XXXX bytes finished" info message and the final "OKAY"
packet are delayed by the sleep since that is done from inside the
poller.

What were the exact commands you used to trigger the problem?
What kind of network connection do you use?

I know that Barebox will get stuck when the host stops talking to us
before we had the opportunity to send the final OKAY, but that is not
what you describe. If you use a sleep 100, the host will time out
before the sleep is done. After the sleep the command is still in
fbn->command, so it will be acked and executed. Since the host no
longer talks to us, it will not send us an empty packet with the next
sequence number, so the loop in fastboot_write_net will never terminate.

The only way to get out of this situation with the current code
(omitting patch 20) is to start a new fastboot session. The INIT packet
of the new session will set reinit to true, which discards all messages
the old session wants to send. If this is not acceptable, I suggest
adding a timeout >= 60 seconds to that loop in fastboot_write_net and
setting reinit when it expires. We can make the timeout a kconfig option
which defaults to 60 if you prefer.

Best regards,

  Daniel

-- 
Dipl.-Math. Daniel Glöckner, emlix GmbH, http://www.emlix.com
Fon +49 551 30664-0, Fax +49 551 30664-11,
Gothaer Platz 3, 37083 Göttingen, Germany
Sitz der Gesellschaft: Göttingen, Amtsgericht Göttingen HR B 3160
Geschäftsführung: Heike Jordan, Dr. Uwe Kracke
Ust-IdNr.: DE 205 198 055

emlix - your embedded linux partner

_______________________________________________
barebox mailing list
barebox@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/barebox




[Index of Archives]     [Linux Embedded]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux