diff mbox series

[v3,3/3] cmd: rng: Add rng list command

Message ID 20240131141426.34926-4-o451686892@gmail.com
State Changes Requested
Delegated to: Tom Rini
Headers show
Series Random Number Generator fixes | expand

Commit Message

Weizhao Ouyang Jan. 31, 2024, 2:14 p.m. UTC
The 'rng list' command probes all RNG devices and list those devices
that are successfully probed. Also update the help info.

Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Signed-off-by: Weizhao Ouyang <o451686892@gmail.com>
---
 cmd/rng.c | 23 ++++++++++++++++++-----
 1 file changed, 18 insertions(+), 5 deletions(-)

Comments

Matthias Brugger Jan. 31, 2024, 5:06 p.m. UTC | #1
On Wed, Jan 31, 2024 at 02:14:26PM +0000, Weizhao Ouyang wrote:
> The 'rng list' command probes all RNG devices and list those devices
> that are successfully probed. Also update the help info.
> 
> Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
> Signed-off-by: Weizhao Ouyang <o451686892@gmail.com>

Reviewed-by: Matthias Brugger <mbrugger@suse.com>

> ---
>  cmd/rng.c | 23 ++++++++++++++++++-----
>  1 file changed, 18 insertions(+), 5 deletions(-)
> 
> diff --git a/cmd/rng.c b/cmd/rng.c
> index 52f722c7af..b073a6c849 100644
> --- a/cmd/rng.c
> +++ b/cmd/rng.c
> @@ -19,6 +19,22 @@ static int do_rng(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
>  	struct udevice *dev;
>  	int ret = CMD_RET_SUCCESS;
>  
> +	if (argc == 2 && !strcmp(argv[1], "list")) {
> +		int idx = 0;
> +
> +		uclass_foreach_dev_probe(UCLASS_RNG, dev) {
> +			idx++;
> +			printf("RNG #%d - %s\n", dev->seq_, dev->name);
> +		}
> +
> +		if (!idx) {
> +			log_err("No RNG device\n");
> +			return CMD_RET_FAILURE;
> +		}
> +
> +		return CMD_RET_SUCCESS;
> +	}
> +
>  	switch (argc) {
>  	case 1:
>  		devnum = 0;
> @@ -56,12 +72,9 @@ static int do_rng(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
>  	return ret;
>  }
>  
> -U_BOOT_LONGHELP(rng,
> -	"[dev [n]]\n"
> -	"  - print n random bytes(max 64) read from dev\n");
> -
>  U_BOOT_CMD(
>  	rng, 3, 0, do_rng,
>  	"print bytes from the hardware random number generator",
> -	rng_help_text
> +	"list         - list all the probed rng devices\n"
> +	"rng [dev] [n]    - print n random bytes(max 64) read from dev\n"
>  );
> -- 
> 2.39.2
Igor Opaniuk Feb. 1, 2024, 2:32 p.m. UTC | #2
Reviewed-by: Igor Opaniuk <igor.opaniuk@foundries.io>

On Wed, Jan 31, 2024 at 3:15 PM Weizhao Ouyang <o451686892@gmail.com> wrote:
>
> The 'rng list' command probes all RNG devices and list those devices
> that are successfully probed. Also update the help info.
>
> Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
> Signed-off-by: Weizhao Ouyang <o451686892@gmail.com>
> ---
>  cmd/rng.c | 23 ++++++++++++++++++-----
>  1 file changed, 18 insertions(+), 5 deletions(-)
>
> diff --git a/cmd/rng.c b/cmd/rng.c
> index 52f722c7af..b073a6c849 100644
> --- a/cmd/rng.c
> +++ b/cmd/rng.c
> @@ -19,6 +19,22 @@ static int do_rng(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
>         struct udevice *dev;
>         int ret = CMD_RET_SUCCESS;
>
> +       if (argc == 2 && !strcmp(argv[1], "list")) {
> +               int idx = 0;
> +
> +               uclass_foreach_dev_probe(UCLASS_RNG, dev) {
> +                       idx++;
> +                       printf("RNG #%d - %s\n", dev->seq_, dev->name);
> +               }
> +
> +               if (!idx) {
> +                       log_err("No RNG device\n");
> +                       return CMD_RET_FAILURE;
> +               }
> +
> +               return CMD_RET_SUCCESS;
> +       }
> +
>         switch (argc) {
>         case 1:
>                 devnum = 0;
> @@ -56,12 +72,9 @@ static int do_rng(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
>         return ret;
>  }
>
> -U_BOOT_LONGHELP(rng,
> -       "[dev [n]]\n"
> -       "  - print n random bytes(max 64) read from dev\n");
> -
>  U_BOOT_CMD(
>         rng, 3, 0, do_rng,
>         "print bytes from the hardware random number generator",
> -       rng_help_text
> +       "list         - list all the probed rng devices\n"
> +       "rng [dev] [n]    - print n random bytes(max 64) read from dev\n"
>  );
> --
> 2.39.2
>
Tom Rini Feb. 5, 2024, 6:14 p.m. UTC | #3
On Wed, Jan 31, 2024 at 02:14:26PM +0000, Weizhao Ouyang wrote:

> The 'rng list' command probes all RNG devices and list those devices
> that are successfully probed. Also update the help info.
> 
> Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
> Signed-off-by: Weizhao Ouyang <o451686892@gmail.com>
> Reviewed-by: Matthias Brugger <mbrugger@suse.com>
> Reviewed-by: Igor Opaniuk <igor.opaniuk@foundries.io>
> ---
>  cmd/rng.c | 23 ++++++++++++++++++-----
>  1 file changed, 18 insertions(+), 5 deletions(-)

Please update doc/usage/cmd/rng.rst as well, thanks.
Weizhao Ouyang Feb. 6, 2024, 8:24 a.m. UTC | #4
Hi Tom,

On Tue, Feb 6, 2024 at 2:14 AM Tom Rini <trini@konsulko.com> wrote:
>
> On Wed, Jan 31, 2024 at 02:14:26PM +0000, Weizhao Ouyang wrote:
>
> > The 'rng list' command probes all RNG devices and list those devices
> > that are successfully probed. Also update the help info.
> >
> > Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
> > Signed-off-by: Weizhao Ouyang <o451686892@gmail.com>
> > Reviewed-by: Matthias Brugger <mbrugger@suse.com>
> > Reviewed-by: Igor Opaniuk <igor.opaniuk@foundries.io>
> > ---
> >  cmd/rng.c | 23 ++++++++++++++++++-----
> >  1 file changed, 18 insertions(+), 5 deletions(-)
>
> Please update doc/usage/cmd/rng.rst as well, thanks.

Ok, I will update it.

BR,
Weizhao

>
> --
> Tom
diff mbox series

Patch

diff --git a/cmd/rng.c b/cmd/rng.c
index 52f722c7af..b073a6c849 100644
--- a/cmd/rng.c
+++ b/cmd/rng.c
@@ -19,6 +19,22 @@  static int do_rng(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
 	struct udevice *dev;
 	int ret = CMD_RET_SUCCESS;
 
+	if (argc == 2 && !strcmp(argv[1], "list")) {
+		int idx = 0;
+
+		uclass_foreach_dev_probe(UCLASS_RNG, dev) {
+			idx++;
+			printf("RNG #%d - %s\n", dev->seq_, dev->name);
+		}
+
+		if (!idx) {
+			log_err("No RNG device\n");
+			return CMD_RET_FAILURE;
+		}
+
+		return CMD_RET_SUCCESS;
+	}
+
 	switch (argc) {
 	case 1:
 		devnum = 0;
@@ -56,12 +72,9 @@  static int do_rng(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
 	return ret;
 }
 
-U_BOOT_LONGHELP(rng,
-	"[dev [n]]\n"
-	"  - print n random bytes(max 64) read from dev\n");
-
 U_BOOT_CMD(
 	rng, 3, 0, do_rng,
 	"print bytes from the hardware random number generator",
-	rng_help_text
+	"list         - list all the probed rng devices\n"
+	"rng [dev] [n]    - print n random bytes(max 64) read from dev\n"
 );