Thread (72 messages) 72 messages, 16 authors, 2012-02-11

Re: [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice

flat view

From: Stephen Hemminger <hidden>
Date: 2012-02-09 16:06:44
Also in: lkml

On Thu, 9 Feb 2012 15:59:05 +0100
Danny Kukawka [off-list ref] wrote:
On Mittwoch, 8. Februar 2012, Stephen Hemminger wrote:
quoted
On Wed,  8 Feb 2012 22:10:07 +0100

Danny Kukawka [off-list ref] wrote:
quoted
The information if a device has a random MAC address is exported
to the userspace via /sys/class/net/*/addr_assign_type, which
export net_device->addr_assign_type.

Currently only a few driver really use dev_hw_addr_random() to
set addr_assign_type correctly to NET_ADDR_RANDOM.

This patch change the drivers which set random addresses to
change also addr_assign_type to NET_ADDR_RANDOM.

To reflect if the MAC was changed from userspace via SIOCSIFHWADDR,
which means it's no longer a random address set by the kernel,
this patch remove NET_ADDR_RANDOM from addr_assign_type in this
case.

With this patch tools from userspace can now detect devices with
random MAC addresses and change them to persistent addresses if
needed (as e.g. in case of smsc95xx on PandaBoard).

Maybe it makes sense to introduce a new state for addr_assign_type
to reflect the fact, that the MAC address was changed via a ioctl
from user space, e.g, with NET_ADDR_USERSPACE ?
This reminds me that passing dev->dev_addr to dev_hw_addr_rrandom is
redundant for all the instances you showed, so why is it ia parameter.
There are two places in the existing code where it's used in a different way 
in ixgbevf and igbvf, but thats changeable. I will take a look at it and 
change dev_hw_addr_random to take simply a net_device ands set everything 
directly.
quoted
Also it should BUG() if address length is not 6 (ETH_ALEN).
Not needed if I change it to: 
static inline void dev_hw_addr_random(struct net_device *dev) 

Danny
It is still needed to prevent some device driver that uses
some longer address (like Infiniband) from the thinking it is
a generic routine.  Maybe even renaming int eth_hw_addr_random()
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help