On Wed, Dec 02, 2020 at 10:13:54AM +0100, Tobias Waldekranz wrote: > +static int dsa_slave_check_lag_upper(struct net_device *dev) > +{ > + struct dsa_port *dp = dsa_slave_to_port(dev); > + struct dsa_switch_tree *dst = dp->ds->dst; > + > + if (!dsa_lag_offloading(dst)) > + return NOTIFY_DONE; > + > + if (dsa_lag_by_dev(dst, dev)) > + return NOTIFY_OK; > + > + if (!dsa_lag_available(dst)) > + return notifier_from_errno(-EBUSY);
If for any reason there are no LAGs available in hardware, I think this should still return NOTIFY_OK and we should not reject it, just not offload it. Which is to say that I basically don't understand the point of the PRECHANGEUPPER checks. > + > + return NOTIFY_OK; > +}