2023-09-20 13:54:57

by Lukasz Majewski

[permalink] [raw]
Subject: [PATCH v5 net-next 2/5] net: dsa: notify drivers of MAC address changes on user ports

From: Vladimir Oltean <[email protected]>

In some cases, drivers may need to veto the changing of a MAC address on
a user port. Such is the case with KSZ9477 when it offloads a HSR device,
because it programs the MAC address of multiple ports to a shared
hardware register. Those ports need to have equal MAC addresses for the
lifetime of the HSR offload.

Signed-off-by: Vladimir Oltean <[email protected]>
Signed-off-by: Lukasz Majewski <[email protected]>

---
Changes for v5:
- New patch
---
include/net/dsa.h | 10 ++++++++++
net/dsa/slave.c | 7 +++++++
2 files changed, 17 insertions(+)

diff --git a/include/net/dsa.h b/include/net/dsa.h
index 426724808e76..d98439ea6146 100644
--- a/include/net/dsa.h
+++ b/include/net/dsa.h
@@ -969,6 +969,16 @@ struct dsa_switch_ops {
struct phy_device *phy);
void (*port_disable)(struct dsa_switch *ds, int port);

+
+ /*
+ * Notification for MAC address changes on user ports. Drivers can
+ * currently only veto operations. They should not use the method to
+ * program the hardware, since the operation is not rolled back in case
+ * of other errors.
+ */
+ int (*port_set_mac_address)(struct dsa_switch *ds, int port,
+ const unsigned char *addr);
+
/*
* Compatibility between device trees defining multiple CPU ports and
* drivers which are not OK to use by default the numerically smallest
diff --git a/net/dsa/slave.c b/net/dsa/slave.c
index 2b3d89b77121..4c3e502d7e16 100644
--- a/net/dsa/slave.c
+++ b/net/dsa/slave.c
@@ -457,6 +457,13 @@ static int dsa_slave_set_mac_address(struct net_device *dev, void *a)
if (!is_valid_ether_addr(addr->sa_data))
return -EADDRNOTAVAIL;

+ if (ds->ops->port_set_mac_address) {
+ err = ds->ops->port_set_mac_address(ds, dp->index,
+ addr->sa_data);
+ if (err)
+ return err;
+ }
+
/* If the port is down, the address isn't synced yet to hardware or
* to the DSA master, so there is nothing to change.
*/
--
2.20.1


2023-09-21 21:27:10

by Florian Fainelli

[permalink] [raw]
Subject: Re: [PATCH v5 net-next 2/5] net: dsa: notify drivers of MAC address changes on user ports

On 9/20/23 04:43, Lukasz Majewski wrote:
> From: Vladimir Oltean <[email protected]>
>
> In some cases, drivers may need to veto the changing of a MAC address on
> a user port. Such is the case with KSZ9477 when it offloads a HSR device,
> because it programs the MAC address of multiple ports to a shared
> hardware register. Those ports need to have equal MAC addresses for the
> lifetime of the HSR offload.
>
> Signed-off-by: Vladimir Oltean <[email protected]>
> Signed-off-by: Lukasz Majewski <[email protected]>

Reviewed-by: Florian Fainelli <[email protected]>
--
Florian