Acked-by: Premkumar Jonnala > -----Original Message----- > From: sfel...@gmail.com [mailto:sfel...@gmail.com] > Sent: Friday, September 25, 2015 2:29 AM > To: netdev@vger.kernel.org > Cc: j...@resnulli.us; siva.mannem....@gmail.com; Premkumar Jonnala; > step...@networkplumber.org; ro...@cumulusnetworks.com; > and...@lunn.ch; f.faine...@gmail.com; vivien.dide...@savoirfairelinux.com > Subject: [PATCH net-next 2/4] switchdev: skip over ports returning - > EOPNOTSUPP when recursing ports > > From: Scott Feldman <sfel...@gmail.com> > > This allows us to recurse over all the ports, skipping over unsupporting > ports. Without the change, the recursion would stop at first unsupported > port. > > Signed-off-by: Scott Feldman <sfel...@gmail.com> > --- > include/net/switchdev.h | 1 + > net/switchdev/switchdev.c | 9 ++++++++- > 2 files changed, 9 insertions(+), 1 deletion(-) > > diff --git a/include/net/switchdev.h b/include/net/switchdev.h > index 54b2faa..22a6dbe 100644 > --- a/include/net/switchdev.h > +++ b/include/net/switchdev.h > @@ -15,6 +15,7 @@ > #include <linux/notifier.h> > > #define SWITCHDEV_F_NO_RECURSE BIT(0) > +#define SWITCHDEV_F_SKIP_EOPNOTSUPP BIT(1) > > enum switchdev_trans { > SWITCHDEV_TRANS_NONE, > diff --git a/net/switchdev/switchdev.c b/net/switchdev/switchdev.c > index fda38f8..5c30da0 100644 > --- a/net/switchdev/switchdev.c > +++ b/net/switchdev/switchdev.c > @@ -73,7 +73,7 @@ static int __switchdev_port_attr_set(struct net_device > *dev, > return ops->switchdev_port_attr_set(dev, attr); > > if (attr->flags & SWITCHDEV_F_NO_RECURSE) > - return err; > + goto done; > > /* Switch device port(s) may be stacked under > * bond/team/vlan dev, so recurse down to set attr on > @@ -82,10 +82,17 @@ static int __switchdev_port_attr_set(struct net_device > *dev, > > netdev_for_each_lower_dev(dev, lower_dev, iter) { > err = __switchdev_port_attr_set(lower_dev, attr); > + if (err == -EOPNOTSUPP && > + attr->flags & SWITCHDEV_F_SKIP_EOPNOTSUPP) > + continue; > if (err) > break; > } > > +done: > + if (err == -EOPNOTSUPP && attr->flags & > SWITCHDEV_F_SKIP_EOPNOTSUPP) > + err = 0; > + > return err; > } > > -- > 1.7.10.4
-- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html