On Fri, Jan 22, 2021 at 09:59:47AM -0600, George McCollister wrote: > diff --git a/net/dsa/slave.c b/net/dsa/slave.c > index f2fb433f3828..fc7e3ff11c5c 100644 > --- a/net/dsa/slave.c > +++ b/net/dsa/slave.c > @@ -1924,6 +1924,19 @@ static int dsa_slave_changeupper(struct net_device > *dev, > dsa_port_lag_leave(dp, info->upper_dev); > err = NOTIFY_OK; > } > + } else if (netif_is_hsr_master(info->upper_dev)) { > + if (info->linking) { > + err = dsa_port_hsr_join(dp, info->upper_dev); > + if (err == -EOPNOTSUPP) { > + NL_SET_ERR_MSG_MOD(info->info.extack, > + "Offloading not supported"); > + err = 0; > + } > + err = notifier_from_errno(err); > + } else { > + dsa_port_hsr_leave(dp, info->upper_dev); > + err = NOTIFY_OK; > + } > }
How is the RedBox use case handled with the Linux hsr driver (i.e. a HSR-unaware SAN endpoint attached to a HSR ring)? I would expect something like this: +---------+ | | | SAN | | | +---------+ | | | +-----------------+---------+------------------+ | | | | | Your | swp0 | | | board | | | | +---------+ | | | ^ | | | | | | | | br0 | | | | | | v | | | +-----------------------------+ | | | | | | | hsr0 | | | | | | | +---------+---------+---------+ | | | | | | | | | swp1 | DAN-H | swp2 | | | | | | | | +-------+---------+---------+---------+--------+ | ^ | ^ to/from | | | | to/from ring | | | | ring v | v | Therefore, aren't you interested in offloading this setup as well? I.e. the case where the hsr0 interface joins a bridge that also contains other DSA switch ports. This would be similar to the LAG offload recently added by Tobias.