From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ivan Vecera Subject: Re: [PATCH net-next 3/9] net: switchdev: Add extack argument to switchdev_port_obj_add() Date: Wed, 12 Dec 2018 14:11:29 +0100 Message-ID: <2780957b-0560-221e-c5b6-3e9581d6e211@redhat.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Cc: Jiri Pirko , Ido Schimmel , "davem@davemloft.net" To: Petr Machata , "netdev@vger.kernel.org" Return-path: Received: from mx1.redhat.com ([209.132.183.28]:33294 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726243AbeLLNLg (ORCPT ); Wed, 12 Dec 2018 08:11:36 -0500 In-Reply-To: Content-Language: en-US Sender: netdev-owner@vger.kernel.org List-ID: On 12. 12. 18 12:52, Petr Machata wrote: > After the previous patch, bridge driver has extack argument available to > pass to switchdev. Therefore extend switchdev_port_obj_add() with this > argument, updating all callers, and passing the argument through to > switchdev_port_obj_notify(). > > Signed-off-by: Petr Machata > Acked-by: Jiri Pirko > --- > include/net/switchdev.h | 6 ++++-- > net/bridge/br_mdb.c | 4 ++-- > net/bridge/br_switchdev.c | 2 +- > net/switchdev/switchdev.c | 19 +++++++++++-------- > 4 files changed, 18 insertions(+), 13 deletions(-) > > diff --git a/include/net/switchdev.h b/include/net/switchdev.h > index 866b6d148b77..69016305ad58 100644 > --- a/include/net/switchdev.h > +++ b/include/net/switchdev.h > @@ -180,7 +180,8 @@ int switchdev_port_attr_get(struct net_device *dev, > int switchdev_port_attr_set(struct net_device *dev, > const struct switchdev_attr *attr); > int switchdev_port_obj_add(struct net_device *dev, > - const struct switchdev_obj *obj); > + const struct switchdev_obj *obj, > + struct netlink_ext_ack *extack); > int switchdev_port_obj_del(struct net_device *dev, > const struct switchdev_obj *obj); > > @@ -233,7 +234,8 @@ static inline int switchdev_port_attr_set(struct net_device *dev, > } > > static inline int switchdev_port_obj_add(struct net_device *dev, > - const struct switchdev_obj *obj) > + const struct switchdev_obj *obj, > + struct netlink_ext_ack *extack) > { > return -EOPNOTSUPP; > } > diff --git a/net/bridge/br_mdb.c b/net/bridge/br_mdb.c > index 79d4c9d253e0..f69c8d91dc81 100644 > --- a/net/bridge/br_mdb.c > +++ b/net/bridge/br_mdb.c > @@ -331,7 +331,7 @@ static void br_mdb_switchdev_host_port(struct net_device *dev, > mdb.obj.orig_dev = dev; > switch (type) { > case RTM_NEWMDB: > - switchdev_port_obj_add(lower_dev, &mdb.obj); > + switchdev_port_obj_add(lower_dev, &mdb.obj, NULL); > break; > case RTM_DELMDB: > switchdev_port_obj_del(lower_dev, &mdb.obj); > @@ -381,7 +381,7 @@ static void __br_mdb_notify(struct net_device *dev, struct net_bridge_port *p, > __mdb_entry_to_br_ip(entry, &complete_info->ip); > mdb.obj.complete_priv = complete_info; > mdb.obj.complete = br_mdb_complete; > - if (switchdev_port_obj_add(port_dev, &mdb.obj)) > + if (switchdev_port_obj_add(port_dev, &mdb.obj, NULL)) > kfree(complete_info); > } > } else if (p && port_dev && type == RTM_DELMDB) { > diff --git a/net/bridge/br_switchdev.c b/net/bridge/br_switchdev.c > index 99ba32177b31..035ff59d9cbd 100644 > --- a/net/bridge/br_switchdev.c > +++ b/net/bridge/br_switchdev.c > @@ -151,7 +151,7 @@ int br_switchdev_port_vlan_add(struct net_device *dev, u16 vid, u16 flags, > .vid_end = vid, > }; > > - return switchdev_port_obj_add(dev, &v.obj); > + return switchdev_port_obj_add(dev, &v.obj, extack); > } > > int br_switchdev_port_vlan_del(struct net_device *dev, u16 vid) > diff --git a/net/switchdev/switchdev.c b/net/switchdev/switchdev.c > index fe23fac4dc4b..cb20669bf6ce 100644 > --- a/net/switchdev/switchdev.c > +++ b/net/switchdev/switchdev.c > @@ -356,7 +356,8 @@ static size_t switchdev_obj_size(const struct switchdev_obj *obj) > static int switchdev_port_obj_notify(enum switchdev_notifier_type nt, > struct net_device *dev, > const struct switchdev_obj *obj, > - struct switchdev_trans *trans) > + struct switchdev_trans *trans, > + struct netlink_ext_ack *extack) > { > int rc; > int err; > @@ -379,7 +380,8 @@ static int switchdev_port_obj_notify(enum switchdev_notifier_type nt, > } > > static int switchdev_port_obj_add_now(struct net_device *dev, > - const struct switchdev_obj *obj) > + const struct switchdev_obj *obj, > + struct netlink_ext_ack *extack) > { > struct switchdev_trans trans; > int err; > @@ -397,7 +399,7 @@ static int switchdev_port_obj_add_now(struct net_device *dev, > > trans.ph_prepare = true; > err = switchdev_port_obj_notify(SWITCHDEV_PORT_OBJ_ADD, > - dev, obj, &trans); > + dev, obj, &trans, extack); > if (err) { > /* Prepare phase failed: abort the transaction. Any > * resources reserved in the prepare phase are > @@ -417,7 +419,7 @@ static int switchdev_port_obj_add_now(struct net_device *dev, > > trans.ph_prepare = false; > err = switchdev_port_obj_notify(SWITCHDEV_PORT_OBJ_ADD, > - dev, obj, &trans); > + dev, obj, &trans, extack); > WARN(err, "%s: Commit of object (id=%d) failed.\n", dev->name, obj->id); > switchdev_trans_items_warn_destroy(dev, &trans); > > @@ -430,7 +432,7 @@ static void switchdev_port_obj_add_deferred(struct net_device *dev, > const struct switchdev_obj *obj = data; > int err; > > - err = switchdev_port_obj_add_now(dev, obj); > + err = switchdev_port_obj_add_now(dev, obj, NULL); > if (err && err != -EOPNOTSUPP) > netdev_err(dev, "failed (err=%d) to add object (id=%d)\n", > err, obj->id); > @@ -460,12 +462,13 @@ static int switchdev_port_obj_add_defer(struct net_device *dev, > * in case SWITCHDEV_F_DEFER flag is not set. > */ > int switchdev_port_obj_add(struct net_device *dev, > - const struct switchdev_obj *obj) > + const struct switchdev_obj *obj, > + struct netlink_ext_ack *extack) > { > if (obj->flags & SWITCHDEV_F_DEFER) > return switchdev_port_obj_add_defer(dev, obj); > ASSERT_RTNL(); > - return switchdev_port_obj_add_now(dev, obj); > + return switchdev_port_obj_add_now(dev, obj, extack); > } > EXPORT_SYMBOL_GPL(switchdev_port_obj_add); > > @@ -473,7 +476,7 @@ static int switchdev_port_obj_del_now(struct net_device *dev, > const struct switchdev_obj *obj) > { > return switchdev_port_obj_notify(SWITCHDEV_PORT_OBJ_DEL, > - dev, obj, NULL); > + dev, obj, NULL, NULL); > } > > static void switchdev_port_obj_del_deferred(struct net_device *dev, > Acked-by: Ivan Vecera