net: dev: Add extack argument to dev_set_mac_address()
A follow-up patch will add a notifier type NETDEV_PRE_CHANGEADDR, which allows vetoing of MAC address changes. One prominent path to that notification is through dev_set_mac_address(). Therefore give this function an extack argument, so that it can be packed together with the notification. Thus a textual reason for rejection (or a warning) can be communicated back to the user. Signed-off-by: Petr Machata <petrm@mellanox.com> Acked-by: Jiri Pirko <jiri@mellanox.com> Reviewed-by: Ido Schimmel <idosch@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
95302c394c
commit
3a37a9636c
@@ -680,7 +680,7 @@ static void bond_do_fail_over_mac(struct bonding *bond,
|
||||
}
|
||||
|
||||
rv = dev_set_mac_address(new_active->dev,
|
||||
(struct sockaddr *)&ss);
|
||||
(struct sockaddr *)&ss, NULL);
|
||||
if (rv) {
|
||||
netdev_err(bond->dev, "Error %d setting MAC of slave %s\n",
|
||||
-rv, new_active->dev->name);
|
||||
@@ -695,7 +695,7 @@ static void bond_do_fail_over_mac(struct bonding *bond,
|
||||
ss.ss_family = old_active->dev->type;
|
||||
|
||||
rv = dev_set_mac_address(old_active->dev,
|
||||
(struct sockaddr *)&ss);
|
||||
(struct sockaddr *)&ss, NULL);
|
||||
if (rv)
|
||||
netdev_err(bond->dev, "Error %d setting MAC of slave %s\n",
|
||||
-rv, new_active->dev->name);
|
||||
@@ -1527,7 +1527,8 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev,
|
||||
*/
|
||||
memcpy(ss.__data, bond_dev->dev_addr, bond_dev->addr_len);
|
||||
ss.ss_family = slave_dev->type;
|
||||
res = dev_set_mac_address(slave_dev, (struct sockaddr *)&ss);
|
||||
res = dev_set_mac_address(slave_dev, (struct sockaddr *)&ss,
|
||||
extack);
|
||||
if (res) {
|
||||
netdev_dbg(bond_dev, "Error %d calling set_mac_address\n", res);
|
||||
goto err_restore_mtu;
|
||||
@@ -1818,7 +1819,7 @@ err_restore_mac:
|
||||
bond_hw_addr_copy(ss.__data, new_slave->perm_hwaddr,
|
||||
new_slave->dev->addr_len);
|
||||
ss.ss_family = slave_dev->type;
|
||||
dev_set_mac_address(slave_dev, (struct sockaddr *)&ss);
|
||||
dev_set_mac_address(slave_dev, (struct sockaddr *)&ss, NULL);
|
||||
}
|
||||
|
||||
err_restore_mtu:
|
||||
@@ -1999,7 +2000,7 @@ static int __bond_release_one(struct net_device *bond_dev,
|
||||
bond_hw_addr_copy(ss.__data, slave->perm_hwaddr,
|
||||
slave->dev->addr_len);
|
||||
ss.ss_family = slave_dev->type;
|
||||
dev_set_mac_address(slave_dev, (struct sockaddr *)&ss);
|
||||
dev_set_mac_address(slave_dev, (struct sockaddr *)&ss, NULL);
|
||||
}
|
||||
|
||||
if (unregister)
|
||||
@@ -3732,7 +3733,7 @@ static int bond_set_mac_address(struct net_device *bond_dev, void *addr)
|
||||
|
||||
bond_for_each_slave(bond, slave, iter) {
|
||||
netdev_dbg(bond_dev, "slave %p %s\n", slave, slave->dev->name);
|
||||
res = dev_set_mac_address(slave->dev, addr);
|
||||
res = dev_set_mac_address(slave->dev, addr, NULL);
|
||||
if (res) {
|
||||
/* TODO: consider downing the slave
|
||||
* and retry ?
|
||||
@@ -3761,7 +3762,7 @@ unwind:
|
||||
break;
|
||||
|
||||
tmp_res = dev_set_mac_address(rollback_slave->dev,
|
||||
(struct sockaddr *)&tmp_ss);
|
||||
(struct sockaddr *)&tmp_ss, NULL);
|
||||
if (tmp_res) {
|
||||
netdev_dbg(bond_dev, "unwind err %d dev %s\n",
|
||||
tmp_res, rollback_slave->dev->name);
|
||||
|
Reference in New Issue
Block a user