aboutsummaryrefslogtreecommitdiffstats
path: root/net/switchdev/switchdev.c
diff options
context:
space:
mode:
authorPetr Machata <petrm@mellanox.com>2018-12-12 12:02:52 -0500
committerDavid S. Miller <davem@davemloft.net>2018-12-12 19:34:21 -0500
commit69b7320e14e6e8c7a77fa5803cecc86434a1162d (patch)
tree8b7a52552bdea210f55d06d9ecc0b5a5e47f07be /net/switchdev/switchdev.c
parent169327d5850cb80d98d095cfaf8dfbb63d576864 (diff)
net: switchdev: Add extack argument to switchdev_port_obj_add()
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 <petrm@mellanox.com> Acked-by: Jiri Pirko <jiri@mellanox.com> Acked-by: Ivan Vecera <ivecera@redhat.com> Reviewed-by: Ido Schimmel <idosch@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/switchdev/switchdev.c')
-rw-r--r--net/switchdev/switchdev.c19
1 files changed, 11 insertions, 8 deletions
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)
356static int switchdev_port_obj_notify(enum switchdev_notifier_type nt, 356static int switchdev_port_obj_notify(enum switchdev_notifier_type nt,
357 struct net_device *dev, 357 struct net_device *dev,
358 const struct switchdev_obj *obj, 358 const struct switchdev_obj *obj,
359 struct switchdev_trans *trans) 359 struct switchdev_trans *trans,
360 struct netlink_ext_ack *extack)
360{ 361{
361 int rc; 362 int rc;
362 int err; 363 int err;
@@ -379,7 +380,8 @@ static int switchdev_port_obj_notify(enum switchdev_notifier_type nt,
379} 380}
380 381
381static int switchdev_port_obj_add_now(struct net_device *dev, 382static int switchdev_port_obj_add_now(struct net_device *dev,
382 const struct switchdev_obj *obj) 383 const struct switchdev_obj *obj,
384 struct netlink_ext_ack *extack)
383{ 385{
384 struct switchdev_trans trans; 386 struct switchdev_trans trans;
385 int err; 387 int err;
@@ -397,7 +399,7 @@ static int switchdev_port_obj_add_now(struct net_device *dev,
397 399
398 trans.ph_prepare = true; 400 trans.ph_prepare = true;
399 err = switchdev_port_obj_notify(SWITCHDEV_PORT_OBJ_ADD, 401 err = switchdev_port_obj_notify(SWITCHDEV_PORT_OBJ_ADD,
400 dev, obj, &trans); 402 dev, obj, &trans, extack);
401 if (err) { 403 if (err) {
402 /* Prepare phase failed: abort the transaction. Any 404 /* Prepare phase failed: abort the transaction. Any
403 * resources reserved in the prepare phase are 405 * resources reserved in the prepare phase are
@@ -417,7 +419,7 @@ static int switchdev_port_obj_add_now(struct net_device *dev,
417 419
418 trans.ph_prepare = false; 420 trans.ph_prepare = false;
419 err = switchdev_port_obj_notify(SWITCHDEV_PORT_OBJ_ADD, 421 err = switchdev_port_obj_notify(SWITCHDEV_PORT_OBJ_ADD,
420 dev, obj, &trans); 422 dev, obj, &trans, extack);
421 WARN(err, "%s: Commit of object (id=%d) failed.\n", dev->name, obj->id); 423 WARN(err, "%s: Commit of object (id=%d) failed.\n", dev->name, obj->id);
422 switchdev_trans_items_warn_destroy(dev, &trans); 424 switchdev_trans_items_warn_destroy(dev, &trans);
423 425
@@ -430,7 +432,7 @@ static void switchdev_port_obj_add_deferred(struct net_device *dev,
430 const struct switchdev_obj *obj = data; 432 const struct switchdev_obj *obj = data;
431 int err; 433 int err;
432 434
433 err = switchdev_port_obj_add_now(dev, obj); 435 err = switchdev_port_obj_add_now(dev, obj, NULL);
434 if (err && err != -EOPNOTSUPP) 436 if (err && err != -EOPNOTSUPP)
435 netdev_err(dev, "failed (err=%d) to add object (id=%d)\n", 437 netdev_err(dev, "failed (err=%d) to add object (id=%d)\n",
436 err, obj->id); 438 err, obj->id);
@@ -460,12 +462,13 @@ static int switchdev_port_obj_add_defer(struct net_device *dev,
460 * in case SWITCHDEV_F_DEFER flag is not set. 462 * in case SWITCHDEV_F_DEFER flag is not set.
461 */ 463 */
462int switchdev_port_obj_add(struct net_device *dev, 464int switchdev_port_obj_add(struct net_device *dev,
463 const struct switchdev_obj *obj) 465 const struct switchdev_obj *obj,
466 struct netlink_ext_ack *extack)
464{ 467{
465 if (obj->flags & SWITCHDEV_F_DEFER) 468 if (obj->flags & SWITCHDEV_F_DEFER)
466 return switchdev_port_obj_add_defer(dev, obj); 469 return switchdev_port_obj_add_defer(dev, obj);
467 ASSERT_RTNL(); 470 ASSERT_RTNL();
468 return switchdev_port_obj_add_now(dev, obj); 471 return switchdev_port_obj_add_now(dev, obj, extack);
469} 472}
470EXPORT_SYMBOL_GPL(switchdev_port_obj_add); 473EXPORT_SYMBOL_GPL(switchdev_port_obj_add);
471 474
@@ -473,7 +476,7 @@ static int switchdev_port_obj_del_now(struct net_device *dev,
473 const struct switchdev_obj *obj) 476 const struct switchdev_obj *obj)
474{ 477{
475 return switchdev_port_obj_notify(SWITCHDEV_PORT_OBJ_DEL, 478 return switchdev_port_obj_notify(SWITCHDEV_PORT_OBJ_DEL,
476 dev, obj, NULL); 479 dev, obj, NULL, NULL);
477} 480}
478 481
479static void switchdev_port_obj_del_deferred(struct net_device *dev, 482static void switchdev_port_obj_del_deferred(struct net_device *dev,