Re: [PATCHi v2] ibmveth: Add function to enable live MAC address changes
On 02/28/2015 02:59 AM, Jiri Pirko wrote: Sat, Feb 28, 2015 at 06:56:04AM CET, tlfal...@linux.vnet.ibm.com wrote: Add a function that will enable changing the MAC address of an ibmveth interface while it is still running. Signed-off-by: Thomas Falcon tlfal...@linux.vnet.ibm.com --- v2: If h_change_logical_lan_mac fails, dev-dev_addr will not be changed. drivers/net/ethernet/ibm/ibmveth.c | 25 - 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/ibm/ibmveth.c b/drivers/net/ethernet/ibm/ibmveth.c index 21978cc..b6ac676 100644 --- a/drivers/net/ethernet/ibm/ibmveth.c +++ b/drivers/net/ethernet/ibm/ibmveth.c @@ -1327,6 +1327,29 @@ static unsigned long ibmveth_get_desired_dma(struct vio_dev *vdev) 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); Please do not wrap text in message. For that, 80-char limit does not apply. I will send a new patch fixing this shortly. Thanks to you, Brian, and Dave for reviewing this patch. +return rc; +} + +ether_addr_copy(dev-dev_addr, addr-sa_data); + +return 0; +} + static const struct net_device_ops ibmveth_netdev_ops = { .ndo_open = ibmveth_open, .ndo_stop = ibmveth_close, @@ -1337,7 +1360,7 @@ static const struct net_device_ops ibmveth_netdev_ops = { .ndo_fix_features = ibmveth_fix_features, .ndo_set_features = ibmveth_set_features, .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 .ndo_poll_controller= ibmveth_poll_controller, #endif -- 1.8.3.1 ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
Re: [PATCHi v2] ibmveth: Add function to enable live MAC address changes
Sat, Feb 28, 2015 at 06:56:04AM CET, tlfal...@linux.vnet.ibm.com wrote: Add a function that will enable changing the MAC address of an ibmveth interface while it is still running. Signed-off-by: Thomas Falcon tlfal...@linux.vnet.ibm.com --- v2: If h_change_logical_lan_mac fails, dev-dev_addr will not be changed. drivers/net/ethernet/ibm/ibmveth.c | 25 - 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/ibm/ibmveth.c b/drivers/net/ethernet/ibm/ibmveth.c index 21978cc..b6ac676 100644 --- a/drivers/net/ethernet/ibm/ibmveth.c +++ b/drivers/net/ethernet/ibm/ibmveth.c @@ -1327,6 +1327,29 @@ static unsigned long ibmveth_get_desired_dma(struct vio_dev *vdev) 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); Please do not wrap text in message. For that, 80-char limit does not apply. + return rc; + } + + ether_addr_copy(dev-dev_addr, addr-sa_data); + + return 0; +} + static const struct net_device_ops ibmveth_netdev_ops = { .ndo_open = ibmveth_open, .ndo_stop = ibmveth_close, @@ -1337,7 +1360,7 @@ static const struct net_device_ops ibmveth_netdev_ops = { .ndo_fix_features = ibmveth_fix_features, .ndo_set_features = ibmveth_set_features, .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 .ndo_poll_controller= ibmveth_poll_controller, #endif -- 1.8.3.1 ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
[PATCHi v2] 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 tlfal...@linux.vnet.ibm.com --- v2: If h_change_logical_lan_mac fails, dev-dev_addr will not be changed. drivers/net/ethernet/ibm/ibmveth.c | 25 - 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/ibm/ibmveth.c b/drivers/net/ethernet/ibm/ibmveth.c index 21978cc..b6ac676 100644 --- a/drivers/net/ethernet/ibm/ibmveth.c +++ b/drivers/net/ethernet/ibm/ibmveth.c @@ -1327,6 +1327,29 @@ static unsigned long ibmveth_get_desired_dma(struct vio_dev *vdev) 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 = { .ndo_open = ibmveth_open, .ndo_stop = ibmveth_close, @@ -1337,7 +1360,7 @@ static const struct net_device_ops ibmveth_netdev_ops = { .ndo_fix_features = ibmveth_fix_features, .ndo_set_features = ibmveth_set_features, .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 .ndo_poll_controller= ibmveth_poll_controller, #endif -- 1.8.3.1 ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev