linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if  a random mac address get assigned to a netdevice
@ 2012-02-08 21:10 Danny Kukawka
  2012-02-08 21:10 ` [PATCH 01/50] eth: reset addr_assign_type if eth_mac_addr() called Danny Kukawka
                   ` (51 more replies)
  0 siblings, 52 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: David S. Miller; +Cc: Danny Kukawka, netdev, linux-kernel

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 ?

Danny Kukawka (50):
  eth: reset addr_assign_type if eth_mac_addr() called
  smsc95xx: use dev_hw_addr_random() instead of random_ether_addr()
  smsc75xx: se dev_hw_addr_random() instead of random_ether_addr()
  adi/blackfin: set addr_assign_type correctly if random
  UML net: set addr_assign_type if random_ether_addr() used
  dummy: use dev_hw_addr_random() instead of random_ether_addr()
  au1000_eth: use dev_hw_addr_random() instead of random_ether_addr()
  bnx2x: use dev_hw_addr_random() instead of random_ether_addr()
  Cadence MACB: use dev_hw_addr_random() instead of random_ether_addr()
  Calxeda XGMAC: use dev_hw_addr_random() instead of
    random_ether_addr()
  ep93xx: use dev_hw_addr_random() instead of random_ether_addr()
  dm9000: use dev_hw_addr_random() instead of random_ether_addr()
  dnet: use dev_hw_addr_random() instead of random_ether_addr()
  ethoc: set addr_assign_type if random_ether_addr() used
  lantiq_etop: set addr_assign_type if random_ether_addr() used
  pxa168_eth: use dev_hw_addr_random() instead of random_ether_addr()
  enc28j60: use dev_hw_addr_random() instead of random_ether_addr()
  mipsnet: use dev_hw_addr_random() instead of random_ether_addr()
  macsonic: use dev_hw_addr_random() instead of random_ether_addr()
  smsc911x: use dev_hw_addr_random() instead of random_ether_addr()
  smsc9420: use dev_hw_addr_random() instead of random_ether_addr()
  r6040: use dev_hw_addr_random() instead of random_ether_addr()
  efx: use dev_hw_addr_random() instead of random_ether_addr()
  sis900: use dev_hw_addr_random() instead of random_ether_addr()
  via-rhine: use dev_hw_addr_random() instead of random_ether_addr()
  faraday: use dev_hw_addr_random() instead of random_ether_addr()
  davinci_emac: use dev_hw_addr_random() instead of random_ether_addr()
  forcedeth: use dev_hw_addr_random() instead of random_ether_addr()
  micrel eth: use dev_hw_addr_random() instead of random_ether_addr()
  atheros eth: set addr_assign_type if random_ether_addr() used
  tc35815: use dev_hw_addr_random() instead of random_ether_addr()
  tile_net: use dev_hw_addr_random() instead of random_ether_addr()
  stmmac: use dev_hw_addr_random() instead of random_ether_addr()
  xilinx ll_temac: use dev_hw_addr_random() instead of
    random_ether_addr()
  ifb: use dev_hw_addr_random() instead of random_ether_addr()
  igbvf: reset netdevice addr_assign_type if changed from random
  usbnet: set addr_assign_type if random_ether_addr() used
  g_ether: set addr_assign_type if random_ether_addr() used
  veth: use dev_hw_addr_random() instead of random_ether_addr()
  batman-adv: use dev_hw_addr_random() instead of random_ether_addr()
  l2tp_eth: use dev_hw_addr_random() instead of random_ether_addr()
  virtio_net:  use dev_hw_addr_random() instead of random_ether_addr()
  macvlan: use dev_hw_addr_random() instead of random_ether_addr()
  team: use dev_hw_addr_random() instead of random_ether_addr()
  tun: use dev_hw_addr_random() instead of random_ether_addr()
  wan: use dev_hw_addr_random() instead of random_ether_addr()
  bridge: use dev_hw_addr_random() instead of random_ether_addr()
  ip_gre.c: use dev_hw_addr_random() instead of random_ether_addr()
  openvswitch: use dev_hw_addr_random() instead of random_ether_addr()
  use dev_hw_addr_random() instead of random_ether_addr()

 arch/blackfin/mach-bf518/boards/ezbrd.c           |    3 ++-
 arch/blackfin/mach-bf518/boards/tcm-bf518.c       |    3 ++-
 arch/blackfin/mach-bf527/boards/ad7160eval.c      |    3 ++-
 arch/blackfin/mach-bf527/boards/cm_bf527.c        |    3 ++-
 arch/blackfin/mach-bf527/boards/ezbrd.c           |    3 ++-
 arch/blackfin/mach-bf527/boards/ezkit.c           |    3 ++-
 arch/blackfin/mach-bf527/boards/tll6527m.c        |    3 ++-
 arch/blackfin/mach-bf537/boards/cm_bf537e.c       |    3 ++-
 arch/blackfin/mach-bf537/boards/cm_bf537u.c       |    3 ++-
 arch/blackfin/mach-bf537/boards/dnp5370.c         |    3 ++-
 arch/blackfin/mach-bf537/boards/pnav10.c          |    3 ++-
 arch/blackfin/mach-bf537/boards/stamp.c           |    3 ++-
 arch/blackfin/mach-bf537/boards/tcm_bf537.c       |    3 ++-
 arch/um/drivers/net_kern.c                        |   11 ++++++++---
 drivers/net/dummy.c                               |    4 +++-
 drivers/net/ethernet/adi/bfin_mac.c               |   10 +++++++---
 drivers/net/ethernet/adi/bfin_mac.h               |    2 +-
 drivers/net/ethernet/amd/au1000_eth.c             |    9 +++++----
 drivers/net/ethernet/atheros/atl1c/atl1c_hw.c     |    2 +-
 drivers/net/ethernet/atheros/atl1c/atl1c_main.c   |   11 ++++++-----
 drivers/net/ethernet/atheros/atlx/atl1.c          |   12 +++++++++---
 drivers/net/ethernet/atheros/atlx/atlx.c          |    3 +++
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c   |    2 ++
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c  |    2 +-
 drivers/net/ethernet/cadence/macb.c               |    2 +-
 drivers/net/ethernet/calxeda/xgmac.c              |    4 +++-
 drivers/net/ethernet/cirrus/ep93xx_eth.c          |    2 +-
 drivers/net/ethernet/cisco/enic/enic_main.c       |   13 +++++++++++--
 drivers/net/ethernet/davicom/dm9000.c             |    2 +-
 drivers/net/ethernet/dnet.c                       |    2 +-
 drivers/net/ethernet/ethoc.c                      |   11 ++++++++++-
 drivers/net/ethernet/faraday/ftgmac100.c          |    2 +-
 drivers/net/ethernet/faraday/ftmac100.c           |    2 +-
 drivers/net/ethernet/intel/igbvf/netdev.c         |    2 ++
 drivers/net/ethernet/lantiq_etop.c                |    4 ++++
 drivers/net/ethernet/marvell/pxa168_eth.c         |    4 +++-
 drivers/net/ethernet/micrel/ks8842.c              |    4 +++-
 drivers/net/ethernet/micrel/ks8851.c              |    7 +++++--
 drivers/net/ethernet/micrel/ks8851_mll.c          |    4 +++-
 drivers/net/ethernet/microchip/enc28j60.c         |    5 ++++-
 drivers/net/ethernet/mipsnet.c                    |    2 +-
 drivers/net/ethernet/natsemi/macsonic.c           |    2 +-
 drivers/net/ethernet/nvidia/forcedeth.c           |    4 +++-
 drivers/net/ethernet/rdc/r6040.c                  |    2 +-
 drivers/net/ethernet/sfc/efx.c                    |    4 +++-
 drivers/net/ethernet/sis/sis900.c                 |    2 +-
 drivers/net/ethernet/smsc/smsc911x.c              |    4 +++-
 drivers/net/ethernet/smsc/smsc9420.c              |    2 +-
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c |    2 +-
 drivers/net/ethernet/ti/davinci_emac.c            |    4 +++-
 drivers/net/ethernet/tile/tilepro.c               |    4 +++-
 drivers/net/ethernet/toshiba/tc35815.c            |    2 +-
 drivers/net/ethernet/via/via-rhine.c              |    2 +-
 drivers/net/ethernet/xilinx/ll_temac_main.c       |   11 +++++++++--
 drivers/net/ifb.c                                 |    2 +-
 drivers/net/macvlan.c                             |    4 +++-
 drivers/net/team/team.c                           |    5 ++++-
 drivers/net/tun.c                                 |    2 +-
 drivers/net/usb/smsc75xx.c                        |    2 +-
 drivers/net/usb/smsc95xx.c                        |    2 +-
 drivers/net/usb/usbnet.c                          |    1 +
 drivers/net/veth.c                                |    4 ++--
 drivers/net/virtio_net.c                          |    2 +-
 drivers/net/wan/hdlc_fr.c                         |    2 +-
 drivers/net/wan/hdlc_raw_eth.c                    |    2 +-
 drivers/usb/gadget/u_ether.c                      |    4 +++-
 net/batman-adv/soft-interface.c                   |    7 ++++---
 net/bridge/br_device.c                            |    6 +++++-
 net/ethernet/eth.c                                |    4 ++++
 net/ipv4/ip_gre.c                                 |    2 +-
 net/l2tp/l2tp_eth.c                               |    2 +-
 net/openvswitch/vport-internal_dev.c              |    4 +++-
 72 files changed, 196 insertions(+), 85 deletions(-)

-- 
1.7.7.3


^ permalink raw reply	[flat|nested] 77+ messages in thread

