mail archive of the barebox mailing list
 help / color / mirror / Atom feed
From: Oleksij Rempel <o.rempel@pengutronix.de>
To: barebox@lists.infradead.org
Cc: Oleksij Rempel <o.rempel@pengutronix.de>
Subject: [PATCH v2 09/10] net: lib: add ether_addr_inc() helper
Date: Mon,  2 Oct 2023 12:16:53 +0200	[thread overview]
Message-ID: <20231002101654.2373000-10-o.rempel@pengutronix.de> (raw)
In-Reply-To: <20231002101654.2373000-1-o.rempel@pengutronix.de>

Add helper function to calculate Ethernet address by incriminating it.
This helper can be used for multiport devices like switches to generate
address for each port based on one stored address.

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
---
 include/net.h |  1 +
 net/lib.c     | 25 +++++++++++++++++++++++++
 2 files changed, 26 insertions(+)

diff --git a/include/net.h b/include/net.h
index a0ef8bee04..fe82451cc9 100644
--- a/include/net.h
+++ b/include/net.h
@@ -360,6 +360,7 @@ int setenv_ip(const char *name, IPaddr_t ip);
 
 int string_to_ethaddr(const char *str, u8 enetaddr[6]);
 void ethaddr_to_string(const u8 enetaddr[6], char *str);
+void ether_addr_inc(u8 *dst_addr, const u8 *src_addr, u32 increment);
 
 #ifdef CONFIG_NET_RESOLV
 int resolv(const char *host, IPaddr_t *ip);
diff --git a/net/lib.c b/net/lib.c
index d4536441bd..dc7d83bc6d 100644
--- a/net/lib.c
+++ b/net/lib.c
@@ -44,6 +44,31 @@ void ethaddr_to_string(const u8 enetaddr[ETH_ALEN], char *str)
 		 enetaddr[4], enetaddr[5]);
 }
 
+/**
+ * ether_addr_inc - Increment an Ethernet address.
+ * @dst_addr: Destination address to store the incremented address.
+ * @src_addr: Source address to be incremented.
+ * @increment: Value by which to increment the source address.
+ *
+ * This function increments the given source Ethernet address by
+ * the specified increment value, storing the result in the
+ * destination address.
+ */
+void ether_addr_inc(u8 *dst_addr, const u8 *src_addr, u32 increment)
+{
+	u32 value;
+	int i;
+
+	for(i = 0; i < 6; ++i)
+		dst_addr[i] = src_addr[i];
+
+	for(i = 5; i >= 0 && increment; --i) {
+		value = dst_addr[i] + increment;
+		dst_addr[i] = value & 0xFF;
+		increment = value >> 8;
+	}
+}
+
 int string_to_ip(const char *s, IPaddr_t *ip)
 {
 	IPaddr_t addr = 0;
-- 
2.39.2




  parent reply	other threads:[~2023-10-02 10:18 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-02 10:16 [PATCH v2 00/10] SKOV maintenance Oleksij Rempel
2023-10-02 10:16 ` [PATCH v2 01/10] arm: dts: imx8mp-skov: Add reserved-memory for ramoops pstore Oleksij Rempel
2023-10-02 10:16 ` [PATCH v2 02/10] arm: dts: imx8mp-skov: Add pins for hardware variant detection Oleksij Rempel
2023-10-02 10:16 ` [PATCH v2 03/10] arm: dts: imx8mp-skov: Switch to GPT for eMMC partitioning Oleksij Rempel
2023-10-02 10:16 ` [PATCH v2 04/10] arm: dts: imx8mp-skov: Switch to GPT for SD partitioning Oleksij Rempel
2023-10-02 10:16 ` [PATCH v2 05/10] arm: dts: imx8mp-skov: Add barebox state backend in DTS Oleksij Rempel
2023-10-02 10:16 ` [PATCH v2 06/10] ARM: i.MX8MP: skov: refactor bootsource and BBU handlers Oleksij Rempel
2023-10-02 10:16 ` [PATCH v2 07/10] ARM: i.MX8MP: skov: Add hardware variant support Oleksij Rempel
2023-10-02 10:16 ` [PATCH v2 08/10] ARM: i.MX8MP: skov: fixup skov,imx8mp-board-version DT property for the kernel Oleksij Rempel
2023-10-02 10:16 ` Oleksij Rempel [this message]
2023-10-04  6:41   ` [PATCH v2 09/10] net: lib: add ether_addr_inc() helper Sascha Hauer
2023-10-05  6:48     ` Ahmad Fatoum
2023-10-05  7:07       ` Oleksij Rempel
2023-10-06 11:44         ` Sascha Hauer
2023-10-02 10:16 ` [PATCH v2 10/10] ARM: i.MX8MP: skov: assign Ethernet addresses to all ports Oleksij Rempel
2023-10-05  6:52   ` Ahmad Fatoum

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=20231002101654.2373000-10-o.rempel@pengutronix.de \
    --to=o.rempel@pengutronix.de \
    --cc=barebox@lists.infradead.org \
    /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