Message ID | 20231013122405.3745475-1-o.rempel@pengutronix.de |
---|---|
Headers | show |
Series | net: dsa: microchip: provide Wake on LAN support | expand |
On Fri, Oct 13, 2023 at 02:23:59PM +0200, Oleksij Rempel wrote: > Add the missing offset for the global MAC address register > (REG_SW_MAC_ADDR) for the ksz8863 family of switches. > > Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Andrew
On Fri, Oct 13, 2023 at 02:24:00PM +0200, Oleksij Rempel wrote: > Set a unique global MAC address for each switch on the network at system > startup by syncing the switch's global MAC address with the Ethernet > address of the DSA master interface. This is crucial for supporting > Wake-on-LAN (WoL) functionality, as it requires a unique address for > each switch. > > Although the operation is performed only at system start and won't sync > if the master Ethernet address changes dynamically, it lays the > groundwork for WoL support by ensuring a unique MAC address for each > switch. I've not been following this patchset, so sorry if i make points others have asked on earlier versions. Maybe it would be good to add that the hardware only supports one MAC address for all ports for WoL, and its this address. At least that is my assumption. > + * ksz_cmn_set_default_switch_mac_addr - Set the switch's global MAC address > + * from master port. Florian is doing a search replace to make use of the word `conduit`. > @@ -3572,8 +3633,6 @@ static int ksz_switch_macaddr_get(struct dsa_switch *ds, int port, > const unsigned char *addr = slave->dev_addr; and this might need to change to user?
On Fri, Oct 13, 2023 at 02:24:02PM +0200, Oleksij Rempel wrote: > KSZ9477 family of switches supports multiple PHY events: > - wake on Link Up > - wake on Energy Detect. > Since current UAPI can't differentiate between this PHY events, map all of them > to WAKE_PHY. I assume link up and energy detect work without doing a MAC address comparison? So maybe these should be added first, and then handle WAKE_MAGIC and setting the global MAC address, and verifying it matches the user interface MAC address? Andrew
On 10/13/2023 5:23 AM, Oleksij Rempel wrote: > Add the missing offset for the global MAC address register > (REG_SW_MAC_ADDR) for the ksz8863 family of switches. > > Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
On 10/13/2023 5:32 AM, Vladimir Oltean wrote: > On Fri, Oct 13, 2023 at 02:24:00PM +0200, Oleksij Rempel wrote: >> Set a unique global MAC address for each switch on the network at system >> startup by syncing the switch's global MAC address with the Ethernet >> address of the DSA master interface. This is crucial for supporting >> Wake-on-LAN (WoL) functionality, as it requires a unique address for >> each switch. >> >> Although the operation is performed only at system start and won't sync >> if the master Ethernet address changes dynamically, it lays the >> groundwork for WoL support by ensuring a unique MAC address for each >> switch. >> >> Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> >> --- > > Why not take the MAC address of the user port at ksz9477_set_wol() time, > and use the existing ksz_switch_macaddr_get() API that was just added so > that this use case could work? Agreed we do that in a number of Ethernet MAC and PHY drivers FWIW (net_device::dev_addr).
On Sun, Oct 15, 2023 at 02:18:43PM -0700, Florian Fainelli wrote: > > > On 10/13/2023 5:32 AM, Vladimir Oltean wrote: > > On Fri, Oct 13, 2023 at 02:24:00PM +0200, Oleksij Rempel wrote: > > > Set a unique global MAC address for each switch on the network at system > > > startup by syncing the switch's global MAC address with the Ethernet > > > address of the DSA master interface. This is crucial for supporting > > > Wake-on-LAN (WoL) functionality, as it requires a unique address for > > > each switch. > > > > > > Although the operation is performed only at system start and won't sync > > > if the master Ethernet address changes dynamically, it lays the > > > groundwork for WoL support by ensuring a unique MAC address for each > > > switch. > > > > > > Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> > > > --- > > > > Why not take the MAC address of the user port at ksz9477_set_wol() time, > > and use the existing ksz_switch_macaddr_get() API that was just added so > > that this use case could work? > > Agreed we do that in a number of Ethernet MAC and PHY drivers FWIW > (net_device::dev_addr). > -- > Florian To be clear (to Oleksij), the request is for WoL to use the same runtime management of the global MAC address (ksz_switch_macaddr_get) as HSR, and also extend ksz_port_set_mac_address() to deny address changes to a port with WoL active. Thus, multiple user ports could have WoL enabled as long as they share the same MAC address. MAC address changes are also possible while WoL is not enabled. I guess wol->supported should only get set on those user ports which have the same MAC address as the global MAC address (if a global MAC address is configured), or on all user ports (if there is none).