mirror of
https://github.com/torvalds/linux.git
synced 2024-11-23 04:31:50 +00:00
net: Add extack to ndo_add_slave
Pass extack to do_set_master and down to ndo_add_slave Signed-off-by: David Ahern <dsahern@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
51d0c04795
commit
33eaf2a6eb
@ -1328,7 +1328,8 @@ void bond_lower_state_changed(struct slave *slave)
|
||||
}
|
||||
|
||||
/* enslave device <slave> to bond device <master> */
|
||||
int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)
|
||||
int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct bonding *bond = netdev_priv(bond_dev);
|
||||
const struct net_device_ops *slave_ops = slave_dev->netdev_ops;
|
||||
@ -3492,7 +3493,7 @@ static int bond_do_ioctl(struct net_device *bond_dev, struct ifreq *ifr, int cmd
|
||||
switch (cmd) {
|
||||
case BOND_ENSLAVE_OLD:
|
||||
case SIOCBONDENSLAVE:
|
||||
res = bond_enslave(bond_dev, slave_dev);
|
||||
res = bond_enslave(bond_dev, slave_dev, NULL);
|
||||
break;
|
||||
case BOND_RELEASE_OLD:
|
||||
case SIOCBONDRELEASE:
|
||||
|
@ -1383,7 +1383,7 @@ static int bond_option_slaves_set(struct bonding *bond,
|
||||
switch (command[0]) {
|
||||
case '+':
|
||||
netdev_dbg(bond->dev, "Adding slave %s\n", dev->name);
|
||||
ret = bond_enslave(bond->dev, dev);
|
||||
ret = bond_enslave(bond->dev, dev, NULL);
|
||||
break;
|
||||
|
||||
case '-':
|
||||
|
@ -1914,7 +1914,8 @@ static int team_netpoll_setup(struct net_device *dev,
|
||||
}
|
||||
#endif
|
||||
|
||||
static int team_add_slave(struct net_device *dev, struct net_device *port_dev)
|
||||
static int team_add_slave(struct net_device *dev, struct net_device *port_dev,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct team *team = netdev_priv(dev);
|
||||
int err;
|
||||
|
@ -788,7 +788,8 @@ err:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int vrf_add_slave(struct net_device *dev, struct net_device *port_dev)
|
||||
static int vrf_add_slave(struct net_device *dev, struct net_device *port_dev,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
if (netif_is_l3_master(port_dev) || netif_is_l3_slave(port_dev))
|
||||
return -EINVAL;
|
||||
|
@ -1246,7 +1246,8 @@ struct net_device_ops {
|
||||
u32 flow_id);
|
||||
#endif
|
||||
int (*ndo_add_slave)(struct net_device *dev,
|
||||
struct net_device *slave_dev);
|
||||
struct net_device *slave_dev,
|
||||
struct netlink_ext_ack *extack);
|
||||
int (*ndo_del_slave)(struct net_device *dev,
|
||||
struct net_device *slave_dev);
|
||||
netdev_features_t (*ndo_fix_features)(struct net_device *dev,
|
||||
|
@ -596,7 +596,8 @@ void bond_destroy_sysfs(struct bond_net *net);
|
||||
void bond_prepare_sysfs_group(struct bonding *bond);
|
||||
int bond_sysfs_slave_add(struct slave *slave);
|
||||
void bond_sysfs_slave_del(struct slave *slave);
|
||||
int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev);
|
||||
int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev,
|
||||
struct netlink_ext_ack *extack);
|
||||
int bond_release(struct net_device *bond_dev, struct net_device *slave_dev);
|
||||
u32 bond_xmit_hash(struct bonding *bond, struct sk_buff *skb);
|
||||
int bond_set_carrier(struct bonding *bond);
|
||||
|
@ -867,7 +867,8 @@ free_bat_counters:
|
||||
* Return: 0 if successful or error otherwise.
|
||||
*/
|
||||
static int batadv_softif_slave_add(struct net_device *dev,
|
||||
struct net_device *slave_dev)
|
||||
struct net_device *slave_dev,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct batadv_hard_iface *hard_iface;
|
||||
struct net *net = dev_net(dev);
|
||||
|
@ -320,7 +320,8 @@ void br_netpoll_disable(struct net_bridge_port *p)
|
||||
|
||||
#endif
|
||||
|
||||
static int br_add_slave(struct net_device *dev, struct net_device *slave_dev)
|
||||
static int br_add_slave(struct net_device *dev, struct net_device *slave_dev,
|
||||
struct netlink_ext_ack *extack)
|
||||
|
||||
{
|
||||
struct net_bridge *br = netdev_priv(dev);
|
||||
|
@ -1957,7 +1957,8 @@ static int do_setvfinfo(struct net_device *dev, struct nlattr **tb)
|
||||
return err;
|
||||
}
|
||||
|
||||
static int do_set_master(struct net_device *dev, int ifindex)
|
||||
static int do_set_master(struct net_device *dev, int ifindex,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct net_device *upper_dev = netdev_master_upper_dev_get(dev);
|
||||
const struct net_device_ops *ops;
|
||||
@ -1982,7 +1983,7 @@ static int do_set_master(struct net_device *dev, int ifindex)
|
||||
return -EINVAL;
|
||||
ops = upper_dev->netdev_ops;
|
||||
if (ops->ndo_add_slave) {
|
||||
err = ops->ndo_add_slave(upper_dev, dev);
|
||||
err = ops->ndo_add_slave(upper_dev, dev, extack);
|
||||
if (err)
|
||||
return err;
|
||||
} else {
|
||||
@ -2115,7 +2116,7 @@ static int do_setlink(const struct sk_buff *skb,
|
||||
}
|
||||
|
||||
if (tb[IFLA_MASTER]) {
|
||||
err = do_set_master(dev, nla_get_u32(tb[IFLA_MASTER]));
|
||||
err = do_set_master(dev, nla_get_u32(tb[IFLA_MASTER]), extack);
|
||||
if (err)
|
||||
goto errout;
|
||||
status |= DO_SETLINK_MODIFIED;
|
||||
@ -2753,7 +2754,8 @@ replay:
|
||||
goto out_unregister;
|
||||
}
|
||||
if (tb[IFLA_MASTER]) {
|
||||
err = do_set_master(dev, nla_get_u32(tb[IFLA_MASTER]));
|
||||
err = do_set_master(dev, nla_get_u32(tb[IFLA_MASTER]),
|
||||
extack);
|
||||
if (err)
|
||||
goto out_unregister;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user