Re: [PATCH v3 RESEND] net: hsr: Provide RedBox support

From: Ratheesh Kannoth
Date: Tue Mar 26 2024 - 23:36:34 EST


On 2024-03-26 at 14:32:20, Lukasz Majewski (lukma@xxxxxxx) wrote:
> --- a/net/hsr/hsr_device.h
> +++ b/net/hsr/hsr_device.h
> @@ -16,8 +16,8 @@
> void hsr_del_ports(struct hsr_priv *hsr);
> void hsr_dev_setup(struct net_device *dev);
> int hsr_dev_finalize(struct net_device *hsr_dev, struct net_device *slave[2],
> - unsigned char multicast_spec, u8 protocol_version,
> - struct netlink_ext_ack *extack);
> + struct net_device *interlink, unsigned char multicast_spec,
> + u8 protocol_version, struct netlink_ext_ack *extack);
> void hsr_check_carrier_and_operstate(struct hsr_priv *hsr);
> int hsr_get_max_mtu(struct hsr_priv *hsr);
> #endif /* __HSR_DEVICE_H */
> diff --git a/net/hsr/hsr_forward.c b/net/hsr/hsr_forward.c
> index 5d68cb181695..7c5a4bda1cca 100644
> --- a/net/hsr/hsr_forward.c
> +++ b/net/hsr/hsr_forward.c
> @@ -377,6 +377,15 @@ static int hsr_xmit(struct sk_buff *skb, struct hsr_port *port,
> */
> ether_addr_copy(eth_hdr(skb)->h_source, port->dev->dev_addr);
> }
> +
> + /* When HSR node is used as RedBox - the frame received from HSR ring
> + * requires source MAC address (SA) replacement to one which can be
> + * recognized by SAN devices (otherwise, frames are dropped by switch)
> + */
> + if (port->type == HSR_PT_INTERLINK)
> + memcpy(&eth_hdr(skb)->h_source, port->hsr->macaddress_redbox,
> + ETH_ALEN);
why not ether_addr_copy here too ?