On Fri, Oct 20, 2023 at 11:23:50AM +0300, Vladimir Oltean wrote: > On Fri, Oct 20, 2023 at 07:08:56AM +0200, Oleksij Rempel wrote: > > On Thu, Oct 19, 2023 at 08:29:53PM +0300, Vladimir Oltean wrote: > > > I don't get it, why do you release the reference on the MAC address as > > > soon as you successfully get it? Without a reference held, the > > > programmed address still lingers on, but the HSR offload code, on a > > > different port with a different MAC address, can change it and break WoL. > > > > It is ksz9477_get_wol() function. We do not actually need to program > > here the MAC address, we only need to test if we would be able to get > > it. To show the use more or less correct information on WoL > > capabilities. For example, instead showing the user that Wake on Magic > > is supported, where we already know that is not the case, we can already > > show correct information. May be it will be better to have > > extra option for ksz_switch_macaddr_get() to not allocate and do the > > refcounting or have a separate function. > > Ah, yes, it is from get_wol(). Maybe a ksz_switch_macaddr_tryget(ds, port) > which returns bool (true if dev->switch_macaddr is NULL, or if non-NULL > and ether_addr_equal(dev->switch_macaddr->addr, port addr))? Hmm, I've checked other uses of the "tryget" name in the kernel and their semantics all seem to imply that upon success, a reference is acquired. That would not be the case here, so the naming would be confusing. How about a bool ksz_switch_macaddr_check(ds, port)?