Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d1f271d6 authored by David S. Miller's avatar David S. Miller
Browse files

Merge branch 'net-add-netlink_ext_ack-support-to-rtnl_link_ops'

Matthias Schiffer says:

====================
net: add netlink_ext_ack support to rtnl_link_ops

Same changes as http://patchwork.ozlabs.org/patch/780351/

 , split into
separate patches for each rtnl_link_ops field as requested.
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents dacdbb4d d116ffc7
Loading
Loading
Loading
Loading
+6 −4
Original line number Original line Diff line number Diff line
@@ -64,8 +64,9 @@ static int ipoib_fill_info(struct sk_buff *skb, const struct net_device *dev)
	return -EMSGSIZE;
	return -EMSGSIZE;
}
}


static int ipoib_changelink(struct net_device *dev,
static int ipoib_changelink(struct net_device *dev, struct nlattr *tb[],
			    struct nlattr *tb[], struct nlattr *data[])
			    struct nlattr *data[],
			    struct netlink_ext_ack *extack)
{
{
	u16 mode, umcast;
	u16 mode, umcast;
	int ret = 0;
	int ret = 0;
@@ -93,7 +94,8 @@ static int ipoib_changelink(struct net_device *dev,
}
}


static int ipoib_new_child_link(struct net *src_net, struct net_device *dev,
static int ipoib_new_child_link(struct net *src_net, struct net_device *dev,
			       struct nlattr *tb[], struct nlattr *data[])
				struct nlattr *tb[], struct nlattr *data[],
				struct netlink_ext_ack *extack)
{
{
	struct net_device *pdev;
	struct net_device *pdev;
	struct ipoib_dev_priv *ppriv;
	struct ipoib_dev_priv *ppriv;
@@ -133,7 +135,7 @@ static int ipoib_new_child_link(struct net *src_net, struct net_device *dev,
			       child_pkey, IPOIB_RTNL_CHILD);
			       child_pkey, IPOIB_RTNL_CHILD);


	if (!err && data)
	if (!err && data)
		err = ipoib_changelink(dev, tb, data);
		err = ipoib_changelink(dev, tb, data, extack);
	return err;
	return err;
}
}


+10 −6
Original line number Original line Diff line number Diff line
@@ -118,7 +118,8 @@ static const struct nla_policy bond_slave_policy[IFLA_BOND_SLAVE_MAX + 1] = {
	[IFLA_BOND_SLAVE_QUEUE_ID]	= { .type = NLA_U16 },
	[IFLA_BOND_SLAVE_QUEUE_ID]	= { .type = NLA_U16 },
};
};