* [PATCH 01/50] eth: reset addr_assign_type if eth_mac_addr() called
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 22:50   ` Stephen Hemminger
  2012-02-08 21:10 ` [PATCH 02/50] smsc95xx: use dev_hw_addr_random() instead of random_ether_addr() Danny Kukawka
                   ` (50 subsequent siblings)
  51 siblings, 1 reply; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: David S. Miller; +Cc: Danny Kukawka, netdev, linux-kernel

If eth_mac_addr() get called, usually if SIOCSIFHWADDR was
used to change the MAC of a ethernet device, reset the
addr_assign_type to NET_ADDR_PERM if the state was
NET_ADDR_RANDOM before. Reset the state since the MAC is
no longer random at least not from the kernel side.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 net/ethernet/eth.c |    4 ++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/net/ethernet/eth.c b/net/ethernet/eth.c
index a246836..9d68142 100644
--- a/net/ethernet/eth.c
+++ b/net/ethernet/eth.c
@@ -288,6 +288,10 @@ int eth_mac_addr(struct net_device *dev, void *p)
 	if (!is_valid_ether_addr(addr->sa_data))
 		return -EADDRNOTAVAIL;
 	memcpy(dev->dev_addr, addr->sa_data, ETH_ALEN);
+	/* if device marked as NET_ADDR_RANDOM, reset it */
+	if (dev->addr_assign_type & NET_ADDR_RANDOM)
+		dev->addr_assign_type ^= NET_ADDR_RANDOM;
+
 	return 0;
 }
 EXPORT_SYMBOL(eth_mac_addr);
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 02/50] smsc95xx: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
  2012-02-08 21:10 ` [PATCH 01/50] eth: reset addr_assign_type if eth_mac_addr() called Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-09 10:51   ` Sergei Shtylyov
  2012-02-08 21:10 ` [PATCH 03/50] smsc75xx: se " Danny Kukawka
                   ` (49 subsequent siblings)
  51 siblings, 1 reply; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: netdev
  Cc: Danny Kukawka, Greg Kroah-Hartman, Steve Glendinning, linux-usb,
	linux-kernel, David S. Miller

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/usb/smsc95xx.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c
index d45520e..3a28e95 100644
--- a/drivers/net/usb/smsc95xx.c
+++ b/drivers/net/usb/smsc95xx.c
@@ -614,7 +614,7 @@ static void smsc95xx_init_mac_address(struct usbnet *dev)
 	}
 
 	/* no eeprom, or eeprom values are invalid. generate random MAC */
-	random_ether_addr(dev->net->dev_addr);
+	dev_hw_addr_random(dev->net , dev->net->dev_addr);
 	netif_dbg(dev, ifup, dev->net, "MAC address set to random_ether_addr\n");
 }
 
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 03/50] smsc75xx: se dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
  2012-02-08 21:10 ` [PATCH 01/50] eth: reset addr_assign_type if eth_mac_addr() called Danny Kukawka
  2012-02-08 21:10 ` [PATCH 02/50] smsc95xx: use dev_hw_addr_random() instead of random_ether_addr() Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 21:10 ` [PATCH 04/50] adi/blackfin: set addr_assign_type correctly if random Danny Kukawka
                   ` (48 subsequent siblings)
  51 siblings, 0 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: netdev
  Cc: Danny Kukawka, Greg Kroah-Hartman, linux-usb, linux-kernel,
	David S. Miller

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/usb/smsc75xx.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/usb/smsc75xx.c b/drivers/net/usb/smsc75xx.c
index 3b017bb..aafa6cf 100644
--- a/drivers/net/usb/smsc75xx.c
+++ b/drivers/net/usb/smsc75xx.c
@@ -615,7 +615,7 @@ static void smsc75xx_init_mac_address(struct usbnet *dev)
 	}
 
 	/* no eeprom, or eeprom values are invalid. generate random MAC */
-	random_ether_addr(dev->net->dev_addr);
+	dev_hw_addr_random(dev->net, dev->net->dev_addr);
 	netif_dbg(dev, ifup, dev->net, "MAC address set to random_ether_addr");
 }
 
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 04/50] adi/blackfin: set addr_assign_type correctly if random
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (2 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 03/50] smsc75xx: se " Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-09  3:28   ` Bob Liu
  2012-02-09  4:05   ` Mike Frysinger
  2012-02-08 21:10 ` [PATCH 05/50] UML net: set addr_assign_type if random_ether_addr() used Danny Kukawka
                   ` (47 subsequent siblings)
  51 siblings, 2 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: David S. Miller
  Cc: Danny Kukawka, netdev, linux-kernel, Mike Frysinger, Bob Liu,
	Sonic Zhang, Paul Gortmaker, Lars-Peter Clausen, Scott Jiang,
	uclinux-dist-devel

Set the addr_assign_type for adi driver correctly to
NET_ADDR_RANDOM if a random MAC address was generated.
Reset the state to NET_ADDR_PERM as soon as the MAC get
changed via .ndo_set_mac_address.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 arch/blackfin/mach-bf518/boards/ezbrd.c      |    3 ++-
 arch/blackfin/mach-bf518/boards/tcm-bf518.c  |    3 ++-
 arch/blackfin/mach-bf527/boards/ad7160eval.c |    3 ++-
 arch/blackfin/mach-bf527/boards/cm_bf527.c   |    3 ++-
 arch/blackfin/mach-bf527/boards/ezbrd.c      |    3 ++-
 arch/blackfin/mach-bf527/boards/ezkit.c      |    3 ++-
 arch/blackfin/mach-bf527/boards/tll6527m.c   |    3 ++-
 arch/blackfin/mach-bf537/boards/cm_bf537e.c  |    3 ++-
 arch/blackfin/mach-bf537/boards/cm_bf537u.c  |    3 ++-
 arch/blackfin/mach-bf537/boards/dnp5370.c    |    3 ++-
 arch/blackfin/mach-bf537/boards/pnav10.c     |    3 ++-
 arch/blackfin/mach-bf537/boards/stamp.c      |    3 ++-
 arch/blackfin/mach-bf537/boards/tcm_bf537.c  |    3 ++-
 drivers/net/ethernet/adi/bfin_mac.c          |   10 +++++++---
 drivers/net/ethernet/adi/bfin_mac.h          |    2 +-
 15 files changed, 34 insertions(+), 17 deletions(-)

diff --git a/arch/blackfin/mach-bf518/boards/ezbrd.c b/arch/blackfin/mach-bf518/boards/ezbrd.c
index a2d96d3..a173957 100644
--- a/arch/blackfin/mach-bf518/boards/ezbrd.c
+++ b/arch/blackfin/mach-bf518/boards/ezbrd.c
@@ -821,7 +821,7 @@ void native_machine_restart(char *cmd)
 		bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS);
 }
 
-void bfin_get_ether_addr(char *addr)
+int bfin_get_ether_addr(char *addr)
 {
 	/* the MAC is stored in OTP memory page 0xDF */
 	u32 ret;
@@ -834,5 +834,6 @@ void bfin_get_ether_addr(char *addr)
 		for (ret = 0; ret < 6; ++ret)
 			addr[ret] = otp_mac_p[5 - ret];
 	}
+	return 0;
 }
 EXPORT_SYMBOL(bfin_get_ether_addr);
diff --git a/arch/blackfin/mach-bf518/boards/tcm-bf518.c b/arch/blackfin/mach-bf518/boards/tcm-bf518.c
index f271310..d3c763e 100644
--- a/arch/blackfin/mach-bf518/boards/tcm-bf518.c
+++ b/arch/blackfin/mach-bf518/boards/tcm-bf518.c
@@ -730,9 +730,10 @@ void native_machine_restart(char *cmd)
 		bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS);
 }
 
-void bfin_get_ether_addr(char *addr)
+int bfin_get_ether_addr(char *addr)
 {
 	random_ether_addr(addr);
 	printk(KERN_WARNING "%s:%s: Setting Ethernet MAC to a random one\n", __FILE__, __func__);
+	return 1;
 }
 EXPORT_SYMBOL(bfin_get_ether_addr);
diff --git a/arch/blackfin/mach-bf527/boards/ad7160eval.c b/arch/blackfin/mach-bf527/boards/ad7160eval.c
index c8d5d2b..fad7fea 100644
--- a/arch/blackfin/mach-bf527/boards/ad7160eval.c
+++ b/arch/blackfin/mach-bf527/boards/ad7160eval.c
@@ -846,7 +846,7 @@ void native_machine_restart(char *cmd)
 		bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS);
 }
 
-void bfin_get_ether_addr(char *addr)
+int bfin_get_ether_addr(char *addr)
 {
 	/* the MAC is stored in OTP memory page 0xDF */
 	u32 ret;
@@ -859,5 +859,6 @@ void bfin_get_ether_addr(char *addr)
 		for (ret = 0; ret < 6; ++ret)
 			addr[ret] = otp_mac_p[5 - ret];
 	}
+	return 0;
 }
 EXPORT_SYMBOL(bfin_get_ether_addr);
diff --git a/arch/blackfin/mach-bf527/boards/cm_bf527.c b/arch/blackfin/mach-bf527/boards/cm_bf527.c
index 7330607..5fb09ad 100644
--- a/arch/blackfin/mach-bf527/boards/cm_bf527.c
+++ b/arch/blackfin/mach-bf527/boards/cm_bf527.c
@@ -983,9 +983,10 @@ void native_machine_restart(char *cmd)
 		bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS);
 }
 
-void bfin_get_ether_addr(char *addr)
+int bfin_get_ether_addr(char *addr)
 {
 	random_ether_addr(addr);
 	printk(KERN_WARNING "%s:%s: Setting Ethernet MAC to a random one\n", __FILE__, __func__);
+	return 1;
 }
 EXPORT_SYMBOL(bfin_get_ether_addr);
diff --git a/arch/blackfin/mach-bf527/boards/ezbrd.c b/arch/blackfin/mach-bf527/boards/ezbrd.c
index db3ecfc..17c6a24 100644
--- a/arch/blackfin/mach-bf527/boards/ezbrd.c
+++ b/arch/blackfin/mach-bf527/boards/ezbrd.c
@@ -870,7 +870,7 @@ void native_machine_restart(char *cmd)
 		bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS);
 }
 
-void bfin_get_ether_addr(char *addr)
+int bfin_get_ether_addr(char *addr)
 {
 	/* the MAC is stored in OTP memory page 0xDF */
 	u32 ret;
@@ -883,5 +883,6 @@ void bfin_get_ether_addr(char *addr)
 		for (ret = 0; ret < 6; ++ret)
 			addr[ret] = otp_mac_p[5 - ret];
 	}
+	return 0;
 }
 EXPORT_SYMBOL(bfin_get_ether_addr);
diff --git a/arch/blackfin/mach-bf527/boards/ezkit.c b/arch/blackfin/mach-bf527/boards/ezkit.c
index dfdd8e6..89b0f6c 100644
--- a/arch/blackfin/mach-bf527/boards/ezkit.c
+++ b/arch/blackfin/mach-bf527/boards/ezkit.c
@@ -1311,7 +1311,7 @@ void native_machine_restart(char *cmd)
 		bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS);
 }
 
-void bfin_get_ether_addr(char *addr)
+int bfin_get_ether_addr(char *addr)
 {
 	/* the MAC is stored in OTP memory page 0xDF */
 	u32 ret;
@@ -1324,5 +1324,6 @@ void bfin_get_ether_addr(char *addr)
 		for (ret = 0; ret < 6; ++ret)
 			addr[ret] = otp_mac_p[5 - ret];
 	}
+	return 0;
 }
 EXPORT_SYMBOL(bfin_get_ether_addr);
diff --git a/arch/blackfin/mach-bf527/boards/tll6527m.c b/arch/blackfin/mach-bf527/boards/tll6527m.c
index 360e97f..d192c0a 100644
--- a/arch/blackfin/mach-bf527/boards/tll6527m.c
+++ b/arch/blackfin/mach-bf527/boards/tll6527m.c
@@ -931,7 +931,7 @@ void native_machine_restart(char *cmd)
 		bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS);
 }
 
-void bfin_get_ether_addr(char *addr)
+int bfin_get_ether_addr(char *addr)
 {
 	/* the MAC is stored in OTP memory page 0xDF */
 	u32 ret;
@@ -945,5 +945,6 @@ void bfin_get_ether_addr(char *addr)
 		for (ret = 0; ret < 6; ++ret)
 			addr[ret] = otp_mac_p[5 - ret];
 	}
+	return 0;
 }
 EXPORT_SYMBOL(bfin_get_ether_addr);
diff --git a/arch/blackfin/mach-bf537/boards/cm_bf537e.c b/arch/blackfin/mach-bf537/boards/cm_bf537e.c
index 0d4a2f6..618fd7d 100644
--- a/arch/blackfin/mach-bf537/boards/cm_bf537e.c
+++ b/arch/blackfin/mach-bf537/boards/cm_bf537e.c
@@ -813,9 +813,10 @@ void __init native_machine_early_platform_add_devices(void)
 		ARRAY_SIZE(cm_bf537e_early_devices));
 }
 
-void bfin_get_ether_addr(char *addr)
+int bfin_get_ether_addr(char *addr)
 {
 	random_ether_addr(addr);
 	printk(KERN_WARNING "%s:%s: Setting Ethernet MAC to a random one\n", __FILE__, __func__);
+	return 1;
 }
 EXPORT_SYMBOL(bfin_get_ether_addr);
diff --git a/arch/blackfin/mach-bf537/boards/cm_bf537u.c b/arch/blackfin/mach-bf537/boards/cm_bf537u.c
index f553698..48a7a23 100644
--- a/arch/blackfin/mach-bf537/boards/cm_bf537u.c
+++ b/arch/blackfin/mach-bf537/boards/cm_bf537u.c
@@ -790,9 +790,10 @@ void __init native_machine_early_platform_add_devices(void)
 		ARRAY_SIZE(cm_bf537u_early_devices));
 }
 
-void bfin_get_ether_addr(char *addr)
+int bfin_get_ether_addr(char *addr)
 {
 	random_ether_addr(addr);
 	printk(KERN_WARNING "%s:%s: Setting Ethernet MAC to a random one\n", __FILE__, __func__);
+	return 1;
 }
 EXPORT_SYMBOL(bfin_get_ether_addr);
diff --git a/arch/blackfin/mach-bf537/boards/dnp5370.c b/arch/blackfin/mach-bf537/boards/dnp5370.c
index 11dadeb..6f77bf7 100644
--- a/arch/blackfin/mach-bf537/boards/dnp5370.c
+++ b/arch/blackfin/mach-bf537/boards/dnp5370.c
@@ -399,9 +399,10 @@ arch_initcall(dnp5370_init);
 /*
  * Currently the MAC address is saved in Flash by U-Boot
  */
-void bfin_get_ether_addr(char *addr)
+int bfin_get_ether_addr(char *addr)
 {
 	*(u32 *)(&(addr[0])) = bfin_read32(FLASH_MAC);
 	*(u16 *)(&(addr[4])) = bfin_read16(FLASH_MAC + 4);
+	return 0;
 }
 EXPORT_SYMBOL(bfin_get_ether_addr);
diff --git a/arch/blackfin/mach-bf537/boards/pnav10.c b/arch/blackfin/mach-bf537/boards/pnav10.c
index 6fd8470..2a9cd61 100644
--- a/arch/blackfin/mach-bf537/boards/pnav10.c
+++ b/arch/blackfin/mach-bf537/boards/pnav10.c
@@ -535,9 +535,10 @@ void __init native_machine_early_platform_add_devices(void)
 		ARRAY_SIZE(stamp_early_devices));
 }
 
-void bfin_get_ether_addr(char *addr)
+int bfin_get_ether_addr(char *addr)
 {
 	random_ether_addr(addr);
 	printk(KERN_WARNING "%s:%s: Setting Ethernet MAC to a random one\n", __FILE__, __func__);
+	return 1;
 }
 EXPORT_SYMBOL(bfin_get_ether_addr);
diff --git a/arch/blackfin/mach-bf537/boards/stamp.c b/arch/blackfin/mach-bf537/boards/stamp.c
index 2221173..0b80725 100644
--- a/arch/blackfin/mach-bf537/boards/stamp.c
+++ b/arch/blackfin/mach-bf537/boards/stamp.c
@@ -2993,9 +2993,10 @@ void native_machine_restart(char *cmd)
  * Currently the MAC address is saved in Flash by U-Boot
  */
 #define FLASH_MAC	0x203f0000
-void bfin_get_ether_addr(char *addr)
+int bfin_get_ether_addr(char *addr)
 {
 	*(u32 *)(&(addr[0])) = bfin_read32(FLASH_MAC);
 	*(u16 *)(&(addr[4])) = bfin_read16(FLASH_MAC + 4);
+	return 0;
 }
 EXPORT_SYMBOL(bfin_get_ether_addr);
diff --git a/arch/blackfin/mach-bf537/boards/tcm_bf537.c b/arch/blackfin/mach-bf537/boards/tcm_bf537.c
index 9885176..02eb9d0 100644
--- a/arch/blackfin/mach-bf537/boards/tcm_bf537.c
+++ b/arch/blackfin/mach-bf537/boards/tcm_bf537.c
@@ -780,9 +780,10 @@ void __init native_machine_early_platform_add_devices(void)
 		ARRAY_SIZE(cm_bf537_early_devices));
 }
 
-void bfin_get_ether_addr(char *addr)
+int bfin_get_ether_addr(char *addr)
 {
 	random_ether_addr(addr);
 	printk(KERN_WARNING "%s:%s: Setting Ethernet MAC to a random one\n", __FILE__, __func__);
+	return 1;
 }
 EXPORT_SYMBOL(bfin_get_ether_addr);
diff --git a/drivers/net/ethernet/adi/bfin_mac.c b/drivers/net/ethernet/adi/bfin_mac.c
index d812a10..064a3a6 100644
--- a/drivers/net/ethernet/adi/bfin_mac.c
+++ b/drivers/net/ethernet/adi/bfin_mac.c
@@ -621,6 +621,8 @@ static int bfin_mac_set_mac_address(struct net_device *dev, void *p)
 	if (netif_running(dev))
 		return -EBUSY;
 	memcpy(dev->dev_addr, addr->sa_data, dev->addr_len);
+	if (dev->addr_assign_type & NET_ADDR_RANDOM)
+		dev->addr_assign_type ^= NET_ADDR_RANDOM;
 	setup_mac_addr(dev->dev_addr);
 	return 0;
 }
@@ -1496,12 +1498,14 @@ static int __devinit bfin_mac_probe(struct platform_device *pdev)
 	 * Grab the MAC from the board somehow
 	 * this is done in the arch/blackfin/mach-bfxxx/boards/eth_mac.c
 	 */
-	if (!is_valid_ether_addr(ndev->dev_addr))
-		bfin_get_ether_addr(ndev->dev_addr);
+	if (!is_valid_ether_addr(ndev->dev_addr)) {
+		if (bfin_get_ether_addr(ndev->dev_addr))
+			ndev->addr_assign_type |= NET_ADDR_RANDOM;
+	}
 
 	/* If still not valid, get a random one */
 	if (!is_valid_ether_addr(ndev->dev_addr))
-		random_ether_addr(ndev->dev_addr);
+		dev_hw_addr_random(ndev, ndev->dev_addr);
 
 	setup_mac_addr(ndev->dev_addr);
 
diff --git a/drivers/net/ethernet/adi/bfin_mac.h b/drivers/net/ethernet/adi/bfin_mac.h
index f8559ac..960905c 100644
--- a/drivers/net/ethernet/adi/bfin_mac.h
+++ b/drivers/net/ethernet/adi/bfin_mac.h
@@ -101,6 +101,6 @@ struct bfin_mac_local {
 #endif
 };
 
-extern void bfin_get_ether_addr(char *addr);
+extern int bfin_get_ether_addr(char *addr);
 
 #endif
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 05/50] UML net: set addr_assign_type if random_ether_addr() used
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (3 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 04/50] adi/blackfin: set addr_assign_type correctly if random Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 21:10 ` [PATCH 06/50] dummy: use dev_hw_addr_random() instead of random_ether_addr() Danny Kukawka
                   ` (46 subsequent siblings)
  51 siblings, 0 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: Jeff Dike
  Cc: Danny Kukawka, Richard Weinberger, David S. Miller,
	Andrew Morton, user-mode-linux-devel, linux-kernel

Set addr_assign_type correctly to NET_ADDR_RANDOM in case
a random MAC address was generated and assigned to the netdevice.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 arch/um/drivers/net_kern.c |   11 ++++++++---
 1 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/arch/um/drivers/net_kern.c b/arch/um/drivers/net_kern.c
index a492e59..5f274f0 100644
--- a/arch/um/drivers/net_kern.c
+++ b/arch/um/drivers/net_kern.c
@@ -293,7 +293,7 @@ static void uml_net_user_timer_expire(unsigned long _conn)
 #endif
 }
 
-static void setup_etheraddr(char *str, unsigned char *addr, char *name)
+static int setup_etheraddr(char *str, unsigned char *addr, char *name)
 {
 	char *end;
 	int i;
@@ -334,12 +334,13 @@ static void setup_etheraddr(char *str, unsigned char *addr, char *name)
 		       addr[0] | 0x02, addr[1], addr[2], addr[3], addr[4],
 		       addr[5]);
 	}
-	return;
+	return 0;
 
 random:
 	printk(KERN_INFO
 	       "Choosing a random ethernet address for device %s\n", name);
 	random_ether_addr(addr);
+	return 1;
 }
 
 static DEFINE_SPINLOCK(devices_lock);
@@ -391,6 +392,7 @@ static void eth_configure(int n, void *init, char *mac,
 	struct net_device *dev;
 	struct uml_net_private *lp;
 	int err, size;
+	int is_random;
 
 	size = transport->private_size + sizeof(struct uml_net_private);
 
@@ -417,7 +419,7 @@ static void eth_configure(int n, void *init, char *mac,
 	 */
 	snprintf(dev->name, sizeof(dev->name), "eth%d", n);
 
-	setup_etheraddr(mac, device->mac, dev->name);
+	is_random = setup_etheraddr(mac, device->mac, dev->name);
 
 	printk(KERN_INFO "Netdevice %d (%pM) : ", n, device->mac);
 
@@ -474,6 +476,9 @@ static void eth_configure(int n, void *init, char *mac,
 
 	/* don't use eth_mac_addr, it will not work here */
 	memcpy(dev->dev_addr, device->mac, ETH_ALEN);
+	if (is_random)
+		dev->addr_assign_type |= NET_ADDR_RANDOM;
+
 	dev->mtu = transport->user->mtu;
 	dev->netdev_ops = &uml_netdev_ops;
 	dev->ethtool_ops = &uml_net_ethtool_ops;
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 06/50] dummy: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (4 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 05/50] UML net: set addr_assign_type if random_ether_addr() used Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 21:10 ` [PATCH 07/50] au1000_eth: " Danny Kukawka
                   ` (45 subsequent siblings)
  51 siblings, 0 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: David S. Miller; +Cc: Danny Kukawka, netdev, linux-kernel, Jiri Pirko

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Reset the state to NET_ADDR_PERM as soon as the MAC get
changed via .ndo_set_mac_address.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/dummy.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/drivers/net/dummy.c b/drivers/net/dummy.c
index 087648e..a766598 100644
--- a/drivers/net/dummy.c
+++ b/drivers/net/dummy.c
@@ -48,6 +48,8 @@ static int dummy_set_address(struct net_device *dev, void *p)
 		return -EADDRNOTAVAIL;
 
 	memcpy(dev->dev_addr, sa->sa_data, ETH_ALEN);
+	if (dev->addr_assign_type & NET_ADDR_RANDOM)
+		dev->addr_assign_type ^= NET_ADDR_RANDOM;
 	return 0;
 }
 
@@ -135,7 +137,7 @@ static void dummy_setup(struct net_device *dev)
 	dev->flags &= ~IFF_MULTICAST;
 	dev->features	|= NETIF_F_SG | NETIF_F_FRAGLIST | NETIF_F_TSO;
 	dev->features	|= NETIF_F_HW_CSUM | NETIF_F_HIGHDMA | NETIF_F_LLTX;
-	random_ether_addr(dev->dev_addr);
+	dev_hw_addr_random(dev, dev->dev_addr);
 }
 
 static int dummy_validate(struct nlattr *tb[], struct nlattr *data[])
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 07/50] au1000_eth: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (5 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 06/50] dummy: use dev_hw_addr_random() instead of random_ether_addr() Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 21:10 ` [PATCH 08/50] bnx2x: " Danny Kukawka
                   ` (44 subsequent siblings)
  51 siblings, 0 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: David S. Miller
  Cc: Danny Kukawka, netdev, linux-kernel, Jeff Kirsher, Jiri Pirko

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/ethernet/amd/au1000_eth.c |    9 +++++----
 1 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/amd/au1000_eth.c b/drivers/net/ethernet/amd/au1000_eth.c
index 8b95dd3..5683c06 100644
--- a/drivers/net/ethernet/amd/au1000_eth.c
+++ b/drivers/net/ethernet/amd/au1000_eth.c
@@ -1130,9 +1130,6 @@ static int __devinit au1000_probe(struct platform_device *pdev)
 
 	au1000_setup_hw_rings(aup, aup->macdma);
 
-	/* set a random MAC now in case platform_data doesn't provide one */
-	random_ether_addr(dev->dev_addr);
-
 	writel(0, aup->enable);
 	aup->mac_enabled = 0;
 
@@ -1142,8 +1139,12 @@ static int __devinit au1000_probe(struct platform_device *pdev)
 					" PHY search on MAC0\n");
 		aup->phy1_search_mac0 = 1;
 	} else {
-		if (is_valid_ether_addr(pd->mac))
+		if (is_valid_ether_addr(pd->mac)) {
 			memcpy(dev->dev_addr, pd->mac, 6);
+		} else {
+			/*set a random MAC if not provided by platform_data*/
+			dev_hw_addr_random(dev, dev->dev_addr);
+		}
 
 		aup->phy_static_config = pd->phy_static_config;
 		aup->phy_search_highest_addr = pd->phy_search_highest_addr;
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 08/50] bnx2x: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (6 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 07/50] au1000_eth: " Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-09  9:59   ` David Laight
  2012-02-08 21:10 ` [PATCH 09/50] Cadence MACB: " Danny Kukawka
                   ` (43 subsequent siblings)
  51 siblings, 1 reply; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: David S. Miller; +Cc: Danny Kukawka, netdev, linux-kernel, Eilon Greenstein

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Reset the state to NET_ADDR_PERM as soon as the MAC get
changed via .ndo_set_mac_address.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c  |    2 ++
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c |    2 +-
 2 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
index 03f3935..c21acf3 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
@@ -3009,6 +3009,8 @@ int bnx2x_change_mac_addr(struct net_device *dev, void *p)
 	}
 
 	memcpy(dev->dev_addr, addr->sa_data, dev->addr_len);
+	if (dev->addr_assign_type & NET_ADDR_RANDOM)
+		dev->addr_assign_type ^= NET_ADDR_RANDOM;
 
 	if (netif_running(dev))
 		rc = bnx2x_set_eth_mac(bp, true);
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
index 1e3f978..ff82dc9 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
@@ -9605,7 +9605,7 @@ static void __devinit bnx2x_get_mac_hwinfo(struct bnx2x *bp)
 
 	if (BP_NOMCP(bp)) {
 		BNX2X_ERROR("warning: random MAC workaround active\n");
-		random_ether_addr(bp->dev->dev_addr);
+		dev_hw_addr_random(bp->dev, bp->dev->dev_addr);
 	} else if (IS_MF(bp)) {
 		val2 = MF_CFG_RD(bp, func_mf_config[func].mac_upper);
 		val = MF_CFG_RD(bp, func_mf_config[func].mac_lower);
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 09/50] Cadence MACB: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (7 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 08/50] bnx2x: " Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-09  8:24   ` Nicolas Ferre
  2012-02-08 21:10 ` [PATCH 10/50] Calxeda XGMAC: " Danny Kukawka
                   ` (42 subsequent siblings)
  51 siblings, 1 reply; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: David S. Miller; +Cc: Danny Kukawka, netdev, linux-kernel, Nicolas Ferre

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/ethernet/cadence/macb.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/ethernet/cadence/macb.c b/drivers/net/ethernet/cadence/macb.c
index 2320068..3ee8d79 100644
--- a/drivers/net/ethernet/cadence/macb.c
+++ b/drivers/net/ethernet/cadence/macb.c
@@ -87,7 +87,7 @@ static void __init macb_get_hwaddr(struct macb *bp)
 		memcpy(bp->dev->dev_addr, addr, sizeof(addr));
 	} else {
 		netdev_info(bp->dev, "invalid hw address, using random\n");
-		random_ether_addr(bp->dev->dev_addr);
+		dev_hw_addr_random(bp->dev, bp->dev->dev_addr);
 	}
 }
 
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 10/50] Calxeda XGMAC: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (8 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 09/50] Cadence MACB: " Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 21:10 ` [PATCH 11/50] ep93xx: " Danny Kukawka
                   ` (41 subsequent siblings)
  51 siblings, 0 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: David S. Miller
  Cc: Danny Kukawka, netdev, linux-kernel, Stephen Hemminger, Rob Herring

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Reset the state to NET_ADDR_PERM as soon as the MAC get
changed via .ndo_set_mac_address.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/ethernet/calxeda/xgmac.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/drivers/net/ethernet/calxeda/xgmac.c b/drivers/net/ethernet/calxeda/xgmac.c
index 1fce186..dedaaf0 100644
--- a/drivers/net/ethernet/calxeda/xgmac.c
+++ b/drivers/net/ethernet/calxeda/xgmac.c
@@ -1012,7 +1012,7 @@ static int xgmac_open(struct net_device *dev)
 	 * address using the following linux command:
 	 *      ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx  */
 	if (!is_valid_ether_addr(dev->dev_addr)) {
-		random_ether_addr(dev->dev_addr);
+		dev_hw_addr_random(dev, dev->dev_addr);
 		netdev_dbg(priv->dev, "generated random MAC address %pM\n",
 			dev->dev_addr);
 	}
@@ -1483,6 +1483,8 @@ static int xgmac_set_mac_address(struct net_device *dev, void *p)
 		return -EADDRNOTAVAIL;
 
 	memcpy(dev->dev_addr, addr->sa_data, dev->addr_len);
+	if (dev->addr_assign_type & NET_ADDR_RANDOM)
+		dev->addr_assign_type ^= NET_ADDR_RANDOM;
 
 	xgmac_set_mac_addr(ioaddr, dev->dev_addr, 0);
 
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 11/50] ep93xx: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (9 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 10/50] Calxeda XGMAC: " Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 21:29   ` H Hartley Sweeten
  2012-02-08 21:10 ` [PATCH 12/50] dm9000: " Danny Kukawka
                   ` (40 subsequent siblings)
  51 siblings, 1 reply; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: Hartley Sweeten; +Cc: Danny Kukawka, netdev, linux-kernel, David S. Miller

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/ethernet/cirrus/ep93xx_eth.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/ethernet/cirrus/ep93xx_eth.c b/drivers/net/ethernet/cirrus/ep93xx_eth.c
index 4317af8..4b46270 100644
--- a/drivers/net/ethernet/cirrus/ep93xx_eth.c
+++ b/drivers/net/ethernet/cirrus/ep93xx_eth.c
@@ -859,7 +859,7 @@ static int ep93xx_eth_probe(struct platform_device *pdev)
 	ep->mdc_divisor = 40;	/* Max HCLK 100 MHz, min MDIO clk 2.5 MHz.  */
 
 	if (is_zero_ether_addr(dev->dev_addr))
