mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-17 10:04:14 +08:00
ibmveth: Add function to enable live MAC address changes
Add a function that will enable changing the MAC address of an ibmveth interface while it is still running. Signed-off-by: Thomas Falcon <tlfalcon@linux.vnet.ibm.com> Reviewed-by: Jiri Pirko <jiri@resnulli.us> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
71e168b151
commit
c77c761fa4
@ -1327,6 +1327,28 @@ static unsigned long ibmveth_get_desired_dma(struct vio_dev *vdev)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int ibmveth_set_mac_addr(struct net_device *dev, void *p)
|
||||||
|
{
|
||||||
|
struct ibmveth_adapter *adapter = netdev_priv(dev);
|
||||||
|
struct sockaddr *addr = p;
|
||||||
|
u64 mac_address;
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
if (!is_valid_ether_addr(addr->sa_data))
|
||||||
|
return -EADDRNOTAVAIL;
|
||||||
|
|
||||||
|
mac_address = ibmveth_encode_mac_addr(addr->sa_data);
|
||||||
|
rc = h_change_logical_lan_mac(adapter->vdev->unit_address, mac_address);
|
||||||
|
if (rc) {
|
||||||
|
netdev_err(adapter->netdev, "h_change_logical_lan_mac failed with rc=%d\n", rc);
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
|
ether_addr_copy(dev->dev_addr, addr->sa_data);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static const struct net_device_ops ibmveth_netdev_ops = {
|
static const struct net_device_ops ibmveth_netdev_ops = {
|
||||||
.ndo_open = ibmveth_open,
|
.ndo_open = ibmveth_open,
|
||||||
.ndo_stop = ibmveth_close,
|
.ndo_stop = ibmveth_close,
|
||||||
@ -1337,7 +1359,7 @@ static const struct net_device_ops ibmveth_netdev_ops = {
|
|||||||
.ndo_fix_features = ibmveth_fix_features,
|
.ndo_fix_features = ibmveth_fix_features,
|
||||||
.ndo_set_features = ibmveth_set_features,
|
.ndo_set_features = ibmveth_set_features,
|
||||||
.ndo_validate_addr = eth_validate_addr,
|
.ndo_validate_addr = eth_validate_addr,
|
||||||
.ndo_set_mac_address = eth_mac_addr,
|
.ndo_set_mac_address = ibmveth_set_mac_addr,
|
||||||
#ifdef CONFIG_NET_POLL_CONTROLLER
|
#ifdef CONFIG_NET_POLL_CONTROLLER
|
||||||
.ndo_poll_controller = ibmveth_poll_controller,
|
.ndo_poll_controller = ibmveth_poll_controller,
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user