mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-18 06:15:12 +00:00
net: dsa: notify drivers of MAC address changes on user ports
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 <vladimir.oltean@nxp.com> Signed-off-by: Lukasz Majewski <lukma@denx.de> Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com> Reviewed-by: Vladimir Oltean <vladimir.oltean@nxp.com> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
parent
fefe5dc4af
commit
6715042cd1
@ -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
|
||||
|
@ -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.
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user