-		random_ether_addr(dev->dev_addr);
+		dev_hw_addr_random(dev, dev->dev_addr);
 
 	err = register_netdev(dev);
 	if (err) {
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 12/50] dm9000: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (10 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 11/50] ep93xx: " Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 21:10 ` [PATCH 13/50] dnet: " Danny Kukawka
                   ` (39 subsequent siblings)
  51 siblings, 0 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: David S. Miller
  Cc: Danny Kukawka, netdev, linux-kernel, Mark Brown, Ben Dooks,
	Michał Mirosław

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/ethernet/davicom/dm9000.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/ethernet/davicom/dm9000.c b/drivers/net/ethernet/davicom/dm9000.c
index f801754..8e04cab 100644
--- a/drivers/net/ethernet/davicom/dm9000.c
+++ b/drivers/net/ethernet/davicom/dm9000.c
@@ -1587,7 +1587,7 @@ dm9000_probe(struct platform_device *pdev)
 		dev_warn(db->dev, "%s: Invalid ethernet MAC address. Please "
 			 "set using ifconfig\n", ndev->name);
 
-		random_ether_addr(ndev->dev_addr);
+		dev_hw_addr_random(ndev, ndev->dev_addr);
 		mac_src = "random";
 	}
 
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 13/50] dnet: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (11 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 12/50] dm9000: " Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 21:10 ` [PATCH 14/50] ethoc: set addr_assign_type if random_ether_addr() used Danny Kukawka
                   ` (38 subsequent siblings)
  51 siblings, 0 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: David S. Miller
  Cc: Danny Kukawka, netdev, linux-kernel, Richard Cochran,
	Alexey Dobriyan, Wan ZongShun

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/ethernet/dnet.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/ethernet/dnet.c b/drivers/net/ethernet/dnet.c
index 925c9ba..9f88165 100644
--- a/drivers/net/ethernet/dnet.c
+++ b/drivers/net/ethernet/dnet.c
@@ -897,7 +897,7 @@ static int __devinit dnet_probe(struct platform_device *pdev)
 
 	if (!is_valid_ether_addr(dev->dev_addr)) {
 		/* choose a random ethernet address */
-		random_ether_addr(dev->dev_addr);
+		dev_hw_addr_random(dev, dev->dev_addr);
 		__dnet_set_hwaddr(bp);
 	}
 
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 14/50] ethoc: set addr_assign_type if random_ether_addr() used
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (12 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 13/50] dnet: " Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 21:10 ` [PATCH 15/50] lantiq_etop: " Danny Kukawka
                   ` (37 subsequent siblings)
  51 siblings, 0 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: David S. Miller
  Cc: Danny Kukawka, netdev, linux-kernel, Alexey Dobriyan,
	Paul Gortmaker, Richard Cochran, Jiri Kosina

Set addr_assign_type correctly to NET_ADDR_RANDOM in case
a random MAC address was generated and assigned to the netdevice.

Reset the state to NET_ADDR_PERM as soon as the MAC get
changed via .ndo_set_mac_address.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/ethernet/ethoc.c |   11 ++++++++++-
 1 files changed, 10 insertions(+), 1 deletions(-)

diff --git a/drivers/net/ethernet/ethoc.c b/drivers/net/ethernet/ethoc.c
index 60f0e78..4f21471 100644
--- a/drivers/net/ethernet/ethoc.c
+++ b/drivers/net/ethernet/ethoc.c
@@ -780,6 +780,10 @@ static int ethoc_set_mac_address(struct net_device *dev, void *addr)
 				     (mac[4] <<  8) | (mac[5] <<  0));
 	ethoc_write(priv, MAC_ADDR1, (mac[0] <<  8) | (mac[1] <<  0));
 
+	/* if device marked as NET_ADDR_RANDOM, reset it to NET_ADDR_PERM */
+	if (dev->addr_assign_type & NET_ADDR_RANDOM)
+		dev->addr_assign_type ^= NET_ADDR_RANDOM;
+
 	return 0;
 }
 
@@ -909,6 +913,7 @@ static int __devinit ethoc_probe(struct platform_device *pdev)
 	unsigned int phy;
 	int num_bd;
 	int ret = 0;
+	bool random_mac = false;
 
 	/* allocate networking device */
 	netdev = alloc_etherdev(sizeof(struct ethoc));
@@ -1050,10 +1055,14 @@ static int __devinit ethoc_probe(struct platform_device *pdev)
 
 	/* Check the MAC again for validity, if it still isn't choose and
 	 * program a random one. */
-	if (!is_valid_ether_addr(netdev->dev_addr))
+	if (!is_valid_ether_addr(netdev->dev_addr)) {
 		random_ether_addr(netdev->dev_addr);
+		random_mac = true;
+	}
 
 	ethoc_set_mac_address(netdev, netdev->dev_addr);
+	if (random_mac)
+		netdev->addr_assign_type |= NET_ADDR_RANDOM;
 
 	/* register MII bus */
 	priv->mdio = mdiobus_alloc();
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 15/50] lantiq_etop: set addr_assign_type if random_ether_addr() used
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (13 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 14/50] ethoc: set addr_assign_type if random_ether_addr() used Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 21:10 ` [PATCH 16/50] pxa168_eth: use dev_hw_addr_random() instead of random_ether_addr() Danny Kukawka
                   ` (36 subsequent siblings)
  51 siblings, 0 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: David S. Miller
  Cc: Danny Kukawka, netdev, linux-kernel, John Crispin, Ralf Baechle,
	Jeff Kirsher

Set addr_assign_type correctly to NET_ADDR_RANDOM in case
a random MAC address was generated and assigned to the netdevice.

Reset the state to NET_ADDR_PERM as soon as the MAC get
changed via .ndo_set_mac_address.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/ethernet/lantiq_etop.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/drivers/net/ethernet/lantiq_etop.c b/drivers/net/ethernet/lantiq_etop.c
index 85e2c6c..b4f5108 100644
--- a/drivers/net/ethernet/lantiq_etop.c
+++ b/drivers/net/ethernet/lantiq_etop.c
@@ -634,6 +634,7 @@ ltq_etop_init(struct net_device *dev)
 	struct ltq_etop_priv *priv = netdev_priv(dev);
 	struct sockaddr mac;
 	int err;
+	bool random = false;
 
 	ether_setup(dev);
 	dev->watchdog_timeo = 10 * HZ;
@@ -646,9 +647,12 @@ ltq_etop_init(struct net_device *dev)
 	if (!is_valid_ether_addr(mac.sa_data)) {
 		pr_warn("etop: invalid MAC, using random\n");
 		random_ether_addr(mac.sa_data);
+		random = true;
 	}
 
 	err = ltq_etop_set_mac_address(dev, &mac);
+	if (random)
+		dev->addr_assign_type |= NET_ADDR_RANDOM;
 	if (err)
 		goto err_netdev;
 	ltq_etop_set_multicast_list(dev);
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 16/50] pxa168_eth: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (14 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 15/50] lantiq_etop: " Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 21:10 ` [PATCH 17/50] enc28j60: " Danny Kukawka
                   ` (35 subsequent siblings)
  51 siblings, 0 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: David S. Miller
  Cc: Danny Kukawka, netdev, linux-kernel, Richard Cochran,
	Joe Perches, Jon Mason, Jiri Kosina

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Reset the state to NET_ADDR_PERM as soon as the MAC get
changed via .ndo_set_mac_address.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/ethernet/marvell/pxa168_eth.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/drivers/net/ethernet/marvell/pxa168_eth.c b/drivers/net/ethernet/marvell/pxa168_eth.c
index 953ba58..76a5189 100644
--- a/drivers/net/ethernet/marvell/pxa168_eth.c
+++ b/drivers/net/ethernet/marvell/pxa168_eth.c
@@ -630,6 +630,8 @@ static int pxa168_eth_set_mac_address(struct net_device *dev, void *addr)
 		return -EINVAL;
 	memcpy(oldMac, dev->dev_addr, ETH_ALEN);
 	memcpy(dev->dev_addr, sa->sa_data, ETH_ALEN);
+	if (dev->addr_assign_type & NET_ADDR_RANDOM)
+		dev->addr_assign_type ^= NET_ADDR_RANDOM;
 	netif_addr_lock_bh(dev);
 	update_hash_table_mac_address(pep, oldMac, dev->dev_addr);
 	netif_addr_unlock_bh(dev);
@@ -1522,7 +1524,7 @@ static int pxa168_eth_probe(struct platform_device *pdev)
 	INIT_WORK(&pep->tx_timeout_task, pxa168_eth_tx_timeout_task);
 
 	printk(KERN_INFO "%s:Using random mac address\n", DRIVER_NAME);
-	random_ether_addr(dev->dev_addr);
+	dev_hw_addr_random(dev, dev->dev_addr);
 
 	pep->pd = pdev->dev.platform_data;
 	pep->rx_ring_size = NUM_RX_DESCS;
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 17/50] enc28j60: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (15 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 16/50] pxa168_eth: use dev_hw_addr_random() instead of random_ether_addr() Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 21:10 ` [PATCH 18/50] mipsnet: " Danny Kukawka
                   ` (34 subsequent siblings)
  51 siblings, 0 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: David S. Miller
  Cc: Danny Kukawka, netdev, linux-kernel, David Decotigny,
	Jeff Kirsher, Jiri Pirko

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Reset the state to NET_ADDR_PERM as soon as the MAC get
changed via .ndo_set_mac_address.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/ethernet/microchip/enc28j60.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/drivers/net/ethernet/microchip/enc28j60.c b/drivers/net/ethernet/microchip/enc28j60.c
index 50055e0..2abf71d 100644
--- a/drivers/net/ethernet/microchip/enc28j60.c
+++ b/drivers/net/ethernet/microchip/enc28j60.c
@@ -528,6 +528,9 @@ static int enc28j60_set_mac_address(struct net_device *dev, void *addr)
 		return -EADDRNOTAVAIL;
 
 	memcpy(dev->dev_addr, address->sa_data, dev->addr_len);
+	if (dev->addr_assign_type & NET_ADDR_RANDOM)
+		dev->addr_assign_type ^= NET_ADDR_RANDOM;
+
 	return enc28j60_set_hw_macaddr(dev);
 }
 
@@ -1579,7 +1582,7 @@ static int __devinit enc28j60_probe(struct spi_device *spi)
 		ret = -EIO;
 		goto error_irq;
 	}
-	random_ether_addr(dev->dev_addr);
+	dev_hw_addr_random(dev, dev->dev_addr);
 	enc28j60_set_hw_macaddr(dev);
 
 	/* Board setup must set the relevant edge trigger type;
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 18/50] mipsnet: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (16 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 17/50] enc28j60: " Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 21:10 ` [PATCH 19/50] macsonic: " Danny Kukawka
                   ` (33 subsequent siblings)
  51 siblings, 0 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: David S. Miller
  Cc: Danny Kukawka, netdev, linux-kernel, Jeff Kirsher,
	Alexey Dobriyan, Jiri Pirko

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/ethernet/mipsnet.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/ethernet/mipsnet.c b/drivers/net/ethernet/mipsnet.c
index d05b0c9..ebdd56c 100644
--- a/drivers/net/ethernet/mipsnet.c
+++ b/drivers/net/ethernet/mipsnet.c
@@ -281,7 +281,7 @@ static int __devinit mipsnet_probe(struct platform_device *dev)
 	 * Lacking any better mechanism to allocate a MAC address we use a
 	 * random one ...
 	 */
-	random_ether_addr(netdev->dev_addr);
+	dev_hw_addr_random(netdev, netdev->dev_addr);
 
 	err = register_netdev(netdev);
 	if (err) {
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 19/50] macsonic: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (17 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 18/50] mipsnet: " Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 21:10 ` [PATCH 20/50] smsc911x: " Danny Kukawka
                   ` (32 subsequent siblings)
  51 siblings, 0 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: David S. Miller
  Cc: Danny Kukawka, netdev, linux-kernel, Wan ZongShun, Jeff Kirsher,
	Finn Thain

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/ethernet/natsemi/macsonic.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/ethernet/natsemi/macsonic.c b/drivers/net/ethernet/natsemi/macsonic.c
index f1b8556..c3819dc 100644
--- a/drivers/net/ethernet/natsemi/macsonic.c
+++ b/drivers/net/ethernet/natsemi/macsonic.c
@@ -307,7 +307,7 @@ static void __devinit mac_onboard_sonic_ethernet_addr(struct net_device *dev)
 
 	printk(KERN_WARNING "macsonic: MAC address in CAM entry 15 "
 	                    "seems invalid, will use a random MAC\n");
-	random_ether_addr(dev->dev_addr);
+	dev_hw_addr_random(dev, dev->dev_addr);
 }
 
 static int __devinit mac_onboard_sonic_probe(struct net_device *dev)
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 20/50] smsc911x: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (18 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 19/50] macsonic: " Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-09 11:28   ` Mark Brown
  2012-02-08 21:10 ` [PATCH 21/50] smsc9420: " Danny Kukawka
                   ` (31 subsequent siblings)
  51 siblings, 1 reply; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: David S. Miller; +Cc: Danny Kukawka, netdev, linux-kernel, Steve Glendinning

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Reset the state to NET_ADDR_PERM as soon as the MAC get
changed via .ndo_set_mac_address.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/ethernet/smsc/smsc911x.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/drivers/net/ethernet/smsc/smsc911x.c b/drivers/net/ethernet/smsc/smsc911x.c
index 24d2df0..92ab844 100644
--- a/drivers/net/ethernet/smsc/smsc911x.c
+++ b/drivers/net/ethernet/smsc/smsc911x.c
@@ -1834,6 +1834,8 @@ static int smsc911x_set_mac_address(struct net_device *dev, void *p)
 		return -EADDRNOTAVAIL;
 
 	memcpy(dev->dev_addr, addr->sa_data, ETH_ALEN);
+	if (dev->addr_assign_type & NET_ADDR_RANDOM)
+		dev->addr_assign_type ^= NET_ADDR_RANDOM;
 
 	spin_lock_irq(&pdata->mac_lock);
 	smsc911x_set_hw_mac_address(pdata, dev->dev_addr);
@@ -2486,7 +2488,7 @@ static int __devinit smsc911x_drv_probe(struct platform_device *pdev)
 				   "Mac Address is read from LAN911x EEPROM");
 		} else {
 			/* eeprom values are invalid, generate random MAC */
-			random_ether_addr(dev->dev_addr);
+			dev_hw_addr_random(dev, dev->dev_addr);
 			smsc911x_set_hw_mac_address(pdata, dev->dev_addr);
 			SMSC_TRACE(pdata, probe,
 				   "MAC Address is set to random_ether_addr");
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 21/50] smsc9420: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (19 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 20/50] smsc911x: " Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 21:10 ` [PATCH 22/50] r6040: " Danny Kukawka
                   ` (30 subsequent siblings)
  51 siblings, 0 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: David S. Miller; +Cc: Danny Kukawka, netdev, linux-kernel, Steve Glendinning

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/ethernet/smsc/smsc9420.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/ethernet/smsc/smsc9420.c b/drivers/net/ethernet/smsc/smsc9420.c
index a9efbdf..51013df 100644
--- a/drivers/net/ethernet/smsc/smsc9420.c
+++ b/drivers/net/ethernet/smsc/smsc9420.c
@@ -509,7 +509,7 @@ static void smsc9420_check_mac_address(struct net_device *dev)
 			smsc_dbg(PROBE, "Mac Address is read from EEPROM");
 		} else {
 			/* eeprom values are invalid, generate random MAC */
-			random_ether_addr(dev->dev_addr);
+			dev_hw_addr_random(dev, dev->dev_addr);
 			smsc9420_set_mac_address(dev);
 			smsc_dbg(PROBE,
 				"MAC Address is set to random_ether_addr");
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 22/50] r6040: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (20 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 21/50] smsc9420: " Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 21:10 ` [PATCH 23/50] efx: " Danny Kukawka
                   ` (29 subsequent siblings)
  51 siblings, 0 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: Florian Fainelli; +Cc: Danny Kukawka, David S. Miller, netdev, linux-kernel

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/ethernet/rdc/r6040.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/ethernet/rdc/r6040.c b/drivers/net/ethernet/rdc/r6040.c
index cb0eca8..dba0a6a 100644
--- a/drivers/net/ethernet/rdc/r6040.c
+++ b/drivers/net/ethernet/rdc/r6040.c
@@ -1152,7 +1152,7 @@ static int __devinit r6040_init_one(struct pci_dev *pdev,
 	if (!(adrp[0] || adrp[1] || adrp[2])) {
 		netdev_warn(dev, "MAC address not initialized, "
 					"generating random\n");
-		random_ether_addr(dev->dev_addr);
+		dev_hw_addr_random(dev, dev->dev_addr);
 	}
 
 	/* Link new device into r6040_root_dev */
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 23/50] efx: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (21 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 22/50] r6040: " Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 21:29   ` Ben Hutchings
  2012-02-08 21:10 ` [PATCH 24/50] sis900: " Danny Kukawka
                   ` (28 subsequent siblings)
  51 siblings, 1 reply; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: David S. Miller
  Cc: Danny Kukawka, netdev, linux-kernel,
	Solarflare linux maintainers, Ben Hutchings

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Reset the state to NET_ADDR_PERM as soon as the MAC get
changed via .ndo_set_mac_address.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/ethernet/sfc/efx.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/drivers/net/ethernet/sfc/efx.c b/drivers/net/ethernet/sfc/efx.c
index e43702f..cce339a 100644
--- a/drivers/net/ethernet/sfc/efx.c
+++ b/drivers/net/ethernet/sfc/efx.c
@@ -940,7 +940,7 @@ static int efx_probe_port(struct efx_nic *efx)
 			rc = -EINVAL;
 			goto err;
 		}
-		random_ether_addr(efx->net_dev->dev_addr);
+		dev_hw_addr_random(efx->net_dev, efx->net_dev->dev_addr);
 		netif_info(efx, probe, efx->net_dev,
 			   "using locally-generated MAC %pM\n",
 			   efx->net_dev->dev_addr);
@@ -1858,6 +1858,8 @@ static int efx_set_mac_address(struct net_device *net_dev, void *data)
 	}
 
 	memcpy(net_dev->dev_addr, new_addr, net_dev->addr_len);
