diff options
| author | Fernando Fernandez Mancera <ffmancera@riseup.net> | 2025-04-09 12:19:11 +0200 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2025-04-14 12:40:06 +0100 |
| commit | b65999e7238e6f2a48dc77c8c2109c48318ff41b (patch) | |
| tree | 105a9d2421f612460ba650560b107e276b2c52cf /net/hsr/hsr_main.c | |
| parent | 6a325aed130bb68790e765f923e76ec5669d2da7 (diff) | |
net: hsr: sync hw addr of slave2 according to slave1 hw addr on PRP
In order to work properly PRP requires slave1 and slave2 to share the
same MAC address. To ease the configuration process on userspace tools,
sync the slave2 MAC address with slave1. In addition, when deleting the
port from the list, restore the original MAC address.
Signed-off-by: Fernando Fernandez Mancera <ffmancera@riseup.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/hsr/hsr_main.c')
| -rw-r--r-- | net/hsr/hsr_main.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/net/hsr/hsr_main.c b/net/hsr/hsr_main.c index d7ae32473c41..192893c3f2ec 100644 --- a/net/hsr/hsr_main.c +++ b/net/hsr/hsr_main.c @@ -78,6 +78,15 @@ static int hsr_netdev_notify(struct notifier_block *nb, unsigned long event, eth_hw_addr_set(master->dev, dev->dev_addr); call_netdevice_notifiers(NETDEV_CHANGEADDR, master->dev); + + if (hsr->prot_version == PRP_V1) { + port = hsr_port_get_hsr(hsr, HSR_PT_SLAVE_B); + if (port) { + eth_hw_addr_set(port->dev, dev->dev_addr); + call_netdevice_notifiers(NETDEV_CHANGEADDR, + port->dev); + } + } } /* Make sure we recognize frames from ourselves in hsr_rcv() */ |