All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ramon Fried <rfried.dev@gmail.com>
To: Stephan Gerhold <stephan@gerhold.net>
Cc: U-Boot Mailing List <u-boot@lists.denx.de>,
	Tom Rini <trini@konsulko.com>
Subject: Re: [PATCH v2 2/2] arm: mach-snapdrgon: misc: Simplify msm_generate_mac_addr()
Date: Tue, 3 Aug 2021 16:10:43 +0300	[thread overview]
Message-ID: <CAGi-RU+jwxYaKBRfHaqq5hCPasvsNkamJT3jJ_rX+FXRsu-=Fg@mail.gmail.com> (raw)
In-Reply-To: <20210803101238.35596-2-stephan@gerhold.net>

On Tue, Aug 3, 2021 at 1:12 PM Stephan Gerhold <stephan@gerhold.net> wrote:
>
> The logic in msm_generate_mac_addr() was originally taken from the LK
> bootloader where the serial number is a string and must be parsed first.
> However, in U-Boot msm_board_serial() returns an u32 and
> msm_generate_mac_addr() has quite complicated code that will first
> print it as a hex string and then immediately parse it again.
>
> What this function actually does at the end is to put the serial number
> encoded as big endian (the order used for the hex string) into the u8 *mac.
> Use put_unaligned_be32() to do that with bit shifts instead of going
> through the string format.
>
> This should be slightly more efficient and cleaner but does not result
> in any functional difference.
>
> Cc: Ramon Fried <rfried.dev@gmail.com>
> Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
> ---
>
> Changes in v2:
>   - Rebase on u-boot/master to fix conflict with recent changes
>   - Add comment to clarify what put_unaligned_be32() does here
>
>  arch/arm/mach-snapdragon/misc.c | 21 ++++++++++-----------
>  1 file changed, 10 insertions(+), 11 deletions(-)
>
> diff --git a/arch/arm/mach-snapdragon/misc.c b/arch/arm/mach-snapdragon/misc.c
> index fbd5f4d051..7d452f4529 100644
> --- a/arch/arm/mach-snapdragon/misc.c
> +++ b/arch/arm/mach-snapdragon/misc.c
> @@ -9,6 +9,7 @@
>  #include <common.h>
>  #include <mmc.h>
>  #include <asm/arch/misc.h>
> +#include <asm/unaligned.h>
>
>  /* UNSTUFF_BITS macro taken from Linux Kernel: drivers/mmc/core/sd.c */
>  #define UNSTUFF_BITS(resp, start, size) \
> @@ -41,16 +42,14 @@ u32 msm_board_serial(void)
>
>  void msm_generate_mac_addr(u8 *mac)
>  {
> -       int i;
> -       char sn[9];
> -
> -       snprintf(sn, 9, "%08x", msm_board_serial());
> -
> -       /* fill in the mac with serialno, use locally adminstrated pool */
> +       /* use locally adminstrated pool */
>         mac[0] = 0x02;
> -       mac[1] = 00;
> -       for (i = 3; i >= 0; i--) {
> -               mac[i + 2] = hextoul(&sn[2 * i], NULL);
> -               sn[2 * i] = 0;
> -       }
> +       mac[1] = 0x00;
> +
> +       /*
> +        * Put the 32-bit serial number in the last 32-bit of the MAC address.
> +        * Use big endian order so it is consistent with the serial number
> +        * written as a hexadecimal string, e.g. 0x1234abcd -> 02:00:12:34:ab:cd
> +        */
> +       put_unaligned_be32(msm_board_serial(), &mac[2]);
>  }
> --
> 2.32.0
>
Reviewed-by: Ramon Fried <rfried.dev@gmail.com>

  reply	other threads:[~2021-08-03 13:11 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-08-03 10:12 [PATCH v2 1/2] arm: mach-snapdragon: misc: Initialize eMMC if necessary Stephan Gerhold
2021-08-03 10:12 ` [PATCH v2 2/2] arm: mach-snapdrgon: misc: Simplify msm_generate_mac_addr() Stephan Gerhold
2021-08-03 13:10   ` Ramon Fried [this message]
2021-09-02 22:41   ` Tom Rini
2021-09-02 22:41 ` [PATCH v2 1/2] arm: mach-snapdragon: misc: Initialize eMMC if necessary Tom Rini

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='CAGi-RU+jwxYaKBRfHaqq5hCPasvsNkamJT3jJ_rX+FXRsu-=Fg@mail.gmail.com' \
    --to=rfried.dev@gmail.com \
    --cc=stephan@gerhold.net \
    --cc=trini@konsulko.com \
    --cc=u-boot@lists.denx.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.