+	if (net_dev->addr_assign_type & NET_ADDR_RANDOM)
+		net_dev->addr_assign_type ^= NET_ADDR_RANDOM;
 
 	/* Reconfigure the MAC */
 	mutex_lock(&efx->mac_lock);
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 24/50] sis900: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (22 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 23/50] efx: " Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-11  9:05   ` Daniele Venzano
  2012-02-08 21:10 ` [PATCH 25/50] via-rhine: " Danny Kukawka
                   ` (27 subsequent siblings)
  51 siblings, 1 reply; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: Daniele Venzano; +Cc: Danny Kukawka, David S. Miller, netdev, linux-kernel

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/ethernet/sis/sis900.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/ethernet/sis/sis900.c b/drivers/net/ethernet/sis/sis900.c
index c8efc70..cbd0343 100644
--- a/drivers/net/ethernet/sis/sis900.c
+++ b/drivers/net/ethernet/sis/sis900.c
@@ -527,7 +527,7 @@ static int __devinit sis900_probe(struct pci_dev *pci_dev,
 		ret = sis900_get_mac_addr(pci_dev, net_dev);
 
 	if (!ret || !is_valid_ether_addr(net_dev->dev_addr)) {
-		random_ether_addr(net_dev->dev_addr);
+		dev_hw_addr_random(net_dev, net_dev->dev_addr);
 		printk(KERN_WARNING "%s: Unreadable or invalid MAC address,"
 				"using random generated one\n", dev_name);
 	}
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 25/50] via-rhine: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (23 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 24/50] sis900: " Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 21:10 ` [PATCH 26/50] faraday: " Danny Kukawka
                   ` (26 subsequent siblings)
  51 siblings, 0 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: Roger Luethi; +Cc: Danny Kukawka, David S. Miller, netdev, linux-kernel

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/ethernet/via/via-rhine.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/ethernet/via/via-rhine.c b/drivers/net/ethernet/via/via-rhine.c
index 10b18eb..eda0711 100644
--- a/drivers/net/ethernet/via/via-rhine.c
+++ b/drivers/net/ethernet/via/via-rhine.c
@@ -984,7 +984,7 @@ static int __devinit rhine_init_one(struct pci_dev *pdev,
 	if (!is_valid_ether_addr(dev->dev_addr)) {
 		/* Report it and use a random ethernet address instead */
 		netdev_err(dev, "Invalid MAC address: %pM\n", dev->dev_addr);
-		random_ether_addr(dev->dev_addr);
+		dev_hw_addr_random(dev, dev->dev_addr);
 		netdev_info(dev, "Using random MAC address: %pM\n",
 			    dev->dev_addr);
 	}
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 26/50] faraday: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (24 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 25/50] via-rhine: " Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 21:10 ` [PATCH 27/50] davinci_emac: " Danny Kukawka
                   ` (25 subsequent siblings)
  51 siblings, 0 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: David S. Miller
  Cc: Danny Kukawka, netdev, linux-kernel, Po-Yu Chuang, Eric Dumazet,
	Thomas Faber, Jeff Kirsher

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/ethernet/faraday/ftgmac100.c |    2 +-
 drivers/net/ethernet/faraday/ftmac100.c  |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/faraday/ftgmac100.c b/drivers/net/ethernet/faraday/ftgmac100.c
index 47f85c3..4842659 100644
--- a/drivers/net/ethernet/faraday/ftgmac100.c
+++ b/drivers/net/ethernet/faraday/ftgmac100.c
@@ -1289,7 +1289,7 @@ static int ftgmac100_probe(struct platform_device *pdev)
 	netdev_info(netdev, "irq %d, mapped at %p\n", priv->irq, priv->base);
 
 	if (!is_valid_ether_addr(netdev->dev_addr)) {
-		random_ether_addr(netdev->dev_addr);
+		dev_hw_addr_random(netdev, netdev->dev_addr);
 		netdev_info(netdev, "generated random MAC address %pM\n",
 			    netdev->dev_addr);
 	}
diff --git a/drivers/net/ethernet/faraday/ftmac100.c b/drivers/net/ethernet/faraday/ftmac100.c
index bb336a0..1561010 100644
--- a/drivers/net/ethernet/faraday/ftmac100.c
+++ b/drivers/net/ethernet/faraday/ftmac100.c
@@ -1133,7 +1133,7 @@ static int ftmac100_probe(struct platform_device *pdev)
 	netdev_info(netdev, "irq %d, mapped at %p\n", priv->irq, priv->base);
 
 	if (!is_valid_ether_addr(netdev->dev_addr)) {
-		random_ether_addr(netdev->dev_addr);
+		dev_hw_addr_random(netdev, netdev->dev_addr);
 		netdev_info(netdev, "generated random MAC address %pM\n",
 			    netdev->dev_addr);
 	}
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 27/50] davinci_emac: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (25 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 26/50] faraday: " Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 21:10 ` [PATCH 28/50] forcedeth: " Danny Kukawka
                   ` (24 subsequent siblings)
  51 siblings, 0 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: David S. Miller
  Cc: Danny Kukawka, netdev, linux-kernel, Richard Cochran,
	Julia Lawall, Sascha Hauer, Joe Perches

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Reset the state to NET_ADDR_PERM as soon as the MAC get
changed via .ndo_set_mac_address.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/ethernet/ti/davinci_emac.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/drivers/net/ethernet/ti/davinci_emac.c b/drivers/net/ethernet/ti/davinci_emac.c
index 794ac30..fba3f74 100644
--- a/drivers/net/ethernet/ti/davinci_emac.c
+++ b/drivers/net/ethernet/ti/davinci_emac.c
@@ -1260,6 +1260,8 @@ static int emac_dev_setmac_addr(struct net_device *ndev, void *addr)
 	/* Store mac addr in priv and rx channel and set it in EMAC hw */
 	memcpy(priv->mac_addr, sa->sa_data, ndev->addr_len);
 	memcpy(ndev->dev_addr, sa->sa_data, ndev->addr_len);
+	if (ndev->addr_assign_type & NET_ADDR_RANDOM)
+		ndev->addr_assign_type ^= NET_ADDR_RANDOM;
 
 	/* MAC address is configured only after the interface is enabled. */
 	if (netif_running(ndev)) {
@@ -1897,7 +1899,7 @@ static int __devinit davinci_emac_probe(struct platform_device *pdev)
 
 	if (!is_valid_ether_addr(priv->mac_addr)) {
 		/* Use random MAC if none passed */
-		random_ether_addr(priv->mac_addr);
+		dev_hw_addr_random(ndev, priv->mac_addr);
 		dev_warn(&pdev->dev, "using random MAC addr: %pM\n",
 							priv->mac_addr);
 	}
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 28/50] forcedeth: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (26 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 27/50] davinci_emac: " Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 21:10 ` [PATCH 29/50] micrel eth: " Danny Kukawka
                   ` (23 subsequent siblings)
  51 siblings, 0 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: David S. Miller
  Cc: Danny Kukawka, netdev, linux-kernel, David Decotigny,
	Eric Dumazet, Jiri Pirko

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Reset the state to NET_ADDR_PERM as soon as the MAC get
changed via .ndo_set_mac_address.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/ethernet/nvidia/forcedeth.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/drivers/net/ethernet/nvidia/forcedeth.c b/drivers/net/ethernet/nvidia/forcedeth.c
index 4c4e7f4..60176ad 100644
--- a/drivers/net/ethernet/nvidia/forcedeth.c
+++ b/drivers/net/ethernet/nvidia/forcedeth.c
@@ -3022,6 +3022,8 @@ static int nv_set_mac_address(struct net_device *dev, void *addr)
 
 	/* synchronized against open : rtnl_lock() held by caller */
 	memcpy(dev->dev_addr, macaddr->sa_data, ETH_ALEN);
+	if (dev->addr_assign_type & NET_ADDR_RANDOM)
+		dev->addr_assign_type ^= NET_ADDR_RANDOM;
 
 	if (netif_running(dev)) {
 		netif_tx_lock_bh(dev);
@@ -5741,7 +5743,7 @@ static int __devinit nv_probe(struct pci_dev *pci_dev, const struct pci_device_i
 		dev_err(&pci_dev->dev,
 			"Invalid MAC address detected: %pM - Please complain to your hardware vendor.\n",
 			dev->dev_addr);
-		random_ether_addr(dev->dev_addr);
+		dev_hw_addr_random(dev, dev->dev_addr);
 		dev_err(&pci_dev->dev,
 			"Using random MAC address: %pM\n", dev->dev_addr);
 	}
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 29/50] micrel eth: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (27 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 28/50] forcedeth: " Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 21:10 ` [PATCH 30/50] atheros eth: set addr_assign_type if random_ether_addr() used Danny Kukawka
                   ` (22 subsequent siblings)
  51 siblings, 0 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: David S. Miller
  Cc: Danny Kukawka, netdev, linux-kernel, Samuel Ortiz,
	Dennis Aberilla, Alexey Dobriyan, Stephen Boyd, Ben Dooks,
	Simtec Linux Team, Thomas Meyer, Wan ZongShun

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Reset the state to NET_ADDR_PERM as soon as the MAC get
changed via .ndo_set_mac_address.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/ethernet/micrel/ks8842.c     |    4 +++-
 drivers/net/ethernet/micrel/ks8851.c     |    7 +++++--
 drivers/net/ethernet/micrel/ks8851_mll.c |    4 +++-
 3 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/micrel/ks8842.c b/drivers/net/ethernet/micrel/ks8842.c
index 0a85690..5bba69a 100644
--- a/drivers/net/ethernet/micrel/ks8842.c
+++ b/drivers/net/ethernet/micrel/ks8842.c
@@ -1081,6 +1081,8 @@ static int ks8842_set_mac(struct net_device *netdev, void *p)
 		return -EADDRNOTAVAIL;
 
 	memcpy(netdev->dev_addr, mac, netdev->addr_len);
+	if (netdev->addr_assign_type & NET_ADDR_RANDOM)
+		netdev->addr_assign_type ^= NET_ADDR_RANDOM;
 
 	ks8842_write_mac_addr(adapter, mac);
 	return 0;
@@ -1211,7 +1213,7 @@ static int __devinit ks8842_probe(struct platform_device *pdev)
 		ks8842_read_mac_addr(adapter, netdev->dev_addr);
 
 		if (!is_valid_ether_addr(netdev->dev_addr))
-			random_ether_addr(netdev->dev_addr);
+			dev_hw_addr_random(netdev, netdev->dev_addr);
 	}
 
 	id = ks8842_read16(adapter, 32, REG_SW_ID_AND_ENABLE);
diff --git a/drivers/net/ethernet/micrel/ks8851.c b/drivers/net/ethernet/micrel/ks8851.c
index 6b35e7d..49537d4 100644
--- a/drivers/net/ethernet/micrel/ks8851.c
+++ b/drivers/net/ethernet/micrel/ks8851.c
@@ -422,7 +422,7 @@ static void ks8851_read_mac_addr(struct net_device *dev)
  *
  * Get or create the initial mac address for the device and then set that
  * into the station address register. If there is an EEPROM present, then
- * we try that. If no valid mac address is found we use random_ether_addr()
+ * we try that. If no valid mac address is found we use dev_hw_addr_random()
  * to create a new one.
  */
 static void ks8851_init_mac(struct ks8851_net *ks)
@@ -439,7 +439,7 @@ static void ks8851_init_mac(struct ks8851_net *ks)
 				dev->dev_addr);
 	}
 
-	random_ether_addr(dev->dev_addr);
+	dev_hw_addr_random(dev, dev->dev_addr);
 	ks8851_write_mac_addr(dev);
 }
 
@@ -1051,6 +1051,9 @@ static int ks8851_set_mac_address(struct net_device *dev, void *addr)
 		return -EADDRNOTAVAIL;
 
 	memcpy(dev->dev_addr, sa->sa_data, ETH_ALEN);
+	if (dev->addr_assign_type & NET_ADDR_RANDOM)
+		dev->addr_assign_type ^= NET_ADDR_RANDOM;
+
 	return ks8851_write_mac_addr(dev);
 }
 
diff --git a/drivers/net/ethernet/micrel/ks8851_mll.c b/drivers/net/ethernet/micrel/ks8851_mll.c
index e58e78e..1fa93b6 100644
--- a/drivers/net/ethernet/micrel/ks8851_mll.c
+++ b/drivers/net/ethernet/micrel/ks8851_mll.c
@@ -1242,6 +1242,8 @@ static int ks_set_mac_address(struct net_device *netdev, void *paddr)
 	u8 *da;
 
 	memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
+	if (netdev->addr_assign_type & NET_ADDR_RANDOM)
+		netdev->addr_assign_type ^= NET_ADDR_RANDOM;
 
 	da = (u8 *)netdev->dev_addr;
 
@@ -1609,7 +1611,7 @@ static int __devinit ks8851_probe(struct platform_device *pdev)
 	 * comment out the 2 functions below.
 	 */
 
-	random_ether_addr(netdev->dev_addr);
+	dev_hw_addr_random(netdev, netdev->dev_addr);
 	ks_set_mac(ks, netdev->dev_addr);
 
 	id = ks_rdreg16(ks, KS_CIDER);
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 30/50] atheros eth: set addr_assign_type if random_ether_addr() used
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (28 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 29/50] micrel eth: " Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 21:10 ` [PATCH 31/50] tc35815: use dev_hw_addr_random() instead of random_ether_addr() Danny Kukawka
                   ` (21 subsequent siblings)
  51 siblings, 0 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: Jay Cliburn
  Cc: Danny Kukawka, Chris Snook, David S. Miller, netdev,
	linux-kernel, Jeff Kirsher, Ian Campbell, Jiri Pirko,
	Michał Mirosław, Stephen Hemminger, Eric Dumazet,
	David Decotigny

Set addr_assign_type correctly to NET_ADDR_RANDOM in case
a random MAC address was generated and assigned to the netdevice.

Reset the state to NET_ADDR_PERM as soon as the MAC get
changed via .ndo_set_mac_address.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/ethernet/atheros/atl1c/atl1c_hw.c   |    2 +-
 drivers/net/ethernet/atheros/atl1c/atl1c_main.c |   11 ++++++-----
 drivers/net/ethernet/atheros/atlx/atl1.c        |   12 +++++++++---
 drivers/net/ethernet/atheros/atlx/atlx.c        |    3 +++
 4 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/drivers/net/ethernet/atheros/atl1c/atl1c_hw.c b/drivers/net/ethernet/atheros/atl1c/atl1c_hw.c
index 23f2ab0..bd1667c 100644
--- a/drivers/net/ethernet/atheros/atl1c/atl1c_hw.c
+++ b/drivers/net/ethernet/atheros/atl1c/atl1c_hw.c
@@ -224,7 +224,7 @@ int atl1c_read_mac_addr(struct atl1c_hw *hw)
 		random_ether_addr(hw->perm_mac_addr);
 
 	memcpy(hw->mac_addr, hw->perm_mac_addr, sizeof(hw->perm_mac_addr));
-	return 0;
+	return err;
 }
 
 /*
diff --git a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
index b859124..edc0442 100644
--- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
+++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
@@ -467,6 +467,9 @@ static int atl1c_set_mac_addr(struct net_device *netdev, void *p)
 		return -EBUSY;
 
 	memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
+	/* reset to NET_ADDR_PERM if was random */
+	if (netdev->addr_assign_type & NET_ADDR_RANDOM)
+		netdev->addr_assign_type ^= NET_ADDR_RANDOM;
 	memcpy(adapter->hw.mac_addr, addr->sa_data, netdev->addr_len);
 
 	atl1c_hw_set_mac_addr(&adapter->hw);
@@ -2746,10 +2749,9 @@ static int __devinit atl1c_probe(struct pci_dev *pdev,
 		err = -EIO;
 		goto err_reset;
 	}
-	if (atl1c_read_mac_addr(&adapter->hw) != 0) {
-		err = -EIO;
-		dev_err(&pdev->dev, "get mac address failed\n");
-		goto err_eeprom;
+	if (atl1c_read_mac_addr(&adapter->hw)) {
+		/* got a random MAC address, set NET_ADDR_RANDOM to netdev */
+		netdev->addr_assign_type |= NET_ADDR_RANDOM;
 	}
 	memcpy(netdev->dev_addr, adapter->hw.mac_addr, netdev->addr_len);
 	memcpy(netdev->perm_addr, adapter->hw.mac_addr, netdev->addr_len);
@@ -2774,7 +2776,6 @@ static int __devinit atl1c_probe(struct pci_dev *pdev,
 err_reset:
 err_register:
 err_sw_init:
-err_eeprom:
 	iounmap(adapter->hw.hw_addr);
 err_init_netdev:
 err_ioremap:
diff --git a/drivers/net/ethernet/atheros/atlx/atl1.c b/drivers/net/ethernet/atheros/atlx/atl1.c
index 9bd2049..40ac414 100644
--- a/drivers/net/ethernet/atheros/atlx/atl1.c
+++ b/drivers/net/ethernet/atheros/atlx/atl1.c
@@ -534,14 +534,17 @@ static int atl1_get_permanent_address(struct atl1_hw *hw)
  */
 static s32 atl1_read_mac_addr(struct atl1_hw *hw)
 {
+	s32 ret = 0;
 	u16 i;
 
-	if (atl1_get_permanent_address(hw))
+	if (atl1_get_permanent_address(hw)) {
 		random_ether_addr(hw->perm_mac_addr);
+		ret = 1;
+	}
 
 	for (i = 0; i < ETH_ALEN; i++)
 		hw->mac_addr[i] = hw->perm_mac_addr[i];
-	return 0;
+	return ret;
 }
 
 /*
@@ -3007,7 +3010,10 @@ static int __devinit atl1_probe(struct pci_dev *pdev,
 	}
 
 	/* copy the MAC address out of the EEPROM */
-	atl1_read_mac_addr(&adapter->hw);
+	if (atl1_read_mac_addr(&adapter->hw)) {
+		/* mark random mac */
+		netdev->addr_assign_type |= NET_ADDR_RANDOM;
+	}
 	memcpy(netdev->dev_addr, adapter->hw.mac_addr, netdev->addr_len);
 
 	if (!is_valid_ether_addr(netdev->dev_addr)) {
diff --git a/drivers/net/ethernet/atheros/atlx/atlx.c b/drivers/net/ethernet/atheros/atlx/atlx.c
index 8ff7411..77d2925 100644
--- a/drivers/net/ethernet/atheros/atlx/atlx.c
+++ b/drivers/net/ethernet/atheros/atlx/atlx.c
@@ -83,6 +83,9 @@ static int atlx_set_mac(struct net_device *netdev, void *p)
 		return -EADDRNOTAVAIL;
 
 	memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
+	/* reset to NET_ADDR_PERM if was random */
+	if (netdev->addr_assign_type & NET_ADDR_RANDOM)
+		netdev->addr_assign_type ^= NET_ADDR_RANDOM;
 	memcpy(adapter->hw.mac_addr, addr->sa_data, netdev->addr_len);
 
 	atlx_set_mac_addr(&adapter->hw);
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 31/50] tc35815: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (29 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 30/50] atheros eth: set addr_assign_type if random_ether_addr() used Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 21:10 ` [PATCH 32/50] tile_net: " Danny Kukawka
                   ` (20 subsequent siblings)
  51 siblings, 0 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: David S. Miller
  Cc: Danny Kukawka, netdev, linux-kernel, Paul, Lucas De Marchi, Jeff Kirsher

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/ethernet/toshiba/tc35815.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/ethernet/toshiba/tc35815.c b/drivers/net/ethernet/toshiba/tc35815.c
index 71b785c..b5bb9ed 100644
--- a/drivers/net/ethernet/toshiba/tc35815.c
+++ b/drivers/net/ethernet/toshiba/tc35815.c
@@ -850,7 +850,7 @@ static int __devinit tc35815_init_one(struct pci_dev *pdev,
 	/* Retrieve the ethernet address. */
 	if (tc35815_init_dev_addr(dev)) {
 		dev_warn(&pdev->dev, "not valid ether addr\n");
-		random_ether_addr(dev->dev_addr);
+		dev_hw_addr_random(dev, dev->dev_addr);
 	}
 
 	rc = register_netdev(dev);
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 32/50] tile_net: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (30 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 31/50] tc35815: use dev_hw_addr_random() instead of random_ether_addr() Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 21:10 ` [PATCH 33/50] stmmac: " Danny Kukawka
                   ` (19 subsequent siblings)
  51 siblings, 0 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: David S. Miller; +Cc: Danny Kukawka, netdev, linux-kernel, Chris Metcalf

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Reset the state to NET_ADDR_PERM as soon as the MAC get
changed via .ndo_set_mac_address.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/ethernet/tile/tilepro.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/drivers/net/ethernet/tile/tilepro.c b/drivers/net/ethernet/tile/tilepro.c
index d9951af..f007df4 100644
--- a/drivers/net/ethernet/tile/tilepro.c
+++ b/drivers/net/ethernet/tile/tilepro.c
@@ -2190,6 +2190,8 @@ static int tile_net_set_mac_address(struct net_device *dev, void *p)
 
 	/* ISSUE: Note that "dev_addr" is now a pointer. */
 	memcpy(dev->dev_addr, addr->sa_data, dev->addr_len);
+	if (dev->addr_assign_type & NET_ADDR_RANDOM)
+		dev->addr_assign_type ^= NET_ADDR_RANDOM;
 
 	return 0;
 }
@@ -2254,7 +2256,7 @@ static int tile_net_get_mac(struct net_device *dev)
 		 * can't get its MAC address, we are most likely running
 		 * the simulator, so let's generate a random MAC address.
 		 */
-		random_ether_addr(dev->dev_addr);
+		dev_hw_addr_random(dev, dev->dev_addr);
 	}
 
 	return 0;
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 33/50] stmmac: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (31 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 32/50] tile_net: " Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 21:10 ` [PATCH 34/50] xilinx ll_temac: " Danny Kukawka
                   ` (18 subsequent siblings)
  51 siblings, 0 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: David S. Miller; +Cc: Danny Kukawka, netdev, linux-kernel, Giuseppe Cavallaro

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index 96fa2da..e84bdb2 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -910,7 +910,7 @@ static void stmmac_check_ether_addr(struct stmmac_priv *priv)
 					     priv->dev->base_addr,
 					     priv->dev->dev_addr, 0);
 		if  (!is_valid_ether_addr(priv->dev->dev_addr))
-			random_ether_addr(priv->dev->dev_addr);
+			dev_hw_addr_random(priv->dev, priv->dev->dev_addr);
 	}
 	pr_warning("%s: device MAC address %pM\n", priv->dev->name,
 						   priv->dev->dev_addr);
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 34/50] xilinx ll_temac: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (32 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 33/50] stmmac: " Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 21:10 ` [PATCH 35/50] ifb: " Danny Kukawka
                   ` (17 subsequent siblings)
  51 siblings, 0 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: David S. Miller
  Cc: Danny Kukawka, netdev, linux-kernel, Stephen Rothwell,
	Ricardo Ribalda Delgado, Thomas Meyer, Richard Cochran

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Reset the state to NET_ADDR_PERM as soon as the MAC get
changed via .ndo_set_mac_address.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/ethernet/xilinx/ll_temac_main.c |   11 +++++++++--
 1 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/xilinx/ll_temac_main.c b/drivers/net/ethernet/xilinx/ll_temac_main.c
index f21addb..d687620 100644
--- a/drivers/net/ethernet/xilinx/ll_temac_main.c
+++ b/drivers/net/ethernet/xilinx/ll_temac_main.c
@@ -322,12 +322,19 @@ out:
 static int temac_set_mac_address(struct net_device *ndev, void *address)
 {
 	struct temac_local *lp = netdev_priv(ndev);
+	bool set_random = false;
 
 	if (address)
 		memcpy(ndev->dev_addr, address, ETH_ALEN);
 
-	if (!is_valid_ether_addr(ndev->dev_addr))
-		random_ether_addr(ndev->dev_addr);
+	if (!is_valid_ether_addr(ndev->dev_addr)) {
+		dev_hw_addr_random(ndev, ndev->dev_addr);
+		set_random = true;
+	}
+	if (!set_random) {
+		if (ndev->addr_assign_type & NET_ADDR_RANDOM)
+			ndev->addr_assign_type ^= NET_ADDR_RANDOM;
+	}
 
 	/* set up unicast MAC address filter set its mac address */
 	mutex_lock(&lp->indirect_mutex);
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 35/50] ifb: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (33 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 34/50] xilinx ll_temac: " Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 21:10 ` [PATCH 36/50] igbvf: reset netdevice addr_assign_type if changed from random Danny Kukawka
                   ` (16 subsequent siblings)
  51 siblings, 0 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: David S. Miller
  Cc: Danny Kukawka, netdev, linux-kernel, Stephen Hemminger,
	Alexey Dobriyan, Jamal Hadi Salim

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/ifb.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/ifb.c b/drivers/net/ifb.c
index e05b645..9ec2a86 100644
--- a/drivers/net/ifb.c
+++ b/drivers/net/ifb.c
@@ -184,7 +184,7 @@ static void ifb_setup(struct net_device *dev)
 	dev->flags |= IFF_NOARP;
 	dev->flags &= ~IFF_MULTICAST;
 	dev->priv_flags &= ~(IFF_XMIT_DST_RELEASE | IFF_TX_SKB_SHARING);
-	random_ether_addr(dev->dev_addr);
+	dev_hw_addr_random(dev, dev->dev_addr);
 }
 
 static netdev_tx_t ifb_xmit(struct sk_buff *skb, struct net_device *dev)
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 36/50] igbvf: reset netdevice addr_assign_type if changed from random
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (34 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 35/50] ifb: " Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 21:10 ` [PATCH 37/50] usbnet: set addr_assign_type if random_ether_addr() used Danny Kukawka
                   ` (15 subsequent siblings)
  51 siblings, 0 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: David S. Miller
  Cc: Danny Kukawka, netdev, linux-kernel, Jeff Kirsher,
	Jesse Brandeburg, Bruce Allan, Carolyn Wyborny, Don Skidmore,
	Greg Rose, Peter P Waskiewicz Jr, Alex Duyck, John Ronciak,
	Mitch Williams, Jiri Pirko, Eric Dumazet, e1000-devel

Reset the state of addr_assign_type to NET_ADDR_PERM as soon as
the MAC get changed via .ndo_set_mac_address.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/ethernet/intel/igbvf/netdev.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/drivers/net/ethernet/intel/igbvf/netdev.c b/drivers/net/ethernet/intel/igbvf/netdev.c
index a4b20c8..af652bf 100644
--- a/drivers/net/ethernet/intel/igbvf/netdev.c
+++ b/drivers/net/ethernet/intel/igbvf/netdev.c
@@ -1695,6 +1695,8 @@ static int igbvf_set_mac(struct net_device *netdev, void *p)
 		return -EADDRNOTAVAIL;
 
 	memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
+	if (netdev->addr_assign_type & NET_ADDR_RANDOM)
+		netdev->addr_assign_type ^= NET_ADDR_RANDOM;
 
 	return 0;
 }
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 37/50] usbnet: set addr_assign_type if random_ether_addr() used
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (35 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 36/50] igbvf: reset netdevice addr_assign_type if changed from random Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 21:30   ` Oliver Neukum
  2012-02-08 21:10 ` [PATCH 38/50] g_ether: " Danny Kukawka
                   ` (14 subsequent siblings)
  51 siblings, 1 reply; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: Oliver Neukum
  Cc: Danny Kukawka, Greg Kroah-Hartman, linux-usb, David S. Miller,
	netdev, linux-kernel

Set addr_assign_type correctly to NET_ADDR_RANDOM in case
a random MAC address was generated and assigned to the netdevice.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/usb/usbnet.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c
index fae0fbd..7bd07d7 100644
--- a/drivers/net/usb/usbnet.c
+++ b/drivers/net/usb/usbnet.c
@@ -1365,6 +1365,7 @@ usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod)
 	dev->net = net;
 	strcpy (net->name, "usb%d");
 	memcpy (net->dev_addr, node_id, sizeof node_id);
+	net->addr_assign_type |= NET_ADDR_RANDOM;
 
 	/* rx and tx sides can use different message sizes;
 	 * bind() should set rx_urb_size in that case.
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 38/50] g_ether: set addr_assign_type if random_ether_addr() used
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (36 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 37/50] usbnet: set addr_assign_type if random_ether_addr() used Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 21:10 ` [PATCH 39/50] veth: use dev_hw_addr_random() instead of random_ether_addr() Danny Kukawka
                   ` (13 subsequent siblings)
  51 siblings, 0 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: Felipe Balbi
  Cc: Danny Kukawka, Greg Kroah-Hartman, linux-usb, David S. Miller,
	linux-kernel

Set addr_assign_type correctly to NET_ADDR_RANDOM in case
a random MAC address was generated and assigned to the netdevice.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/usb/gadget/u_ether.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/drivers/usb/gadget/u_ether.c b/drivers/usb/gadget/u_ether.c
index 29c854b..984a1be 100644
--- a/drivers/usb/gadget/u_ether.c
+++ b/drivers/usb/gadget/u_ether.c
@@ -782,9 +782,11 @@ int gether_setup(struct usb_gadget *g, u8 ethaddr[ETH_ALEN])
 	dev->net = net;
 	strcpy(net->name, "usb%d");
 
-	if (get_ether_addr(dev_addr, net->dev_addr))
+	if (get_ether_addr(dev_addr, net->dev_addr)) {
+		net->addr_assign_type |= NET_ADDR_RANDOM;
 		dev_warn(&g->dev,
 			"using random %s ethernet address\n", "self");
+	}
 	if (get_ether_addr(host_addr, dev->host_mac))
 		dev_warn(&g->dev,
 			"using random %s ethernet address\n", "host");
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 39/50] veth: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (37 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 38/50] g_ether: " Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 21:10 ` [PATCH 40/50] batman-adv: " Danny Kukawka
                   ` (12 subsequent siblings)
  51 siblings, 0 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: David S. Miller
  Cc: Danny Kukawka, netdev, linux-kernel, Eric Dumazet, Jiri Pirko,
	Rick Jones, Michał Mirosław

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/veth.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/veth.c b/drivers/net/veth.c
index 49f4667..1dd466a 100644
--- a/drivers/net/veth.c
+++ b/drivers/net/veth.c
@@ -346,7 +346,7 @@ static int veth_newlink(struct net *src_net, struct net_device *dev,
 	}
 
 	if (tbp[IFLA_ADDRESS] == NULL)
-		random_ether_addr(peer->dev_addr);
+		dev_hw_addr_random(peer, peer->dev_addr);
 
 	err = register_netdevice(peer);
 	put_net(net);
@@ -368,7 +368,7 @@ static int veth_newlink(struct net *src_net, struct net_device *dev,
 	 */
 
 	if (tb[IFLA_ADDRESS] == NULL)
-		random_ether_addr(dev->dev_addr);
+		dev_hw_addr_random(dev, dev->dev_addr);
 
 	if (tb[IFLA_IFNAME])
 		nla_strlcpy(dev->name, tb[IFLA_IFNAME], IFNAMSIZ);
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 40/50] batman-adv: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (38 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 39/50] veth: use dev_hw_addr_random() instead of random_ether_addr() Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-09  8:44   ` [B.A.T.M.A.N.] " Sven Eckelmann
  2012-02-11 11:12   ` Marek Lindner
  2012-02-08 21:10 ` [PATCH 41/50] l2tp_eth: " Danny Kukawka
                   ` (11 subsequent siblings)
  51 siblings, 2 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: Marek Lindner
  Cc: Danny Kukawka, Simon Wunderlich, David S. Miller, b.a.t.m.a.n,
	linux-kernel, netdev

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Reset the state to NET_ADDR_PERM as soon as the MAC get
changed via .ndo_set_mac_address.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 net/batman-adv/soft-interface.c |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/net/batman-adv/soft-interface.c b/net/batman-adv/soft-interface.c
index 987c75a..865a485 100644
--- a/net/batman-adv/soft-interface.c
+++ b/net/batman-adv/soft-interface.c
@@ -541,6 +541,9 @@ static int interface_set_mac_addr(struct net_device *dev, void *p)
 	}
 
 	memcpy(dev->dev_addr, addr->sa_data, ETH_ALEN);
+	if (dev->addr_assign_type & NET_ADDR_RANDOM)
+		dev->addr_assign_type ^= NET_ADDR_RANDOM;
+
 	return 0;
 }
 
@@ -783,7 +786,6 @@ static const struct net_device_ops bat_netdev_ops = {
 static void interface_setup(struct net_device *dev)
 {
 	struct bat_priv *priv = netdev_priv(dev);
-	char dev_addr[ETH_ALEN];
 
 	ether_setup(dev);
 
@@ -800,8 +802,7 @@ static void interface_setup(struct net_device *dev)
 	dev->hard_header_len = BAT_HEADER_LEN;
 
 	/* generate random address */
-	random_ether_addr(dev_addr);
-	memcpy(dev->dev_addr, dev_addr, ETH_ALEN);
+	dev_hw_addr_random(dev, dev->dev_addr);
 
 	SET_ETHTOOL_OPS(dev, &bat_ethtool_ops);
 
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 41/50] l2tp_eth: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (39 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 40/50] batman-adv: " Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 21:10 ` [PATCH 42/50] virtio_net: " Danny Kukawka
                   ` (10 subsequent siblings)
  51 siblings, 0 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: David S. Miller
  Cc: Danny Kukawka, netdev, linux-kernel, Neil Horman, James Chapman

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 net/l2tp/l2tp_eth.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/net/l2tp/l2tp_eth.c b/net/l2tp/l2tp_eth.c
index d2726a7..fa91e4e 100644
--- a/net/l2tp/l2tp_eth.c
+++ b/net/l2tp/l2tp_eth.c
@@ -64,7 +64,7 @@ static int l2tp_eth_dev_init(struct net_device *dev)
 	struct l2tp_eth *priv = netdev_priv(dev);
 
 	priv->dev = dev;
-	random_ether_addr(dev->dev_addr);
+	dev_hw_addr_random(dev, dev->dev_addr);
 	memset(&dev->broadcast[0], 0xff, 6);
 
 	return 0;
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 42/50] virtio_net:  use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (40 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 41/50] l2tp_eth: " Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-09  9:35   ` Michael S. Tsirkin
  2012-02-08 21:10 ` [PATCH 43/50] macvlan: " Danny Kukawka
                   ` (9 subsequent siblings)
  51 siblings, 1 reply; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: Rusty Russell
  Cc: Danny Kukawka, Michael S. Tsirkin, virtualization,
	David S. Miller, netdev, linux-kernel

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/virtio_net.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index 4880aa8..69d36e1 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -1061,7 +1061,7 @@ static int virtnet_probe(struct virtio_device *vdev)
 	if (virtio_config_val_len(vdev, VIRTIO_NET_F_MAC,
 				  offsetof(struct virtio_net_config, mac),
 				  dev->dev_addr, dev->addr_len) < 0)
-		random_ether_addr(dev->dev_addr);
+		dev_hw_addr_random(dev, dev->dev_addr);
 
 	/* Set up our device-specific information */
 	vi = netdev_priv(dev);
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 43/50] macvlan: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (41 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 42/50] virtio_net: " Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 21:10 ` [PATCH 44/50] team: " Danny Kukawka
                   ` (8 subsequent siblings)
  51 siblings, 0 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: Patrick McHardy; +Cc: Danny Kukawka, David S. Miller, netdev, linux-kernel

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Reset the state to NET_ADDR_PERM as soon as the MAC get
changed via .ndo_set_mac_address.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/macvlan.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
index 9ea9921..bc4614e 100644
--- a/drivers/net/macvlan.c
+++ b/drivers/net/macvlan.c
@@ -373,6 +373,8 @@ static int macvlan_set_mac_address(struct net_device *dev, void *p)
 	if (!(dev->flags & IFF_UP)) {
 		/* Just copy in the new address */
 		memcpy(dev->dev_addr, addr->sa_data, ETH_ALEN);
+		if (dev->addr_assign_type & NET_ADDR_RANDOM)
+			dev->addr_assign_type ^= NET_ADDR_RANDOM;
 	} else {
 		/* Rehash and update the device filters */
 		if (macvlan_addr_busy(vlan->port, addr->sa_data))
@@ -687,7 +689,7 @@ int macvlan_common_newlink(struct net *src_net, struct net_device *dev,
 		return -EINVAL;
 
 	if (!tb[IFLA_ADDRESS])
-		random_ether_addr(dev->dev_addr);
+		dev_hw_addr_random(dev, dev->dev_addr);
 
 	if (!macvlan_port_exists(lowerdev)) {
 		err = macvlan_port_create(lowerdev);
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 44/50] team: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (42 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 43/50] macvlan: " Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 21:10 ` [PATCH 45/50] tun: " Danny Kukawka
                   ` (7 subsequent siblings)
  51 siblings, 0 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: Jiri Pirko; +Cc: Danny Kukawka, David S. Miller, netdev, linux-kernel

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Reset the state to NET_ADDR_PERM as soon as the MAC get
changed via .ndo_set_mac_address.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/team/team.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c
index 6b678f3..b67ebc4 100644
--- a/drivers/net/team/team.c
+++ b/drivers/net/team/team.c
@@ -869,6 +869,9 @@ static int team_set_mac_address(struct net_device *dev, void *p)
 	struct sockaddr *addr = p;
 
 	memcpy(dev->dev_addr, addr->sa_data, ETH_ALEN);
+	if (dev->addr_assign_type & NET_ADDR_RANDOM)
+		dev->addr_assign_type ^= NET_ADDR_RANDOM;
+
 	rcu_read_lock();
 	list_for_each_entry_rcu(port, &team->port_list, list)
 		if (team->ops.port_change_mac)
@@ -1087,7 +1090,7 @@ static int team_newlink(struct net *src_net, struct net_device *dev,
 	int err;
 
 	if (tb[IFLA_ADDRESS] == NULL)
-		random_ether_addr(dev->dev_addr);
+		dev_hw_addr_random(dev, dev->dev_addr);
 
 	err = register_netdevice(dev);
 	if (err)
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 45/50] tun: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (43 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 44/50] team: " Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 21:10 ` [PATCH 46/50] wan: " Danny Kukawka
                   ` (6 subsequent siblings)
  51 siblings, 0 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: David S. Miller
  Cc: Danny Kukawka, netdev, linux-kernel, Stephen Hemminger,
	Joe Perches, Jason Wang, Neil Horman

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/tun.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/tun.c b/drivers/net/tun.c
index 93c5d72..ace3f9c 100644
--- a/drivers/net/tun.c
+++ b/drivers/net/tun.c
@@ -531,7 +531,7 @@ static void tun_net_init(struct net_device *dev)
 		ether_setup(dev);
 		dev->priv_flags &= ~IFF_TX_SKB_SHARING;
 
-		random_ether_addr(dev->dev_addr);
+		dev_hw_addr_random(dev, dev->dev_addr);
 
 		dev->tx_queue_len = TUN_READQ_SIZE;  /* We prefer our own queue length */
 		break;
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 46/50] wan: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (44 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 45/50] tun: " Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-09 14:12   ` Krzysztof Halasa
  2012-02-08 21:10 ` [PATCH 47/50] bridge: " Danny Kukawka
                   ` (5 subsequent siblings)
  51 siblings, 1 reply; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: Krzysztof Halasa; +Cc: Danny Kukawka, David S. Miller, netdev, linux-kernel

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/wan/hdlc_fr.c      |    2 +-
 drivers/net/wan/hdlc_raw_eth.c |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wan/hdlc_fr.c b/drivers/net/wan/hdlc_fr.c
index eb20281..579664c 100644
--- a/drivers/net/wan/hdlc_fr.c
+++ b/drivers/net/wan/hdlc_fr.c
@@ -1087,7 +1087,7 @@ static int fr_add_pvc(struct net_device *frad, unsigned int dlci, int type)
 	}
 
 	if (type == ARPHRD_ETHER)
-		random_ether_addr(dev->dev_addr);
+		dev_hw_addr_random(dev, dev->dev_addr);
 	else {
 		*(__be16*)dev->dev_addr = htons(dlci);
 		dlci_to_q922(dev->broadcast, dlci);
diff --git a/drivers/net/wan/hdlc_raw_eth.c b/drivers/net/wan/hdlc_raw_eth.c
index 05c9b0b..0962a42 100644
--- a/drivers/net/wan/hdlc_raw_eth.c
+++ b/drivers/net/wan/hdlc_raw_eth.c
@@ -101,7 +101,7 @@ static int raw_eth_ioctl(struct net_device *dev, struct ifreq *ifr)
 		old_qlen = dev->tx_queue_len;
 		ether_setup(dev);
 		dev->tx_queue_len = old_qlen;
-		random_ether_addr(dev->dev_addr);
+		dev_hw_addr_random(dev, dev->dev_addr);
 		netif_dormant_off(dev);
 		return 0;
 	}
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 47/50] bridge: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (45 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 46/50] wan: " Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 22:52   ` Stephen Hemminger
  2012-02-08 21:10 ` [PATCH 48/50] ip_gre.c: " Danny Kukawka
                   ` (4 subsequent siblings)
  51 siblings, 1 reply; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: Stephen Hemminger
  Cc: Danny Kukawka, David S. Miller, netdev, linux-kernel, bridge

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Reset the state to NET_ADDR_PERM as soon as the MAC get
changed via .ndo_set_mac_address.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 net/bridge/br_device.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/net/bridge/br_device.c b/net/bridge/br_device.c
index 71773b0..a25ed22 100644
--- a/net/bridge/br_device.c
+++ b/net/bridge/br_device.c
@@ -172,6 +172,10 @@ static int br_set_mac_address(struct net_device *dev, void *p)
 	spin_lock_bh(&br->lock);
 	if (compare_ether_addr(dev->dev_addr, addr->sa_data)) {
 		memcpy(dev->dev_addr, addr->sa_data, ETH_ALEN);
+		if (dev->addr_assign_type & NET_ADDR_RANDOM) {
+			/* set back to NET_ADDR_PERM */
+			dev->addr_assign_type ^= NET_ADDR_RANDOM;
+		}
 		br_fdb_change_mac_address(br, addr->sa_data);
 		br_stp_change_bridge_id(br, addr->sa_data);
 	}
@@ -334,7 +338,7 @@ void br_dev_setup(struct net_device *dev)
 {
 	struct net_bridge *br = netdev_priv(dev);
 
-	random_ether_addr(dev->dev_addr);
+	dev_hw_addr_random(dev, dev->dev_addr);
 	ether_setup(dev);
 
 	dev->netdev_ops = &br_netdev_ops;
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 48/50] ip_gre.c: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (46 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 47/50] bridge: " Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 21:10 ` [PATCH 49/50] openvswitch: " Danny Kukawka
                   ` (3 subsequent siblings)
  51 siblings, 0 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: David S. Miller
  Cc: Danny Kukawka, netdev, linux-kernel, Alexey Kuznetsov,
	James Morris, Hideaki YOSHIFUJI, Patrick McHardy

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 net/ipv4/ip_gre.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c
index 6b3ca5b..33371a9 100644
--- a/net/ipv4/ip_gre.c
+++ b/net/ipv4/ip_gre.c
@@ -1529,7 +1529,7 @@ static int ipgre_newlink(struct net *src_net, struct net_device *dev, struct nla
 		return -EEXIST;
 
 	if (dev->type == ARPHRD_ETHER && !tb[IFLA_ADDRESS])
-		random_ether_addr(dev->dev_addr);
+		dev_hw_addr_random(dev, dev->dev_addr);
 
 	mtu = ipgre_tunnel_bind_dev(dev);
 	if (!tb[IFLA_MTU])
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 49/50] openvswitch: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (47 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 48/50] ip_gre.c: " Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 21:10 ` [PATCH 50/50] " Danny Kukawka
                   ` (2 subsequent siblings)
  51 siblings, 0 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: Jesse Gross; +Cc: Danny Kukawka, David S. Miller, netdev, linux-kernel, dev

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Reset the state to NET_ADDR_PERM as soon as the MAC get
changed via .ndo_set_mac_address.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 net/openvswitch/vport-internal_dev.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/net/openvswitch/vport-internal_dev.c b/net/openvswitch/vport-internal_dev.c
index 322b8d2..c71baf0 100644
--- a/net/openvswitch/vport-internal_dev.c
+++ b/net/openvswitch/vport-internal_dev.c
@@ -67,6 +67,8 @@ static int internal_dev_mac_addr(struct net_device *dev, void *p)
 	if (!is_valid_ether_addr(addr->sa_data))
 		return -EADDRNOTAVAIL;
 	memcpy(dev->dev_addr, addr->sa_data, dev->addr_len);
+	if (dev->addr_assign_type & NET_ADDR_RANDOM)
+		dev->addr_assign_type ^= NET_ADDR_RANDOM;
 	return 0;
 }
 
@@ -145,7 +147,7 @@ static void do_setup(struct net_device *netdev)
 	netdev->vlan_features = netdev->features;
 	netdev->features |= NETIF_F_HW_VLAN_TX;
 	netdev->hw_features = netdev->features & ~NETIF_F_LLTX;
-	random_ether_addr(netdev->dev_addr);
+	dev_hw_addr_random(netdev, netdev->dev_addr);
 }
 
 static struct vport *internal_dev_create(const struct vport_parms *parms)
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* [PATCH 50/50] use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (48 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 49/50] openvswitch: " Danny Kukawka
@ 2012-02-08 21:10 ` Danny Kukawka
  2012-02-08 22:58 ` [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Stephen Hemminger
  2012-02-08 23:29 ` David Miller
  51 siblings, 0 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:10 UTC (permalink / raw)
  To: David S. Miller
  Cc: Danny Kukawka, netdev, linux-kernel, Christian Benvenuti,
	Roopa Prabhu, David Wang

Use dev_hw_addr_random() instead of calling random_ether_addr()
to set addr_assign_type correctly to NET_ADDR_RANDOM.