static int bond_validate(struct nlattr *tb[], struct nlattr *data[])
static int bond_validate(struct nlattr *tb[], struct nlattr *data[],
			 struct netlink_ext_ack *extack)
{
{
	if (tb[IFLA_ADDRESS]) {
	if (tb[IFLA_ADDRESS]) {
		if (nla_len(tb[IFLA_ADDRESS]) != ETH_ALEN)
		if (nla_len(tb[IFLA_ADDRESS]) != ETH_ALEN)
@@ -131,7 +132,8 @@ static int bond_validate(struct nlattr *tb[], struct nlattr *data[])


static int bond_slave_changelink(struct net_device *bond_dev,
static int bond_slave_changelink(struct net_device *bond_dev,
				 struct net_device *slave_dev,
				 struct net_device *slave_dev,
				 struct nlattr *tb[], struct nlattr *data[])
				 struct nlattr *tb[], struct nlattr *data[],
				 struct netlink_ext_ack *extack)
{
{
	struct bonding *bond = netdev_priv(bond_dev);
	struct bonding *bond = netdev_priv(bond_dev);
	struct bond_opt_value newval;
	struct bond_opt_value newval;
@@ -156,8 +158,9 @@ static int bond_slave_changelink(struct net_device *bond_dev,
	return 0;
	return 0;
}
}


static int bond_changelink(struct net_device *bond_dev,
static int bond_changelink(struct net_device *bond_dev, struct nlattr *tb[],
			   struct nlattr *tb[], struct nlattr *data[])
			   struct nlattr *data[],
			   struct netlink_ext_ack *extack)
{
{
	struct bonding *bond = netdev_priv(bond_dev);
	struct bonding *bond = netdev_priv(bond_dev);
	struct bond_opt_value newval;
	struct bond_opt_value newval;
@@ -438,11 +441,12 @@ static int bond_changelink(struct net_device *bond_dev,
}
}


static int bond_newlink(struct net *src_net, struct net_device *bond_dev,
static int bond_newlink(struct net *src_net, struct net_device *bond_dev,
			struct nlattr *tb[], struct nlattr *data[])
			struct nlattr *tb[], struct nlattr *data[],
			struct netlink_ext_ack *extack)
{
{
	int err;
	int err;


	err = bond_changelink(bond_dev, tb, data);
	err = bond_changelink(bond_dev, tb, data, extack);
	if (err < 0)
	if (err < 0)
		return err;
		return err;


+4 −2
Original line number Original line Diff line number Diff line
@@ -1352,7 +1352,8 @@ static void cfhsi_netlink_parms(struct nlattr *data[], struct cfhsi *cfhsi)
}
}


static int caif_hsi_changelink(struct net_device *dev, struct nlattr *tb[],
static int caif_hsi_changelink(struct net_device *dev, struct nlattr *tb[],
				struct nlattr *data[])
			       struct nlattr *data[],
			       struct netlink_ext_ack *extack)
{
{
	cfhsi_netlink_parms(data, netdev_priv(dev));
	cfhsi_netlink_parms(data, netdev_priv(dev));
	netdev_state_change(dev);
	netdev_state_change(dev);
@@ -1399,7 +1400,8 @@ static int caif_hsi_fill_info(struct sk_buff *skb, const struct net_device *dev)
}
}


static int caif_hsi_newlink(struct net *src_net, struct net_device *dev,
static int caif_hsi_newlink(struct net *src_net, struct net_device *dev,
			  struct nlattr *tb[], struct nlattr *data[])
			    struct nlattr *tb[], struct nlattr *data[],
			    struct netlink_ext_ack *extack)
{
{
	struct cfhsi *cfhsi = NULL;
	struct cfhsi *cfhsi = NULL;
	struct cfhsi_ops *(*get_ops)(void);
	struct cfhsi_ops *(*get_ops)(void);
+7 −4
Original line number Original line Diff line number Diff line
@@ -848,7 +848,8 @@ static const struct nla_policy can_policy[IFLA_CAN_MAX + 1] = {
				= { .len = sizeof(struct can_bittiming_const) },
				= { .len = sizeof(struct can_bittiming_const) },
};
};


static int can_validate(struct nlattr *tb[], struct nlattr *data[])
static int can_validate(struct nlattr *tb[], struct nlattr *data[],
			struct netlink_ext_ack *extack)
{
{
	bool is_can_fd = false;
	bool is_can_fd = false;


@@ -880,8 +881,9 @@ static int can_validate(struct nlattr *tb[], struct nlattr *data[])
	return 0;
	return 0;
}
}


static int can_changelink(struct net_device *dev,
static int can_changelink(struct net_device *dev, struct nlattr *tb[],
			  struct nlattr *tb[], struct nlattr *data[])
			  struct nlattr *data[],
			  struct netlink_ext_ack *extack)
{
{
	struct can_priv *priv = netdev_priv(dev);
	struct can_priv *priv = netdev_priv(dev);
	int err;
	int err;
@@ -1146,7 +1148,8 @@ static int can_fill_xstats(struct sk_buff *skb, const struct net_device *dev)
}
}


static int can_newlink(struct net *src_net, struct net_device *dev,
static int can_newlink(struct net *src_net, struct net_device *dev,
		       struct nlattr *tb[], struct nlattr *data[])
		       struct nlattr *tb[], struct nlattr *data[],
		       struct netlink_ext_ack *extack)
{
{
	return -EOPNOTSUPP;
	return -EOPNOTSUPP;
}
}
+2 −1
Original line number Original line Diff line number Diff line
@@ -163,7 +163,8 @@ static void vxcan_setup(struct net_device *dev)
static struct rtnl_link_ops vxcan_link_ops;
static struct rtnl_link_ops vxcan_link_ops;


static int vxcan_newlink(struct net *net, struct net_device *dev,
static int vxcan_newlink(struct net *net, struct net_device *dev,
			 struct nlattr *tb[], struct nlattr *data[])
			 struct nlattr *tb[], struct nlattr *data[],
			 struct netlink_ext_ack *extack)
{
{
	struct vxcan_priv *priv;
	struct vxcan_priv *priv;
	struct net_device *peer;
	struct net_device *peer;
Loading