From: Olliver Schinagl <o.schinagl@ultimaker.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2 5/5] tools: Add tool to add crc8 to a mac address
Date: Tue, 26 Jan 2016 17:27:17 +0100 [thread overview]
Message-ID: <56A79E65.9020901@ultimaker.com> (raw)
In-Reply-To: <CANr=Z=aumsXKqrrgOwDFTM4PAHYQWNnHJNYvA6ZiLGu2X2q7HQ@mail.gmail.com>
Hey Joe,
On 26-01-16 01:45, Joe Hershberger wrote:
> On Mon, Dec 14, 2015 at 6:41 AM, Olliver Schinagl
> <o.schinagl@ultimaker.com> wrote:
>> This patch adds a little tool that takes a generic MAC address and
>> generates a CRC byte for it. The output is the full MAC address without
>> any separators, ready written into an EEPROM.
>>
>> Signed-off-by: Olliver Schinagl <o.schinagl@ultimaker.com>
>> ---
>> tools/Makefile | 4 ++++
>> tools/gen_mac_addr.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
>> 2 files changed, 55 insertions(+)
>> create mode 100644 tools/gen_mac_addr.c
>>
>> diff --git a/tools/Makefile b/tools/Makefile
>> index 4a50744..6191c26 100644
>> --- a/tools/Makefile
>> +++ b/tools/Makefile
>> @@ -43,6 +43,10 @@ envcrc-objs := envcrc.o lib/crc32.o common/env_embedded.o lib/sha1.o
>> hostprogs-$(CONFIG_CMD_NET) += gen_eth_addr
>> HOSTCFLAGS_gen_eth_addr.o := -pedantic
>>
>> +hostprogs-$(CONFIG_CMD_NET) += gen_mac_addr
>> +gen_mac_addr-objs := gen_mac_addr.o lib/crc8.o
>> +HOSTCFLAGS_gen_mac_addr.o := -pedantic
>> +
>> hostprogs-$(CONFIG_CMD_LOADS) += img2srec
>> HOSTCFLAGS_img2srec.o := -pedantic
>>
>> diff --git a/tools/gen_mac_addr.c b/tools/gen_mac_addr.c
>> new file mode 100644
>> index 0000000..bd8688f
>> --- /dev/null
>> +++ b/tools/gen_mac_addr.c
> This is not "generating a mac address", right? Its point is to create
> a CRC for the user-supplied MAC address.
>
> Perhaps a better name would be "gen_ethaddr_rom_crc".
Yes, it takes a mac address as input and generates a macaddress + crc as
output.
e.g. 11:22:33:44:55:66 -> 0x11 0x22 0x33 0x44 0x55 0x66 0x77 0xcc
But maybe it should get some flags to output either both (as described
here) or just the crc based on the input, and then a few flags to either
output it in hex format or as an int?
>
>> @@ -0,0 +1,51 @@
>> +/*
>> + * (C) Copyright 2016
>> + * Olliver Schinagl <o.schinagl@ultimaker.com>
>> + *
>> + * SPDX-License-Identifier: GPL-2.0+
>> + */
>> +
>> +#include <ctype.h>
>> +#include <stdint.h>
>> +#include <stdio.h>
>> +#include <stdlib.h>
>> +#include <string.h>
>> +#include <u-boot/crc.h>
>> +
>> +
>> +int main(int argc, char *argv[])
>> +{
>> + uint_fast8_t i;
>> + uint8_t mac_addr[7] = { 0x00 };
>> +
>> + if (argc < 2) {
>> + puts("Please supply a MAC address.");
>> + return -1;
>> + }
>> +
>> + if (!((strlen(argv[1]) == 12) || (strlen(argv[1]) == 17))) {
>> + puts("Please supply a valid MAC address with optionaly\n"
>> + "dashes (-) or colons (:) as seperators.");
>> + return -1;
>> + }
> You could use the eth_validate_ethaddr_str() function here instead of this code.
A right, well when I first wrote this, I think this didn't exist there
yet. I'll replace it and use it instead.
>
>> +
>> + i = 0;
>> + while (*argv[1] != '\0') {
>> + char nibble[2] = { 0x00, '\n' }; /* for strtol */
>> +
>> + nibble[0] = *argv[1]++;
>> + if (isxdigit(nibble[0])) {
>> + if (isupper(nibble[0]))
>> + nibble[0] = tolower(nibble[0]);
>> + mac_addr[i >> 1] |= strtol(nibble, NULL, 16) << ((i % 2) ? 0 : 4) & ((i % 2) ? 0x0f : 0xf0);
>> + i++;
>> + }
>> + }
> Instead of all this you could just compile in (maybe it already is?)
> the eth_parse_enetaddr() function that U-Boot uses for this very
> purpose.
I'll see if I can have access to this function and then rewrite this to
use that.
>
>> + mac_addr[6] = crc8(mac_addr, 6);
>> +
>> + for (i = 0; i < 7; i++)
>> + printf("%.2x", mac_addr[i]);
>> + putchar('\n');
>> +
>> + return 0;
>> +}
>> --
>> 2.6.2
>>
>> _______________________________________________
>> U-Boot mailing list
>> U-Boot at lists.denx.de
>> http://lists.denx.de/mailman/listinfo/u-boot
--
Met vriendelijke groeten, Kind regards, ??????
Olliver Schinagl
Software Engineer
Research & Development
Ultimaker B.V.
next prev parent reply other threads:[~2016-01-26 16:27 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-14 12:41 [U-Boot] [PATCH v2 0/5] Retrieve MAC address from EEPROM Olliver Schinagl
2015-12-14 12:41 ` [U-Boot] [PATCH v2 1/5] net: Add ability to set MAC address via EEPROM to Kconfig Olliver Schinagl
2016-01-25 22:59 ` Joe Hershberger
2015-12-14 12:41 ` [U-Boot] [PATCH v2 2/5] sunxi: net: Allow the sunxi to set the MAC from an EEPROM Olliver Schinagl
2016-01-26 0:32 ` Joe Hershberger
2016-01-26 16:10 ` Olliver Schinagl
2016-01-26 16:23 ` Joe Hershberger
2016-01-26 16:35 ` Olliver Schinagl
2016-01-26 17:57 ` Joe Hershberger
2015-12-14 12:41 ` [U-Boot] [PATCH v2 3/5] sunxi: net: Enable eeprom on OLinuXino Lime2 boards Olliver Schinagl
2016-01-26 0:34 ` Joe Hershberger
2016-01-26 16:11 ` Olliver Schinagl
2015-12-14 12:41 ` [U-Boot] [PATCH v2 4/5] tools: Allow crc8 to be used Olliver Schinagl
2016-01-26 0:36 ` Joe Hershberger
2015-12-14 12:41 ` [U-Boot] [PATCH v2 5/5] tools: Add tool to add crc8 to a mac address Olliver Schinagl
2016-01-26 0:45 ` Joe Hershberger
2016-01-26 13:15 ` Albert ARIBAUD
2016-01-26 14:56 ` Joe Hershberger
2016-01-26 16:31 ` Olliver Schinagl
2016-01-26 18:01 ` Joe Hershberger
2016-01-26 16:27 ` Olliver Schinagl [this message]
2016-01-26 16:31 ` Joe Hershberger
2016-01-26 16:36 ` Olliver Schinagl
2016-01-26 17:58 ` Joe Hershberger
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=56A79E65.9020901@ultimaker.com \
--to=o.schinagl@ultimaker.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox