
Reviewed-by: Ying-Chun Liu (PaulLiu) paul.liu@linaro.org
On Tue, 9 May 2023 at 01:16, Dmitrii Merkurev dimorinny@google.com wrote:
Command to start IP6 only TCP fastboot: fastboot tcp -ipv6
Signed-off-by: Dmitrii Merkurev dimorinny@google.com Cc: Ying-Chun Liu (PaulLiu) paul.liu@linaro.org Cc: Simon Glass sjg@chromium.org Сс: Joe Hershberger joe.hershberger@ni.com Сс: Ramon Fried rfried.dev@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@4a100000 device Listening for fastboot command on 192.168.0.102
+or TCP::
- => fastboot tcp
- Using ethernet@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
-- 2.40.1.521.gf1e218fcd8-goog