[PATCH v2 5/6] net: add fastboot TCP documentation and IP6-only mode
Ying-Chun Liu (PaulLiu)
paul.liu at linaro.org
Fri Jul 14 17:43:17 CEST 2023
Reviewed-by: Ying-Chun Liu (PaulLiu) <paul.liu at linaro.org>
On 2023/5/11 00:59, Dmitrii Merkurev wrote:
> Command to start IP6 only TCP fastboot:
> fastboot tcp -ipv6
>
> Signed-off-by: Dmitrii Merkurev <dimorinny at google.com>
> Cc: Ying-Chun Liu (PaulLiu) <paul.liu at linaro.org>
> Cc: Simon Glass <sjg at chromium.org>
> Сс: Joe Hershberger <joe.hershberger at ni.com>
> Сс: Ramon Fried <rfried.dev at gmail.com>
> ---
> cmd/fastboot.c | 29 +++++++++++++++++++++++++----
> doc/android/fastboot.rst | 8 +++++++-
> 2 files changed, 32 insertions(+), 5 deletions(-)
>
> diff --git a/cmd/fastboot.c b/cmd/fastboot.c
> index 3d5ff951eb..36f744ae01 100644
> --- a/cmd/fastboot.c
> +++ b/cmd/fastboot.c
> @@ -12,6 +12,7 @@
> #include <g_dnl.h>
> #include <fastboot.h>
> #include <net.h>
> +#include <net6.h>
> #include <usb.h>
> #include <watchdog.h>
> #include <linux/stringify.h>
> @@ -121,10 +122,23 @@ static int do_fastboot(struct cmd_tbl *cmdtp, int flag, int argc,
> {
> uintptr_t buf_addr = (uintptr_t)NULL;
> size_t buf_size = 0;
> + bool is_ipv6_only = false;
> + bool is_usb = false;
> + bool is_udp = false;
> + bool is_tcp = false;
>
> if (argc < 2)
> return CMD_RET_USAGE;
>
> + if (IS_ENABLED(CONFIG_IPV6)) {
> + use_ip6 = false;
> + /* IPv6 parameter has to be always *last* */
> + if (!strcmp(argv[argc - 1], USE_IP6_CMD_PARAM)) {
> + is_ipv6_only = true;
> + --argc;
> + }
> + }
> +
> while (argc > 1 && **(argv + 1) == '-') {
> char *arg = *++argv;
>
> @@ -159,11 +173,18 @@ NXTARG:
>
> fastboot_init((void *)buf_addr, buf_size);
>
> - if (!strcmp(argv[1], "udp"))
> + is_usb = strcmp(argv[1], "usb") == 0;
> + is_udp = strcmp(argv[1], "udp") == 0;
> + is_tcp = strcmp(argv[1], "tcp") == 0;
> +
> + if (is_ipv6_only && is_tcp)
> + use_ip6 = true;
> +
> + if (is_udp)
> return do_fastboot_udp(argc, argv, buf_addr, buf_size);
> - if (!strcmp(argv[1], "tcp"))
> + if (is_tcp)
> return do_fastboot_tcp(argc, argv, buf_addr, buf_size);
> - if (!strcmp(argv[1], "usb")) {
> + if (is_usb) {
> argv++;
> argc--;
> }
> @@ -174,7 +195,7 @@ NXTARG:
> U_BOOT_CMD(
> fastboot, CONFIG_SYS_MAXARGS, 1, do_fastboot,
> "run as a fastboot usb or udp device",
> - "[-l addr] [-s size] usb <controller> | udp\n"
> + "[-l addr] [-s size] usb <controller> | udp [-ipv6] | tcp [-ipv6]\n"
> "\taddr - address of buffer used during data transfers ("
> __stringify(CONFIG_FASTBOOT_BUF_ADDR) ")\n"
> "\tsize - size of buffer used during data transfers ("
> diff --git a/doc/android/fastboot.rst b/doc/android/fastboot.rst
> index 1ad8a897c8..aa6e9e5a9e 100644
> --- a/doc/android/fastboot.rst
> +++ b/doc/android/fastboot.rst
> @@ -181,13 +181,19 @@ Enter into fastboot by executing the fastboot command in U-Boot for either USB::
>
> => fastboot usb 0
>
> -or UDP::
> +UDP::
>
> => fastboot udp
> link up on port 0, speed 100, full duplex
> Using ethernet at 4a100000 device
> Listening for fastboot command on 192.168.0.102
>
> +or TCP::
> +
> + => fastboot tcp
> + Using ethernet at 4a100000 device
> + Listening for fastboot command on 192.168.0.102
> +
> On the client side you can fetch the bootloader version for instance::
>
> $ fastboot getvar version-bootloader
More information about the U-Boot
mailing list