Reset the state to NET_ADDR_PERM as soon as the MAC get
changed via .ndo_set_mac_address.

Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
---
 drivers/net/ethernet/cisco/enic/enic_main.c |   13 +++++++++++--
 1 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/cisco/enic/enic_main.c b/drivers/net/ethernet/cisco/enic/enic_main.c
index ab3f67f..3e7cb54 100644
--- a/drivers/net/ethernet/cisco/enic/enic_main.c
+++ b/drivers/net/ethernet/cisco/enic/enic_main.c
@@ -865,6 +865,8 @@ static int enic_set_mac_addr(struct net_device *netdev, char *addr)
 	}
 
 	memcpy(netdev->dev_addr, addr, netdev->addr_len);
+	if (netdev->addr_assign_type & NET_ADDR_RANDOM)
+		netdev->addr_assign_type ^= NET_ADDR_RANDOM;
 
 	return 0;
 }
@@ -1119,7 +1121,7 @@ static int enic_set_vf_port(struct net_device *netdev, int vf,
 		memcpy(pp->mac_addr, prev_pp.vf_mac, ETH_ALEN);
 
 	if (vf == PORT_SELF_VF && is_zero_ether_addr(netdev->dev_addr))
-		random_ether_addr(netdev->dev_addr);
+		dev_hw_addr_random(netdev, netdev->dev_addr);
 
 	err = enic_process_set_pp_request(enic, vf, &prev_pp, &restore_pp);
 	if (err) {
@@ -2272,6 +2274,7 @@ static int __devinit enic_probe(struct pci_dev *pdev,
 	int err;
 #ifdef CONFIG_PCI_IOV
 	int pos = 0;
+	bool random_mac = false;
 #endif
 	int num_pps = 1;
 
@@ -2467,11 +2470,17 @@ static int __devinit enic_probe(struct pci_dev *pdev,
 	(void)enic_change_mtu(netdev, enic->port_mtu);
 
 #ifdef CONFIG_PCI_IOV
-	if (enic_is_sriov_vf(enic) && is_zero_ether_addr(enic->mac_addr))
+	if (enic_is_sriov_vf(enic) && is_zero_ether_addr(enic->mac_addr)) {
 		random_ether_addr(enic->mac_addr);
+		random_mac = true;
+	}
 #endif
 
 	err = enic_set_mac_addr(netdev, enic->mac_addr);
+#ifdef CONFIG_PCI_IOV
+	if (random_mac)
+		netdev->addr_assign_type |= NET_ADDR_RANDOM;
+#endif
 	if (err) {
 		dev_err(dev, "Invalid MAC address, aborting\n");
 		goto err_out_dev_deinit;
-- 
1.7.7.3


^ permalink raw reply related	[flat|nested] 77+ messages in thread

* RE: [PATCH 11/50] ep93xx: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 ` [PATCH 11/50] ep93xx: " Danny Kukawka
@ 2012-02-08 21:29   ` H Hartley Sweeten
  0 siblings, 0 replies; 77+ messages in thread
From: H Hartley Sweeten @ 2012-02-08 21:29 UTC (permalink / raw)
  To: Danny Kukawka; +Cc: Danny Kukawka, netdev, linux-kernel, David S. Miller

On Wednesday, February 08, 2012 2:10 PM, Danny Kukawka wrote:
>
> Use dev_hw_addr_random() instead of calling random_ether_addr()
> to set addr_assign_type correctly to NET_ADDR_RANDOM
>
> Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
> ---
>  drivers/net/ethernet/cirrus/ep93xx_eth.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/net/ethernet/cirrus/ep93xx_eth.c b/drivers/net/ethernet/cirrus/ep93xx_eth.c
> index 4317af8..4b46270 100644
> --- a/drivers/net/ethernet/cirrus/ep93xx_eth.c
> +++ b/drivers/net/ethernet/cirrus/ep93xx_eth.c
> @@ -859,7 +859,7 @@ static int ep93xx_eth_probe(struct platform_device *pdev)
>  	ep->mdc_divisor = 40;	/* Max HCLK 100 MHz, min MDIO clk 2.5 MHz.  */
>  
>  	if (is_zero_ether_addr(dev->dev_addr))
> -		random_ether_addr(dev->dev_addr);
> +		dev_hw_addr_random(dev, dev->dev_addr);
>  
>  	err = register_netdev(dev);
>  	if (err) {

Acked-by: H Hartley Sweeten <hsweeten@visionengravers.com>


^ permalink raw reply	[flat|nested] 77+ messages in thread

* Re: [PATCH 23/50] efx: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 ` [PATCH 23/50] efx: " Danny Kukawka
@ 2012-02-08 21:29   ` Ben Hutchings
  0 siblings, 0 replies; 77+ messages in thread
From: Ben Hutchings @ 2012-02-08 21:29 UTC (permalink / raw)
  To: Danny Kukawka
  Cc: David S. Miller, Danny Kukawka, netdev, linux-kernel,
	Solarflare linux maintainers

On Wed, 2012-02-08 at 22:10 +0100, Danny Kukawka wrote:
> Use dev_hw_addr_random() instead of calling random_ether_addr()
> to set addr_assign_type correctly to NET_ADDR_RANDOM.
> 
> Reset the state to NET_ADDR_PERM as soon as the MAC get
> changed via .ndo_set_mac_address.
> 
> Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
> ---
>  drivers/net/ethernet/sfc/efx.c |    4 +++-
>  1 files changed, 3 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/net/ethernet/sfc/efx.c b/drivers/net/ethernet/sfc/efx.c
> index e43702f..cce339a 100644
> --- a/drivers/net/ethernet/sfc/efx.c
> +++ b/drivers/net/ethernet/sfc/efx.c
> @@ -940,7 +940,7 @@ static int efx_probe_port(struct efx_nic *efx)
>  			rc = -EINVAL;
>  			goto err;
>  		}
> -		random_ether_addr(efx->net_dev->dev_addr);
> +		dev_hw_addr_random(efx->net_dev, efx->net_dev->dev_addr);
>  		netif_info(efx, probe, efx->net_dev,
>  			   "using locally-generated MAC %pM\n",
>  			   efx->net_dev->dev_addr);
[...]

This code no longer exists in net-next.

Ben.

-- 
Ben Hutchings, Staff Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.


^ permalink raw reply	[flat|nested] 77+ messages in thread

* Re: [PATCH 37/50] usbnet: set addr_assign_type if random_ether_addr() used
  2012-02-08 21:10 ` [PATCH 37/50] usbnet: set addr_assign_type if random_ether_addr() used Danny Kukawka
@ 2012-02-08 21:30   ` Oliver Neukum
  2012-02-08 21:41     ` Danny Kukawka
  2012-02-09  6:57     ` Bjørn Mork
  0 siblings, 2 replies; 77+ messages in thread
From: Oliver Neukum @ 2012-02-08 21:30 UTC (permalink / raw)
  To: Danny Kukawka
  Cc: Danny Kukawka, Greg Kroah-Hartman, linux-usb, David S. Miller,
	netdev, linux-kernel

Am Mittwoch, 8. Februar 2012, 22:10:44 schrieb Danny Kukawka:
> Set addr_assign_type correctly to NET_ADDR_RANDOM in case
> a random MAC address was generated and assigned to the netdevice.
> 
> Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
> ---
>  drivers/net/usb/usbnet.c |    1 +
>  1 files changed, 1 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c
> index fae0fbd..7bd07d7 100644
> --- a/drivers/net/usb/usbnet.c
> +++ b/drivers/net/usb/usbnet.c
> @@ -1365,6 +1365,7 @@ usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod)
>  	dev->net = net;
>  	strcpy (net->name, "usb%d");
>  	memcpy (net->dev_addr, node_id, sizeof node_id);
> +	net->addr_assign_type |= NET_ADDR_RANDOM;
>  
>  	/* rx and tx sides can use different message sizes;
>  	 * bind() should set rx_urb_size in that case.

Don't you set the flag too early here? By that time we don't know
whether the device provides a real MAC, do we?

	Regards
		Oliver

^ permalink raw reply	[flat|nested] 77+ messages in thread

* Re: [PATCH 37/50] usbnet: set addr_assign_type if random_ether_addr() used
  2012-02-08 21:30   ` Oliver Neukum
@ 2012-02-08 21:41     ` Danny Kukawka
  2012-02-09  6:57     ` Bjørn Mork
  1 sibling, 0 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 21:41 UTC (permalink / raw)
  To: Oliver Neukum
  Cc: Greg Kroah-Hartman, linux-usb, David S. Miller, netdev, linux-kernel

On Mittwoch, 8. Februar 2012, Oliver Neukum wrote:
> Am Mittwoch, 8. Februar 2012, 22:10:44 schrieb Danny Kukawka:
> > Set addr_assign_type correctly to NET_ADDR_RANDOM in case
> > a random MAC address was generated and assigned to the netdevice.
> >
> > Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
> > ---
> >  drivers/net/usb/usbnet.c |    1 +
> >  1 files changed, 1 insertions(+), 0 deletions(-)
> >
> > diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c
> > index fae0fbd..7bd07d7 100644
> > --- a/drivers/net/usb/usbnet.c
> > +++ b/drivers/net/usb/usbnet.c
> > @@ -1365,6 +1365,7 @@ usbnet_probe (struct usb_interface *udev, const
> > struct usb_device_id *prod) dev->net = net;
> >  	strcpy (net->name, "usb%d");
> >  	memcpy (net->dev_addr, node_id, sizeof node_id);
> > +	net->addr_assign_type |= NET_ADDR_RANDOM;
> >
> >  	/* rx and tx sides can use different message sizes;
> >  	 * bind() should set rx_urb_size in that case.
>
> Don't you set the flag too early here? By that time we don't know
> whether the device provides a real MAC, do we?

You're right. Maybe it's the wrong place. Better the drivers take care of 
setting the correct addr_assign_type. 

Danny

^ permalink raw reply	[flat|nested] 77+ messages in thread

* Re: [PATCH 01/50] eth: reset addr_assign_type if eth_mac_addr() called
  2012-02-08 21:10 ` [PATCH 01/50] eth: reset addr_assign_type if eth_mac_addr() called Danny Kukawka
@ 2012-02-08 22:50   ` Stephen Hemminger
  2012-02-08 22:57     ` Danny Kukawka
  0 siblings, 1 reply; 77+ messages in thread
From: Stephen Hemminger @ 2012-02-08 22:50 UTC (permalink / raw)
  To: Danny Kukawka; +Cc: David S. Miller, Danny Kukawka, netdev, linux-kernel

On Wed,  8 Feb 2012 22:10:08 +0100
Danny Kukawka <danny.kukawka@bisect.de> wrote:

> +	if (dev->addr_assign_type & NET_ADDR_RANDOM)
> +		dev->addr_assign_type ^= NET_ADDR_RANDOM;

Why not just avoid the conditional, or better yet use bitops?

	dev->addr_assign_type &= ~NET_ADDR_RANDOM;


^ permalink raw reply	[flat|nested] 77+ messages in thread

* Re: [PATCH 47/50] bridge: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 ` [PATCH 47/50] bridge: " Danny Kukawka
@ 2012-02-08 22:52   ` Stephen Hemminger
  0 siblings, 0 replies; 77+ messages in thread
From: Stephen Hemminger @ 2012-02-08 22:52 UTC (permalink / raw)
  To: Danny Kukawka
  Cc: Danny Kukawka, David S. Miller, netdev, linux-kernel, bridge

On Wed,  8 Feb 2012 22:10:54 +0100
Danny Kukawka <danny.kukawka@bisect.de> wrote:

> Use dev_hw_addr_random() instead of calling random_ether_addr()
> to set addr_assign_type correctly to NET_ADDR_RANDOM.
> 
> Reset the state to NET_ADDR_PERM as soon as the MAC get
> changed via .ndo_set_mac_address.
> 
> Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
> ---
>  net/bridge/br_device.c |    6 +++++-
>  1 files changed, 5 insertions(+), 1 deletions(-)
> 
> diff --git a/net/bridge/br_device.c b/net/bridge/br_device.c
> index 71773b0..a25ed22 100644
> --- a/net/bridge/br_device.c
> +++ b/net/bridge/br_device.c
> @@ -172,6 +172,10 @@ static int br_set_mac_address(struct net_device *dev, void *p)
>  	spin_lock_bh(&br->lock);
>  	if (compare_ether_addr(dev->dev_addr, addr->sa_data)) {
>  		memcpy(dev->dev_addr, addr->sa_data, ETH_ALEN);
> +		if (dev->addr_assign_type & NET_ADDR_RANDOM) {
> +			/* set back to NET_ADDR_PERM */
> +			dev->addr_assign_type ^= NET_ADDR_RANDOM;
> +		}
>  		br_fdb_change_mac_address(br, addr->sa_data);
>  		br_stp_change_bridge_id(br, addr->sa_data);
>  	}
> @@ -334,7 +338,7 @@ void br_dev_setup(struct net_device *dev)
>  {
>  	struct net_bridge *br = netdev_priv(dev);
>  
> -	random_ether_addr(dev->dev_addr);
> +	dev_hw_addr_random(dev, dev->dev_addr);
>  	ether_setup(dev);
>  
>  	dev->netdev_ops = &br_netdev_ops;


You should do more than just mechanical change here.
Go ahead and eliminate the private (BR_SET_MAC_ADDR) flag as well,
since it would be redundant.




^ permalink raw reply	[flat|nested] 77+ messages in thread

* Re: [PATCH 01/50] eth: reset addr_assign_type if eth_mac_addr() called
  2012-02-08 22:50   ` Stephen Hemminger
@ 2012-02-08 22:57     ` Danny Kukawka
  0 siblings, 0 replies; 77+ messages in thread
From: Danny Kukawka @ 2012-02-08 22:57 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: David S. Miller, netdev, linux-kernel

On Mittwoch, 8. Februar 2012, Stephen Hemminger wrote:
> On Wed,  8 Feb 2012 22:10:08 +0100
>
> Danny Kukawka <danny.kukawka@bisect.de> wrote:
> > +	if (dev->addr_assign_type & NET_ADDR_RANDOM)
> > +		dev->addr_assign_type ^= NET_ADDR_RANDOM;
>
> Why not just avoid the conditional, or better yet use bitops?
>
> 	dev->addr_assign_type &= ~NET_ADDR_RANDOM;

Okay, If I have comments on the other patches back, I will send new versions 
which avoid the if. Thanks for the hint.

Danny


^ permalink raw reply	[flat|nested] 77+ messages in thread

* Re: [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if  a random mac address get assigned to a netdevice
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (49 preceding siblings ...)
  2012-02-08 21:10 ` [PATCH 50/50] " Danny Kukawka
@ 2012-02-08 22:58 ` Stephen Hemminger
  2012-02-09 14:59   ` Danny Kukawka
  2012-02-08 23:29 ` David Miller
  51 siblings, 1 reply; 77+ messages in thread
From: Stephen Hemminger @ 2012-02-08 22:58 UTC (permalink / raw)
  To: Danny Kukawka; +Cc: David S. Miller, Danny Kukawka, netdev, linux-kernel

On Wed,  8 Feb 2012 22:10:07 +0100
Danny Kukawka <danny.kukawka@bisect.de> wrote:

> 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.

Also it should BUG() if address length is not 6 (ETH_ALEN).


^ permalink raw reply	[flat|nested] 77+ messages in thread

* Re: [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice
  2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
                   ` (50 preceding siblings ...)
  2012-02-08 22:58 ` [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Stephen Hemminger
@ 2012-02-08 23:29 ` David Miller
  2012-02-09 12:18   ` Danny Kukawka
  51 siblings, 1 reply; 77+ messages in thread
From: David Miller @ 2012-02-08 23:29 UTC (permalink / raw)
  To: danny.kukawka; +Cc: dkukawka, netdev, linux-kernel


50 patches is way too many patches to submit and expect people
to review at one time.

You must do one of two things:

1) Condense the series down to a smaller number of more managable
   patches.  Perhaps combine all the completely trivial conversion
   cases into one single patch, and post the non-trivial cases
   seperately.

2) Only submit a few of these changes at a time, not all at once.

It's your choice, but what you did here is unacceptable.

^ permalink raw reply	[flat|nested] 77+ messages in thread

* Re: [PATCH 04/50] adi/blackfin: set addr_assign_type correctly if random
  2012-02-08 21:10 ` [PATCH 04/50] adi/blackfin: set addr_assign_type correctly if random Danny Kukawka
@ 2012-02-09  3:28   ` Bob Liu
  2012-02-09  4:05   ` Mike Frysinger
  1 sibling, 0 replies; 77+ messages in thread
From: Bob Liu @ 2012-02-09  3:28 UTC (permalink / raw)
  To: Danny Kukawka
  Cc: David S. Miller, Danny Kukawka, netdev, linux-kernel,
	Mike Frysinger, Sonic Zhang, Paul Gortmaker, Lars-Peter Clausen,
	Scott Jiang, uclinux-dist-devel

Hi Danny,

On Thu, Feb 9, 2012 at 5:10 AM, Danny Kukawka <danny.kukawka@bisect.de> wrote:
> Set the addr_assign_type for adi driver correctly to
> NET_ADDR_RANDOM if a random MAC address was generated.
> Reset the state to NET_ADDR_PERM as soon as the MAC get
> changed via .ndo_set_mac_address.
>
> Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
> ---
>  arch/blackfin/mach-bf518/boards/ezbrd.c      |    3 ++-
>  arch/blackfin/mach-bf518/boards/tcm-bf518.c  |    3 ++-
>  arch/blackfin/mach-bf527/boards/ad7160eval.c |    3 ++-
>  arch/blackfin/mach-bf527/boards/cm_bf527.c   |    3 ++-
>  arch/blackfin/mach-bf527/boards/ezbrd.c      |    3 ++-
>  arch/blackfin/mach-bf527/boards/ezkit.c      |    3 ++-
>  arch/blackfin/mach-bf527/boards/tll6527m.c   |    3 ++-
>  arch/blackfin/mach-bf537/boards/cm_bf537e.c  |    3 ++-
>  arch/blackfin/mach-bf537/boards/cm_bf537u.c  |    3 ++-
>  arch/blackfin/mach-bf537/boards/dnp5370.c    |    3 ++-
>  arch/blackfin/mach-bf537/boards/pnav10.c     |    3 ++-
>  arch/blackfin/mach-bf537/boards/stamp.c      |    3 ++-
>  arch/blackfin/mach-bf537/boards/tcm_bf537.c  |    3 ++-
>  drivers/net/ethernet/adi/bfin_mac.c          |   10 +++++++---
>  drivers/net/ethernet/adi/bfin_mac.h          |    2 +-

Would you please split this into two patches, one for arch/blackfin
and the other
for drivers/net.
This can make our maintain simpler and clearer.

>  15 files changed, 34 insertions(+), 17 deletions(-)
>
> diff --git a/arch/blackfin/mach-bf518/boards/ezbrd.c b/arch/blackfin/mach-bf518/boards/ezbrd.c
> index a2d96d3..a173957 100644
> --- a/arch/blackfin/mach-bf518/boards/ezbrd.c
> +++ b/arch/blackfin/mach-bf518/boards/ezbrd.c
> @@ -821,7 +821,7 @@ void native_machine_restart(char *cmd)
>                bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS);
>  }
>
> -void bfin_get_ether_addr(char *addr)
> +int bfin_get_ether_addr(char *addr)
>  {
>        /* the MAC is stored in OTP memory page 0xDF */
>        u32 ret;
> @@ -834,5 +834,6 @@ void bfin_get_ether_addr(char *addr)
>                for (ret = 0; ret < 6; ++ret)
>                        addr[ret] = otp_mac_p[5 - ret];
>        }
> +       return 0;
>  }
>  EXPORT_SYMBOL(bfin_get_ether_addr);
> diff --git a/arch/blackfin/mach-bf518/boards/tcm-bf518.c b/arch/blackfin/mach-bf518/boards/tcm-bf518.c
> index f271310..d3c763e 100644
> --- a/arch/blackfin/mach-bf518/boards/tcm-bf518.c
> +++ b/arch/blackfin/mach-bf518/boards/tcm-bf518.c
> @@ -730,9 +730,10 @@ void native_machine_restart(char *cmd)
>                bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS);
>  }
>
> -void bfin_get_ether_addr(char *addr)
> +int bfin_get_ether_addr(char *addr)
>  {
>        random_ether_addr(addr);
>        printk(KERN_WARNING "%s:%s: Setting Ethernet MAC to a random one\n", __FILE__, __func__);
> +       return 1;
>  }
>  EXPORT_SYMBOL(bfin_get_ether_addr);
> diff --git a/arch/blackfin/mach-bf527/boards/ad7160eval.c b/arch/blackfin/mach-bf527/boards/ad7160eval.c
> index c8d5d2b..fad7fea 100644
> --- a/arch/blackfin/mach-bf527/boards/ad7160eval.c
> +++ b/arch/blackfin/mach-bf527/boards/ad7160eval.c
> @@ -846,7 +846,7 @@ void native_machine_restart(char *cmd)
>                bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS);
>  }
>
> -void bfin_get_ether_addr(char *addr)
> +int bfin_get_ether_addr(char *addr)
>  {
>        /* the MAC is stored in OTP memory page 0xDF */
>        u32 ret;
> @@ -859,5 +859,6 @@ void bfin_get_ether_addr(char *addr)
>                for (ret = 0; ret < 6; ++ret)
>                        addr[ret] = otp_mac_p[5 - ret];
>        }
> +       return 0;
>  }
>  EXPORT_SYMBOL(bfin_get_ether_addr);
> diff --git a/arch/blackfin/mach-bf527/boards/cm_bf527.c b/arch/blackfin/mach-bf527/boards/cm_bf527.c
> index 7330607..5fb09ad 100644
> --- a/arch/blackfin/mach-bf527/boards/cm_bf527.c
> +++ b/arch/blackfin/mach-bf527/boards/cm_bf527.c
> @@ -983,9 +983,10 @@ void native_machine_restart(char *cmd)
>                bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS);
>  }
>
> -void bfin_get_ether_addr(char *addr)
> +int bfin_get_ether_addr(char *addr)
>  {
>        random_ether_addr(addr);
>        printk(KERN_WARNING "%s:%s: Setting Ethernet MAC to a random one\n", __FILE__, __func__);
> +       return 1;
>  }
>  EXPORT_SYMBOL(bfin_get_ether_addr);
> diff --git a/arch/blackfin/mach-bf527/boards/ezbrd.c b/arch/blackfin/mach-bf527/boards/ezbrd.c
> index db3ecfc..17c6a24 100644
> --- a/arch/blackfin/mach-bf527/boards/ezbrd.c
> +++ b/arch/blackfin/mach-bf527/boards/ezbrd.c
> @@ -870,7 +870,7 @@ void native_machine_restart(char *cmd)
>                bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS);
>  }
>
> -void bfin_get_ether_addr(char *addr)
> +int bfin_get_ether_addr(char *addr)
>  {
>        /* the MAC is stored in OTP memory page 0xDF */
>        u32 ret;
> @@ -883,5 +883,6 @@ void bfin_get_ether_addr(char *addr)
>                for (ret = 0; ret < 6; ++ret)
>                        addr[ret] = otp_mac_p[5 - ret];
>        }
> +       return 0;
>  }
>  EXPORT_SYMBOL(bfin_get_ether_addr);
> diff --git a/arch/blackfin/mach-bf527/boards/ezkit.c b/arch/blackfin/mach-bf527/boards/ezkit.c
> index dfdd8e6..89b0f6c 100644
> --- a/arch/blackfin/mach-bf527/boards/ezkit.c
> +++ b/arch/blackfin/mach-bf527/boards/ezkit.c
> @@ -1311,7 +1311,7 @@ void native_machine_restart(char *cmd)
>                bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS);
>  }
>
> -void bfin_get_ether_addr(char *addr)
> +int bfin_get_ether_addr(char *addr)
>  {
>        /* the MAC is stored in OTP memory page 0xDF */
>        u32 ret;
> @@ -1324,5 +1324,6 @@ void bfin_get_ether_addr(char *addr)
>                for (ret = 0; ret < 6; ++ret)
>                        addr[ret] = otp_mac_p[5 - ret];
>        }
> +       return 0;
>  }
>  EXPORT_SYMBOL(bfin_get_ether_addr);
> diff --git a/arch/blackfin/mach-bf527/boards/tll6527m.c b/arch/blackfin/mach-bf527/boards/tll6527m.c
> index 360e97f..d192c0a 100644
> --- a/arch/blackfin/mach-bf527/boards/tll6527m.c
> +++ b/arch/blackfin/mach-bf527/boards/tll6527m.c
> @@ -931,7 +931,7 @@ void native_machine_restart(char *cmd)
>                bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS);
>  }
>
> -void bfin_get_ether_addr(char *addr)
> +int bfin_get_ether_addr(char *addr)
>  {
>        /* the MAC is stored in OTP memory page 0xDF */
>        u32 ret;
> @@ -945,5 +945,6 @@ void bfin_get_ether_addr(char *addr)
>                for (ret = 0; ret < 6; ++ret)
>                        addr[ret] = otp_mac_p[5 - ret];
>        }
> +       return 0;
>  }
>  EXPORT_SYMBOL(bfin_get_ether_addr);
> diff --git a/arch/blackfin/mach-bf537/boards/cm_bf537e.c b/arch/blackfin/mach-bf537/boards/cm_bf537e.c
> index 0d4a2f6..618fd7d 100644
> --- a/arch/blackfin/mach-bf537/boards/cm_bf537e.c
> +++ b/arch/blackfin/mach-bf537/boards/cm_bf537e.c
> @@ -813,9 +813,10 @@ void __init native_machine_early_platform_add_devices(void)
>                ARRAY_SIZE(cm_bf537e_early_devices));
>  }
>
> -void bfin_get_ether_addr(char *addr)
> +int bfin_get_ether_addr(char *addr)
>  {
>        random_ether_addr(addr);
>        printk(KERN_WARNING "%s:%s: Setting Ethernet MAC to a random one\n", __FILE__, __func__);
> +       return 1;
>  }
>  EXPORT_SYMBOL(bfin_get_ether_addr);
> diff --git a/arch/blackfin/mach-bf537/boards/cm_bf537u.c b/arch/blackfin/mach-bf537/boards/cm_bf537u.c
> index f553698..48a7a23 100644
> --- a/arch/blackfin/mach-bf537/boards/cm_bf537u.c
> +++ b/arch/blackfin/mach-bf537/boards/cm_bf537u.c
> @@ -790,9 +790,10 @@ void __init native_machine_early_platform_add_devices(void)
>                ARRAY_SIZE(cm_bf537u_early_devices));
>  }
>
> -void bfin_get_ether_addr(char *addr)
> +int bfin_get_ether_addr(char *addr)
>  {
>        random_ether_addr(addr);
>        printk(KERN_WARNING "%s:%s: Setting Ethernet MAC to a random one\n", __FILE__, __func__);
> +       return 1;
>  }
>  EXPORT_SYMBOL(bfin_get_ether_addr);
> diff --git a/arch/blackfin/mach-bf537/boards/dnp5370.c b/arch/blackfin/mach-bf537/boards/dnp5370.c
> index 11dadeb..6f77bf7 100644
> --- a/arch/blackfin/mach-bf537/boards/dnp5370.c
> +++ b/arch/blackfin/mach-bf537/boards/dnp5370.c
> @@ -399,9 +399,10 @@ arch_initcall(dnp5370_init);
>  /*
>  * Currently the MAC address is saved in Flash by U-Boot
>  */
> -void bfin_get_ether_addr(char *addr)
> +int bfin_get_ether_addr(char *addr)
>  {
>        *(u32 *)(&(addr[0])) = bfin_read32(FLASH_MAC);
>        *(u16 *)(&(addr[4])) = bfin_read16(FLASH_MAC + 4);
> +       return 0;
>  }
>  EXPORT_SYMBOL(bfin_get_ether_addr);
> diff --git a/arch/blackfin/mach-bf537/boards/pnav10.c b/arch/blackfin/mach-bf537/boards/pnav10.c
> index 6fd8470..2a9cd61 100644
> --- a/arch/blackfin/mach-bf537/boards/pnav10.c
> +++ b/arch/blackfin/mach-bf537/boards/pnav10.c
> @@ -535,9 +535,10 @@ void __init native_machine_early_platform_add_devices(void)
>                ARRAY_SIZE(stamp_early_devices));
>  }
>
> -void bfin_get_ether_addr(char *addr)
> +int bfin_get_ether_addr(char *addr)
>  {
>        random_ether_addr(addr);
>        printk(KERN_WARNING "%s:%s: Setting Ethernet MAC to a random one\n", __FILE__, __func__);
> +       return 1;
>  }
>  EXPORT_SYMBOL(bfin_get_ether_addr);
> diff --git a/arch/blackfin/mach-bf537/boards/stamp.c b/arch/blackfin/mach-bf537/boards/stamp.c
> index 2221173..0b80725 100644
> --- a/arch/blackfin/mach-bf537/boards/stamp.c
> +++ b/arch/blackfin/mach-bf537/boards/stamp.c
> @@ -2993,9 +2993,10 @@ void native_machine_restart(char *cmd)
>  * Currently the MAC address is saved in Flash by U-Boot
>  */
>  #define FLASH_MAC      0x203f0000
> -void bfin_get_ether_addr(char *addr)
> +int bfin_get_ether_addr(char *addr)
>  {
>        *(u32 *)(&(addr[0])) = bfin_read32(FLASH_MAC);
>        *(u16 *)(&(addr[4])) = bfin_read16(FLASH_MAC + 4);
> +       return 0;
>  }
>  EXPORT_SYMBOL(bfin_get_ether_addr);
> diff --git a/arch/blackfin/mach-bf537/boards/tcm_bf537.c b/arch/blackfin/mach-bf537/boards/tcm_bf537.c
> index 9885176..02eb9d0 100644
> --- a/arch/blackfin/mach-bf537/boards/tcm_bf537.c
> +++ b/arch/blackfin/mach-bf537/boards/tcm_bf537.c
> @@ -780,9 +780,10 @@ void __init native_machine_early_platform_add_devices(void)
>                ARRAY_SIZE(cm_bf537_early_devices));
>  }
>
> -void bfin_get_ether_addr(char *addr)
> +int bfin_get_ether_addr(char *addr)
>  {
>        random_ether_addr(addr);
>        printk(KERN_WARNING "%s:%s: Setting Ethernet MAC to a random one\n", __FILE__, __func__);
> +       return 1;
>  }
>  EXPORT_SYMBOL(bfin_get_ether_addr);
> diff --git a/drivers/net/ethernet/adi/bfin_mac.c b/drivers/net/ethernet/adi/bfin_mac.c
> index d812a10..064a3a6 100644
> --- a/drivers/net/ethernet/adi/bfin_mac.c
> +++ b/drivers/net/ethernet/adi/bfin_mac.c
> @@ -621,6 +621,8 @@ static int bfin_mac_set_mac_address(struct net_device *dev, void *p)
>        if (netif_running(dev))
>                return -EBUSY;
>        memcpy(dev->dev_addr, addr->sa_data, dev->addr_len);
> +       if (dev->addr_assign_type & NET_ADDR_RANDOM)
> +               dev->addr_assign_type ^= NET_ADDR_RANDOM;
>        setup_mac_addr(dev->dev_addr);
>        return 0;
>  }
> @@ -1496,12 +1498,14 @@ static int __devinit bfin_mac_probe(struct platform_device *pdev)
>         * Grab the MAC from the board somehow
>         * this is done in the arch/blackfin/mach-bfxxx/boards/eth_mac.c
>         */
> -       if (!is_valid_ether_addr(ndev->dev_addr))
> -               bfin_get_ether_addr(ndev->dev_addr);
> +       if (!is_valid_ether_addr(ndev->dev_addr)) {
> +               if (bfin_get_ether_addr(ndev->dev_addr))
> +                       ndev->addr_assign_type |= NET_ADDR_RANDOM;
> +       }
>
>        /* If still not valid, get a random one */
>        if (!is_valid_ether_addr(ndev->dev_addr))
> -               random_ether_addr(ndev->dev_addr);
> +               dev_hw_addr_random(ndev, ndev->dev_addr);
>
>        setup_mac_addr(ndev->dev_addr);
>
> diff --git a/drivers/net/ethernet/adi/bfin_mac.h b/drivers/net/ethernet/adi/bfin_mac.h
> index f8559ac..960905c 100644
> --- a/drivers/net/ethernet/adi/bfin_mac.h
> +++ b/drivers/net/ethernet/adi/bfin_mac.h
> @@ -101,6 +101,6 @@ struct bfin_mac_local {
>  #endif
>  };
>
> -extern void bfin_get_ether_addr(char *addr);
> +extern int bfin_get_ether_addr(char *addr);
>
>  #endif
> --
> 1.7.7.3
>

-- 
Thanks,
--Bob

^ permalink raw reply	[flat|nested] 77+ messages in thread

* Re: [PATCH 04/50] adi/blackfin: set addr_assign_type correctly if random
  2012-02-08 21:10 ` [PATCH 04/50] adi/blackfin: set addr_assign_type correctly if random Danny Kukawka
  2012-02-09  3:28   ` Bob Liu
@ 2012-02-09  4:05   ` Mike Frysinger
  1 sibling, 0 replies; 77+ messages in thread
From: Mike Frysinger @ 2012-02-09  4:05 UTC (permalink / raw)
  To: Danny Kukawka
  Cc: David S. Miller, Danny Kukawka, netdev, linux-kernel, Bob Liu,
	Sonic Zhang, Paul Gortmaker, Lars-Peter Clausen, Scott Jiang,
	uclinux-dist-devel

[-- Attachment #1: Type: Text/Plain, Size: 1732 bytes --]

On Wednesday 08 February 2012 16:10:11 Danny Kukawka wrote:
> --- a/arch/blackfin/mach-bf537/boards/cm_bf537e.c
> +++ b/arch/blackfin/mach-bf537/boards/cm_bf537e.c
> 
> -void bfin_get_ether_addr(char *addr)
> +int bfin_get_ether_addr(char *addr)
>  {
>  	random_ether_addr(addr);
>  	printk(KERN_WARNING "%s:%s: Setting Ethernet MAC to a random one\n",
> 		__FILE__, __func__);
> +	return 1;
>  }

these boards that just call random_ether_addr() should be changed to only 
return 1 ...

> --- a/drivers/net/ethernet/adi/bfin_mac.c
> +++ b/drivers/net/ethernet/adi/bfin_mac.c
> @@ -621,6 +621,8 @@
>
>  	memcpy(dev->dev_addr, addr->sa_data, dev->addr_len);
> +	if (dev->addr_assign_type & NET_ADDR_RANDOM)
> +		dev->addr_assign_type ^= NET_ADDR_RANDOM;
>  	setup_mac_addr(dev->dev_addr);
>  	return 0;
>  }
> @@ -1496,12 +1498,14 @@
>
> -	if (!is_valid_ether_addr(ndev->dev_addr))
> -		bfin_get_ether_addr(ndev->dev_addr);
> +	if (!is_valid_ether_addr(ndev->dev_addr)) {
> +		if (bfin_get_ether_addr(ndev->dev_addr))
> +			ndev->addr_assign_type |= NET_ADDR_RANDOM;
> +	}

if it returned non-zero, then the mac addr is still invalid, so down below ...

>  	/* If still not valid, get a random one */
>  	if (!is_valid_ether_addr(ndev->dev_addr))
> -		random_ether_addr(ndev->dev_addr);
> +		dev_hw_addr_random(ndev, ndev->dev_addr);

... we call dev_hw_addr_random(), so explicitly setting NET_ADDR_RANDOM 
ourselves is unnecessary

i think the logic should read:
	if (!is_valid_ether_addr(ndev->dev_addr)) {
		if (bfin_get_ether_addr(ndev->dev_addr))
			goto random_mac;

	if (!is_valid_ether_addr(ndev->dev_addr))
 random_mac:
		dev_hw_addr_random(ndev, ndev->dev_addr);
-mike

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 77+ messages in thread

* Re: [PATCH 37/50] usbnet: set addr_assign_type if random_ether_addr() used
  2012-02-08 21:30   ` Oliver Neukum
  2012-02-08 21:41     ` Danny Kukawka
@ 2012-02-09  6:57     ` Bjørn Mork
  2012-02-09 14:55       ` Oliver Neukum
  1 sibling, 1 reply; 77+ messages in thread
From: Bjørn Mork @ 2012-02-09  6:57 UTC (permalink / raw)
  To: Oliver Neukum
  Cc: Danny Kukawka, Danny Kukawka, Greg Kroah-Hartman, linux-usb,
	David S. Miller, netdev, linux-kernel

Oliver Neukum <oliver@neukum.org> writes:

> Am Mittwoch, 8. Februar 2012, 22:10:44 schrieb Danny Kukawka:
>> Set addr_assign_type correctly to NET_ADDR_RANDOM in case
>> a random MAC address was generated and assigned to the netdevice.
>> 
>> Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
>> ---
>>  drivers/net/usb/usbnet.c |    1 +
>>  1 files changed, 1 insertions(+), 0 deletions(-)
>> 
>> diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c
>> index fae0fbd..7bd07d7 100644
>> --- a/drivers/net/usb/usbnet.c
>> +++ b/drivers/net/usb/usbnet.c
>> @@ -1365,6 +1365,7 @@ usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod)
>>  	dev->net = net;
>>  	strcpy (net->name, "usb%d");
>>  	memcpy (net->dev_addr, node_id, sizeof node_id);
>> +	net->addr_assign_type |= NET_ADDR_RANDOM;
>>  
>>  	/* rx and tx sides can use different message sizes;
>>  	 * bind() should set rx_urb_size in that case.
>
> Don't you set the flag too early here? By that time we don't know
> whether the device provides a real MAC, do we?

Maybe it makes sense to set it here anyway since usbnet provides this
default random address, and let the minidrivers which set a real mac
also clear the flag?  But in that case the patch need to clear the flag
everywhere a minidriver currently updates the address.


Bjørn

^ permalink raw reply	[flat|nested] 77+ messages in thread

* Re: [PATCH 09/50] Cadence MACB: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 ` [PATCH 09/50] Cadence MACB: " Danny Kukawka
@ 2012-02-09  8:24   ` Nicolas Ferre
  0 siblings, 0 replies; 77+ messages in thread
From: Nicolas Ferre @ 2012-02-09  8:24 UTC (permalink / raw)
  To: Danny Kukawka
  Cc: David S. Miller, Danny Kukawka, netdev, linux-kernel,
	Jean-Christophe PLAGNIOL-VILLARD, Jamie Iles

On 02/08/2012 10:10 PM, Danny Kukawka :
> Use dev_hw_addr_random() instead of calling random_ether_addr()
> to set addr_assign_type correctly to NET_ADDR_RANDOM.
> 
> Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>

Danny,

You can add my "Acked-by" even if you rework this series...

Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>

Thanks, best regards,

> ---
>  drivers/net/ethernet/cadence/macb.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/net/ethernet/cadence/macb.c b/drivers/net/ethernet/cadence/macb.c
> index 2320068..3ee8d79 100644
> --- a/drivers/net/ethernet/cadence/macb.c
> +++ b/drivers/net/ethernet/cadence/macb.c
> @@ -87,7 +87,7 @@ static void __init macb_get_hwaddr(struct macb *bp)
>  		memcpy(bp->dev->dev_addr, addr, sizeof(addr));
>  	} else {
>  		netdev_info(bp->dev, "invalid hw address, using random\n");
> -		random_ether_addr(bp->dev->dev_addr);
> +		dev_hw_addr_random(bp->dev, bp->dev->dev_addr);
>  	}
>  }
>  


-- 
Nicolas Ferre

^ permalink raw reply	[flat|nested] 77+ messages in thread

* Re: [B.A.T.M.A.N.] [PATCH 40/50] batman-adv: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 ` [PATCH 40/50] batman-adv: " Danny Kukawka
@ 2012-02-09  8:44   ` Sven Eckelmann
  2012-02-11 11:12   ` Marek Lindner
  1 sibling, 0 replies; 77+ messages in thread
From: Sven Eckelmann @ 2012-02-09  8:44 UTC (permalink / raw)
  To: b.a.t.m.a.n
  Cc: Danny Kukawka, Marek Lindner, netdev, Danny Kukawka,
	linux-kernel, Simon Wunderlich, David S. Miller

[-- Attachment #1: Type: text/plain, Size: 1147 bytes --]

On Wednesday 08 February 2012 22:10:47 Danny Kukawka wrote:
> Use dev_hw_addr_random() instead of calling random_ether_addr()
> to set addr_assign_type correctly to NET_ADDR_RANDOM.
> 
> Reset the state to NET_ADDR_PERM as soon as the MAC get
> changed via .ndo_set_mac_address.
> 
> Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
> ---
>  net/batman-adv/soft-interface.c |    7 ++++---
>  1 files changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/net/batman-adv/soft-interface.c
> b/net/batman-adv/soft-interface.c index 987c75a..865a485 100644
> --- a/net/batman-adv/soft-interface.c
> +++ b/net/batman-adv/soft-interface.c
> @@ -541,6 +541,9 @@ static int interface_set_mac_addr(struct net_device
> *dev, void *p) }
> 
>  	memcpy(dev->dev_addr, addr->sa_data, ETH_ALEN);
> +	if (dev->addr_assign_type & NET_ADDR_RANDOM)
> +		dev->addr_assign_type ^= NET_ADDR_RANDOM;
> +
>  	return 0;
>  }

Why not something like

dev->addr_assign_type &= ~NET_ADDR_RANDOM;

? It is a relative common way inside the kernel to do this kind of stuff.

Thanks,
	Sven

PS: For the batman-adv people. This functionality was introduced with 2.6.36. 

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 77+ messages in thread

* Re: [PATCH 42/50] virtio_net:  use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 ` [PATCH 42/50] virtio_net: " Danny Kukawka
@ 2012-02-09  9:35   ` Michael S. Tsirkin
  0 siblings, 0 replies; 77+ messages in thread
From: Michael S. Tsirkin @ 2012-02-09  9:35 UTC (permalink / raw)
  To: Danny Kukawka
  Cc: Rusty Russell, Danny Kukawka, virtualization, David S. Miller,
	netdev, linux-kernel

On Wed, Feb 08, 2012 at 10:10:49PM +0100, Danny Kukawka wrote:
> Use dev_hw_addr_random() instead of calling random_ether_addr()
> to set addr_assign_type correctly to NET_ADDR_RANDOM.
> 
> Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>

Acked-by: Michael S. Tsirkin <mst@redhat.com>

> ---
>  drivers/net/virtio_net.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
> index 4880aa8..69d36e1 100644
> --- a/drivers/net/virtio_net.c
> +++ b/drivers/net/virtio_net.c
> @@ -1061,7 +1061,7 @@ static int virtnet_probe(struct virtio_device *vdev)
>  	if (virtio_config_val_len(vdev, VIRTIO_NET_F_MAC,
>  				  offsetof(struct virtio_net_config, mac),
>  				  dev->dev_addr, dev->addr_len) < 0)
> -		random_ether_addr(dev->dev_addr);
> +		dev_hw_addr_random(dev, dev->dev_addr);
>  
>  	/* Set up our device-specific information */
>  	vi = netdev_priv(dev);
> -- 
> 1.7.7.3

^ permalink raw reply	[flat|nested] 77+ messages in thread

* RE: [PATCH 08/50] bnx2x: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 ` [PATCH 08/50] bnx2x: " Danny Kukawka
@ 2012-02-09  9:59   ` David Laight
  0 siblings, 0 replies; 77+ messages in thread
From: David Laight @ 2012-02-09  9:59 UTC (permalink / raw)
  To: Danny Kukawka, David S. Miller
  Cc: Danny Kukawka, netdev, linux-kernel, Eilon Greenstein

 
> +	if (dev->addr_assign_type & NET_ADDR_RANDOM)
> +		dev->addr_assign_type ^= NET_ADDR_RANDOM;

Why not just:
	dev->addr_assign_type &= ~NET_ADDR_RANDOM;
the cache is probably dirty and it won't be a critical path.

	David



^ permalink raw reply	[flat|nested] 77+ messages in thread

* Re: [PATCH 02/50] smsc95xx: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 ` [PATCH 02/50] smsc95xx: use dev_hw_addr_random() instead of random_ether_addr() Danny Kukawka
@ 2012-02-09 10:51   ` Sergei Shtylyov
  0 siblings, 0 replies; 77+ messages in thread
From: Sergei Shtylyov @ 2012-02-09 10:51 UTC (permalink / raw)
  To: Danny Kukawka
  Cc: netdev, Danny Kukawka, Greg Kroah-Hartman, Steve Glendinning,
	linux-usb, linux-kernel, David S. Miller

Hello.

On 09-02-2012 1:10, Danny Kukawka wrote:

> Use dev_hw_addr_random() instead of calling random_ether_addr()
> to set addr_assign_type correctly to NET_ADDR_RANDOM.

> Signed-off-by: Danny Kukawka<danny.kukawka@bisect.de>
> ---
>   drivers/net/usb/smsc95xx.c |    2 +-
>   1 files changed, 1 insertions(+), 1 deletions(-)

> diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c
> index d45520e..3a28e95 100644
> --- a/drivers/net/usb/smsc95xx.c
> +++ b/drivers/net/usb/smsc95xx.c
> @@ -614,7 +614,7 @@ static void smsc95xx_init_mac_address(struct usbnet *dev)
>   	}
>
>   	/* no eeprom, or eeprom values are invalid. generate random MAC */
> -	random_ether_addr(dev->net->dev_addr);
> +	dev_hw_addr_random(dev->net , dev->net->dev_addr);

    Should be no space before comma.

WBR, Sergei

^ permalink raw reply	[flat|nested] 77+ messages in thread

* Re: [PATCH 20/50] smsc911x: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 ` [PATCH 20/50] smsc911x: " Danny Kukawka
@ 2012-02-09 11:28   ` Mark Brown
  0 siblings, 0 replies; 77+ messages in thread
From: Mark Brown @ 2012-02-09 11:28 UTC (permalink / raw)
  To: Danny Kukawka
  Cc: David S. Miller, Danny Kukawka, netdev, linux-kernel, Steve Glendinning

On Wed, Feb 08, 2012 at 10:10:27PM +0100, Danny Kukawka wrote:

> +	if (dev->addr_assign_type & NET_ADDR_RANDOM)
> +		dev->addr_assign_type ^= NET_ADDR_RANDOM;

It would be clearer to just write

		dev->addr_assign_type &= ~NET_ADDR_RANDOM;

to clear the bit - the ^ takes more thinking.

^ permalink raw reply	[flat|nested] 77+ messages in thread

* Re: [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice
  2012-02-08 23:29 ` David Miller
@ 2012-02-09 12:18   ` Danny Kukawka
  2012-02-09 18:37     ` David Miller
  0 siblings, 1 reply; 77+ messages in thread
From: Danny Kukawka @ 2012-02-09 12:18 UTC (permalink / raw)
  To: David Miller; +Cc: netdev, linux-kernel

On Donnerstag, 9. Februar 2012, David Miller wrote:
> 50 patches is way too many patches to submit and expect people
> to review at one time.
>
> You must do one of two things:
>
> 1) Condense the series down to a smaller number of more managable
>    patches.  Perhaps combine all the completely trivial conversion
>    cases into one single patch, and post the non-trivial cases
>    seperately.
>
> 2) Only submit a few of these changes at a time, not all at once.
>
> It's your choice, but what you did here is unacceptable.

Could you at least comment on these points from the cover letter, before I 
change/update the patches?

- Should NET_ADDR_RANDOM get reset (to NET_ADDR_PERM) if the MAC address
  get changed via SIOCSIFHWADDR/.ndo_set_mac_address and was random before?
- Would it make sense to add a new state (e.g. NET_ADDR_USERSPACE)
  if the net address get changed via SIOCSIFHWADDR/.ndo_set_mac_address 
  from userspace?

Thanks,

Danny

^ permalink raw reply	[flat|nested] 77+ messages in thread

* Re: [PATCH 46/50] wan: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 ` [PATCH 46/50] wan: " Danny Kukawka
@ 2012-02-09 14:12   ` Krzysztof Halasa
  0 siblings, 0 replies; 77+ messages in thread
From: Krzysztof Halasa @ 2012-02-09 14:12 UTC (permalink / raw)
  To: Danny Kukawka; +Cc: Danny Kukawka, David S. Miller, netdev, linux-kernel

Danny Kukawka <danny.kukawka@bisect.de> writes:

> Use dev_hw_addr_random() instead of calling random_ether_addr()
> to set addr_assign_type correctly to NET_ADDR_RANDOM.
>
> Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
> ---
>  drivers/net/wan/hdlc_fr.c      |    2 +-
>  drivers/net/wan/hdlc_raw_eth.c |    2 +-

Acked-by: Krzysztof Halasa <khc@pm.waw.pl>
-- 
Krzysztof Halasa

^ permalink raw reply	[flat|nested] 77+ messages in thread

* Re: [PATCH 37/50] usbnet: set addr_assign_type if random_ether_addr() used
  2012-02-09  6:57     ` Bjørn Mork
@ 2012-02-09 14:55       ` Oliver Neukum
  0 siblings, 0 replies; 77+ messages in thread
From: Oliver Neukum @ 2012-02-09 14:55 UTC (permalink / raw)
  To: Bjørn Mork
  Cc: Danny Kukawka, Danny Kukawka, Greg Kroah-Hartman, linux-usb,
	David S. Miller, netdev, linux-kernel

Am Donnerstag, 9. Februar 2012, 07:57:42 schrieb Bjørn Mork:
> > Don't you set the flag too early here? By that time we don't know
> > whether the device provides a real MAC, do we?
> 
> Maybe it makes sense to set it here anyway since usbnet provides this
> default random address, and let the minidrivers which set a real mac
> also clear the flag?  But in that case the patch need to clear the flag
> everywhere a minidriver currently updates the address.
> 

Doable, but where is the benefit? It seems better to me to make an effort
to guess as well as possible in the common code.

	Regards
		Oliver

^ permalink raw reply	[flat|nested] 77+ messages in thread

* Re: [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if  a random mac address get assigned to a netdevice
  2012-02-08 22:58 ` [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Stephen Hemminger
@ 2012-02-09 14:59   ` Danny Kukawka
  2012-02-09 16:06     ` Stephen Hemminger
  0 siblings, 1 reply; 77+ messages in thread
From: Danny Kukawka @ 2012-02-09 14:59 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: David S. Miller, netdev, linux-kernel

On Mittwoch, 8. Februar 2012, Stephen Hemminger wrote:
> On Wed,  8 Feb 2012 22:10:07 +0100
>
> Danny Kukawka <danny.kukawka@bisect.de> wrote:
> > 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.

> 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

^ permalink raw reply	[flat|nested] 77+ messages in thread

* Re: [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if  a random mac address get assigned to a netdevice
  2012-02-09 14:59   ` Danny Kukawka
@ 2012-02-09 16:06     ` Stephen Hemminger
  0 siblings, 0 replies; 77+ messages in thread
From: Stephen Hemminger @ 2012-02-09 16:06 UTC (permalink / raw)
  To: Danny Kukawka; +Cc: David S. Miller, netdev, linux-kernel

On Thu, 9 Feb 2012 15:59:05 +0100
Danny Kukawka <danny.kukawka@bisect.de> wrote:

> On Mittwoch, 8. Februar 2012, Stephen Hemminger wrote:
> > On Wed,  8 Feb 2012 22:10:07 +0100
> >
> > Danny Kukawka <danny.kukawka@bisect.de> wrote:
> > > 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.
> 
> > 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()

^ permalink raw reply	[flat|nested] 77+ messages in thread

* Re: [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice
  2012-02-09 12:18   ` Danny Kukawka
@ 2012-02-09 18:37     ` David Miller
  0 siblings, 0 replies; 77+ messages in thread
From: David Miller @ 2012-02-09 18:37 UTC (permalink / raw)
  To: danny.kukawka; +Cc: netdev, linux-kernel

From: Danny Kukawka <danny.kukawka@bisect.de>
Date: Thu, 9 Feb 2012 13:18:35 +0100

> On Donnerstag, 9. Februar 2012, David Miller wrote:
>> 50 patches is way too many patches to submit and expect people
>> to review at one time.
>>
>> You must do one of two things:
>>
>> 1) Condense the series down to a smaller number of more managable
>>    patches.  Perhaps combine all the completely trivial conversion
>>    cases into one single patch, and post the non-trivial cases
>>    seperately.
>>
>> 2) Only submit a few of these changes at a time, not all at once.
>>
>> It's your choice, but what you did here is unacceptable.
> 
> Could you at least comment on these points from the cover letter, before I 
> change/update the patches?
> 
> - Should NET_ADDR_RANDOM get reset (to NET_ADDR_PERM) if the MAC address
>   get changed via SIOCSIFHWADDR/.ndo_set_mac_address and was random before?

Probably, yes.

> - Would it make sense to add a new state (e.g. NET_ADDR_USERSPACE)
>   if the net address get changed via SIOCSIFHWADDR/.ndo_set_mac_address 
>   from userspace?

I suspect this is not useful.

^ permalink raw reply	[flat|nested] 77+ messages in thread

* Re: [PATCH 24/50] sis900: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 ` [PATCH 24/50] sis900: " Danny Kukawka
@ 2012-02-11  9:05   ` Daniele Venzano
  0 siblings, 0 replies; 77+ messages in thread
From: Daniele Venzano @ 2012-02-11  9:05 UTC (permalink / raw)
  To: Danny Kukawka; +Cc: Danny Kukawka, David S. Miller, netdev, linux-kernel

Il 08.02.2012 22:10, Danny Kukawka ha scritto:

> Use dev_hw_addr_random() instead of calling random_ether_addr()
> to set addr_assign_type correctly to NET_ADDR_RANDOM.

Acked-by: Daniele Venzano <venza@brownhat.org>

> Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
> ---
>  drivers/net/ethernet/sis/sis900.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/net/ethernet/sis/sis900.c b/drivers/net/ethernet/sis/sis900.c
> index c8efc70..cbd0343 100644
> --- a/drivers/net/ethernet/sis/sis900.c
> +++ b/drivers/net/ethernet/sis/sis900.c
> @@ -527,7 +527,7 @@ static int __devinit sis900_probe(struct pci_dev *pci_dev,
>  		ret = sis900_get_mac_addr(pci_dev, net_dev);
>  
>  	if (!ret || !is_valid_ether_addr(net_dev->dev_addr)) {
> -		random_ether_addr(net_dev->dev_addr);
> +		dev_hw_addr_random(net_dev, net_dev->dev_addr);
>  		printk(KERN_WARNING "%s: Unreadable or invalid MAC address,"
>  				"using random generated one\n", dev_name);
>  	}



^ permalink raw reply	[flat|nested] 77+ messages in thread

* Re: [B.A.T.M.A.N.] [PATCH 40/50] batman-adv: use dev_hw_addr_random() instead of random_ether_addr()
  2012-02-08 21:10 ` [PATCH 40/50] batman-adv: " Danny Kukawka
  2012-02-09  8:44   ` [B.A.T.M.A.N.] " Sven Eckelmann
@ 2012-02-11 11:12   ` Marek Lindner
  1 sibling, 0 replies; 77+ messages in thread
From: Marek Lindner @ 2012-02-11 11:12 UTC (permalink / raw)
  To: b.a.t.m.a.n
  Cc: Danny Kukawka, netdev, Danny Kukawka, linux-kernel,
	Simon Wunderlich, David S. Miller

On Thursday, February 09, 2012 05:10:47 Danny Kukawka wrote:
> Use dev_hw_addr_random() instead of calling random_ether_addr()
> to set addr_assign_type correctly to NET_ADDR_RANDOM.
> 
> Reset the state to NET_ADDR_PERM as soon as the MAC get
> changed via .ndo_set_mac_address.

Applied (with minor modification) in revision 910ccac.

Thanks,
Marek

^ permalink raw reply	[flat|nested] 77+ messages in thread

end of thread, other threads:[~2012-02-11 11:18 UTC | newest]

Thread overview: 77+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-02-08 21:10 [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Danny Kukawka
2012-02-08 21:10 ` [PATCH 01/50] eth: reset addr_assign_type if eth_mac_addr() called Danny Kukawka
2012-02-08 22:50   ` Stephen Hemminger
2012-02-08 22:57     ` Danny Kukawka
2012-02-08 21:10 ` [PATCH 02/50] smsc95xx: use dev_hw_addr_random() instead of random_ether_addr() Danny Kukawka
2012-02-09 10:51   ` Sergei Shtylyov
2012-02-08 21:10 ` [PATCH 03/50] smsc75xx: se " Danny Kukawka
2012-02-08 21:10 ` [PATCH 04/50] adi/blackfin: set addr_assign_type correctly if random Danny Kukawka
2012-02-09  3:28   ` Bob Liu
2012-02-09  4:05   ` Mike Frysinger
2012-02-08 21:10 ` [PATCH 05/50] UML net: set addr_assign_type if random_ether_addr() used Danny Kukawka
2012-02-08 21:10 ` [PATCH 06/50] dummy: use dev_hw_addr_random() instead of random_ether_addr() Danny Kukawka
2012-02-08 21:10 ` [PATCH 07/50] au1000_eth: " Danny Kukawka
2012-02-08 21:10 ` [PATCH 08/50] bnx2x: " Danny Kukawka
2012-02-09  9:59   ` David Laight
2012-02-08 21:10 ` [PATCH 09/50] Cadence MACB: " Danny Kukawka
2012-02-09  8:24   ` Nicolas Ferre
2012-02-08 21:10 ` [PATCH 10/50] Calxeda XGMAC: " Danny Kukawka
2012-02-08 21:10 ` [PATCH 11/50] ep93xx: " Danny Kukawka
2012-02-08 21:29   ` H Hartley Sweeten
2012-02-08 21:10 ` [PATCH 12/50] dm9000: " Danny Kukawka
2012-02-08 21:10 ` [PATCH 13/50] dnet: " Danny Kukawka
2012-02-08 21:10 ` [PATCH 14/50] ethoc: set addr_assign_type if random_ether_addr() used Danny Kukawka
2012-02-08 21:10 ` [PATCH 15/50] lantiq_etop: " Danny Kukawka
2012-02-08 21:10 ` [PATCH 16/50] pxa168_eth: use dev_hw_addr_random() instead of random_ether_addr() Danny Kukawka
2012-02-08 21:10 ` [PATCH 17/50] enc28j60: " Danny Kukawka
2012-02-08 21:10 ` [PATCH 18/50] mipsnet: " Danny Kukawka
2012-02-08 21:10 ` [PATCH 19/50] macsonic: " Danny Kukawka
2012-02-08 21:10 ` [PATCH 20/50] smsc911x: " Danny Kukawka
2012-02-09 11:28   ` Mark Brown
2012-02-08 21:10 ` [PATCH 21/50] smsc9420: " Danny Kukawka
2012-02-08 21:10 ` [PATCH 22/50] r6040: " Danny Kukawka
2012-02-08 21:10 ` [PATCH 23/50] efx: " Danny Kukawka
2012-02-08 21:29   ` Ben Hutchings
2012-02-08 21:10 ` [PATCH 24/50] sis900: " Danny Kukawka
2012-02-11  9:05   ` Daniele Venzano
2012-02-08 21:10 ` [PATCH 25/50] via-rhine: " Danny Kukawka
2012-02-08 21:10 ` [PATCH 26/50] faraday: " Danny Kukawka
2012-02-08 21:10 ` [PATCH 27/50] davinci_emac: " Danny Kukawka
2012-02-08 21:10 ` [PATCH 28/50] forcedeth: " Danny Kukawka
2012-02-08 21:10 ` [PATCH 29/50] micrel eth: " Danny Kukawka
2012-02-08 21:10 ` [PATCH 30/50] atheros eth: set addr_assign_type if random_ether_addr() used Danny Kukawka
2012-02-08 21:10 ` [PATCH 31/50] tc35815: use dev_hw_addr_random() instead of random_ether_addr() Danny Kukawka
2012-02-08 21:10 ` [PATCH 32/50] tile_net: " Danny Kukawka
2012-02-08 21:10 ` [PATCH 33/50] stmmac: " Danny Kukawka
2012-02-08 21:10 ` [PATCH 34/50] xilinx ll_temac: " Danny Kukawka
2012-02-08 21:10 ` [PATCH 35/50] ifb: " Danny Kukawka
2012-02-08 21:10 ` [PATCH 36/50] igbvf: reset netdevice addr_assign_type if changed from random Danny Kukawka
2012-02-08 21:10 ` [PATCH 37/50] usbnet: set addr_assign_type if random_ether_addr() used Danny Kukawka
2012-02-08 21:30   ` Oliver Neukum
2012-02-08 21:41     ` Danny Kukawka
2012-02-09  6:57     ` Bjørn Mork
2012-02-09 14:55       ` Oliver Neukum
2012-02-08 21:10 ` [PATCH 38/50] g_ether: " Danny Kukawka
2012-02-08 21:10 ` [PATCH 39/50] veth: use dev_hw_addr_random() instead of random_ether_addr() Danny Kukawka
2012-02-08 21:10 ` [PATCH 40/50] batman-adv: " Danny Kukawka
2012-02-09  8:44   ` [B.A.T.M.A.N.] " Sven Eckelmann
2012-02-11 11:12   ` Marek Lindner
2012-02-08 21:10 ` [PATCH 41/50] l2tp_eth: " Danny Kukawka
2012-02-08 21:10 ` [PATCH 42/50] virtio_net: " Danny Kukawka
2012-02-09  9:35   ` Michael S. Tsirkin
2012-02-08 21:10 ` [PATCH 43/50] macvlan: " Danny Kukawka
2012-02-08 21:10 ` [PATCH 44/50] team: " Danny Kukawka
2012-02-08 21:10 ` [PATCH 45/50] tun: " Danny Kukawka
2012-02-08 21:10 ` [PATCH 46/50] wan: " Danny Kukawka
2012-02-09 14:12   ` Krzysztof Halasa
2012-02-08 21:10 ` [PATCH 47/50] bridge: " Danny Kukawka
2012-02-08 22:52   ` Stephen Hemminger
2012-02-08 21:10 ` [PATCH 48/50] ip_gre.c: " Danny Kukawka
2012-02-08 21:10 ` [PATCH 49/50] openvswitch: " Danny Kukawka
2012-02-08 21:10 ` [PATCH 50/50] " Danny Kukawka
2012-02-08 22:58 ` [RFC][PATCH 00/50] set addr_assign_type to NET_ADDR_RANDOM if a random mac address get assigned to a netdevice Stephen Hemminger
2012-02-09 14:59   ` Danny Kukawka
2012-02-09 16:06     ` Stephen Hemminger
2012-02-08 23:29 ` David Miller
2012-02-09 12:18   ` Danny Kukawka
2012-02-09 18:37     ` David Miller

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).