diff mbox series

[v2,5/6] net: add fastboot TCP documentation and IP6-only mode

Message ID 20230510165959.2228978-5-dimorinny@google.com
State Superseded
Delegated to: Ramon Fried
Headers show
Series [v2,1/6] net: split IP_TCP header into separate IP/IP6 and TCP headers | expand

Commit Message

Dmitrii Merkurev May 10, 2023, 4:59 p.m. UTC
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(-)

Comments

Paul Liu July 14, 2023, 3:43 p.m. UTC | #1
Reviewed-by: Ying-Chun Liu (PaulLiu) <paul.liu@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@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
Simon Glass July 23, 2023, 3:48 a.m. UTC | #2
Hi Dmitrii,

On Wed, 10 May 2023 at 11:00, 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(-)

Reviewed-by: Simon Glass <sjg@chromium.org>

Can you please add a doc/usage/cmd/fastboot.rst as well? Can be a
separate patch.

Regards,
Simon
Dmitrii Merkurev July 25, 2023, 10:08 p.m. UTC | #3
>
> Can you please add a doc/usage/cmd/fastboot.rst as well? Can be a
> separate patch.


Added in the v3 version of this patch. Since we already have detailed
`doc/android/fastboot.rst`, I created a short version here
`doc/usage/cmd/fastboot.rst` which refers to android documentation.

On Sun, Jul 23, 2023 at 4:49 AM Simon Glass <sjg@chromium.org> wrote:

> Hi Dmitrii,
>
> On Wed, 10 May 2023 at 11:00, 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(-)
>
> Reviewed-by: Simon Glass <sjg@chromium.org>
>
> Can you please add a doc/usage/cmd/fastboot.rst as well? Can be a
> separate patch.
>
> Regards,
> Simon
>
diff mbox series

Patch

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