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 <pe...@mellanox.com>
Acked-by: Jiri Pirko <j...@mellanox.com>
---
 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,
-- 
2.4.11

Reply via email to