mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 07:12:09 +00:00
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>
This commit is contained in:
parent
169327d585
commit
69b7320e14
4 changed files with 18 additions and 13 deletions
|
@ -180,7 +180,8 @@ int switchdev_port_attr_get(struct net_device *dev,
|
||||||
int switchdev_port_attr_set(struct net_device *dev,
|
int switchdev_port_attr_set(struct net_device *dev,
|
||||||
const struct switchdev_attr *attr);
|
const struct switchdev_attr *attr);
|
||||||
int switchdev_port_obj_add(struct net_device *dev,
|
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,
|
int switchdev_port_obj_del(struct net_device *dev,
|
||||||
const struct switchdev_obj *obj);
|
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,
|
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;
|
return -EOPNOTSUPP;
|
||||||
}
|
}
|
||||||
|
|
|
@ -331,7 +331,7 @@ static void br_mdb_switchdev_host_port(struct net_device *dev,
|
||||||
mdb.obj.orig_dev = dev;
|
mdb.obj.orig_dev = dev;
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case RTM_NEWMDB:
|
case RTM_NEWMDB:
|
||||||
switchdev_port_obj_add(lower_dev, &mdb.obj);
|
switchdev_port_obj_add(lower_dev, &mdb.obj, NULL);
|
||||||
break;
|
break;
|
||||||
case RTM_DELMDB:
|
case RTM_DELMDB:
|
||||||
switchdev_port_obj_del(lower_dev, &mdb.obj);
|
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_entry_to_br_ip(entry, &complete_info->ip);
|
||||||
mdb.obj.complete_priv = complete_info;
|
mdb.obj.complete_priv = complete_info;
|
||||||
mdb.obj.complete = br_mdb_complete;
|
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);
|
kfree(complete_info);
|
||||||
}
|
}
|
||||||
} else if (p && port_dev && type == RTM_DELMDB) {
|
} else if (p && port_dev && type == RTM_DELMDB) {
|
||||||
|
|
|
@ -151,7 +151,7 @@ int br_switchdev_port_vlan_add(struct net_device *dev, u16 vid, u16 flags,
|
||||||
.vid_end = vid,
|
.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)
|
int br_switchdev_port_vlan_del(struct net_device *dev, u16 vid)
|
||||||
|
|
|
@ -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,
|
static int switchdev_port_obj_notify(enum switchdev_notifier_type nt,
|
||||||
struct net_device *dev,
|
struct net_device *dev,
|
||||||
const struct switchdev_obj *obj,
|
const struct switchdev_obj *obj,
|
||||||
struct switchdev_trans *trans)
|
struct switchdev_trans *trans,
|
||||||
|
struct netlink_ext_ack *extack)
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
int err;
|
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,
|
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;
|
struct switchdev_trans trans;
|
||||||
int err;
|
int err;
|
||||||
|
@ -397,7 +399,7 @@ static int switchdev_port_obj_add_now(struct net_device *dev,
|
||||||
|
|
||||||
trans.ph_prepare = true;
|
trans.ph_prepare = true;
|
||||||
err = switchdev_port_obj_notify(SWITCHDEV_PORT_OBJ_ADD,
|
err = switchdev_port_obj_notify(SWITCHDEV_PORT_OBJ_ADD,
|
||||||
dev, obj, &trans);
|
dev, obj, &trans, extack);
|
||||||
if (err) {
|
if (err) {
|
||||||
/* Prepare phase failed: abort the transaction. Any
|
/* Prepare phase failed: abort the transaction. Any
|
||||||
* resources reserved in the prepare phase are
|
* 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;
|
trans.ph_prepare = false;
|
||||||
err = switchdev_port_obj_notify(SWITCHDEV_PORT_OBJ_ADD,
|
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);
|
WARN(err, "%s: Commit of object (id=%d) failed.\n", dev->name, obj->id);
|
||||||
switchdev_trans_items_warn_destroy(dev, &trans);
|
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;
|
const struct switchdev_obj *obj = data;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
err = switchdev_port_obj_add_now(dev, obj);
|
err = switchdev_port_obj_add_now(dev, obj, NULL);
|
||||||
if (err && err != -EOPNOTSUPP)
|
if (err && err != -EOPNOTSUPP)
|
||||||
netdev_err(dev, "failed (err=%d) to add object (id=%d)\n",
|
netdev_err(dev, "failed (err=%d) to add object (id=%d)\n",
|
||||||
err, obj->id);
|
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.
|
* in case SWITCHDEV_F_DEFER flag is not set.
|
||||||
*/
|
*/
|
||||||
int switchdev_port_obj_add(struct net_device *dev,
|
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)
|
if (obj->flags & SWITCHDEV_F_DEFER)
|
||||||
return switchdev_port_obj_add_defer(dev, obj);
|
return switchdev_port_obj_add_defer(dev, obj);
|
||||||
ASSERT_RTNL();
|
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);
|
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)
|
const struct switchdev_obj *obj)
|
||||||
{
|
{
|
||||||
return switchdev_port_obj_notify(SWITCHDEV_PORT_OBJ_DEL,
|
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,
|
static void switchdev_port_obj_del_deferred(struct net_device *dev,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue