Subject: Re: [PATCH net-next v2 1/9] selftests: hsr: Add ping test for PRP

From: Felix Maurer <[email-masked]>
Date: Tue, 3 Feb 2026 13:23:50 +0100

On Tue, Feb 03, 2026 at 12:55:26PM +0100, Sebastian Andrzej Siewior wrote:
> On 2026-02-03 11:12:36 [+0100], Felix Maurer wrote:
> > On Mon, Feb 02, 2026 at 04:55:10PM +0100, Sebastian Andrzej Siewior wrote:
> > > On 2026-02-02 12:51:12 [+0100], Felix Maurer wrote:
> > > > > Hm, I am not sure? For PRP, it's an explicit requirement to use the same
> > > > > MAC addresses for both ports. For HSR, I think the standard is less
> > > > > clear about the MAC addresses. And at least our code seems to assume
> > > > > that there could be different MACs on the two interfaces of a node? But
> > > > > yes, the node merging addresses this.
> > > >
> > > > I'm still not 100% certain, but I agree that the standard reads more
> > > > like the MAC addresses should be the same for the two HSR ports. At the
> > > > moment, the kernel and the test assumes that they can/should be
> > > > different. Therefore, I think we should fix this across the board in
> > > > another patchset if we agree that's the right thing to do.
> > >
> > > I would suggest to do so. This could serve as bad example and my PTP
> > > userland patches expect the same MAC on both ports. So ;)
> >
> > I'll put it on my list for another patchset :)
> > But this of course brings up how the MAC addresses should be handled on
> > the HSR interfaces in general. At the moment, for HSR we copy the MAC of
> > portA to master. For PRP, the MAC of portA is copied to master and
> > portB.
> >
> > If the MACs should be the same for both ports of an HSR interface,
> > should we set them when creating the HSR interface, similarly to PRP?
> We do this?

We didn't always do this, but since b65999e7238e ("net: hsr: sync hw
addr of slave2 according to slave1 hw addr on PRP"), we are doing this
for PRP.

> > And does it make sense to copy from portA (feels somewhat arbitrary to
> > me) or would it be cleaner to copy from master to portA and portB?
>
> I do
> | ip link set $portA down
> | ip link set $portB down
> | ip link set dev $portA address $mac
> | ip link set dev $portB address $mac
> | ip link add name $if type hsr slave1 $portA slave2 $portB supervision 45 version 1
>
> and then up, up, up to get up the three interfaces functional. $mac is
> the MAC $portA.
>
> On the other hand it shouldn't matter because while adding the HSR tag,
> the MAC of the hsr interface should be taken but somehow I observed that
> packets, which originate on the $portB interface have the MAC address of
> this interface. So I did this and forgot about it later…
> But then hardware offloading might behave different if it considers the
> address of the interface so it might required to set the MAC address.
>
> I am uncertain what the best practice would be here.
> Forcing the MAC of portA to portB could be done at setup phase by the
> stack but would require that the interface is down…

I think that's a pretty common series of setup steps, yes. But as even
we are not sure how the MAC addresses should be set, I think we should
not expect that users will configure this correctly, but do the right
thing(tm) automatically.

But like you, I'm uncertain what would be the right thing to do and
which port should control the MAC for all the others.

Thanks,
   Felix