mail archive of the barebox mailing list
 help / color / mirror / Atom feed
From: "Daniel Glöckner" <dg@emlix.com>
To: Sascha Hauer <s.hauer@pengutronix.de>,
	Barebox List <barebox@lists.infradead.org>
Cc: Edmund Henniges <eh@emlix.com>
Subject: Re: [PATCH 20/20] fastboot net: remove may_send
Date: Mon, 25 May 2020 21:45:49 +0200	[thread overview]
Message-ID: <15f6548d-e48c-5202-1cf6-d806846b2ba7@emlix.com> (raw)
In-Reply-To: <20200525103349.19449-21-s.hauer@pengutronix.de>

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@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

  reply	other threads:[~2020-05-25 19:45 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-25 10:33 [PATCH v2 00/20] Slices and fastboot over UDP Sascha Hauer
2020-05-25 10:33 ` [PATCH 01/20] poller: Give pollers a name Sascha Hauer
2020-05-25 10:33 ` [PATCH 02/20] poller: Add a poller command Sascha Hauer
2020-05-25 10:33 ` [PATCH 03/20] fastboot: split generic code from USB gadget Sascha Hauer
2020-05-25 10:33 ` [PATCH 04/20] fastboot: don't close fd 0 when downloading to ram Sascha Hauer
2020-05-25 10:33 ` [PATCH 05/20] fastboot: Use unique tempfile name Sascha Hauer
2020-05-25 10:33 ` [PATCH 06/20] Introduce slices Sascha Hauer
2020-05-25 10:33 ` [PATCH 07/20] Introduce idle slice Sascha Hauer
2020-05-25 10:33 ` [PATCH 08/20] net: Add a slice to struct eth_device Sascha Hauer
2020-05-25 10:33 ` [PATCH 09/20] net: mdiobus: Add slice Sascha Hauer
2020-05-25 10:33 ` [PATCH 10/20] usb: Add a slice to usb host controllers Sascha Hauer
2020-05-25 10:33 ` [PATCH 11/20] usbnet: Add slice Sascha Hauer
2020-05-25 10:33 ` [PATCH 12/20] net: Call net_poll() in a poller Sascha Hauer
2020-05-25 10:33 ` [PATCH 13/20] net: reply to ping requests Sascha Hauer
2020-05-25 10:33 ` [PATCH 14/20] usbnet: Be more friendly in the receive path Sascha Hauer
2020-05-25 10:33 ` [PATCH 15/20] poller: Allow to run pollers inside of pollers Sascha Hauer
2020-05-25 10:33 ` [PATCH 16/20] defconfigs: update renamed fastboot options Sascha Hauer
2020-05-25 10:33 ` [PATCH 17/20] globalvar: Add helper for deprecated variable names Sascha Hauer
2020-05-25 17:27   ` Ahmad Fatoum
2020-05-25 10:33 ` [PATCH 18/20] fastboot: rename usbgadget.fastboot_* variables to fastboot.* Sascha Hauer
2020-05-25 10:33 ` [PATCH 19/20] fastboot net: implement fastboot over UDP Sascha Hauer
2020-05-25 10:33 ` [PATCH 20/20] fastboot net: remove may_send Sascha Hauer
2020-05-25 19:45   ` Daniel Glöckner [this message]
2020-05-26  6:02     ` Sascha Hauer
2020-06-15 16:36       ` Daniel Glöckner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=15f6548d-e48c-5202-1cf6-d806846b2ba7@emlix.com \
    --to=dg@emlix.com \
    --cc=barebox@lists.infradead.org \
    --cc=eh@emlix.com \
    --cc=s.hauer@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox