* [PATCHi v2] ibmveth: Add function to enable live MAC address changes
@ 2015-02-28 5:56 Thomas Falcon
2015-02-28 8:59 ` Jiri Pirko
0 siblings, 1 reply; 3+ messages in thread
From: Thomas Falcon @ 2015-02-28 5:56 UTC (permalink / raw)
To: netdev; +Cc: brking, jiri, linuxppc-dev, davem
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>
---
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
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCHi v2] ibmveth: Add function to enable live MAC address changes
2015-02-28 5:56 [PATCHi v2] ibmveth: Add function to enable live MAC address changes Thomas Falcon
@ 2015-02-28 8:59 ` Jiri Pirko
2015-03-02 17:52 ` Thomas Falcon
0 siblings, 1 reply; 3+ messages in thread
From: Jiri Pirko @ 2015-02-28 8:59 UTC (permalink / raw)
To: Thomas Falcon; +Cc: brking, netdev, linuxppc-dev, davem
Sat, Feb 28, 2015 at 06:56:04AM CET, tlfalcon@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 <tlfalcon@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
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCHi v2] ibmveth: Add function to enable live MAC address changes
2015-02-28 8:59 ` Jiri Pirko
@ 2015-03-02 17:52 ` Thomas Falcon
0 siblings, 0 replies; 3+ messages in thread
From: Thomas Falcon @ 2015-03-02 17:52 UTC (permalink / raw)
To: Jiri Pirko; +Cc: brking, netdev, linuxppc-dev, davem
On 02/28/2015 02:59 AM, Jiri Pirko wrote:
> Sat, Feb 28, 2015 at 06:56:04AM CET, tlfalcon@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 <tlfalcon@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
>>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2015-03-02 17:53 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-02-28 5:56 [PATCHi v2] ibmveth: Add function to enable live MAC address changes Thomas Falcon
2015-02-28 8:59 ` Jiri Pirko
2015-03-02 17:52 ` Thomas Falcon
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).