linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next 00/14] Use eth_<foo>_addr instead of memset
@ 2015-03-03  3:54 Joe Perches
  2015-03-03  3:54 ` [PATCH net-next 01/14] etherdevice: Add eth_<foo>_addr CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS code Joe Perches
                   ` (13 more replies)
  0 siblings, 14 replies; 42+ messages in thread
From: Joe Perches @ 2015-03-03  3:54 UTC (permalink / raw)
  To: netdev, e1000-devel, linux-usb, linux-wireless, ath10k,
	ath9k-devel, b43-dev, libertas-dev, xen-devel
  Cc: linux-kernel, brcm80211-dev-list, linux-bluetooth

Joe Perches (14):
  etherdevice: Add eth_<foo>_addr CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS code
  ethernet: Use eth_<foo>_addr instead of memset
  net: usb: Use eth_<foo>_addr instead of memset
  wireless: Use eth_<foo>_addr instead of memset
  netconsole: Use eth_<foo>_addr instead of memset
  xen: Use eth_<foo>_addr instead of memset
  8021q: Use eth_<foo>_addr instead of memset
  appletalk: Use eth_<foo>_addr instead of memset
  atm: Use eth_<foo>_addr instead of memset
  bluetooth: Use eth_<foo>_addr instead of memset
  ethernet: Use eth_<foo>_addr instead of memset
  mac80211: Use eth_<foo>_addr instead of memset
  wireless: Use eth_<foo>_addr instead of memset
  l2tp: Use eth_<foo>_addr instead of memset

 drivers/net/ethernet/amd/pcnet32.c                 |  2 +-
 .../net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c    |  2 +-
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c   |  6 ++--
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.c  |  2 +-
 drivers/net/ethernet/cisco/enic/enic_main.c        |  8 +++---
 drivers/net/ethernet/emulex/benet/be_cmds.c        |  2 +-
 drivers/net/ethernet/emulex/benet/be_main.c        |  2 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c      |  4 +--
 drivers/net/ethernet/mellanox/mlx4/en_netdev.c     |  4 +--
 drivers/net/ethernet/mellanox/mlx4/en_selftest.c   |  2 +-
 drivers/net/ethernet/micrel/ksz884x.c              |  2 +-
 drivers/net/ethernet/qlogic/netxen/netxen_nic_hw.c |  2 +-
 drivers/net/ethernet/qlogic/qlge/qlge_main.c       |  2 +-
 drivers/net/ethernet/smsc/smsc911x.c               |  2 +-
 drivers/net/ethernet/ti/netcp_core.c               |  2 +-
 drivers/net/ethernet/toshiba/ps3_gelic_wireless.c  |  4 +--
 drivers/net/ethernet/xscale/ixp4xx_eth.c           |  2 +-
 drivers/net/netconsole.c                           |  5 ++--
 drivers/net/usb/catc.c                             |  4 +--
 drivers/net/usb/cdc_mbim.c                         |  2 +-
 drivers/net/usb/lg-vl600.c                         |  2 +-
 drivers/net/usb/qmi_wwan.c                         |  2 +-
 drivers/net/wireless/airo.c                        |  4 +--
 drivers/net/wireless/at76c50x-usb.c                |  6 ++--
 drivers/net/wireless/ath/ath10k/mac.c              |  2 +-
 drivers/net/wireless/ath/ath5k/base.c              |  2 +-
 drivers/net/wireless/ath/ath6kl/cfg80211.c         |  2 +-
 drivers/net/wireless/ath/ath6kl/main.c             |  2 +-
 drivers/net/wireless/ath/ath9k/htc_drv_main.c      |  2 +-
 drivers/net/wireless/ath/ath9k/main.c              |  4 +--
 drivers/net/wireless/atmel.c                       | 16 +++++------
 drivers/net/wireless/b43/main.c                    |  8 +++---
 drivers/net/wireless/b43legacy/main.c              |  8 +++---
 drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c | 12 ++++----
 drivers/net/wireless/brcm80211/brcmfmac/flowring.c |  2 +-
 drivers/net/wireless/brcm80211/brcmfmac/p2p.c      |  2 +-
 drivers/net/wireless/cw1200/sta.c                  |  2 +-
 drivers/net/wireless/cw1200/txrx.c                 |  2 +-
 drivers/net/wireless/hostap/hostap_80211_tx.c      |  4 +--
 drivers/net/wireless/hostap/hostap_ap.c            |  8 +++---
 drivers/net/wireless/hostap/hostap_info.c          |  2 +-
 drivers/net/wireless/hostap/hostap_main.c          |  4 +--
 drivers/net/wireless/hostap/hostap_wlan.h          | 33 +++++++++++-----------
 drivers/net/wireless/ipw2x00/ipw2100.c             |  8 +++---
 drivers/net/wireless/ipw2x00/ipw2200.c             |  6 ++--
 drivers/net/wireless/iwlegacy/common.c             |  2 +-
 drivers/net/wireless/iwlwifi/mvm/power.c           |  3 +-
 drivers/net/wireless/libertas/main.c               |  4 +--
 drivers/net/wireless/libertas_tf/main.c            |  4 +--
 drivers/net/wireless/mac80211_hwsim.c              |  6 ++--
 drivers/net/wireless/mwifiex/cfg80211.c            |  8 +++---
 drivers/net/wireless/mwifiex/init.c                |  4 +--
 drivers/net/wireless/mwifiex/sta_event.c           |  2 +-
 drivers/net/wireless/mwifiex/wmm.c                 |  2 +-
 drivers/net/wireless/mwl8k.c                       |  2 +-
 drivers/net/wireless/orinoco/wext.c                |  2 +-
 drivers/net/wireless/p54/fwio.c                    |  2 +-
 drivers/net/wireless/p54/main.c                    |  8 +++---
 drivers/net/wireless/ray_cs.c                      |  2 +-
 drivers/net/wireless/rndis_wlan.c                  | 28 +++++++++---------
 drivers/net/wireless/rtlwifi/core.c                |  6 ++--
 drivers/net/wireless/ti/wl1251/main.c              |  4 +--
 drivers/net/wireless/ti/wlcore/cmd.c               |  4 +--
 drivers/net/xen-netback/interface.c                |  2 +-
 include/linux/etherdevice.h                        | 12 +++++++-
 net/8021q/vlan_dev.c                               |  2 +-
 net/appletalk/aarp.c                               |  6 ++--
 net/atm/lec.c                                      |  4 +--
 net/bluetooth/bnep/netdev.c                        |  2 +-
 net/ethernet/eth.c                                 |  4 +--
 net/l2tp/l2tp_eth.c                                |  2 +-
 net/mac80211/cfg.c                                 |  2 +-
 net/mac80211/ibss.c                                |  2 +-
 net/mac80211/mesh.c                                |  2 +-
 net/mac80211/mlme.c                                | 10 +++----
 net/wireless/ibss.c                                |  2 +-
 net/wireless/nl80211.c                             |  4 +--
 net/wireless/trace.h                               |  9 +++---
 net/wireless/wext-sme.c                            |  2 +-
 79 files changed, 190 insertions(+), 176 deletions(-)

-- 
2.1.2


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

* [PATCH net-next 01/14] etherdevice: Add eth_<foo>_addr CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS code
  2015-03-03  3:54 [PATCH net-next 00/14] Use eth_<foo>_addr instead of memset Joe Perches
@ 2015-03-03  3:54 ` Joe Perches
  2015-03-03 13:19   ` Eric Dumazet
  2015-03-03  3:54 ` [PATCH net-next 02/14] ethernet: Use eth_<foo>_addr instead of memset Joe Perches
                   ` (12 subsequent siblings)
  13 siblings, 1 reply; 42+ messages in thread
From: Joe Perches @ 2015-03-03  3:54 UTC (permalink / raw)
  To: netdev, linux-kernel

Make the memset possibly more efficient with the appropriate
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS #ifdef

Signed-off-by: Joe Perches <joe@perches.com>
---
 include/linux/etherdevice.h | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/include/linux/etherdevice.h b/include/linux/etherdevice.h
index 606563e..22ad94a 100644
--- a/include/linux/etherdevice.h
+++ b/include/linux/etherdevice.h
@@ -192,7 +192,12 @@ static inline void eth_random_addr(u8 *addr)
  */
 static inline void eth_broadcast_addr(u8 *addr)
 {
+#if defined(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS)
+	*(u32 *)addr = 0xffffffff;
+	*(u16 *)(addr + 4) = 0xffff;
+#else
 	memset(addr, 0xff, ETH_ALEN);
+#endif
 }
 
 /**
@@ -203,7 +208,12 @@ static inline void eth_broadcast_addr(u8 *addr)
  */
 static inline void eth_zero_addr(u8 *addr)
 {
-	memset(addr, 0x00, ETH_ALEN);
+#if defined(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS)
+	*(u32 *)addr = 0;
+	*(u16 *)(addr + 4) = 0;
+#else
+	memset(addr, 0, ETH_ALEN);
+#endif
 }
 
 /**
-- 
2.1.2


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

* [PATCH net-next 02/14] ethernet: Use eth_<foo>_addr instead of memset
  2015-03-03  3:54 [PATCH net-next 00/14] Use eth_<foo>_addr instead of memset Joe Perches
  2015-03-03  3:54 ` [PATCH net-next 01/14] etherdevice: Add eth_<foo>_addr CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS code Joe Perches
@ 2015-03-03  3:54 ` Joe Perches
  2015-03-03  4:09   ` Jeff Kirsher
  2015-03-05  5:39   ` Don Fry
  2015-03-03  3:54 ` [PATCH net-next 03/14] net: usb: " Joe Perches
                   ` (11 subsequent siblings)
  13 siblings, 2 replies; 42+ messages in thread
From: Joe Perches @ 2015-03-03  3:54 UTC (permalink / raw)
  To: netdev, Don Fry, Ariel Elior, Christian Benvenuti, Sujith Sankar,
	Govindarajulu Varadarajan, Neel Patel, Sathya Perla,
	Subbu Seetharaman, Ajit Khaparde, Jeff Kirsher, Jesse Brandeburg,
	Bruce Allan, Carolyn Wyborny, Don Skidmore, Greg Rose,
	Matthew Vick, John Ronciak, Mitch Williams, Linux NICS,
	Amir Vadai, Manish Chopra, Sony Chacko, Rajesh Borundia,
	Harish Patil, Sudarsana Kalluru, Dept-GELinuxNICDev,
	linux-driver, Steve Glendinning, Wingman Kwok, Murali Karicheri,
	Krzysztof Halasa
  Cc: linux-kernel, e1000-devel

Use the built-in function instead of memset.

Signed-off-by: Joe Perches <joe@perches.com>
---
 drivers/net/ethernet/amd/pcnet32.c                  | 2 +-
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c | 2 +-
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c    | 6 +++---
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.c   | 2 +-
 drivers/net/ethernet/cisco/enic/enic_main.c         | 8 ++++----
 drivers/net/ethernet/emulex/benet/be_cmds.c         | 2 +-
 drivers/net/ethernet/emulex/benet/be_main.c         | 2 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c       | 4 ++--
 drivers/net/ethernet/mellanox/mlx4/en_netdev.c      | 4 ++--
 drivers/net/ethernet/mellanox/mlx4/en_selftest.c    | 2 +-
 drivers/net/ethernet/micrel/ksz884x.c               | 2 +-
 drivers/net/ethernet/qlogic/netxen/netxen_nic_hw.c  | 2 +-
 drivers/net/ethernet/qlogic/qlge/qlge_main.c        | 2 +-
 drivers/net/ethernet/smsc/smsc911x.c                | 2 +-
 drivers/net/ethernet/ti/netcp_core.c                | 2 +-
 drivers/net/ethernet/toshiba/ps3_gelic_wireless.c   | 4 ++--
 drivers/net/ethernet/xscale/ixp4xx_eth.c            | 2 +-
 17 files changed, 25 insertions(+), 25 deletions(-)

diff --git a/drivers/net/ethernet/amd/pcnet32.c b/drivers/net/ethernet/amd/pcnet32.c
index 11d6e65..8eb37e0 100644
--- a/drivers/net/ethernet/amd/pcnet32.c
+++ b/drivers/net/ethernet/amd/pcnet32.c
@@ -1708,7 +1708,7 @@ pcnet32_probe1(unsigned long ioaddr, int shared, struct pci_dev *pdev)
 
 	/* if the ethernet address is not valid, force to 00:00:00:00:00:00 */
 	if (!is_valid_ether_addr(dev->dev_addr))
-		memset(dev->dev_addr, 0, ETH_ALEN);
+		eth_zero_addr(dev->dev_addr);
 
 	if (pcnet32_debug & NETIF_MSG_PROBE) {
 		pr_cont(" %pM", dev->dev_addr);
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c
index ffe4e00..e3d853c 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c
@@ -2446,7 +2446,7 @@ static int bnx2x_run_loopback(struct bnx2x *bp, int loopback_mode)
 	}
 	packet = skb_put(skb, pkt_size);
 	memcpy(packet, bp->dev->dev_addr, ETH_ALEN);
-	memset(packet + ETH_ALEN, 0, ETH_ALEN);
+	eth_zero_addr(packet + ETH_ALEN);
 	memset(packet + 2*ETH_ALEN, 0x77, (ETH_HLEN - 2*ETH_ALEN));
 	for (i = ETH_HLEN; i < pkt_size; i++)
 		packet[i] = (unsigned char) (i & 0xff);
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
index 7155e1d..98dcb03 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
@@ -11546,13 +11546,13 @@ static void bnx2x_get_cnic_mac_hwinfo(struct bnx2x *bp)
 	/* Disable iSCSI OOO if MAC configuration is invalid. */
 	if (!is_valid_ether_addr(iscsi_mac)) {
 		bp->flags |= NO_ISCSI_OOO_FLAG | NO_ISCSI_FLAG;
-		memset(iscsi_mac, 0, ETH_ALEN);
+		eth_zero_addr(iscsi_mac);
 	}
 
 	/* Disable FCoE if MAC configuration is invalid. */
 	if (!is_valid_ether_addr(fip_mac)) {
 		bp->flags |= NO_FCOE_FLAG;
-		memset(bp->fip_mac, 0, ETH_ALEN);
+		eth_zero_addr(bp->fip_mac);
 	}
 }
 
@@ -11563,7 +11563,7 @@ static void bnx2x_get_mac_hwinfo(struct bnx2x *bp)
 	int port = BP_PORT(bp);
 
 	/* Zero primary MAC configuration */
-	memset(bp->dev->dev_addr, 0, ETH_ALEN);
+	eth_zero_addr(bp->dev->dev_addr);
 
 	if (BP_NOMCP(bp)) {
 		BNX2X_ERROR("warning: random MAC workaround active\n");
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.c
index e5aca2d..8638d6c 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.c
@@ -2693,7 +2693,7 @@ int bnx2x_get_vf_config(struct net_device *dev, int vfidx,
 			memcpy(&ivi->mac, bulletin->mac, ETH_ALEN);
 		else
 			/* function has not been loaded yet. Show mac as 0s */
-			memset(&ivi->mac, 0, ETH_ALEN);
+			eth_zero_addr(ivi->mac);
 
 		/* vlan */
 		if (bulletin->valid_bitmap & (1 << VLAN_VALID))
diff --git a/drivers/net/ethernet/cisco/enic/enic_main.c b/drivers/net/ethernet/cisco/enic/enic_main.c
index 9cbe038..a368c0a 100644
--- a/drivers/net/ethernet/cisco/enic/enic_main.c
+++ b/drivers/net/ethernet/cisco/enic/enic_main.c
@@ -893,7 +893,7 @@ static int enic_set_vf_port(struct net_device *netdev, int vf,
 		} else {
 			memset(pp, 0, sizeof(*pp));
 			if (vf == PORT_SELF_VF)
-				memset(netdev->dev_addr, 0, ETH_ALEN);
+				eth_zero_addr(netdev->dev_addr);
 		}
 	} else {
 		/* Set flag to indicate that the port assoc/disassoc
@@ -903,14 +903,14 @@ static int enic_set_vf_port(struct net_device *netdev, int vf,
 
 		/* If DISASSOCIATE, clean up all assigned/saved macaddresses */
 		if (pp->request == PORT_REQUEST_DISASSOCIATE) {
-			memset(pp->mac_addr, 0, ETH_ALEN);
+			eth_zero_addr(pp->mac_addr);
 			if (vf == PORT_SELF_VF)
-				memset(netdev->dev_addr, 0, ETH_ALEN);
+				eth_zero_addr(netdev->dev_addr);
 		}
 	}
 
 	if (vf == PORT_SELF_VF)
-		memset(pp->vf_mac, 0, ETH_ALEN);
+		eth_zero_addr(pp->vf_mac);
 
 	return err;
 }
diff --git a/drivers/net/ethernet/emulex/benet/be_cmds.c b/drivers/net/ethernet/emulex/benet/be_cmds.c
index f6db7b3..be00695 100644
--- a/drivers/net/ethernet/emulex/benet/be_cmds.c
+++ b/drivers/net/ethernet/emulex/benet/be_cmds.c
@@ -3076,7 +3076,7 @@ int be_cmd_get_perm_mac(struct be_adapter *adapter, u8 *mac)
 	int status;
 	bool pmac_valid = false;
 
-	memset(mac, 0, ETH_ALEN);
+	eth_zero_addr(mac);
 
 	if (BEx_chip(adapter)) {
 		if (be_physfn(adapter))
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
index b2277a4..7eccebc 100644
--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
@@ -3218,7 +3218,7 @@ static int be_setup_wol(struct be_adapter *adapter, bool enable)
 	int status = 0;
 	u8 mac[ETH_ALEN];
 
-	memset(mac, 0, ETH_ALEN);
+	eth_zero_addr(mac);
 
 	cmd.size = sizeof(struct be_cmd_req_acpi_wol_magic_config);
 	cmd.va = dma_zalloc_coherent(&adapter->pdev->dev, cmd.size, &cmd.dma,
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
index 70cc4c5..903664f 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
@@ -3924,7 +3924,7 @@ static void ixgbe_flush_sw_mac_table(struct ixgbe_adapter *adapter)
 	for (i = 0; i < hw->mac.num_rar_entries; i++) {
 		adapter->mac_table[i].state |= IXGBE_MAC_STATE_MODIFIED;
 		adapter->mac_table[i].state &= ~IXGBE_MAC_STATE_IN_USE;
-		memset(adapter->mac_table[i].addr, 0, ETH_ALEN);
+		eth_zero_addr(adapter->mac_table[i].addr);
 		adapter->mac_table[i].queue = 0;
 	}
 	ixgbe_sync_mac_table(adapter);
@@ -3992,7 +3992,7 @@ int ixgbe_del_mac_filter(struct ixgbe_adapter *adapter, u8 *addr, u16 queue)
 		    adapter->mac_table[i].queue == queue) {
 			adapter->mac_table[i].state |= IXGBE_MAC_STATE_MODIFIED;
 			adapter->mac_table[i].state &= ~IXGBE_MAC_STATE_IN_USE;
-			memset(adapter->mac_table[i].addr, 0, ETH_ALEN);
+			eth_zero_addr(adapter->mac_table[i].addr);
 			adapter->mac_table[i].queue = 0;
 			ixgbe_sync_mac_table(adapter);
 			return 0;
diff --git a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
index 2a210c4..c59ed92 100644
--- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
+++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
@@ -1685,7 +1685,7 @@ int mlx4_en_start_port(struct net_device *dev)
 	}
 
 	/* Attach rx QP to bradcast address */
-	memset(&mc_list[10], 0xff, ETH_ALEN);
+	eth_broadcast_addr(&mc_list[10]);
 	mc_list[5] = priv->port; /* needed for B0 steering support */
 	if (mlx4_multicast_attach(mdev->dev, &priv->rss_map.indir_qp, mc_list,
 				  priv->port, 0, MLX4_PROT_ETH,
@@ -1788,7 +1788,7 @@ void mlx4_en_stop_port(struct net_device *dev, int detach)
 	}
 
 	/* Detach All multicasts */
-	memset(&mc_list[10], 0xff, ETH_ALEN);
+	eth_broadcast_addr(&mc_list[10]);
 	mc_list[5] = priv->port; /* needed for B0 steering support */
 	mlx4_multicast_detach(mdev->dev, &priv->rss_map.indir_qp, mc_list,
 			      MLX4_PROT_ETH, priv->broadcast_id);
diff --git a/drivers/net/ethernet/mellanox/mlx4/en_selftest.c b/drivers/net/ethernet/mellanox/mlx4/en_selftest.c
index 2d8ee66..4e78947 100644
--- a/drivers/net/ethernet/mellanox/mlx4/en_selftest.c
+++ b/drivers/net/ethernet/mellanox/mlx4/en_selftest.c
@@ -66,7 +66,7 @@ static int mlx4_en_test_loopback_xmit(struct mlx4_en_priv *priv)
 	ethh = (struct ethhdr *)skb_put(skb, sizeof(struct ethhdr));
 	packet	= (unsigned char *)skb_put(skb, packet_size);
 	memcpy(ethh->h_dest, priv->dev->dev_addr, ETH_ALEN);
-	memset(ethh->h_source, 0, ETH_ALEN);
+	eth_zero_addr(ethh->h_source);
 	ethh->h_proto = htons(ETH_P_ARP);
 	skb_set_mac_header(skb, 0);
 	for (i = 0; i < packet_size; ++i)	/* fill our packet */
diff --git a/drivers/net/ethernet/micrel/ksz884x.c b/drivers/net/ethernet/micrel/ksz884x.c
index 10988fb..6f332eb 100644
--- a/drivers/net/ethernet/micrel/ksz884x.c
+++ b/drivers/net/ethernet/micrel/ksz884x.c
@@ -4144,7 +4144,7 @@ static int hw_del_addr(struct ksz_hw *hw, u8 *mac_addr)
 
 	for (i = 0; i < hw->addr_list_size; i++) {
 		if (ether_addr_equal(hw->address[i], mac_addr)) {
-			memset(hw->address[i], 0, ETH_ALEN);
+			eth_zero_addr(hw->address[i]);
 			writel(0, hw->io + ADD_ADDR_INCR * i +
 				KS_ADD_ADDR_0_HI);
 			return 0;
diff --git a/drivers/net/ethernet/qlogic/netxen/netxen_nic_hw.c b/drivers/net/ethernet/qlogic/netxen/netxen_nic_hw.c
index 716fc37..db80eb1 100644
--- a/drivers/net/ethernet/qlogic/netxen/netxen_nic_hw.c
+++ b/drivers/net/ethernet/qlogic/netxen/netxen_nic_hw.c
@@ -537,7 +537,7 @@ static void netxen_p2_nic_set_multi(struct net_device *netdev)
 	u8 null_addr[ETH_ALEN];
 	int i;
 
-	memset(null_addr, 0, ETH_ALEN);
+	eth_zero_addr(null_addr);
 
 	if (netdev->flags & IFF_PROMISC) {
 
diff --git a/drivers/net/ethernet/qlogic/qlge/qlge_main.c b/drivers/net/ethernet/qlogic/qlge/qlge_main.c
index 8011ef3..25800a1 100644
--- a/drivers/net/ethernet/qlogic/qlge/qlge_main.c
+++ b/drivers/net/ethernet/qlogic/qlge/qlge_main.c
@@ -460,7 +460,7 @@ static int ql_set_mac_addr(struct ql_adapter *qdev, int set)
 		netif_printk(qdev, ifup, KERN_DEBUG, qdev->ndev,
 			     "Set Mac addr %pM\n", addr);
 	} else {
-		memset(zero_mac_addr, 0, ETH_ALEN);
+		eth_zero_addr(zero_mac_addr);
 		addr = &zero_mac_addr[0];
 		netif_printk(qdev, ifup, KERN_DEBUG, qdev->ndev,
 			     "Clearing MAC address\n");
diff --git a/drivers/net/ethernet/smsc/smsc911x.c b/drivers/net/ethernet/smsc/smsc911x.c
index 2965c6a..41047c9 100644
--- a/drivers/net/ethernet/smsc/smsc911x.c
+++ b/drivers/net/ethernet/smsc/smsc911x.c
@@ -843,7 +843,7 @@ static int smsc911x_phy_loopbacktest(struct net_device *dev)
 	unsigned long flags;
 
 	/* Initialise tx packet using broadcast destination address */
-	memset(pdata->loopback_tx_pkt, 0xff, ETH_ALEN);
+	eth_broadcast_addr(pdata->loopback_tx_pkt);
 
 	/* Use incrementing source address */
 	for (i = 6; i < 12; i++)
diff --git a/drivers/net/ethernet/ti/netcp_core.c b/drivers/net/ethernet/ti/netcp_core.c
index a31a8c3..9f14d8b 100644
--- a/drivers/net/ethernet/ti/netcp_core.c
+++ b/drivers/net/ethernet/ti/netcp_core.c
@@ -1320,7 +1320,7 @@ static struct netcp_addr *netcp_addr_add(struct netcp_intf *netcp,
 	if (addr)
 		ether_addr_copy(naddr->addr, addr);
 	else
-		memset(naddr->addr, 0, ETH_ALEN);
+		eth_zero_addr(naddr->addr);
 	list_add_tail(&naddr->node, &netcp->addr_list);
 
 	return naddr;
diff --git a/drivers/net/ethernet/toshiba/ps3_gelic_wireless.c b/drivers/net/ethernet/toshiba/ps3_gelic_wireless.c
index 0a7f2e7..13214a6 100644
--- a/drivers/net/ethernet/toshiba/ps3_gelic_wireless.c
+++ b/drivers/net/ethernet/toshiba/ps3_gelic_wireless.c
@@ -1167,7 +1167,7 @@ static int gelic_wl_set_ap(struct net_device *netdev,
 	} else {
 		pr_debug("%s: clear bssid\n", __func__);
 		clear_bit(GELIC_WL_STAT_BSSID_SET, &wl->stat);
-		memset(wl->bssid, 0, ETH_ALEN);
+		eth_zero_addr(wl->bssid);
 	}
 	spin_unlock_irqrestore(&wl->lock, irqflag);
 	pr_debug("%s: ->\n", __func__);
@@ -1189,7 +1189,7 @@ static int gelic_wl_get_ap(struct net_device *netdev,
 		memcpy(data->ap_addr.sa_data, wl->active_bssid,
 		       ETH_ALEN);
 	} else
-		memset(data->ap_addr.sa_data, 0, ETH_ALEN);
+		eth_zero_addr(data->ap_addr.sa_data);
 
 	spin_unlock_irqrestore(&wl->lock, irqflag);
 	mutex_unlock(&wl->assoc_stat_lock);
diff --git a/drivers/net/ethernet/xscale/ixp4xx_eth.c b/drivers/net/ethernet/xscale/ixp4xx_eth.c
index f7e0f0f..44ff8d7 100644
--- a/drivers/net/ethernet/xscale/ixp4xx_eth.c
+++ b/drivers/net/ethernet/xscale/ixp4xx_eth.c
@@ -954,7 +954,7 @@ static void eth_set_mcast_list(struct net_device *dev)
 		return;
 	}
 
-	memset(diffs, 0, ETH_ALEN);
+	eth_zero_addr(diffs);
 
 	addr = NULL;
 	netdev_for_each_mc_addr(ha, dev) {
-- 
2.1.2


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

* [PATCH net-next 03/14] net: usb: Use eth_<foo>_addr instead of memset
  2015-03-03  3:54 [PATCH net-next 00/14] Use eth_<foo>_addr instead of memset Joe Perches
  2015-03-03  3:54 ` [PATCH net-next 01/14] etherdevice: Add eth_<foo>_addr CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS code Joe Perches
  2015-03-03  3:54 ` [PATCH net-next 02/14] ethernet: Use eth_<foo>_addr instead of memset Joe Perches
@ 2015-03-03  3:54 ` Joe Perches
  2015-03-03  3:54 ` [PATCH net-next 04/14] wireless: " Joe Perches
                   ` (10 subsequent siblings)
  13 siblings, 0 replies; 42+ messages in thread
From: Joe Perches @ 2015-03-03  3:54 UTC (permalink / raw)
  To: netdev, Oliver Neukum; +Cc: linux-usb, linux-kernel

Use the built-in function instead of memset.

Signed-off-by: Joe Perches <joe@perches.com>
---
 drivers/net/usb/catc.c     | 4 ++--
 drivers/net/usb/cdc_mbim.c | 2 +-
 drivers/net/usb/lg-vl600.c | 2 +-
 drivers/net/usb/qmi_wwan.c | 2 +-
 4 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/net/usb/catc.c b/drivers/net/usb/catc.c
index 8cfc3bb..4e2b26a 100644
--- a/drivers/net/usb/catc.c
+++ b/drivers/net/usb/catc.c
@@ -641,7 +641,7 @@ static void catc_set_multicast_list(struct net_device *netdev)
 	u8 broadcast[ETH_ALEN];
 	u8 rx = RxEnable | RxPolarity | RxMultiCast;
 
-	memset(broadcast, 0xff, ETH_ALEN);
+	eth_broadcast_addr(broadcast);
 	memset(catc->multicast, 0, 64);
 
 	catc_multicast(broadcast, catc->multicast);
@@ -880,7 +880,7 @@ static int catc_probe(struct usb_interface *intf, const struct usb_device_id *id
 		
 		dev_dbg(dev, "Filling the multicast list.\n");
 	  
-		memset(broadcast, 0xff, ETH_ALEN);
+		eth_broadcast_addr(broadcast);
 		catc_multicast(broadcast, catc->multicast);
 		catc_multicast(netdev->dev_addr, catc->multicast);
 		catc_write_mem(catc, 0xfa80, catc->multicast, 64);
diff --git a/drivers/net/usb/cdc_mbim.c b/drivers/net/usb/cdc_mbim.c
index 96fc8a5..e4b7a47 100644
--- a/drivers/net/usb/cdc_mbim.c
+++ b/drivers/net/usb/cdc_mbim.c
@@ -394,7 +394,7 @@ static struct sk_buff *cdc_mbim_process_dgram(struct usbnet *dev, u8 *buf, size_
 	skb_put(skb, ETH_HLEN);
 	skb_reset_mac_header(skb);
 	eth_hdr(skb)->h_proto = proto;
-	memset(eth_hdr(skb)->h_source, 0, ETH_ALEN);
+	eth_zero_addr(eth_hdr(skb)->h_source);
 	memcpy(eth_hdr(skb)->h_dest, dev->net->dev_addr, ETH_ALEN);
 
 	/* add datagram */
diff --git a/drivers/net/usb/lg-vl600.c b/drivers/net/usb/lg-vl600.c
index 8f37efd..5714107 100644
--- a/drivers/net/usb/lg-vl600.c
+++ b/drivers/net/usb/lg-vl600.c
@@ -201,7 +201,7 @@ static int vl600_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
 					&buf->data[sizeof(*ethhdr) + 0x12],
 					ETH_ALEN);
 		} else {
-			memset(ethhdr->h_source, 0, ETH_ALEN);
+			eth_zero_addr(ethhdr->h_source);
 			memcpy(ethhdr->h_dest, dev->net->dev_addr, ETH_ALEN);
 
 			/* Inbound IPv6 packets have an IPv4 ethertype (0x800)
diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c
index 602dc66..f603f36 100644
--- a/drivers/net/usb/qmi_wwan.c
+++ b/drivers/net/usb/qmi_wwan.c
@@ -108,7 +108,7 @@ static int qmi_wwan_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
 	skb_push(skb, ETH_HLEN);
 	skb_reset_mac_header(skb);
 	eth_hdr(skb)->h_proto = proto;
-	memset(eth_hdr(skb)->h_source, 0, ETH_ALEN);
+	eth_zero_addr(eth_hdr(skb)->h_source);
 fix_dest:
 	memcpy(eth_hdr(skb)->h_dest, dev->net->dev_addr, ETH_ALEN);
 	return 1;
-- 
2.1.2


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

* [PATCH net-next 04/14] wireless: Use eth_<foo>_addr instead of memset
  2015-03-03  3:54 [PATCH net-next 00/14] Use eth_<foo>_addr instead of memset Joe Perches
                   ` (2 preceding siblings ...)
  2015-03-03  3:54 ` [PATCH net-next 03/14] net: usb: " Joe Perches
@ 2015-03-03  3:54 ` Joe Perches
  2015-03-03  3:54 ` [PATCH net-next 05/14] netconsole: " Joe Perches
                   ` (9 subsequent siblings)
  13 siblings, 0 replies; 42+ messages in thread
From: Joe Perches @ 2015-03-03  3:54 UTC (permalink / raw)
  To: netdev, Kalle Valo, Jiri Slaby, Nick Kossifidis,
	Luis R. Rodriguez, QCA ath9k Development, Simon Kelley,
	Stefano Brivio, Larry Finger, Solomon Peachy, Jouni Malinen,
	Stanislav Yakovlev, Stanislaw Gruszka, Amitkumar Karwar,
	Avinash Patil, Lennert Buytenhek, Christian Lamparter,
	Jussi Kivilinna, Chaoming Li
  Cc: Brett Rudley, Arend van Spriel, Franky (Zhenhui) Lin,
	Hante Meuleman, Johannes Berg, Emmanuel Grumbach,
	Intel Linux Wireless, linux-wireless, linux-kernel, ath10k,
	ath9k-devel, b43-dev, brcm80211-dev-list, libertas-dev

Use the built-in function instead of memset.

Miscellanea:

Add #include <linux/etherdevice.h> where appropriate
Use ETH_ALEN instead of 6

Signed-off-by: Joe Perches <joe@perches.com>
---
 drivers/net/wireless/airo.c                        |  4 +--
 drivers/net/wireless/at76c50x-usb.c                |  6 ++--
 drivers/net/wireless/ath/ath10k/mac.c              |  2 +-
 drivers/net/wireless/ath/ath5k/base.c              |  2 +-
 drivers/net/wireless/ath/ath6kl/cfg80211.c         |  2 +-
 drivers/net/wireless/ath/ath6kl/main.c             |  2 +-
 drivers/net/wireless/ath/ath9k/htc_drv_main.c      |  2 +-
 drivers/net/wireless/ath/ath9k/main.c              |  4 +--
 drivers/net/wireless/atmel.c                       | 16 +++++------
 drivers/net/wireless/b43/main.c                    |  8 +++---
 drivers/net/wireless/b43legacy/main.c              |  8 +++---
 drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c | 12 ++++----
 drivers/net/wireless/brcm80211/brcmfmac/flowring.c |  2 +-
 drivers/net/wireless/brcm80211/brcmfmac/p2p.c      |  2 +-
 drivers/net/wireless/cw1200/sta.c                  |  2 +-
 drivers/net/wireless/cw1200/txrx.c                 |  2 +-
 drivers/net/wireless/hostap/hostap_80211_tx.c      |  4 +--
 drivers/net/wireless/hostap/hostap_ap.c            |  8 +++---
 drivers/net/wireless/hostap/hostap_info.c          |  2 +-
 drivers/net/wireless/hostap/hostap_main.c          |  4 +--
 drivers/net/wireless/hostap/hostap_wlan.h          | 33 +++++++++++-----------
 drivers/net/wireless/ipw2x00/ipw2100.c             |  8 +++---
 drivers/net/wireless/ipw2x00/ipw2200.c             |  6 ++--
 drivers/net/wireless/iwlegacy/common.c             |  2 +-
 drivers/net/wireless/iwlwifi/mvm/power.c           |  3 +-
 drivers/net/wireless/libertas/main.c               |  4 +--
 drivers/net/wireless/libertas_tf/main.c            |  4 +--
 drivers/net/wireless/mac80211_hwsim.c              |  6 ++--
 drivers/net/wireless/mwifiex/cfg80211.c            |  8 +++---
 drivers/net/wireless/mwifiex/init.c                |  4 +--
 drivers/net/wireless/mwifiex/sta_event.c           |  2 +-
 drivers/net/wireless/mwifiex/wmm.c                 |  2 +-
 drivers/net/wireless/mwl8k.c                       |  2 +-
 drivers/net/wireless/orinoco/wext.c                |  2 +-
 drivers/net/wireless/p54/fwio.c                    |  2 +-
 drivers/net/wireless/p54/main.c                    |  8 +++---
 drivers/net/wireless/ray_cs.c                      |  2 +-
 drivers/net/wireless/rndis_wlan.c                  | 28 +++++++++---------
 drivers/net/wireless/rtlwifi/core.c                |  6 ++--
 drivers/net/wireless/ti/wl1251/main.c              |  4 +--
 drivers/net/wireless/ti/wlcore/cmd.c               |  4 +--
 41 files changed, 118 insertions(+), 116 deletions(-)

diff --git a/drivers/net/wireless/airo.c b/drivers/net/wireless/airo.c
index e71a2ce..6274432 100644
--- a/drivers/net/wireless/airo.c
+++ b/drivers/net/wireless/airo.c
@@ -2676,7 +2676,7 @@ static void wifi_setup(struct net_device *dev)
 	dev->addr_len           = ETH_ALEN;
 	dev->tx_queue_len       = 100; 
 
-	memset(dev->broadcast,0xFF, ETH_ALEN);
+	eth_broadcast_addr(dev->broadcast);
 
 	dev->flags              = IFF_BROADCAST|IFF_MULTICAST;
 }
@@ -3273,7 +3273,7 @@ static void airo_handle_link(struct airo_info *ai)
 		}
 
 		/* Send event to user space */
-		memset(wrqu.ap_addr.sa_data, '\0', ETH_ALEN);
+		eth_zero_addr(wrqu.ap_addr.sa_data);
 		wrqu.ap_addr.sa_family = ARPHRD_ETHER;
 		wireless_send_event(ai->dev, SIOCGIWAP, &wrqu, NULL);
 	}
diff --git a/drivers/net/wireless/at76c50x-usb.c b/drivers/net/wireless/at76c50x-usb.c
index da92bfa..49219c5 100644
--- a/drivers/net/wireless/at76c50x-usb.c
+++ b/drivers/net/wireless/at76c50x-usb.c
@@ -1166,7 +1166,7 @@ static int at76_start_monitor(struct at76_priv *priv)
 	int ret;
 
 	memset(&scan, 0, sizeof(struct at76_req_scan));
-	memset(scan.bssid, 0xff, ETH_ALEN);
+	eth_broadcast_addr(scan.bssid);
 
 	scan.channel = priv->channel;
 	scan.scan_type = SCAN_TYPE_PASSIVE;
@@ -1427,7 +1427,7 @@ static int at76_startup_device(struct at76_priv *priv)
 	at76_wait_completion(priv, CMD_STARTUP);
 
 	/* remove BSSID from previous run */
-	memset(priv->bssid, 0, ETH_ALEN);
+	eth_zero_addr(priv->bssid);
 
 	priv->scanning = false;
 
@@ -1973,7 +1973,7 @@ static int at76_hw_scan(struct ieee80211_hw *hw,
 	ieee80211_stop_queues(hw);
 
 	memset(&scan, 0, sizeof(struct at76_req_scan));
-	memset(scan.bssid, 0xFF, ETH_ALEN);
+	eth_broadcast_addr(scan.bssid);
 
 	if (req->n_ssids) {
 		scan.scan_type = SCAN_TYPE_ACTIVE;
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index d6d2f0f..6c364bb 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -1182,7 +1182,7 @@ static void ath10k_control_ibss(struct ath10k_vif *arvif,
 		if (is_zero_ether_addr(arvif->bssid))
 			return;
 
-		memset(arvif->bssid, 0, ETH_ALEN);
+		eth_zero_addr(arvif->bssid);
 
 		return;
 	}
diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c
index bc9cb35..57a80e8 100644
--- a/drivers/net/wireless/ath/ath5k/base.c
+++ b/drivers/net/wireless/ath/ath5k/base.c
@@ -528,7 +528,7 @@ ath5k_update_bssid_mask_and_opmode(struct ath5k_hw *ah,
 	 * together with the BSSID mask when matching addresses.
 	 */
 	iter_data.hw_macaddr = common->macaddr;
-	memset(&iter_data.mask, 0xff, ETH_ALEN);
+	eth_broadcast_addr(iter_data.mask);
 	iter_data.found_active = false;
 	iter_data.need_set_hw_addr = true;
 	iter_data.opmode = NL80211_IFTYPE_UNSPECIFIED;
diff --git a/drivers/net/wireless/ath/ath6kl/cfg80211.c b/drivers/net/wireless/ath/ath6kl/cfg80211.c
index 85da63a..e297803 100644
--- a/drivers/net/wireless/ath/ath6kl/cfg80211.c
+++ b/drivers/net/wireless/ath/ath6kl/cfg80211.c
@@ -2033,7 +2033,7 @@ static int ath6kl_wow_sta(struct ath6kl *ar, struct ath6kl_vif *vif)
 	int ret;
 
 	/* Setup unicast pkt pattern */
-	memset(mac_mask, 0xff, ETH_ALEN);
+	eth_broadcast_addr(mac_mask);
 	ret = ath6kl_wmi_add_wow_pattern_cmd(ar->wmi,
 				vif->fw_vif_idx, WOW_LIST_ID,
 				ETH_ALEN, 0, ndev->dev_addr,
diff --git a/drivers/net/wireless/ath/ath6kl/main.c b/drivers/net/wireless/ath/ath6kl/main.c
index b42ba46..1af3fed 100644
--- a/drivers/net/wireless/ath/ath6kl/main.c
+++ b/drivers/net/wireless/ath/ath6kl/main.c
@@ -105,7 +105,7 @@ static void ath6kl_sta_cleanup(struct ath6kl *ar, u8 i)
 
 	memset(&ar->ap_stats.sta[sta->aid - 1], 0,
 	       sizeof(struct wmi_per_sta_stat));
-	memset(sta->mac, 0, ETH_ALEN);
+	eth_zero_addr(sta->mac);
 	memset(sta->wpa_ie, 0, ATH6KL_MAX_IE);
 	sta->aid = 0;
 	sta->sta_flags = 0;
diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_main.c b/drivers/net/wireless/ath/ath9k/htc_drv_main.c
index 92d5a6c..564923c 100644
--- a/drivers/net/wireless/ath/ath9k/htc_drv_main.c
+++ b/drivers/net/wireless/ath/ath9k/htc_drv_main.c
@@ -149,7 +149,7 @@ static void ath9k_htc_set_mac_bssid_mask(struct ath9k_htc_priv *priv,
 	 * when matching addresses.
 	 */
 	iter_data.hw_macaddr = NULL;
-	memset(&iter_data.mask, 0xff, ETH_ALEN);
+	eth_broadcast_addr(iter_data.mask);
 
 	if (vif)
 		ath9k_htc_bssid_iter(&iter_data, vif->addr, vif);
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
index 9ede991..93ed99a 100644
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -994,7 +994,7 @@ void ath9k_calculate_iter_data(struct ath_softc *sc,
 	 * BSSID mask when matching addresses.
 	 */
 	memset(iter_data, 0, sizeof(*iter_data));
-	memset(&iter_data->mask, 0xff, ETH_ALEN);
+	eth_broadcast_addr(iter_data->mask);
 	iter_data->slottime = ATH9K_SLOT_TIME_9;
 
 	list_for_each_entry(avp, &ctx->vifs, list)
@@ -1139,7 +1139,7 @@ void ath9k_calculate_summary_state(struct ath_softc *sc,
 			ctx->primary_sta = iter_data.primary_sta;
 		} else {
 			ctx->primary_sta = NULL;
-			memset(common->curbssid, 0, ETH_ALEN);
+			eth_zero_addr(common->curbssid);
 			common->curaid = 0;
 			ath9k_hw_write_associd(sc->sc_ah);
 			if (ath9k_hw_mci_is_enabled(sc->sc_ah))
diff --git a/drivers/net/wireless/atmel.c b/drivers/net/wireless/atmel.c
index 55db9f0..6a1f03c 100644
--- a/drivers/net/wireless/atmel.c
+++ b/drivers/net/wireless/atmel.c
@@ -1004,7 +1004,7 @@ static void frag_rx_path(struct atmel_private *priv,
 			atmel_copy_to_host(priv->dev, (void *)&netcrc, rx_packet_loc + msdu_size, 4);
 			if ((crc ^ 0xffffffff) != netcrc) {
 				priv->dev->stats.rx_crc_errors++;
-				memset(priv->frag_source, 0xff, ETH_ALEN);
+				eth_broadcast_addr(priv->frag_source);
 			}
 		}
 
@@ -1022,7 +1022,7 @@ static void frag_rx_path(struct atmel_private *priv,
 			atmel_copy_to_host(priv->dev, (void *)&netcrc, rx_packet_loc + msdu_size, 4);
 			if ((crc ^ 0xffffffff) != netcrc) {
 				priv->dev->stats.rx_crc_errors++;
-				memset(priv->frag_source, 0xff, ETH_ALEN);
+				eth_broadcast_addr(priv->frag_source);
 				more_frags = 1; /* don't send broken assembly */
 			}
 		}
@@ -1031,7 +1031,7 @@ static void frag_rx_path(struct atmel_private *priv,
 		priv->frag_no++;
 
 		if (!more_frags) { /* last one */
-			memset(priv->frag_source, 0xff, ETH_ALEN);
+			eth_broadcast_addr(priv->frag_source);
 			if (!(skb = dev_alloc_skb(priv->frag_len + 14))) {
 				priv->dev->stats.rx_dropped++;
 			} else {
@@ -1127,7 +1127,7 @@ static void rx_done_irq(struct atmel_private *priv)
 			atmel_copy_to_host(priv->dev, (unsigned char *)&priv->rx_buf, rx_packet_loc + 24, msdu_size);
 
 			/* we use the same buffer for frag reassembly and control packets */
-			memset(priv->frag_source, 0xff, ETH_ALEN);
+			eth_broadcast_addr(priv->frag_source);
 
 			if (priv->do_rx_crc) {
 				/* last 4 octets is crc */
@@ -1379,7 +1379,7 @@ static int atmel_close(struct net_device *dev)
 		wrqu.data.length = 0;
 		wrqu.data.flags = 0;
 		wrqu.ap_addr.sa_family = ARPHRD_ETHER;
-		memset(wrqu.ap_addr.sa_data, 0, ETH_ALEN);
+		eth_zero_addr(wrqu.ap_addr.sa_data);
 		wireless_send_event(priv->dev, SIOCGIWAP, &wrqu, NULL);
 	}
 
@@ -1555,7 +1555,7 @@ struct net_device *init_atmel_card(unsigned short irq, unsigned long port,
 	priv->last_qual = jiffies;
 	priv->last_beacon_timestamp = 0;
 	memset(priv->frag_source, 0xff, sizeof(priv->frag_source));
-	memset(priv->BSSID, 0, ETH_ALEN);
+	eth_zero_addr(priv->BSSID);
 	priv->CurrentBSSID[0] = 0xFF; /* Initialize to something invalid.... */
 	priv->station_was_associated = 0;
 
@@ -2760,7 +2760,7 @@ static void atmel_scan(struct atmel_private *priv, int specific_ssid)
 		u8 SSID_size;
 	} cmd;
 
-	memset(cmd.BSSID, 0xff, ETH_ALEN);
+	eth_broadcast_addr(cmd.BSSID);
 
 	if (priv->fast_scan) {
 		cmd.SSID_size = priv->SSID_size;
@@ -4049,7 +4049,7 @@ static int reset_atmel_card(struct net_device *dev)
 		wrqu.data.length = 0;
 		wrqu.data.flags = 0;
 		wrqu.ap_addr.sa_family = ARPHRD_ETHER;
-		memset(wrqu.ap_addr.sa_data, 0, ETH_ALEN);
+		eth_zero_addr(wrqu.ap_addr.sa_data);
 		wireless_send_event(priv->dev, SIOCGIWAP, &wrqu, NULL);
 	}
 
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c
index ccbdb05..31c7e4d 100644
--- a/drivers/net/wireless/b43/main.c
+++ b/drivers/net/wireless/b43/main.c
@@ -4132,7 +4132,7 @@ static void b43_op_bss_info_changed(struct ieee80211_hw *hw,
 		if (conf->bssid)
 			memcpy(wl->bssid, conf->bssid, ETH_ALEN);
 		else
-			memset(wl->bssid, 0, ETH_ALEN);
+			eth_zero_addr(wl->bssid);
 	}
 
 	if (b43_status(dev) >= B43_STAT_INITIALIZED) {
@@ -5051,7 +5051,7 @@ static void b43_op_remove_interface(struct ieee80211_hw *hw,
 	wl->operating = false;
 
 	b43_adjust_opmode(dev);
-	memset(wl->mac_addr, 0, ETH_ALEN);
+	eth_zero_addr(wl->mac_addr);
 	b43_upload_card_macaddress(dev);
 
 	mutex_unlock(&wl->mutex);
@@ -5067,8 +5067,8 @@ static int b43_op_start(struct ieee80211_hw *hw)
 	/* Kill all old instance specific information to make sure
 	 * the card won't use it in the short timeframe between start
 	 * and mac80211 reconfiguring it. */
-	memset(wl->bssid, 0, ETH_ALEN);
-	memset(wl->mac_addr, 0, ETH_ALEN);
+	eth_zero_addr(wl->bssid);
+	eth_zero_addr(wl->mac_addr);
 	wl->filter_flags = 0;
 	wl->radiotap_enabled = false;
 	b43_qos_clear(wl);
diff --git a/drivers/net/wireless/b43legacy/main.c b/drivers/net/wireless/b43legacy/main.c
index 4e58c00..c77b7f5 100644
--- a/drivers/net/wireless/b43legacy/main.c
+++ b/drivers/net/wireless/b43legacy/main.c
@@ -2866,7 +2866,7 @@ static void b43legacy_op_bss_info_changed(struct ieee80211_hw *hw,
 		if (conf->bssid)
 			memcpy(wl->bssid, conf->bssid, ETH_ALEN);
 		else
-			memset(wl->bssid, 0, ETH_ALEN);
+			eth_zero_addr(wl->bssid);
 	}
 
 	if (b43legacy_status(dev) >= B43legacy_STAT_INITIALIZED) {
@@ -3470,7 +3470,7 @@ static void b43legacy_op_remove_interface(struct ieee80211_hw *hw,
 
 	spin_lock_irqsave(&wl->irq_lock, flags);
 	b43legacy_adjust_opmode(dev);
-	memset(wl->mac_addr, 0, ETH_ALEN);
+	eth_zero_addr(wl->mac_addr);
 	b43legacy_upload_card_macaddress(dev);
 	spin_unlock_irqrestore(&wl->irq_lock, flags);
 
@@ -3487,8 +3487,8 @@ static int b43legacy_op_start(struct ieee80211_hw *hw)
 	/* Kill all old instance specific information to make sure
 	 * the card won't use it in the short timeframe between start
 	 * and mac80211 reconfiguring it. */
-	memset(wl->bssid, 0, ETH_ALEN);
-	memset(wl->mac_addr, 0, ETH_ALEN);
+	eth_zero_addr(wl->bssid);
+	eth_zero_addr(wl->mac_addr);
 	wl->filter_flags = 0;
 	wl->beacon0_uploaded = false;
 	wl->beacon1_uploaded = false;
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c
index b59b8c6..06727a6 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c
@@ -700,7 +700,7 @@ s32 brcmf_notify_escan_complete(struct brcmf_cfg80211_info *cfg,
 		/* Do a scan abort to stop the driver's scan engine */
 		brcmf_dbg(SCAN, "ABORT scan in firmware\n");
 		memset(&params_le, 0, sizeof(params_le));
-		memset(params_le.bssid, 0xFF, ETH_ALEN);
+		eth_broadcast_addr(params_le.bssid);
 		params_le.bss_type = DOT11_BSSTYPE_ANY;
 		params_le.scan_type = 0;
 		params_le.channel_num = cpu_to_le32(1);
@@ -866,7 +866,7 @@ static void brcmf_escan_prep(struct brcmf_cfg80211_info *cfg,
 	char *ptr;
 	struct brcmf_ssid_le ssid_le;
 
-	memset(params_le->bssid, 0xFF, ETH_ALEN);
+	eth_broadcast_addr(params_le->bssid);
 	params_le->bss_type = DOT11_BSSTYPE_ANY;
 	params_le->scan_type = 0;
 	params_le->channel_num = 0;
@@ -1375,8 +1375,8 @@ brcmf_cfg80211_join_ibss(struct wiphy *wiphy, struct net_device *ndev,
 				   BRCMF_ASSOC_PARAMS_FIXED_SIZE;
 		memcpy(profile->bssid, params->bssid, ETH_ALEN);
 	} else {
-		memset(join_params.params_le.bssid, 0xFF, ETH_ALEN);
-		memset(profile->bssid, 0, ETH_ALEN);
+		eth_broadcast_addr(join_params.params_le.bssid);
+		eth_zero_addr(profile->bssid);
 	}
 
 	/* Channel */
@@ -1850,7 +1850,7 @@ brcmf_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev,
 	if (sme->bssid)
 		memcpy(&ext_join_params->assoc_le.bssid, sme->bssid, ETH_ALEN);
 	else
-		memset(&ext_join_params->assoc_le.bssid, 0xFF, ETH_ALEN);
+		eth_broadcast_addr(ext_join_params->assoc_le.bssid);
 
 	if (cfg->channel) {
 		ext_join_params->assoc_le.chanspec_num = cpu_to_le32(1);
@@ -1895,7 +1895,7 @@ brcmf_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev,
 	if (sme->bssid)
 		memcpy(join_params.params_le.bssid, sme->bssid, ETH_ALEN);
 	else
-		memset(join_params.params_le.bssid, 0xFF, ETH_ALEN);
+		eth_broadcast_addr(join_params.params_le.bssid);
 
 	if (cfg->channel) {
 		join_params.params_le.chanspec_list[0] = cpu_to_le16(chanspec);
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/flowring.c b/drivers/net/wireless/brcm80211/brcmfmac/flowring.c
index 910fbb5..eb13253 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/flowring.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/flowring.c
@@ -236,7 +236,7 @@ void brcmf_flowring_delete(struct brcmf_flowring *flow, u8 flowid)
 	brcmf_flowring_block(flow, flowid, false);
 	hash_idx = ring->hash_id;
 	flow->hash[hash_idx].ifidx = BRCMF_FLOWRING_INVALID_IFIDX;
-	memset(flow->hash[hash_idx].mac, 0, ETH_ALEN);
+	eth_zero_addr(flow->hash[hash_idx].mac);
 	flow->rings[flowid] = NULL;
 
 	skb = skb_dequeue(&ring->skblist);
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/p2p.c b/drivers/net/wireless/brcm80211/brcmfmac/p2p.c
index effb48e..98d82ec 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/p2p.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/p2p.c
@@ -697,7 +697,7 @@ static s32 brcmf_p2p_escan(struct brcmf_p2p_info *p2p, u32 num_chans,
 	else
 		sparams->scan_type = 1;
 
-	memset(&sparams->bssid, 0xFF, ETH_ALEN);
+	eth_broadcast_addr(sparams->bssid);
 	if (ssid.SSID_len)
 		memcpy(sparams->ssid_le.SSID, ssid.SSID, ssid.SSID_len);
 	sparams->ssid_le.SSID_len = cpu_to_le32(ssid.SSID_len);
diff --git a/drivers/net/wireless/cw1200/sta.c b/drivers/net/wireless/cw1200/sta.c
index 4a47c7f..89bc18c 100644
--- a/drivers/net/wireless/cw1200/sta.c
+++ b/drivers/net/wireless/cw1200/sta.c
@@ -293,7 +293,7 @@ void cw1200_remove_interface(struct ieee80211_hw *dev,
 	}
 	priv->vif = NULL;
 	priv->mode = NL80211_IFTYPE_MONITOR;
-	memset(priv->mac_addr, 0, ETH_ALEN);
+	eth_zero_addr(priv->mac_addr);
 	memset(&priv->p2p_ps_modeinfo, 0, sizeof(priv->p2p_ps_modeinfo));
 	cw1200_free_keys(priv);
 	cw1200_setup_mac(priv);
diff --git a/drivers/net/wireless/cw1200/txrx.c b/drivers/net/wireless/cw1200/txrx.c
index 0bd5411..d28bd49 100644
--- a/drivers/net/wireless/cw1200/txrx.c
+++ b/drivers/net/wireless/cw1200/txrx.c
@@ -1429,7 +1429,7 @@ void cw1200_link_id_gc_work(struct work_struct *work)
 				priv->link_id_map &= ~mask;
 				priv->sta_asleep_mask &= ~mask;
 				priv->pspoll_mask &= ~mask;
-				memset(map_link.mac_addr, 0, ETH_ALEN);
+				eth_zero_addr(map_link.mac_addr);
 				spin_unlock_bh(&priv->ps_state_lock);
 				reset.link_id = i + 1;
 				wsm_reset(priv, &reset);
diff --git a/drivers/net/wireless/hostap/hostap_80211_tx.c b/drivers/net/wireless/hostap/hostap_80211_tx.c
index 8bde776..055e11d 100644
--- a/drivers/net/wireless/hostap/hostap_80211_tx.c
+++ b/drivers/net/wireless/hostap/hostap_80211_tx.c
@@ -174,8 +174,8 @@ netdev_tx_t hostap_data_start_xmit(struct sk_buff *skb,
 		/* send broadcast and multicast frames to broadcast RA, if
 		 * configured; otherwise, use unicast RA of the WDS link */
 		if ((local->wds_type & HOSTAP_WDS_BROADCAST_RA) &&
-		    skb->data[0] & 0x01)
-			memset(&hdr.addr1, 0xff, ETH_ALEN);
+		    is_multicast_ether_addr(skb->data))
+			eth_broadcast_addr(hdr.addr1);
 		else if (iface->type == HOSTAP_INTERFACE_WDS)
 			memcpy(&hdr.addr1, iface->u.wds.remote_addr,
 			       ETH_ALEN);
diff --git a/drivers/net/wireless/hostap/hostap_ap.c b/drivers/net/wireless/hostap/hostap_ap.c
index fd8d83d..c995ace 100644
--- a/drivers/net/wireless/hostap/hostap_ap.c
+++ b/drivers/net/wireless/hostap/hostap_ap.c
@@ -309,7 +309,7 @@ void hostap_deauth_all_stas(struct net_device *dev, struct ap_data *ap,
 	int i;
 
 	PDEBUG(DEBUG_AP, "%s: Deauthenticate all stations\n", dev->name);
-	memset(addr, 0xff, ETH_ALEN);
+	eth_broadcast_addr(addr);
 
 	resp = cpu_to_le16(WLAN_REASON_PREV_AUTH_NOT_VALID);
 
@@ -1015,8 +1015,8 @@ static void prism2_send_mgmt(struct net_device *dev,
 		memcpy(hdr->addr3, dev->dev_addr, ETH_ALEN); /* SA */
 	} else if (ieee80211_is_ctl(hdr->frame_control)) {
 		/* control:ACK does not have addr2 or addr3 */
-		memset(hdr->addr2, 0, ETH_ALEN);
-		memset(hdr->addr3, 0, ETH_ALEN);
+		eth_zero_addr(hdr->addr2);
+		eth_zero_addr(hdr->addr3);
 	} else {
 		memcpy(hdr->addr2, dev->dev_addr, ETH_ALEN); /* SA */
 		memcpy(hdr->addr3, dev->dev_addr, ETH_ALEN); /* BSSID */
@@ -1601,7 +1601,7 @@ static void handle_assoc(local_info_t *local, struct sk_buff *skb,
 		memcpy(prev_ap, pos, ETH_ALEN);
 		pos++; pos++; pos++; left -= 6;
 	} else
-		memset(prev_ap, 0, ETH_ALEN);
+		eth_zero_addr(prev_ap);
 
 	if (left >= 2) {
 		unsigned int ileft;
diff --git a/drivers/net/wireless/hostap/hostap_info.c b/drivers/net/wireless/hostap/hostap_info.c
index de7c4ff..7635ac4 100644
--- a/drivers/net/wireless/hostap/hostap_info.c
+++ b/drivers/net/wireless/hostap/hostap_info.c
@@ -442,7 +442,7 @@ static void handle_info_queue_linkstatus(local_info_t *local)
 	} else {
 		netif_carrier_off(local->dev);
 		netif_carrier_off(local->ddev);
-		memset(wrqu.ap_addr.sa_data, 0, ETH_ALEN);
+		eth_zero_addr(wrqu.ap_addr.sa_data);
 	}
 	wrqu.ap_addr.sa_family = ARPHRD_ETHER;
 
diff --git a/drivers/net/wireless/hostap/hostap_main.c b/drivers/net/wireless/hostap/hostap_main.c
index 8f9f3e9..01de1a3 100644
--- a/drivers/net/wireless/hostap/hostap_main.c
+++ b/drivers/net/wireless/hostap/hostap_main.c
@@ -224,7 +224,7 @@ int prism2_wds_del(local_info_t *local, u8 *remote_addr,
 
 	if (selected) {
 		if (do_not_remove)
-			memset(selected->u.wds.remote_addr, 0, ETH_ALEN);
+			eth_zero_addr(selected->u.wds.remote_addr);
 		else {
 			hostap_remove_interface(selected->dev, rtnl_locked, 0);
 			local->wds_connections--;
@@ -1087,7 +1087,7 @@ int prism2_sta_deauth(local_info_t *local, u16 reason)
 
 	ret = prism2_sta_send_mgmt(local, local->bssid, IEEE80211_STYPE_DEAUTH,
 				   (u8 *) &val, 2);
-	memset(wrqu.ap_addr.sa_data, 0, ETH_ALEN);
+	eth_zero_addr(wrqu.ap_addr.sa_data);
 	wireless_send_event(local->dev, SIOCGIWAP, &wrqu, NULL);
 	return ret;
 }
diff --git a/drivers/net/wireless/hostap/hostap_wlan.h b/drivers/net/wireless/hostap/hostap_wlan.h
index 5790401..ca25283 100644
--- a/drivers/net/wireless/hostap/hostap_wlan.h
+++ b/drivers/net/wireless/hostap/hostap_wlan.h
@@ -4,6 +4,7 @@
 #include <linux/interrupt.h>
 #include <linux/wireless.h>
 #include <linux/netdevice.h>
+#include <linux/etherdevice.h>
 #include <linux/mutex.h>
 #include <net/iw_handler.h>
 #include <net/ieee80211_radiotap.h>
@@ -85,16 +86,16 @@ struct hfa384x_rx_frame {
 	/* 802.11 */
 	__le16 frame_control;
 	__le16 duration_id;
-	u8 addr1[6];
-	u8 addr2[6];
-	u8 addr3[6];
+	u8 addr1[ETH_ALEN];
+	u8 addr2[ETH_ALEN];
+	u8 addr3[ETH_ALEN];
 	__le16 seq_ctrl;
-	u8 addr4[6];
+	u8 addr4[ETH_ALEN];
 	__le16 data_len;
 
 	/* 802.3 */
-	u8 dst_addr[6];
-	u8 src_addr[6];
+	u8 dst_addr[ETH_ALEN];
+	u8 src_addr[ETH_ALEN];
 	__be16 len;
 
 	/* followed by frame data; max 2304 bytes */
@@ -114,16 +115,16 @@ struct hfa384x_tx_frame {
 	/* 802.11 */
 	__le16 frame_control; /* parts not used */
 	__le16 duration_id;
-	u8 addr1[6];
-	u8 addr2[6]; /* filled by firmware */
-	u8 addr3[6];
+	u8 addr1[ETH_ALEN];
+	u8 addr2[ETH_ALEN]; /* filled by firmware */
+	u8 addr3[ETH_ALEN];
 	__le16 seq_ctrl; /* filled by firmware */
-	u8 addr4[6];
+	u8 addr4[ETH_ALEN];
 	__le16 data_len;
 
 	/* 802.3 */
-	u8 dst_addr[6];
-	u8 src_addr[6];
+	u8 dst_addr[ETH_ALEN];
+	u8 src_addr[ETH_ALEN];
 	__be16 len;
 
 	/* followed by frame data; max 2304 bytes */
@@ -156,7 +157,7 @@ struct hfa384x_hostscan_request {
 } __packed;
 
 struct hfa384x_join_request {
-	u8 bssid[6];
+	u8 bssid[ETH_ALEN];
 	__le16 channel;
 } __packed;
 
@@ -228,7 +229,7 @@ struct hfa384x_scan_result {
 	__le16 chid;
 	__le16 anl;
 	__le16 sl;
-	u8 bssid[6];
+	u8 bssid[ETH_ALEN];
 	__le16 beacon_interval;
 	__le16 capability;
 	__le16 ssid_len;
@@ -241,7 +242,7 @@ struct hfa384x_hostscan_result {
 	__le16 chid;
 	__le16 anl;
 	__le16 sl;
-	u8 bssid[6];
+	u8 bssid[ETH_ALEN];
 	__le16 beacon_interval;
 	__le16 capability;
 	__le16 ssid_len;
@@ -824,7 +825,7 @@ struct local_info {
 #define PRISM2_INFO_PENDING_SCANRESULTS 1
 	int prev_link_status; /* previous received LinkStatus info */
 	int prev_linkstatus_connected;
-	u8 preferred_ap[6]; /* use this AP if possible */
+	u8 preferred_ap[ETH_ALEN]; /* use this AP if possible */
 
 #ifdef PRISM2_CALLBACK
 	void *callback_data; /* Can be used in callbacks; e.g., allocate
diff --git a/drivers/net/wireless/ipw2x00/ipw2100.c b/drivers/net/wireless/ipw2x00/ipw2100.c
index 6fabea0..08eb229 100644
--- a/drivers/net/wireless/ipw2x00/ipw2100.c
+++ b/drivers/net/wireless/ipw2x00/ipw2100.c
@@ -2147,8 +2147,8 @@ static void isr_indicate_association_lost(struct ipw2100_priv *priv, u32 status)
 		return;
 	}
 
-	memset(priv->bssid, 0, ETH_ALEN);
-	memset(priv->ieee->bssid, 0, ETH_ALEN);
+	eth_zero_addr(priv->bssid);
+	eth_zero_addr(priv->ieee->bssid);
 
 	netif_carrier_off(priv->net_dev);
 	netif_stop_queue(priv->net_dev);
@@ -6956,7 +6956,7 @@ static int ipw2100_wx_get_wap(struct net_device *dev,
 		wrqu->ap_addr.sa_family = ARPHRD_ETHER;
 		memcpy(wrqu->ap_addr.sa_data, priv->bssid, ETH_ALEN);
 	} else
-		memset(wrqu->ap_addr.sa_data, 0, ETH_ALEN);
+		eth_zero_addr(wrqu->ap_addr.sa_data);
 
 	IPW_DEBUG_WX("Getting WAP BSSID: %pM\n", wrqu->ap_addr.sa_data);
 	return 0;
@@ -8300,7 +8300,7 @@ static void ipw2100_wx_event_work(struct work_struct *work)
 	    priv->status & STATUS_RF_KILL_MASK ||
 	    ipw2100_get_ordinal(priv, IPW_ORD_STAT_ASSN_AP_BSSID,
 				&priv->bssid, &len)) {
-		memset(wrqu.ap_addr.sa_data, 0, ETH_ALEN);
+		eth_zero_addr(wrqu.ap_addr.sa_data);
 	} else {
 		/* We now have the BSSID, so can finish setting to the full
 		 * associated state */
diff --git a/drivers/net/wireless/ipw2x00/ipw2200.c b/drivers/net/wireless/ipw2x00/ipw2200.c
index 67cad9b..39f3e6f 100644
--- a/drivers/net/wireless/ipw2x00/ipw2200.c
+++ b/drivers/net/wireless/ipw2x00/ipw2200.c
@@ -1964,7 +1964,7 @@ static void notify_wx_assoc_event(struct ipw_priv *priv)
 	if (priv->status & STATUS_ASSOCIATED)
 		memcpy(wrqu.ap_addr.sa_data, priv->bssid, ETH_ALEN);
 	else
-		memset(wrqu.ap_addr.sa_data, 0, ETH_ALEN);
+		eth_zero_addr(wrqu.ap_addr.sa_data);
 	wireless_send_event(priv->net_dev, SIOCGIWAP, &wrqu, NULL);
 }
 
@@ -7400,7 +7400,7 @@ static int ipw_associate_network(struct ipw_priv *priv,
 	memcpy(priv->assoc_request.bssid, network->bssid, ETH_ALEN);
 
 	if (priv->ieee->iw_mode == IW_MODE_ADHOC) {
-		memset(&priv->assoc_request.dest, 0xFF, ETH_ALEN);
+		eth_broadcast_addr(priv->assoc_request.dest);
 		priv->assoc_request.atim_window = cpu_to_le16(network->atim_window);
 	} else {
 		memcpy(priv->assoc_request.dest, network->bssid, ETH_ALEN);
@@ -8986,7 +8986,7 @@ static int ipw_wx_get_wap(struct net_device *dev,
 		wrqu->ap_addr.sa_family = ARPHRD_ETHER;
 		memcpy(wrqu->ap_addr.sa_data, priv->bssid, ETH_ALEN);
 	} else
-		memset(wrqu->ap_addr.sa_data, 0, ETH_ALEN);
+		eth_zero_addr(wrqu->ap_addr.sa_data);
 
 	IPW_DEBUG_WX("Getting WAP BSSID: %pM\n",
 		     wrqu->ap_addr.sa_data);
diff --git a/drivers/net/wireless/iwlegacy/common.c b/drivers/net/wireless/iwlegacy/common.c
index 2c4fa49..8871145 100644
--- a/drivers/net/wireless/iwlegacy/common.c
+++ b/drivers/net/wireless/iwlegacy/common.c
@@ -4634,7 +4634,7 @@ il_mac_remove_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
 	il->vif = NULL;
 	il->iw_mode = NL80211_IFTYPE_UNSPECIFIED;
 	il_teardown_interface(il, vif);
-	memset(il->bssid, 0, ETH_ALEN);
+	eth_zero_addr(il->bssid);
 
 	D_MAC80211("leave\n");
 	mutex_unlock(&il->mutex);
diff --git a/drivers/net/wireless/iwlwifi/mvm/power.c b/drivers/net/wireless/iwlwifi/mvm/power.c
index 2620dd0..33bbdde 100644
--- a/drivers/net/wireless/iwlwifi/mvm/power.c
+++ b/drivers/net/wireless/iwlwifi/mvm/power.c
@@ -66,6 +66,7 @@
 #include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/slab.h>
+#include <linux/etherdevice.h>
 
 #include <net/mac80211.h>
 
@@ -491,7 +492,7 @@ void iwl_mvm_power_vif_assoc(struct iwl_mvm *mvm, struct ieee80211_vif *vif)
 
 	if (memcmp(vif->bss_conf.bssid, mvmvif->uapsd_misbehaving_bssid,
 		   ETH_ALEN))
-		memset(mvmvif->uapsd_misbehaving_bssid, 0, ETH_ALEN);
+		eth_zero_addr(mvmvif->uapsd_misbehaving_bssid);
 }
 
 static void iwl_mvm_power_uapsd_misbehav_ap_iterator(void *_data, u8 *mac,
diff --git a/drivers/net/wireless/libertas/main.c b/drivers/net/wireless/libertas/main.c
index 569b64e..8079560 100644
--- a/drivers/net/wireless/libertas/main.c
+++ b/drivers/net/wireless/libertas/main.c
@@ -667,7 +667,7 @@ static int lbs_setup_firmware(struct lbs_private *priv)
 	lbs_deb_enter(LBS_DEB_FW);
 
 	/* Read MAC address from firmware */
-	memset(priv->current_addr, 0xff, ETH_ALEN);
+	eth_broadcast_addr(priv->current_addr);
 	ret = lbs_update_hw_spec(priv);
 	if (ret)
 		goto done;
@@ -871,7 +871,7 @@ static int lbs_init_adapter(struct lbs_private *priv)
 
 	lbs_deb_enter(LBS_DEB_MAIN);
 
-	memset(priv->current_addr, 0xff, ETH_ALEN);
+	eth_broadcast_addr(priv->current_addr);
 
 	priv->connect_status = LBS_DISCONNECTED;
 	priv->channel = DEFAULT_AD_HOC_CHANNEL;
diff --git a/drivers/net/wireless/libertas_tf/main.c b/drivers/net/wireless/libertas_tf/main.c
index 25c5acc..ed02e4b 100644
--- a/drivers/net/wireless/libertas_tf/main.c
+++ b/drivers/net/wireless/libertas_tf/main.c
@@ -152,7 +152,7 @@ static int lbtf_setup_firmware(struct lbtf_private *priv)
 	/*
 	 * Read priv address from HW
 	 */
-	memset(priv->current_addr, 0xff, ETH_ALEN);
+	eth_broadcast_addr(priv->current_addr);
 	ret = lbtf_update_hw_spec(priv);
 	if (ret) {
 		ret = -1;
@@ -199,7 +199,7 @@ out:
 static int lbtf_init_adapter(struct lbtf_private *priv)
 {
 	lbtf_deb_enter(LBTF_DEB_MAIN);
-	memset(priv->current_addr, 0xff, ETH_ALEN);
+	eth_broadcast_addr(priv->current_addr);
 	mutex_init(&priv->lock);
 
 	priv->vif = NULL;
diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
index 4a4c658..c1947c5 100644
--- a/drivers/net/wireless/mac80211_hwsim.c
+++ b/drivers/net/wireless/mac80211_hwsim.c
@@ -1908,7 +1908,7 @@ static void mac80211_hwsim_sw_scan_complete(struct ieee80211_hw *hw,
 
 	printk(KERN_DEBUG "hwsim sw_scan_complete\n");
 	hwsim->scanning = false;
-	memset(hwsim->scan_addr, 0, ETH_ALEN);
+	eth_zero_addr(hwsim->scan_addr);
 
 	mutex_unlock(&hwsim->mutex);
 }
@@ -2264,7 +2264,7 @@ static int mac80211_hwsim_new_radio(struct genl_info *info,
 	skb_queue_head_init(&data->pending);
 
 	SET_IEEE80211_DEV(hw, data->dev);
-	memset(addr, 0, ETH_ALEN);
+	eth_zero_addr(addr);
 	addr[0] = 0x02;
 	addr[3] = idx >> 8;
 	addr[4] = idx;
@@ -2597,7 +2597,7 @@ static void hwsim_mon_setup(struct net_device *dev)
 	ether_setup(dev);
 	dev->tx_queue_len = 0;
 	dev->type = ARPHRD_IEEE80211_RADIOTAP;
-	memset(dev->dev_addr, 0, ETH_ALEN);
+	eth_zero_addr(dev->dev_addr);
 	dev->dev_addr[0] = 0x12;
 }
 
diff --git a/drivers/net/wireless/mwifiex/cfg80211.c b/drivers/net/wireless/mwifiex/cfg80211.c
index 41c8e25..7c3ca2f 100644
--- a/drivers/net/wireless/mwifiex/cfg80211.c
+++ b/drivers/net/wireless/mwifiex/cfg80211.c
@@ -1563,7 +1563,7 @@ mwifiex_cfg80211_del_station(struct wiphy *wiphy, struct net_device *dev,
 
 	wiphy_dbg(wiphy, "%s: mac address %pM\n", __func__, params->mac);
 
-	memset(deauth_mac, 0, ETH_ALEN);
+	eth_zero_addr(deauth_mac);
 
 	spin_lock_irqsave(&priv->sta_list_spinlock, flags);
 	sta_node = mwifiex_get_sta_entry(priv, params->mac);
@@ -1786,7 +1786,7 @@ mwifiex_cfg80211_disconnect(struct wiphy *wiphy, struct net_device *dev,
 	wiphy_dbg(wiphy, "info: successfully disconnected from %pM:"
 		" reason code %d\n", priv->cfg_bssid, reason_code);
 
-	memset(priv->cfg_bssid, 0, ETH_ALEN);
+	eth_zero_addr(priv->cfg_bssid);
 	priv->hs2_enabled = false;
 
 	return 0;
@@ -2046,7 +2046,7 @@ mwifiex_cfg80211_connect(struct wiphy *wiphy, struct net_device *dev,
 		dev_dbg(priv->adapter->dev,
 			"info: association to bssid %pM failed\n",
 			priv->cfg_bssid);
-		memset(priv->cfg_bssid, 0, ETH_ALEN);
+		eth_zero_addr(priv->cfg_bssid);
 
 		if (ret > 0)
 			cfg80211_connect_result(priv->netdev, priv->cfg_bssid,
@@ -2194,7 +2194,7 @@ mwifiex_cfg80211_leave_ibss(struct wiphy *wiphy, struct net_device *dev)
 	if (mwifiex_deauthenticate(priv, NULL))
 		return -EFAULT;
 
-	memset(priv->cfg_bssid, 0, ETH_ALEN);
+	eth_zero_addr(priv->cfg_bssid);
 
 	return 0;
 }
diff --git a/drivers/net/wireless/mwifiex/init.c b/drivers/net/wireless/mwifiex/init.c
index b77ba74..0978b1c 100644
--- a/drivers/net/wireless/mwifiex/init.c
+++ b/drivers/net/wireless/mwifiex/init.c
@@ -76,7 +76,7 @@ int mwifiex_init_priv(struct mwifiex_private *priv)
 	u32 i;
 
 	priv->media_connected = false;
-	memset(priv->curr_addr, 0xff, ETH_ALEN);
+	eth_broadcast_addr(priv->curr_addr);
 
 	priv->pkt_tx_ctrl = 0;
 	priv->bss_mode = NL80211_IFTYPE_UNSPECIFIED;
@@ -299,7 +299,7 @@ static void mwifiex_init_adapter(struct mwifiex_adapter *adapter)
 	adapter->ext_scan = false;
 	adapter->key_api_major_ver = 0;
 	adapter->key_api_minor_ver = 0;
-	memset(adapter->perm_addr, 0xff, ETH_ALEN);
+	eth_broadcast_addr(adapter->perm_addr);
 	adapter->iface_limit.sta_intf = MWIFIEX_MAX_STA_NUM;
 	adapter->iface_limit.uap_intf = MWIFIEX_MAX_UAP_NUM;
 	adapter->iface_limit.p2p_intf = MWIFIEX_MAX_P2P_NUM;
diff --git a/drivers/net/wireless/mwifiex/sta_event.c b/drivers/net/wireless/mwifiex/sta_event.c
index 80ffe741..64c4223 100644
--- a/drivers/net/wireless/mwifiex/sta_event.c
+++ b/drivers/net/wireless/mwifiex/sta_event.c
@@ -135,7 +135,7 @@ mwifiex_reset_connect_state(struct mwifiex_private *priv, u16 reason_code)
 		cfg80211_disconnected(priv->netdev, reason_code, NULL, 0,
 				      GFP_KERNEL);
 	}
-	memset(priv->cfg_bssid, 0, ETH_ALEN);
+	eth_zero_addr(priv->cfg_bssid);
 
 	mwifiex_stop_net_dev_queue(priv->netdev, adapter);
 	if (netif_carrier_ok(priv->netdev))
diff --git a/drivers/net/wireless/mwifiex/wmm.c b/drivers/net/wireless/mwifiex/wmm.c
index ef717ac..0cd4f6b 100644
--- a/drivers/net/wireless/mwifiex/wmm.c
+++ b/drivers/net/wireless/mwifiex/wmm.c
@@ -730,7 +730,7 @@ mwifiex_wmm_add_buf_txqueue(struct mwifiex_private *priv,
 	} else {
 		memcpy(ra, skb->data, ETH_ALEN);
 		if (ra[0] & 0x01 || mwifiex_is_skb_mgmt_frame(skb))
-			memset(ra, 0xff, ETH_ALEN);
+			eth_broadcast_addr(ra);
 		ra_list = mwifiex_wmm_get_queue_raptr(priv, tid_down, ra);
 	}
 
diff --git a/drivers/net/wireless/mwl8k.c b/drivers/net/wireless/mwl8k.c
index f9b1218..9592116 100644
--- a/drivers/net/wireless/mwl8k.c
+++ b/drivers/net/wireless/mwl8k.c
@@ -1277,7 +1277,7 @@ static inline void mwl8k_save_beacon(struct ieee80211_hw *hw,
 	struct mwl8k_priv *priv = hw->priv;
 
 	priv->capture_beacon = false;
-	memset(priv->capture_bssid, 0, ETH_ALEN);
+	eth_zero_addr(priv->capture_bssid);
 
 	/*
 	 * Use GFP_ATOMIC as rxq_process is called from
diff --git a/drivers/net/wireless/orinoco/wext.c b/drivers/net/wireless/orinoco/wext.c
index 6abdaf0..1d4dae4 100644
--- a/drivers/net/wireless/orinoco/wext.c
+++ b/drivers/net/wireless/orinoco/wext.c
@@ -168,7 +168,7 @@ static int orinoco_ioctl_setwap(struct net_device *dev,
 	if (is_zero_ether_addr(ap_addr->sa_data) ||
 	    is_broadcast_ether_addr(ap_addr->sa_data)) {
 		priv->bssid_fixed = 0;
-		memset(priv->desired_bssid, 0, ETH_ALEN);
+		eth_zero_addr(priv->desired_bssid);
 
 		/* "off" means keep existing connection */
 		if (ap_addr->sa_data[0] == 0) {
diff --git a/drivers/net/wireless/p54/fwio.c b/drivers/net/wireless/p54/fwio.c
index 5367d51..275408e 100644
--- a/drivers/net/wireless/p54/fwio.c
+++ b/drivers/net/wireless/p54/fwio.c
@@ -671,7 +671,7 @@ int p54_upload_key(struct p54_common *priv, u8 algo, int slot, u8 idx, u8 len,
 	if (addr)
 		memcpy(rxkey->mac, addr, ETH_ALEN);
 	else
-		memset(rxkey->mac, ~0, ETH_ALEN);
+		eth_broadcast_addr(rxkey->mac);
 
 	switch (algo) {
 	case P54_CRYPTO_WEP:
diff --git a/drivers/net/wireless/p54/main.c b/drivers/net/wireless/p54/main.c
index b9250d7..e79674f 100644
--- a/drivers/net/wireless/p54/main.c
+++ b/drivers/net/wireless/p54/main.c
@@ -182,7 +182,7 @@ static int p54_start(struct ieee80211_hw *dev)
 	if (err)
 		goto out;
 
-	memset(priv->bssid, ~0, ETH_ALEN);
+	eth_broadcast_addr(priv->bssid);
 	priv->mode = NL80211_IFTYPE_MONITOR;
 	err = p54_setup_mac(priv);
 	if (err) {
@@ -274,8 +274,8 @@ static void p54_remove_interface(struct ieee80211_hw *dev,
 		wait_for_completion_interruptible_timeout(&priv->beacon_comp, HZ);
 	}
 	priv->mode = NL80211_IFTYPE_MONITOR;
-	memset(priv->mac_addr, 0, ETH_ALEN);
-	memset(priv->bssid, 0, ETH_ALEN);
+	eth_zero_addr(priv->mac_addr);
+	eth_zero_addr(priv->bssid);
 	p54_setup_mac(priv);
 	mutex_unlock(&priv->conf_mutex);
 }
@@ -794,7 +794,7 @@ struct ieee80211_hw *p54_init_common(size_t priv_data_len)
 	init_completion(&priv->beacon_comp);
 	INIT_DELAYED_WORK(&priv->work, p54_work);
 
-	memset(&priv->mc_maclist[0], ~0, ETH_ALEN);
+	eth_broadcast_addr(priv->mc_maclist[0]);
 	priv->curchan = NULL;
 	p54_reset_stats(priv);
 	return dev;
diff --git a/drivers/net/wireless/ray_cs.c b/drivers/net/wireless/ray_cs.c
index 8330fa3..477f863 100644
--- a/drivers/net/wireless/ray_cs.c
+++ b/drivers/net/wireless/ray_cs.c
@@ -808,7 +808,7 @@ static int ray_dev_init(struct net_device *dev)
 
 	/* copy mac and broadcast addresses to linux device */
 	memcpy(dev->dev_addr, &local->sparm.b4.a_mac_addr, ADDRLEN);
-	memset(dev->broadcast, 0xff, ETH_ALEN);
+	eth_broadcast_addr(dev->broadcast);
 
 	dev_dbg(&link->dev, "ray_dev_init ending\n");
 	return 0;
diff --git a/drivers/net/wireless/rndis_wlan.c b/drivers/net/wireless/rndis_wlan.c
index 60d44ce..d72ff8e 100644
--- a/drivers/net/wireless/rndis_wlan.c
+++ b/drivers/net/wireless/rndis_wlan.c
@@ -199,13 +199,13 @@ enum ndis_80211_pmkid_cand_list_flag_bits {
 
 struct ndis_80211_auth_request {
 	__le32 length;
-	u8 bssid[6];
+	u8 bssid[ETH_ALEN];
 	u8 padding[2];
 	__le32 flags;
 } __packed;
 
 struct ndis_80211_pmkid_candidate {
-	u8 bssid[6];
+	u8 bssid[ETH_ALEN];
 	u8 padding[2];
 	__le32 flags;
 } __packed;
@@ -248,7 +248,7 @@ struct ndis_80211_conf {
 
 struct ndis_80211_bssid_ex {
 	__le32 length;
-	u8 mac[6];
+	u8 mac[ETH_ALEN];
 	u8 padding[2];
 	struct ndis_80211_ssid ssid;
 	__le32 privacy;
@@ -283,7 +283,7 @@ struct ndis_80211_key {
 	__le32 size;
 	__le32 index;
 	__le32 length;
-	u8 bssid[6];
+	u8 bssid[ETH_ALEN];
 	u8 padding[6];
 	u8 rsc[8];
 	u8 material[32];
@@ -292,7 +292,7 @@ struct ndis_80211_key {
 struct ndis_80211_remove_key {
 	__le32 size;
 	__le32 index;
-	u8 bssid[6];
+	u8 bssid[ETH_ALEN];
 	u8 padding[2];
 } __packed;
 
@@ -310,7 +310,7 @@ struct ndis_80211_assoc_info {
 	struct req_ie {
 		__le16 capa;
 		__le16 listen_interval;
-		u8 cur_ap_address[6];
+		u8 cur_ap_address[ETH_ALEN];
 	} req_ie;
 	__le32 req_ie_length;
 	__le32 offset_req_ies;
@@ -338,7 +338,7 @@ struct ndis_80211_capability {
 } __packed;
 
 struct ndis_80211_bssid_info {
-	u8 bssid[6];
+	u8 bssid[ETH_ALEN];
 	u8 pmkid[16];
 } __packed;
 
@@ -1037,7 +1037,7 @@ static int get_bssid(struct usbnet *usbdev, u8 bssid[ETH_ALEN])
 			      bssid, &len);
 
 	if (ret != 0)
-		memset(bssid, 0, ETH_ALEN);
+		eth_zero_addr(bssid);
 
 	return ret;
 }
@@ -1391,7 +1391,7 @@ static int add_wep_key(struct usbnet *usbdev, const u8 *key, int key_len,
 	priv->encr_keys[index].len = key_len;
 	priv->encr_keys[index].cipher = cipher;
 	memcpy(&priv->encr_keys[index].material, key, key_len);
-	memset(&priv->encr_keys[index].bssid, 0xff, ETH_ALEN);
+	eth_broadcast_addr(priv->encr_keys[index].bssid);
 
 	return 0;
 }
@@ -1466,7 +1466,7 @@ static int add_wpa_key(struct usbnet *usbdev, const u8 *key, int key_len,
 	} else {
 		/* group key */
 		if (priv->infra_mode == NDIS_80211_INFRA_ADHOC)
-			memset(ndis_key.bssid, 0xff, ETH_ALEN);
+			eth_broadcast_addr(ndis_key.bssid);
 		else
 			get_bssid(usbdev, ndis_key.bssid);
 	}
@@ -1486,7 +1486,7 @@ static int add_wpa_key(struct usbnet *usbdev, const u8 *key, int key_len,
 	if (flags & NDIS_80211_ADDKEY_PAIRWISE_KEY)
 		memcpy(&priv->encr_keys[index].bssid, ndis_key.bssid, ETH_ALEN);
 	else
-		memset(&priv->encr_keys[index].bssid, 0xff, ETH_ALEN);
+		eth_broadcast_addr(priv->encr_keys[index].bssid);
 
 	if (flags & NDIS_80211_ADDKEY_TRANSMIT_KEY)
 		priv->encr_tx_key_index = index;
@@ -2280,7 +2280,7 @@ static int rndis_disconnect(struct wiphy *wiphy, struct net_device *dev,
 	netdev_dbg(usbdev->net, "cfg80211.disconnect(%d)\n", reason_code);
 
 	priv->connected = false;
-	memset(priv->bssid, 0, ETH_ALEN);
+	eth_zero_addr(priv->bssid);
 
 	return deauthenticate(usbdev);
 }
@@ -2392,7 +2392,7 @@ static int rndis_leave_ibss(struct wiphy *wiphy, struct net_device *dev)
 	netdev_dbg(usbdev->net, "cfg80211.leave_ibss()\n");
 
 	priv->connected = false;
-	memset(priv->bssid, 0, ETH_ALEN);
+	eth_zero_addr(priv->bssid);
 
 	return deauthenticate(usbdev);
 }
@@ -2857,7 +2857,7 @@ static void rndis_wlan_do_link_down_work(struct usbnet *usbdev)
 
 	if (priv->connected) {
 		priv->connected = false;
-		memset(priv->bssid, 0, ETH_ALEN);
+		eth_zero_addr(priv->bssid);
 
 		deauthenticate(usbdev);
 
diff --git a/drivers/net/wireless/rtlwifi/core.c b/drivers/net/wireless/rtlwifi/core.c
index a31a127..3b3a88b 100644
--- a/drivers/net/wireless/rtlwifi/core.c
+++ b/drivers/net/wireless/rtlwifi/core.c
@@ -195,7 +195,7 @@ static void rtl_op_stop(struct ieee80211_hw *hw)
 	if (!(support_remote_wakeup &&
 	      rtlhal->enter_pnp_sleep)) {
 		mac->link_state = MAC80211_NOLINK;
-		memset(mac->bssid, 0, 6);
+		eth_zero_addr(mac->bssid);
 		mac->vendor = PEER_UNKNOWN;
 
 		/* reset sec info */
@@ -357,7 +357,7 @@ static void rtl_op_remove_interface(struct ieee80211_hw *hw,
 	mac->p2p = 0;
 	mac->vif = NULL;
 	mac->link_state = MAC80211_NOLINK;
-	memset(mac->bssid, 0, ETH_ALEN);
+	eth_zero_addr(mac->bssid);
 	mac->vendor = PEER_UNKNOWN;
 	mac->opmode = NL80211_IFTYPE_UNSPECIFIED;
 	rtlpriv->cfg->ops->set_network_type(hw, mac->opmode);
@@ -1157,7 +1157,7 @@ static void rtl_op_bss_info_changed(struct ieee80211_hw *hw,
 			if (ppsc->p2p_ps_info.p2p_ps_mode > P2P_PS_NONE)
 				rtl_p2p_ps_cmd(hw, P2P_PS_DISABLE);
 			mac->link_state = MAC80211_NOLINK;
-			memset(mac->bssid, 0, ETH_ALEN);
+			eth_zero_addr(mac->bssid);
 			mac->vendor = PEER_UNKNOWN;
 			mac->mode = 0;
 
diff --git a/drivers/net/wireless/ti/wl1251/main.c b/drivers/net/wireless/ti/wl1251/main.c
index d4ba009..d1e9a13 100644
--- a/drivers/net/wireless/ti/wl1251/main.c
+++ b/drivers/net/wireless/ti/wl1251/main.c
@@ -468,7 +468,7 @@ static void wl1251_op_stop(struct ieee80211_hw *hw)
 	wl1251_tx_flush(wl);
 	wl1251_power_off(wl);
 
-	memset(wl->bssid, 0, ETH_ALEN);
+	eth_zero_addr(wl->bssid);
 	wl->listen_int = 1;
 	wl->bss_type = MAX_BSS_TYPE;
 
@@ -547,7 +547,7 @@ static void wl1251_op_remove_interface(struct ieee80211_hw *hw,
 	mutex_lock(&wl->mutex);
 	wl1251_debug(DEBUG_MAC80211, "mac80211 remove interface");
 	wl->vif = NULL;
-	memset(wl->bssid, 0, ETH_ALEN);
+	eth_zero_addr(wl->bssid);
 	mutex_unlock(&wl->mutex);
 }
 
diff --git a/drivers/net/wireless/ti/wlcore/cmd.c b/drivers/net/wireless/ti/wlcore/cmd.c
index c26fc21..68919f8 100644
--- a/drivers/net/wireless/ti/wlcore/cmd.c
+++ b/drivers/net/wireless/ti/wlcore/cmd.c
@@ -367,7 +367,7 @@ void wl12xx_free_link(struct wl1271 *wl, struct wl12xx_vif *wlvif, u8 *hlid)
 	wl->links[*hlid].allocated_pkts = 0;
 	wl->links[*hlid].prev_freed_pkts = 0;
 	wl->links[*hlid].ba_bitmap = 0;
-	memset(wl->links[*hlid].addr, 0, ETH_ALEN);
+	eth_zero_addr(wl->links[*hlid].addr);
 
 	/*
 	 * At this point op_tx() will not add more packets to the queues. We
@@ -1293,7 +1293,7 @@ int wl1271_cmd_build_arp_rsp(struct wl1271 *wl, struct wl12xx_vif *wlvif)
 	hdr->frame_control = cpu_to_le16(fc);
 	memcpy(hdr->addr1, vif->bss_conf.bssid, ETH_ALEN);
 	memcpy(hdr->addr2, vif->addr, ETH_ALEN);
-	memset(hdr->addr3, 0xff, ETH_ALEN);
+	eth_broadcast_addr(hdr->addr3);
 
 	ret = wl1271_cmd_template_set(wl, wlvif->role_id, CMD_TEMPL_ARP_RSP,
 				      skb->data, skb->len, 0,
-- 
2.1.2


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

* [PATCH net-next 05/14] netconsole: Use eth_<foo>_addr instead of memset
  2015-03-03  3:54 [PATCH net-next 00/14] Use eth_<foo>_addr instead of memset Joe Perches
                   ` (3 preceding siblings ...)
  2015-03-03  3:54 ` [PATCH net-next 04/14] wireless: " Joe Perches
@ 2015-03-03  3:54 ` Joe Perches
  2015-03-03  3:54 ` [PATCH net-next 06/14] xen: " Joe Perches
                   ` (8 subsequent siblings)
  13 siblings, 0 replies; 42+ messages in thread
From: Joe Perches @ 2015-03-03  3:54 UTC (permalink / raw)
  To: netdev, linux-kernel

Use the built-in function instead of memset.

Miscellanea:

Add #include <linux/etherdevice.h>

Signed-off-by: Joe Perches <joe@perches.com>
---
 drivers/net/netconsole.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c
index ba2f5e7..15731d1 100644
--- a/drivers/net/netconsole.c
+++ b/drivers/net/netconsole.c
@@ -47,6 +47,7 @@
 #include <linux/netpoll.h>
 #include <linux/inet.h>
 #include <linux/configfs.h>
+#include <linux/etherdevice.h>
 
 MODULE_AUTHOR("Maintainer: Matt Mackall <mpm@selenic.com>");
 MODULE_DESCRIPTION("Console driver for network interfaces");
@@ -185,7 +186,7 @@ static struct netconsole_target *alloc_param_target(char *target_config)
 	nt->np.local_port = 6665;
 	nt->np.remote_port = 6666;
 	mutex_init(&nt->mutex);
-	memset(nt->np.remote_mac, 0xff, ETH_ALEN);
+	eth_broadcast_addr(nt->np.remote_mac);
 
 	/* Parse parameters and setup netpoll */
 	err = netpoll_parse_options(&nt->np, target_config);
@@ -604,7 +605,7 @@ static struct config_item *make_netconsole_target(struct config_group *group,
 	nt->np.local_port = 6665;
 	nt->np.remote_port = 6666;
 	mutex_init(&nt->mutex);
-	memset(nt->np.remote_mac, 0xff, ETH_ALEN);
+	eth_broadcast_addr(nt->np.remote_mac);
 
 	/* Initialize the config_item member */
 	config_item_init_type_name(&nt->item, name, &netconsole_target_type);
-- 
2.1.2


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

* [PATCH net-next 06/14] xen: Use eth_<foo>_addr instead of memset
  2015-03-03  3:54 [PATCH net-next 00/14] Use eth_<foo>_addr instead of memset Joe Perches
                   ` (4 preceding siblings ...)
  2015-03-03  3:54 ` [PATCH net-next 05/14] netconsole: " Joe Perches
@ 2015-03-03  3:54 ` Joe Perches
  2015-03-03 10:05   ` Ian Campbell
  2015-03-03 10:13   ` Wei Liu
  2015-03-03  3:54 ` [PATCH net-next 07/14] 8021q: " Joe Perches
                   ` (7 subsequent siblings)
  13 siblings, 2 replies; 42+ messages in thread
From: Joe Perches @ 2015-03-03  3:54 UTC (permalink / raw)
  To: netdev, Ian Campbell, Wei Liu; +Cc: xen-devel, linux-kernel

Use the built-in function instead of memset.

Signed-off-by: Joe Perches <joe@perches.com>
---
 drivers/net/xen-netback/interface.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/xen-netback/interface.c b/drivers/net/xen-netback/interface.c
index f38227a..4ae98e2 100644
--- a/drivers/net/xen-netback/interface.c
+++ b/drivers/net/xen-netback/interface.c
@@ -438,7 +438,7 @@ struct xenvif *xenvif_alloc(struct device *parent, domid_t domid,
 	 * stolen by an Ethernet bridge for STP purposes.
 	 * (FE:FF:FF:FF:FF:FF)
 	 */
-	memset(dev->dev_addr, 0xFF, ETH_ALEN);
+	eth_broadcast_addr(dev->dev_addr);
 	dev->dev_addr[0] &= ~0x01;
 
 	netif_carrier_off(dev);
-- 
2.1.2


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

* [PATCH net-next 07/14] 8021q: Use eth_<foo>_addr instead of memset
  2015-03-03  3:54 [PATCH net-next 00/14] Use eth_<foo>_addr instead of memset Joe Perches
                   ` (5 preceding siblings ...)
  2015-03-03  3:54 ` [PATCH net-next 06/14] xen: " Joe Perches
@ 2015-03-03  3:54 ` Joe Perches
  2015-03-03  3:54 ` [PATCH net-next 08/14] appletalk: " Joe Perches
                   ` (6 subsequent siblings)
  13 siblings, 0 replies; 42+ messages in thread
From: Joe Perches @ 2015-03-03  3:54 UTC (permalink / raw)
  To: netdev, Patrick McHardy; +Cc: David S. Miller, linux-kernel

Use the built-in function instead of memset.

Signed-off-by: Joe Perches <joe@perches.com>
---
 net/8021q/vlan_dev.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c
index 1dcfec8..f196552 100644
--- a/net/8021q/vlan_dev.c
+++ b/net/8021q/vlan_dev.c
@@ -792,5 +792,5 @@ void vlan_setup(struct net_device *dev)
 	dev->destructor		= vlan_dev_free;
 	dev->ethtool_ops	= &vlan_ethtool_ops;
 
-	memset(dev->broadcast, 0, ETH_ALEN);
+	eth_zero_addr(dev->broadcast);
 }
-- 
2.1.2


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

* [PATCH net-next 08/14] appletalk: Use eth_<foo>_addr instead of memset
  2015-03-03  3:54 [PATCH net-next 00/14] Use eth_<foo>_addr instead of memset Joe Perches
                   ` (6 preceding siblings ...)
  2015-03-03  3:54 ` [PATCH net-next 07/14] 8021q: " Joe Perches
@ 2015-03-03  3:54 ` Joe Perches
  2015-03-03  3:54 ` [PATCH net-next 09/14] atm: " Joe Perches
                   ` (5 subsequent siblings)
  13 siblings, 0 replies; 42+ messages in thread
From: Joe Perches @ 2015-03-03  3:54 UTC (permalink / raw)
  To: netdev, Arnaldo Carvalho de Melo; +Cc: David S. Miller, linux-kernel

Use the built-in function instead of memset.

Signed-off-by: Joe Perches <joe@perches.com>
---
 net/appletalk/aarp.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/net/appletalk/aarp.c b/net/appletalk/aarp.c
index d1c55d8..8ad3ec2 100644
--- a/net/appletalk/aarp.c
+++ b/net/appletalk/aarp.c
@@ -141,7 +141,7 @@ static void __aarp_send_query(struct aarp_entry *a)
 	eah->pa_src_net	 = sat->s_net;
 	eah->pa_src_node = sat->s_node;
 
-	memset(eah->hw_dst, '\0', ETH_ALEN);
+	eth_zero_addr(eah->hw_dst);
 
 	eah->pa_dst_zero = 0;
 	eah->pa_dst_net	 = a->target_addr.s_net;
@@ -189,7 +189,7 @@ static void aarp_send_reply(struct net_device *dev, struct atalk_addr *us,
 	eah->pa_src_node = us->s_node;
 
 	if (!sha)
-		memset(eah->hw_dst, '\0', ETH_ALEN);
+		eth_zero_addr(eah->hw_dst);
 	else
 		ether_addr_copy(eah->hw_dst, sha);
 
@@ -239,7 +239,7 @@ static void aarp_send_probe(struct net_device *dev, struct atalk_addr *us)
 	eah->pa_src_net	 = us->s_net;
 	eah->pa_src_node = us->s_node;
 
-	memset(eah->hw_dst, '\0', ETH_ALEN);
+	eth_zero_addr(eah->hw_dst);
 
 	eah->pa_dst_zero = 0;
 	eah->pa_dst_net	 = us->s_net;
-- 
2.1.2


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

* [PATCH net-next 09/14] atm: Use eth_<foo>_addr instead of memset
  2015-03-03  3:54 [PATCH net-next 00/14] Use eth_<foo>_addr instead of memset Joe Perches
                   ` (7 preceding siblings ...)
  2015-03-03  3:54 ` [PATCH net-next 08/14] appletalk: " Joe Perches
@ 2015-03-03  3:54 ` Joe Perches
  2015-03-03  3:54 ` [PATCH net-next 10/14] bluetooth: " Joe Perches
                   ` (4 subsequent siblings)
  13 siblings, 0 replies; 42+ messages in thread
From: Joe Perches @ 2015-03-03  3:54 UTC (permalink / raw)
  To: netdev, linux-kernel; +Cc: David S. Miller

Use the built-in function instead of memset.

Signed-off-by: Joe Perches <joe@perches.com>
---
 net/atm/lec.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/net/atm/lec.c b/net/atm/lec.c
index 4b98f89..cd3b379 100644
--- a/net/atm/lec.c
+++ b/net/atm/lec.c
@@ -2001,7 +2001,7 @@ lec_vcc_added(struct lec_priv *priv, const struct atmlec_ioc *ioc_data,
 		if (entry == NULL)
 			goto out;
 		memcpy(entry->atm_addr, ioc_data->atm_addr, ATM_ESA_LEN);
-		memset(entry->mac_addr, 0, ETH_ALEN);
+		eth_zero_addr(entry->mac_addr);
 		entry->recv_vcc = vcc;
 		entry->old_recv_push = old_push;
 		entry->status = ESI_UNKNOWN;
@@ -2086,7 +2086,7 @@ lec_vcc_added(struct lec_priv *priv, const struct atmlec_ioc *ioc_data,
 	entry->vcc = vcc;
 	entry->old_push = old_push;
 	memcpy(entry->atm_addr, ioc_data->atm_addr, ATM_ESA_LEN);
-	memset(entry->mac_addr, 0, ETH_ALEN);
+	eth_zero_addr(entry->mac_addr);
 	entry->status = ESI_UNKNOWN;
 	hlist_add_head(&entry->next, &priv->lec_arp_empty_ones);
 	entry->timer.expires = jiffies + priv->vcc_timeout_period;
-- 
2.1.2


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

* [PATCH net-next 10/14] bluetooth: Use eth_<foo>_addr instead of memset
  2015-03-03  3:54 [PATCH net-next 00/14] Use eth_<foo>_addr instead of memset Joe Perches
                   ` (8 preceding siblings ...)
  2015-03-03  3:54 ` [PATCH net-next 09/14] atm: " Joe Perches
@ 2015-03-03  3:54 ` Joe Perches
  2015-03-03  7:04   ` Marcel Holtmann
  2015-03-03  3:54 ` [PATCH net-next 11/14] ethernet: " Joe Perches
                   ` (3 subsequent siblings)
  13 siblings, 1 reply; 42+ messages in thread
From: Joe Perches @ 2015-03-03  3:54 UTC (permalink / raw)
  To: netdev, linux-kernel
  Cc: Marcel Holtmann, Gustavo Padovan, Johan Hedberg, David S. Miller,
	linux-bluetooth

Use the built-in function instead of memset.

Signed-off-by: Joe Perches <joe@perches.com>
---
 net/bluetooth/bnep/netdev.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/bluetooth/bnep/netdev.c b/net/bluetooth/bnep/netdev.c
index 4b488ec..6ceb5d3 100644
--- a/net/bluetooth/bnep/netdev.c
+++ b/net/bluetooth/bnep/netdev.c
@@ -218,7 +218,7 @@ static const struct net_device_ops bnep_netdev_ops = {
 void bnep_net_setup(struct net_device *dev)
 {
 
-	memset(dev->broadcast, 0xff, ETH_ALEN);
+	eth_broadcast_addr(dev->broadcast);
 	dev->addr_len = ETH_ALEN;
 
 	ether_setup(dev);
-- 
2.1.2


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

* [PATCH net-next 11/14] ethernet: Use eth_<foo>_addr instead of memset
  2015-03-03  3:54 [PATCH net-next 00/14] Use eth_<foo>_addr instead of memset Joe Perches
                   ` (9 preceding siblings ...)
  2015-03-03  3:54 ` [PATCH net-next 10/14] bluetooth: " Joe Perches
@ 2015-03-03  3:54 ` Joe Perches
  2015-03-03  3:54 ` [PATCH net-next 12/14] mac80211: " Joe Perches
                   ` (2 subsequent siblings)
  13 siblings, 0 replies; 42+ messages in thread
From: Joe Perches @ 2015-03-03  3:54 UTC (permalink / raw)
  To: netdev, linux-kernel; +Cc: David S. Miller

Use the built-in function instead of memset.

Signed-off-by: Joe Perches <joe@perches.com>
---
 net/ethernet/eth.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/net/ethernet/eth.c b/net/ethernet/eth.c
index 8dbdf6c..f3bad41 100644
--- a/net/ethernet/eth.c
+++ b/net/ethernet/eth.c
@@ -104,7 +104,7 @@ int eth_header(struct sk_buff *skb, struct net_device *dev,
 	 */
 
 	if (dev->flags & (IFF_LOOPBACK | IFF_NOARP)) {
-		memset(eth->h_dest, 0, ETH_ALEN);
+		eth_zero_addr(eth->h_dest);
 		return ETH_HLEN;
 	}
 
@@ -357,7 +357,7 @@ void ether_setup(struct net_device *dev)
 	dev->flags		= IFF_BROADCAST|IFF_MULTICAST;
 	dev->priv_flags		|= IFF_TX_SKB_SHARING;
 
-	memset(dev->broadcast, 0xFF, ETH_ALEN);
+	eth_broadcast_addr(dev->broadcast);
 
 }
 EXPORT_SYMBOL(ether_setup);
-- 
2.1.2


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

* [PATCH net-next 12/14] mac80211: Use eth_<foo>_addr instead of memset
  2015-03-03  3:54 [PATCH net-next 00/14] Use eth_<foo>_addr instead of memset Joe Perches
                   ` (10 preceding siblings ...)
  2015-03-03  3:54 ` [PATCH net-next 11/14] ethernet: " Joe Perches
@ 2015-03-03  3:54 ` Joe Perches
  2015-03-03  3:54 ` [PATCH net-next 13/14] wireless: " Joe Perches
  2015-03-03  3:54 ` [PATCH net-next 14/14] l2tp: " Joe Perches
  13 siblings, 0 replies; 42+ messages in thread
From: Joe Perches @ 2015-03-03  3:54 UTC (permalink / raw)
  To: netdev, Johannes Berg; +Cc: David S. Miller, linux-wireless, linux-kernel

Use the built-in function instead of memset.

Signed-off-by: Joe Perches <joe@perches.com>
---
 net/mac80211/cfg.c  |  2 +-
 net/mac80211/ibss.c |  2 +-
 net/mac80211/mesh.c |  2 +-
 net/mac80211/mlme.c | 10 +++++-----
 4 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c
index dd4ff36..74f509c 100644
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
@@ -1488,7 +1488,7 @@ static void mpath_set_pinfo(struct mesh_path *mpath, u8 *next_hop,
 	if (next_hop_sta)
 		memcpy(next_hop, next_hop_sta->sta.addr, ETH_ALEN);
 	else
-		memset(next_hop, 0, ETH_ALEN);
+		eth_zero_addr(next_hop);
 
 	memset(pinfo, 0, sizeof(*pinfo));
 
diff --git a/net/mac80211/ibss.c b/net/mac80211/ibss.c
index b606b53..f9b0758 100644
--- a/net/mac80211/ibss.c
+++ b/net/mac80211/ibss.c
@@ -1742,7 +1742,7 @@ int ieee80211_ibss_leave(struct ieee80211_sub_if_data *sdata)
 
 	ieee80211_ibss_disconnect(sdata);
 	ifibss->ssid_len = 0;
-	memset(ifibss->bssid, 0, ETH_ALEN);
+	eth_zero_addr(ifibss->bssid);
 
 	/* remove beacon */
 	kfree(sdata->u.ibss.ie);
diff --git a/net/mac80211/mesh.c b/net/mac80211/mesh.c
index 0c8b2a7..49a44bc 100644
--- a/net/mac80211/mesh.c
+++ b/net/mac80211/mesh.c
@@ -520,7 +520,7 @@ int ieee80211_fill_mesh_addresses(struct ieee80211_hdr *hdr, __le16 *fc,
 	} else {
 		*fc |= cpu_to_le16(IEEE80211_FCTL_FROMDS | IEEE80211_FCTL_TODS);
 		/* RA TA DA SA */
-		memset(hdr->addr1, 0, ETH_ALEN);   /* RA is resolved later */
+		eth_zero_addr(hdr->addr1);   /* RA is resolved later */
 		memcpy(hdr->addr2, meshsa, ETH_ALEN);
 		memcpy(hdr->addr3, meshda, ETH_ALEN);
 		memcpy(hdr->addr4, meshsa, ETH_ALEN);
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index 10ac632..9f6f356 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -2033,7 +2033,7 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata,
 		ieee80211_flush_queues(local, sdata, false);
 
 	/* clear bssid only after building the needed mgmt frames */
-	memset(ifmgd->bssid, 0, ETH_ALEN);
+	eth_zero_addr(ifmgd->bssid);
 
 	/* remove AP and TDLS peers */
 	sta_info_flush(sdata);
@@ -2464,7 +2464,7 @@ static void ieee80211_destroy_auth_data(struct ieee80211_sub_if_data *sdata,
 		del_timer_sync(&sdata->u.mgd.timer);
 		sta_info_destroy_addr(sdata, auth_data->bss->bssid);
 
-		memset(sdata->u.mgd.bssid, 0, ETH_ALEN);
+		eth_zero_addr(sdata->u.mgd.bssid);
 		ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_BSSID);
 		sdata->u.mgd.flags = 0;
 		mutex_lock(&sdata->local->mtx);
@@ -2777,7 +2777,7 @@ static void ieee80211_destroy_assoc_data(struct ieee80211_sub_if_data *sdata,
 		del_timer_sync(&sdata->u.mgd.timer);
 		sta_info_destroy_addr(sdata, assoc_data->bss->bssid);
 
-		memset(sdata->u.mgd.bssid, 0, ETH_ALEN);
+		eth_zero_addr(sdata->u.mgd.bssid);
 		ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_BSSID);
 		sdata->u.mgd.flags = 0;
 		mutex_lock(&sdata->local->mtx);
@@ -4474,7 +4474,7 @@ int ieee80211_mgd_auth(struct ieee80211_sub_if_data *sdata,
 	return 0;
 
  err_clear:
-	memset(ifmgd->bssid, 0, ETH_ALEN);
+	eth_zero_addr(ifmgd->bssid);
 	ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_BSSID);
 	ifmgd->auth_data = NULL;
  err_free:
@@ -4817,7 +4817,7 @@ int ieee80211_mgd_assoc(struct ieee80211_sub_if_data *sdata,
 
 	return 0;
  err_clear:
-	memset(ifmgd->bssid, 0, ETH_ALEN);
+	eth_zero_addr(ifmgd->bssid);
 	ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_BSSID);
 	ifmgd->assoc_data = NULL;
  err_free:
-- 
2.1.2


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

* [PATCH net-next 13/14] wireless: Use eth_<foo>_addr instead of memset
  2015-03-03  3:54 [PATCH net-next 00/14] Use eth_<foo>_addr instead of memset Joe Perches
                   ` (11 preceding siblings ...)
  2015-03-03  3:54 ` [PATCH net-next 12/14] mac80211: " Joe Perches
@ 2015-03-03  3:54 ` Joe Perches
  2015-03-03  8:16   ` Johannes Berg
  2015-03-03  3:54 ` [PATCH net-next 14/14] l2tp: " Joe Perches
  13 siblings, 1 reply; 42+ messages in thread
From: Joe Perches @ 2015-03-03  3:54 UTC (permalink / raw)
  To: netdev, Johannes Berg; +Cc: David S. Miller, linux-wireless, linux-kernel

Use the built-in function instead of memset.

Signed-off-by: Joe Perches <joe@perches.com>
---
 net/wireless/ibss.c     | 2 +-
 net/wireless/nl80211.c  | 4 ++--
 net/wireless/trace.h    | 9 +++++----
 net/wireless/wext-sme.c | 2 +-
 4 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/net/wireless/ibss.c b/net/wireless/ibss.c
index e24fc58..6309b9c 100644
--- a/net/wireless/ibss.c
+++ b/net/wireless/ibss.c
@@ -533,7 +533,7 @@ int cfg80211_ibss_wext_giwap(struct net_device *dev,
 	else if (wdev->wext.ibss.bssid)
 		memcpy(ap_addr->sa_data, wdev->wext.ibss.bssid, ETH_ALEN);
 	else
-		memset(ap_addr->sa_data, 0, ETH_ALEN);
+		eth_zero_addr(ap_addr->sa_data);
 
 	wdev_unlock(wdev);
 
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index d78fd8b..96fe328 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -5683,8 +5683,8 @@ static int nl80211_parse_random_mac(struct nlattr **attrs,
 	int i;
 
 	if (!attrs[NL80211_ATTR_MAC] && !attrs[NL80211_ATTR_MAC_MASK]) {
-		memset(mac_addr, 0, ETH_ALEN);
-		memset(mac_addr_mask, 0, ETH_ALEN);
+		eth_zero_addr(mac_addr);
+		eth_zero_addr(mac_addr_mask);
 		mac_addr[0] = 0x2;
 		mac_addr_mask[0] = 0x3;
 
diff --git a/net/wireless/trace.h b/net/wireless/trace.h
index b17b369..a00ee88 100644
--- a/net/wireless/trace.h
+++ b/net/wireless/trace.h
@@ -7,6 +7,7 @@
 #include <linux/tracepoint.h>
 
 #include <linux/rtnetlink.h>
+#include <linux/etherdevice.h>
 #include <net/cfg80211.h>
 #include "core.h"
 
@@ -15,7 +16,7 @@
 	if (given_mac)						     \
 		memcpy(__entry->entry_mac, given_mac, ETH_ALEN);     \
 	else							     \
-		memset(__entry->entry_mac, 0, ETH_ALEN);	     \
+		eth_zero_addr(__entry->entry_mac);		     \
 	} while (0)
 #define MAC_PR_FMT "%pM"
 #define MAC_PR_ARG(entry_mac) (__entry->entry_mac)
@@ -1077,7 +1078,7 @@ TRACE_EVENT(rdev_auth,
 		if (req->bss)
 			MAC_ASSIGN(bssid, req->bss->bssid);
 		else
-			memset(__entry->bssid, 0, ETH_ALEN);
+			eth_zero_addr(__entry->bssid);
 		__entry->auth_type = req->auth_type;
 	),
 	TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", auth type: %d, bssid: " MAC_PR_FMT,
@@ -1103,7 +1104,7 @@ TRACE_EVENT(rdev_assoc,
 		if (req->bss)
 			MAC_ASSIGN(bssid, req->bss->bssid);
 		else
-			memset(__entry->bssid, 0, ETH_ALEN);
+			eth_zero_addr(__entry->bssid);
 		MAC_ASSIGN(prev_bssid, req->prev_bssid);
 		__entry->use_mfp = req->use_mfp;
 		__entry->flags = req->flags;
@@ -1153,7 +1154,7 @@ TRACE_EVENT(rdev_disassoc,
 		if (req->bss)
 			MAC_ASSIGN(bssid, req->bss->bssid);
 		else
-			memset(__entry->bssid, 0, ETH_ALEN);
+			eth_zero_addr(__entry->bssid);
 		__entry->reason_code = req->reason_code;
 		__entry->local_state_change = req->local_state_change;
 	),
diff --git a/net/wireless/wext-sme.c b/net/wireless/wext-sme.c
index 368611c..a4e8af3 100644
--- a/net/wireless/wext-sme.c
+++ b/net/wireless/wext-sme.c
@@ -322,7 +322,7 @@ int cfg80211_mgd_wext_giwap(struct net_device *dev,
 	if (wdev->current_bss)
 		memcpy(ap_addr->sa_data, wdev->current_bss->pub.bssid, ETH_ALEN);
 	else
-		memset(ap_addr->sa_data, 0, ETH_ALEN);
+		eth_zero_addr(ap_addr->sa_data);
 	wdev_unlock(wdev);
 
 	return 0;
-- 
2.1.2


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

* [PATCH net-next 14/14] l2tp: Use eth_<foo>_addr instead of memset
  2015-03-03  3:54 [PATCH net-next 00/14] Use eth_<foo>_addr instead of memset Joe Perches
                   ` (12 preceding siblings ...)
  2015-03-03  3:54 ` [PATCH net-next 13/14] wireless: " Joe Perches
@ 2015-03-03  3:54 ` Joe Perches
  13 siblings, 0 replies; 42+ messages in thread
From: Joe Perches @ 2015-03-03  3:54 UTC (permalink / raw)
  To: netdev, linux-kernel; +Cc: David S. Miller

Use the built-in function instead of memset.

Signed-off-by: Joe Perches <joe@perches.com>
---
 net/l2tp/l2tp_eth.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/l2tp/l2tp_eth.c b/net/l2tp/l2tp_eth.c
index 781b3a2..4b55287 100644
--- a/net/l2tp/l2tp_eth.c
+++ b/net/l2tp/l2tp_eth.c
@@ -74,7 +74,7 @@ static int l2tp_eth_dev_init(struct net_device *dev)
 
 	priv->dev = dev;
 	eth_hw_addr_random(dev);
-	memset(&dev->broadcast[0], 0xff, 6);
+	eth_broadcast_addr(dev->broadcast);
 	dev->qdisc_tx_busylock = &l2tp_eth_tx_busylock;
 	return 0;
 }
-- 
2.1.2


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

* Re: [PATCH net-next 02/14] ethernet: Use eth_<foo>_addr instead of memset
  2015-03-03  3:54 ` [PATCH net-next 02/14] ethernet: Use eth_<foo>_addr instead of memset Joe Perches
@ 2015-03-03  4:09   ` Jeff Kirsher
  2015-03-05  5:39   ` Don Fry
  1 sibling, 0 replies; 42+ messages in thread
From: Jeff Kirsher @ 2015-03-03  4:09 UTC (permalink / raw)
  To: Joe Perches
  Cc: netdev, Don Fry, Ariel Elior, Christian Benvenuti, Sujith Sankar,
	Govindarajulu Varadarajan, Neel Patel, Sathya Perla,
	Subbu Seetharaman, Ajit Khaparde, Jesse Brandeburg, Bruce Allan,
	Carolyn Wyborny, Don Skidmore, Greg Rose, Matthew Vick,
	John Ronciak, Mitch Williams, Linux NICS, Amir Vadai,
	Manish Chopra, Sony Chacko, Rajesh Borundia, Harish Patil,
	Sudarsana Kalluru, Dept-GELinuxNICDev, linux-driver,
	Steve Glendinning, Wingman Kwok, Murali Karicheri,
	Krzysztof Halasa, linux-kernel, e1000-devel

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

On Mon, 2015-03-02 at 19:54 -0800, Joe Perches wrote:
> Use the built-in function instead of memset.
> 
> Signed-off-by: Joe Perches <joe@perches.com>

Acked-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
for the changes to Intel's ixgbe driver...

> ---
>  drivers/net/ethernet/amd/pcnet32.c                  | 2 +-
>  drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c | 2 +-
>  drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c    | 6 +++---
>  drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.c   | 2 +-
>  drivers/net/ethernet/cisco/enic/enic_main.c         | 8 ++++----
>  drivers/net/ethernet/emulex/benet/be_cmds.c         | 2 +-
>  drivers/net/ethernet/emulex/benet/be_main.c         | 2 +-
>  drivers/net/ethernet/intel/ixgbe/ixgbe_main.c       | 4 ++--
>  drivers/net/ethernet/mellanox/mlx4/en_netdev.c      | 4 ++--
>  drivers/net/ethernet/mellanox/mlx4/en_selftest.c    | 2 +-
>  drivers/net/ethernet/micrel/ksz884x.c               | 2 +-
>  drivers/net/ethernet/qlogic/netxen/netxen_nic_hw.c  | 2 +-
>  drivers/net/ethernet/qlogic/qlge/qlge_main.c        | 2 +-
>  drivers/net/ethernet/smsc/smsc911x.c                | 2 +-
>  drivers/net/ethernet/ti/netcp_core.c                | 2 +-
>  drivers/net/ethernet/toshiba/ps3_gelic_wireless.c   | 4 ++--
>  drivers/net/ethernet/xscale/ixp4xx_eth.c            | 2 +-
>  17 files changed, 25 insertions(+), 25 deletions(-)
...
> diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
> index 70cc4c5..903664f 100644
> --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
> +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
> @@ -3924,7 +3924,7 @@ static void ixgbe_flush_sw_mac_table(struct ixgbe_adapter *adapter)
>  	for (i = 0; i < hw->mac.num_rar_entries; i++) {
>  		adapter->mac_table[i].state |= IXGBE_MAC_STATE_MODIFIED;
>  		adapter->mac_table[i].state &= ~IXGBE_MAC_STATE_IN_USE;
> -		memset(adapter->mac_table[i].addr, 0, ETH_ALEN);
> +		eth_zero_addr(adapter->mac_table[i].addr);
>  		adapter->mac_table[i].queue = 0;
>  	}
>  	ixgbe_sync_mac_table(adapter);
> @@ -3992,7 +3992,7 @@ int ixgbe_del_mac_filter(struct ixgbe_adapter *adapter, u8 *addr, u16 queue)
>  		    adapter->mac_table[i].queue == queue) {
>  			adapter->mac_table[i].state |= IXGBE_MAC_STATE_MODIFIED;
>  			adapter->mac_table[i].state &= ~IXGBE_MAC_STATE_IN_USE;
> -			memset(adapter->mac_table[i].addr, 0, ETH_ALEN);
> +			eth_zero_addr(adapter->mac_table[i].addr);
>  			adapter->mac_table[i].queue = 0;
>  			ixgbe_sync_mac_table(adapter);
>  			return 0;


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

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

* Re: [PATCH net-next 10/14] bluetooth: Use eth_<foo>_addr instead of memset
  2015-03-03  3:54 ` [PATCH net-next 10/14] bluetooth: " Joe Perches
@ 2015-03-03  7:04   ` Marcel Holtmann
  0 siblings, 0 replies; 42+ messages in thread
From: Marcel Holtmann @ 2015-03-03  7:04 UTC (permalink / raw)
  To: Joe Perches
  Cc: netdev, LKML, Gustavo F. Padovan, Johan Hedberg, David S. Miller,
	linux-bluetooth

Hi Joe,

> Use the built-in function instead of memset.
> 
> Signed-off-by: Joe Perches <joe@perches.com>
> ---
> net/bluetooth/bnep/netdev.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/net/bluetooth/bnep/netdev.c b/net/bluetooth/bnep/netdev.c
> index 4b488ec..6ceb5d3 100644
> --- a/net/bluetooth/bnep/netdev.c
> +++ b/net/bluetooth/bnep/netdev.c
> @@ -218,7 +218,7 @@ static const struct net_device_ops bnep_netdev_ops = {
> void bnep_net_setup(struct net_device *dev)
> {
> 
> -	memset(dev->broadcast, 0xff, ETH_ALEN);
> +	eth_broadcast_addr(dev->broadcast);
> 	dev->addr_len = ETH_ALEN;

Acked-by: Marcel Holtmann <marcel@holtmann.org>

Regards

Marcel


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

* Re: [PATCH net-next 13/14] wireless: Use eth_<foo>_addr instead of memset
  2015-03-03  3:54 ` [PATCH net-next 13/14] wireless: " Joe Perches
@ 2015-03-03  8:16   ` Johannes Berg
  2015-03-03  8:37     ` Joe Perches
  2015-03-03 18:57     ` David Miller
  0 siblings, 2 replies; 42+ messages in thread
From: Johannes Berg @ 2015-03-03  8:16 UTC (permalink / raw)
  To: Joe Perches; +Cc: netdev, David S. Miller, linux-wireless, linux-kernel

On Mon, 2015-03-02 at 19:54 -0800, Joe Perches wrote:
> Use the built-in function instead of memset.

Please don't use <foo> in the title, especially not if the patch only
introduces usage of eth_zero_addr(). It's easier to look for in the
commit log without it.

Other than that, I guess I'll apply this, but I really wish there was a
way to distinguish more easily which of these require alignment and
which don't.

eth_zero_addr() doesn,t but is_zero_ether_addr() does. So does
ether_addr_copy(). Frankly, it's getting a bit confusing, so I can't
really fault anyone for using memset()/memcpy().

johannes


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

* Re: [PATCH net-next 13/14] wireless: Use eth_<foo>_addr instead of memset
  2015-03-03  8:16   ` Johannes Berg
@ 2015-03-03  8:37     ` Joe Perches
  2015-03-03  8:44       ` Johannes Berg
  2015-03-03 18:57     ` David Miller
  1 sibling, 1 reply; 42+ messages in thread
From: Joe Perches @ 2015-03-03  8:37 UTC (permalink / raw)
  To: Johannes Berg; +Cc: netdev, David S. Miller, linux-wireless, linux-kernel

On Tue, 2015-03-03 at 09:16 +0100, Johannes Berg wrote:
> On Mon, 2015-03-02 at 19:54 -0800, Joe Perches wrote:
> > Use the built-in function instead of memset.
> 
> Please don't use <foo> in the title, especially not if the patch only
> introduces usage of eth_zero_addr(). It's easier to look for in the
> commit log without it.
> 
> Other than that, I guess I'll apply this, but I really wish there was a
> way to distinguish more easily which of these require alignment and
> which don't.

My guess is the eth_zero_addr and eth_broadcast functions
are always taking aligned(2) arguments, just like all the
is_<foo>_ether_addr functions.

> eth_zero_addr() doesn,t but is_zero_ether_addr() does. So does
> ether_addr_copy(). Frankly, it's getting a bit confusing, so I can't
> really fault anyone for using memset()/memcpy().

I suspect more than anything else all these are historic.


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

* Re: [PATCH net-next 13/14] wireless: Use eth_<foo>_addr instead of memset
  2015-03-03  8:37     ` Joe Perches
@ 2015-03-03  8:44       ` Johannes Berg
  2015-03-03  8:52         ` Joe Perches
  0 siblings, 1 reply; 42+ messages in thread
From: Johannes Berg @ 2015-03-03  8:44 UTC (permalink / raw)
  To: Joe Perches; +Cc: netdev, David S. Miller, linux-wireless, linux-kernel


> > Other than that, I guess I'll apply this, but I really wish there was a
> > way to distinguish more easily which of these require alignment and
> > which don't.
> 
> My guess is the eth_zero_addr and eth_broadcast functions
> are always taking aligned(2) arguments, just like all the
> is_<foo>_ether_addr functions.

Err, are you serious??? That *clearly* isn't true, and if it was then
this patch wouldn't be safe at all.

> > eth_zero_addr() doesn,t but is_zero_ether_addr() does. So does
> > ether_addr_copy(). Frankly, it's getting a bit confusing, so I can't
> > really fault anyone for using memset()/memcpy().
> 
> I suspect more than anything else all these are historic.

I'd expect a mix here, certainly. Not all of them are really old though.

johannes


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

* Re: [PATCH net-next 13/14] wireless: Use eth_<foo>_addr instead of memset
  2015-03-03  8:44       ` Johannes Berg
@ 2015-03-03  8:52         ` Joe Perches
  2015-03-03  9:00           ` Johannes Berg
  0 siblings, 1 reply; 42+ messages in thread
From: Joe Perches @ 2015-03-03  8:52 UTC (permalink / raw)
  To: Johannes Berg; +Cc: netdev, David S. Miller, linux-wireless, linux-kernel

On Tue, 2015-03-03 at 09:44 +0100, Johannes Berg wrote:
> > > Other than that, I guess I'll apply this, but I really wish there was a
> > > way to distinguish more easily which of these require alignment and
> > > which don't.
> > 
> > My guess is the eth_zero_addr and eth_broadcast functions
> > are always taking aligned(2) arguments, just like all the
> > is_<foo>_ether_addr functions.
> 
> Err, are you serious???

Yes.

> That *clearly* isn't true, and if it was then
> this patch wouldn't be safe at all.

And why is that?

Until patch 1 of this series, eth_zero_addr and
eth_broadcast_addr was just an inline for a memset.

Even after patch 1, it's effectively still memset.


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

* Re: [PATCH net-next 13/14] wireless: Use eth_<foo>_addr instead of memset
  2015-03-03  8:52         ` Joe Perches
@ 2015-03-03  9:00           ` Johannes Berg
  2015-03-03 10:29             ` Joe Perches
  0 siblings, 1 reply; 42+ messages in thread
From: Johannes Berg @ 2015-03-03  9:00 UTC (permalink / raw)
  To: Joe Perches; +Cc: netdev, David S. Miller, linux-wireless, linux-kernel

On Tue, 2015-03-03 at 00:52 -0800, Joe Perches wrote:

> > > My guess is the eth_zero_addr and eth_broadcast functions
> > > are always taking aligned(2) arguments, just like all the
> > > is_<foo>_ether_addr functions.
> > 
> > Err, are you serious???
> 
> Yes.
> 
> > That *clearly* isn't true, and if it was then
> > this patch wouldn't be safe at all.
> 
> And why is that?
> 
> Until patch 1 of this series, eth_zero_addr and
> eth_broadcast_addr was just an inline for a memset.
> 
> Even after patch 1, it's effectively still memset.

Exactly. It therefore *doesn't* require an aligned(2) argument, unlike
what you stated above, hence my question if you're serious (and perhaps
looking at some other code that I don't have).

My argument/complaint is that it isn't obvious from these which ones do
require aligned(2) argument. Therefore, it's not obvious without going
back to the definitions where the conversion is safe and where it isn't.
Clearly, for example, memcmp() cannot always be replaced with
ether_addr_equal().

johannes


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

* Re: [PATCH net-next 06/14] xen: Use eth_<foo>_addr instead of memset
  2015-03-03  3:54 ` [PATCH net-next 06/14] xen: " Joe Perches
@ 2015-03-03 10:05   ` Ian Campbell
  2015-03-03 10:13   ` Wei Liu
  1 sibling, 0 replies; 42+ messages in thread
From: Ian Campbell @ 2015-03-03 10:05 UTC (permalink / raw)
  To: Joe Perches; +Cc: netdev, Wei Liu, xen-devel, linux-kernel

On Mon, 2015-03-02 at 19:54 -0800, Joe Perches wrote:
> Use the built-in function instead of memset.
> 
> Signed-off-by: Joe Perches <joe@perches.com>

Acked-by: Ian Campbell <ian.campbell@citrix.com>



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

* Re: [PATCH net-next 06/14] xen: Use eth_<foo>_addr instead of memset
  2015-03-03  3:54 ` [PATCH net-next 06/14] xen: " Joe Perches
  2015-03-03 10:05   ` Ian Campbell
@ 2015-03-03 10:13   ` Wei Liu
  1 sibling, 0 replies; 42+ messages in thread
From: Wei Liu @ 2015-03-03 10:13 UTC (permalink / raw)
  To: Joe Perches; +Cc: netdev, Ian Campbell, Wei Liu, xen-devel, linux-kernel

On Mon, Mar 02, 2015 at 07:54:51PM -0800, Joe Perches wrote:
> Use the built-in function instead of memset.
> 
> Signed-off-by: Joe Perches <joe@perches.com>

Acked-by: Wei Liu <wei.liu2@citrix.com>

> ---
>  drivers/net/xen-netback/interface.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/net/xen-netback/interface.c b/drivers/net/xen-netback/interface.c
> index f38227a..4ae98e2 100644
> --- a/drivers/net/xen-netback/interface.c
> +++ b/drivers/net/xen-netback/interface.c
> @@ -438,7 +438,7 @@ struct xenvif *xenvif_alloc(struct device *parent, domid_t domid,
>  	 * stolen by an Ethernet bridge for STP purposes.
>  	 * (FE:FF:FF:FF:FF:FF)
>  	 */
> -	memset(dev->dev_addr, 0xFF, ETH_ALEN);
> +	eth_broadcast_addr(dev->dev_addr);
>  	dev->dev_addr[0] &= ~0x01;
>  
>  	netif_carrier_off(dev);
> -- 
> 2.1.2

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

* Re: [PATCH net-next 13/14] wireless: Use eth_<foo>_addr instead of memset
  2015-03-03  9:00           ` Johannes Berg
@ 2015-03-03 10:29             ` Joe Perches
  2015-03-03 10:34               ` Johannes Berg
  0 siblings, 1 reply; 42+ messages in thread
From: Joe Perches @ 2015-03-03 10:29 UTC (permalink / raw)
  To: Johannes Berg; +Cc: netdev, David S. Miller, linux-wireless, linux-kernel

On Tue, 2015-03-03 at 10:00 +0100, Johannes Berg wrote:
> On Tue, 2015-03-03 at 00:52 -0800, Joe Perches wrote:
> 
> > > > My guess is the eth_zero_addr and eth_broadcast functions
> > > > are always taking aligned(2) arguments, just like all the
> > > > is_<foo>_ether_addr functions.
> > > 
> > > Err, are you serious???
> > 
> > Yes.
> > 
> > > That *clearly* isn't true, and if it was then
> > > this patch wouldn't be safe at all.
> > 
> > And why is that?
> > 
> > Until patch 1 of this series, eth_zero_addr and
> > eth_broadcast_addr was just an inline for a memset.
> > 
> > Even after patch 1, it's effectively still memset.
> 
> Exactly. It therefore *doesn't* require an aligned(2) argument, unlike
> what you stated above, hence my question if you're serious (and perhaps
> looking at some other code that I don't have).

Nope, you simply misunderstood what I did write.

What I said was that the arguments were likely
already aligned(2), not that the alignment was
a requirement.



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

* Re: [PATCH net-next 13/14] wireless: Use eth_<foo>_addr instead of memset
  2015-03-03 10:29             ` Joe Perches
@ 2015-03-03 10:34               ` Johannes Berg
  0 siblings, 0 replies; 42+ messages in thread
From: Johannes Berg @ 2015-03-03 10:34 UTC (permalink / raw)
  To: Joe Perches; +Cc: netdev, David S. Miller, linux-wireless, linux-kernel

On Tue, 2015-03-03 at 02:29 -0800, Joe Perches wrote:

> Nope, you simply misunderstood what I did write.
> 
> What I said was that the arguments were likely
> already aligned(2), not that the alignment was
> a requirement.

Fair enough. That's not actually true/guaranteed though as far as this
patch is concerned.

johannes


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

* Re: [PATCH net-next 01/14] etherdevice: Add eth_<foo>_addr CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS code
  2015-03-03  3:54 ` [PATCH net-next 01/14] etherdevice: Add eth_<foo>_addr CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS code Joe Perches
@ 2015-03-03 13:19   ` Eric Dumazet
  2015-03-03 18:25     ` Joe Perches
  0 siblings, 1 reply; 42+ messages in thread
From: Eric Dumazet @ 2015-03-03 13:19 UTC (permalink / raw)
  To: Joe Perches; +Cc: netdev, linux-kernel

On Mon, 2015-03-02 at 19:54 -0800, Joe Perches wrote:
> Make the memset possibly more efficient with the appropriate
> CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS #ifdef
> 
> Signed-off-by: Joe Perches <joe@perches.com>
> ---
>  include/linux/etherdevice.h | 12 +++++++++++-
>  1 file changed, 11 insertions(+), 1 deletion(-)
> 
> diff --git a/include/linux/etherdevice.h b/include/linux/etherdevice.h
> index 606563e..22ad94a 100644
> --- a/include/linux/etherdevice.h
> +++ b/include/linux/etherdevice.h
> @@ -192,7 +192,12 @@ static inline void eth_random_addr(u8 *addr)
>   */
>  static inline void eth_broadcast_addr(u8 *addr)
>  {
> +#if defined(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS)
> +	*(u32 *)addr = 0xffffffff;
> +	*(u16 *)(addr + 4) = 0xffff;
> +#else
>  	memset(addr, 0xff, ETH_ALEN);
> +#endif
>  }
>  

I am pretty sure compiler already does an inline, and might chose to 
emit equivalent instructions for :
 *(u16 *) addr = 0xffff;
 *(u32 *)(addr + 2) = 0xffffffff;

if (addr % 4) is known to be 2



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

* Re: [PATCH net-next 01/14] etherdevice: Add eth_<foo>_addr CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS code
  2015-03-03 13:19   ` Eric Dumazet
@ 2015-03-03 18:25     ` Joe Perches
  2015-03-03 18:42       ` Eric Dumazet
  0 siblings, 1 reply; 42+ messages in thread
From: Joe Perches @ 2015-03-03 18:25 UTC (permalink / raw)
  To: Eric Dumazet; +Cc: netdev, linux-kernel

On Tue, 2015-03-03 at 05:19 -0800, Eric Dumazet wrote:
> On Mon, 2015-03-02 at 19:54 -0800, Joe Perches wrote:
> > Make the memset possibly more efficient with the appropriate
> > CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS #ifdef
[]
> > diff --git a/include/linux/etherdevice.h b/include/linux/etherdevice.h
[]
> > @@ -192,7 +192,12 @@ static inline void eth_random_addr(u8 *addr)
> >   */
> >  static inline void eth_broadcast_addr(u8 *addr)
> >  {
> > +#if defined(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS)
> > +	*(u32 *)addr = 0xffffffff;
> > +	*(u16 *)(addr + 4) = 0xffff;
> > +#else
> >  	memset(addr, 0xff, ETH_ALEN);
> > +#endif
> >  }
> >  
> 
> I am pretty sure compiler already does an inline, and might chose to 
> emit equivalent instructions for :
>  *(u16 *) addr = 0xffff;
>  *(u32 *)(addr + 2) = 0xffffffff;
> 
> if (addr % 4) is known to be 2

(cross-compiled on x86)

At least for arm gcc 4.6.3, it emits different code
for net/l2tp/l2tp_eth.o

old:

-    1cc0:	e3a010ff 	mov	r1, #255	; 0xff
-    1cc4:	e3a02006 	mov	r2, #6
-    1cc8:	e3c33001 	bic	r3, r3, #1
-    1ccc:	e3833002 	orr	r3, r3, #2
-    1cd0:	e5c53000 	strb	r3, [r5]
-    1cd4:	ebfffffe 	bl	0 <memset>
-    1cc8:	e3c33001 	bic	r3, r3, #1

new:

+    1cc0:	e3a02f8a 	mov	r2, #552	; 0x228
+    1cc4:	e3c33001 	bic	r3, r3, #1
+    1cc8:	e3833002 	orr	r3, r3, #2
+    1ccc:	e5c53000 	strb	r3, [r5]
+    1cd0:	e3e03000 	mvn	r3, #0
+    1cd4:	e5843224 	str	r3, [r4, #548]	; 0x224
+    1cd8:	e18430b2 	strh	r3, [r4, r2]



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

* Re: [PATCH net-next 01/14] etherdevice: Add eth_<foo>_addr CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS code
  2015-03-03 18:25     ` Joe Perches
@ 2015-03-03 18:42       ` Eric Dumazet
  2015-03-03 19:07         ` Joe Perches
  2015-03-03 19:26         ` David Miller
  0 siblings, 2 replies; 42+ messages in thread
From: Eric Dumazet @ 2015-03-03 18:42 UTC (permalink / raw)
  To: Joe Perches; +Cc: netdev, linux-kernel

On Tue, 2015-03-03 at 10:25 -0800, Joe Perches wrote:

> At least for arm gcc 4.6.3, it emits different code
> for net/l2tp/l2tp_eth.o

Then it looks like arm gcc or arm linux memset() should be improved.

Tracking all memset(x, y, 6) and replace them by some custom version
seems not very generic to me, when something better can be done.




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

* Re: [PATCH net-next 13/14] wireless: Use eth_<foo>_addr instead of memset
  2015-03-03  8:16   ` Johannes Berg
  2015-03-03  8:37     ` Joe Perches
@ 2015-03-03 18:57     ` David Miller
  2015-03-03 19:03       ` Joe Perches
  2015-03-03 19:16       ` Johannes Berg
  1 sibling, 2 replies; 42+ messages in thread
From: David Miller @ 2015-03-03 18:57 UTC (permalink / raw)
  To: johannes; +Cc: joe, netdev, linux-wireless, linux-kernel

From: Johannes Berg <johannes@sipsolutions.net>
Date: Tue, 03 Mar 2015 09:16:57 +0100

> Other than that, I guess I'll apply this, but I really wish there was a
> way to distinguish more easily which of these require alignment and
> which don't.

You can't apply "this" without the dependency patch #1.

Therefore this should probably all go through my tree.

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

* Re: [PATCH net-next 13/14] wireless: Use eth_<foo>_addr instead of memset
  2015-03-03 18:57     ` David Miller
@ 2015-03-03 19:03       ` Joe Perches
  2015-03-03 19:27         ` David Miller
  2015-03-03 19:16       ` Johannes Berg
  1 sibling, 1 reply; 42+ messages in thread
From: Joe Perches @ 2015-03-03 19:03 UTC (permalink / raw)
  To: David Miller; +Cc: johannes, netdev, linux-wireless, linux-kernel

On Tue, 2015-03-03 at 13:57 -0500, David Miller wrote:
> From: Johannes Berg <johannes@sipsolutions.net>
> Date: Tue, 03 Mar 2015 09:16:57 +0100
> 
> > Other than that, I guess I'll apply this, but I really wish there was a
> > way to distinguish more easily which of these require alignment and
> > which don't.
> 
> You can't apply "this" without the dependency patch #1.
> 
> Therefore this should probably all go through my tree.

Hey David.

The eth_<foo>_addr functions already exist so
1/14 isn't a dependency.

It's just a trivial improvement on existing code
with CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS and
at least the arm 4.6.3 compiler.



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

* Re: [PATCH net-next 01/14] etherdevice: Add eth_<foo>_addr CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS code
  2015-03-03 18:42       ` Eric Dumazet
@ 2015-03-03 19:07         ` Joe Perches
  2015-03-03 19:27           ` David Miller
  2015-03-03 19:26         ` David Miller
  1 sibling, 1 reply; 42+ messages in thread
From: Joe Perches @ 2015-03-03 19:07 UTC (permalink / raw)
  To: Eric Dumazet; +Cc: netdev, linux-kernel

On Tue, 2015-03-03 at 10:42 -0800, Eric Dumazet wrote:
> On Tue, 2015-03-03 at 10:25 -0800, Joe Perches wrote:
> 
> > At least for arm gcc 4.6.3, it emits different code
> > for net/l2tp/l2tp_eth.o
> 
> Then it looks like arm gcc or arm linux memset() should be improved.

Perhaps you can take that up with the gcc folk.

I think it appropriate to improve the actual emitted
code for the compiler I use.

(it seems this code isn't fast-path anywhere though)

> Tracking all memset(x, y, 6) and replace them by some custom version
> seems not very generic to me, when something better can be done.

There's the same argument for the ether_addr_equal and
ether_addr_copy functions.

iow: memcmp, memcpy too

cheers, Joe


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

* Re: [PATCH net-next 13/14] wireless: Use eth_<foo>_addr instead of memset
  2015-03-03 18:57     ` David Miller
  2015-03-03 19:03       ` Joe Perches
@ 2015-03-03 19:16       ` Johannes Berg
  1 sibling, 0 replies; 42+ messages in thread
From: Johannes Berg @ 2015-03-03 19:16 UTC (permalink / raw)
  To: David Miller; +Cc: joe, netdev, linux-wireless, linux-kernel

On Tue, 2015-03-03 at 13:57 -0500, David Miller wrote:
> From: Johannes Berg <johannes@sipsolutions.net>
> Date: Tue, 03 Mar 2015 09:16:57 +0100
> 
> > Other than that, I guess I'll apply this, but I really wish there was a
> > way to distinguish more easily which of these require alignment and
> > which don't.
> 
> You can't apply "this" without the dependency patch #1.

Actually, this is the first time I see patch #1, but since it depends on
HAVE_EFFICIENT_UNALIGNED_ACCESS it doesn't really matter, the functions
already exist.

I'm not even sure that the memset in patch #1 really gets more efficient
with the u32/u16 write (and if it does, why doesn't the compiler know
it) so I guess I'm not even sure I see much point in patch #1, but that
doesn't really matter.

Anyway, I don't mind if you want to take this directly either, just let
me know.

johannes



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

* Re: [PATCH net-next 01/14] etherdevice: Add eth_<foo>_addr CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS code
  2015-03-03 18:42       ` Eric Dumazet
  2015-03-03 19:07         ` Joe Perches
@ 2015-03-03 19:26         ` David Miller
  1 sibling, 0 replies; 42+ messages in thread
From: David Miller @ 2015-03-03 19:26 UTC (permalink / raw)
  To: eric.dumazet; +Cc: joe, netdev, linux-kernel

From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Tue, 03 Mar 2015 10:42:05 -0800

> On Tue, 2015-03-03 at 10:25 -0800, Joe Perches wrote:
> 
>> At least for arm gcc 4.6.3, it emits different code
>> for net/l2tp/l2tp_eth.o
> 
> Then it looks like arm gcc or arm linux memset() should be improved.
> 
> Tracking all memset(x, y, 6) and replace them by some custom version
> seems not very generic to me, when something better can be done.

+1, and none of this stuff is on the fast path anyways.

I think I'll skip this series fornow.

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

* Re: [PATCH net-next 13/14] wireless: Use eth_<foo>_addr instead of memset
  2015-03-03 19:03       ` Joe Perches
@ 2015-03-03 19:27         ` David Miller
  0 siblings, 0 replies; 42+ messages in thread
From: David Miller @ 2015-03-03 19:27 UTC (permalink / raw)
  To: joe; +Cc: johannes, netdev, linux-wireless, linux-kernel

From: Joe Perches <joe@perches.com>
Date: Tue, 03 Mar 2015 11:03:17 -0800

> On Tue, 2015-03-03 at 13:57 -0500, David Miller wrote:
>> From: Johannes Berg <johannes@sipsolutions.net>
>> Date: Tue, 03 Mar 2015 09:16:57 +0100
>> 
>> > Other than that, I guess I'll apply this, but I really wish there was a
>> > way to distinguish more easily which of these require alignment and
>> > which don't.
>> 
>> You can't apply "this" without the dependency patch #1.
>> 
>> Therefore this should probably all go through my tree.
> 
> Hey David.
> 
> The eth_<foo>_addr functions already exist so
> 1/14 isn't a dependency.
> 
> It's just a trivial improvement on existing code
> with CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS and
> at least the arm 4.6.3 compiler.

You're right.  But I think we're skipping this series for now, see
my other reply.

If GCC can't emit as good an inline memset as we can come up with
for 6 byte constant lengths, that's a GCC bug that should be fixed.

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

* Re: [PATCH net-next 01/14] etherdevice: Add eth_<foo>_addr CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS code
  2015-03-03 19:07         ` Joe Perches
@ 2015-03-03 19:27           ` David Miller
  2015-03-03 19:41             ` Joe Perches
  0 siblings, 1 reply; 42+ messages in thread
From: David Miller @ 2015-03-03 19:27 UTC (permalink / raw)
  To: joe; +Cc: eric.dumazet, netdev, linux-kernel

From: Joe Perches <joe@perches.com>
Date: Tue, 03 Mar 2015 11:07:51 -0800

> On Tue, 2015-03-03 at 10:42 -0800, Eric Dumazet wrote:
>> On Tue, 2015-03-03 at 10:25 -0800, Joe Perches wrote:
>> 
>> > At least for arm gcc 4.6.3, it emits different code
>> > for net/l2tp/l2tp_eth.o
>> 
>> Then it looks like arm gcc or arm linux memset() should be improved.
> 
> Perhaps you can take that up with the gcc folk.
> 
> I think it appropriate to improve the actual emitted
> code for the compiler I use.

In the long term, this is poor time spent.  If you fixed GCC
everyone would benefit in the world, not just kernel builders.

Furthermore, none of this crap is in the fast path of anything.

I'm not applying this series, it's basis is not well founded
yet you keep trying to argue otherwise.

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

* Re: [PATCH net-next 01/14] etherdevice: Add eth_<foo>_addr CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS code
  2015-03-03 19:27           ` David Miller
@ 2015-03-03 19:41             ` Joe Perches
  2015-03-03 19:56               ` Eric Dumazet
  2015-03-03 19:58               ` David Miller
  0 siblings, 2 replies; 42+ messages in thread
From: Joe Perches @ 2015-03-03 19:41 UTC (permalink / raw)
  To: David Miller; +Cc: eric.dumazet, netdev, linux-kernel

On Tue, 2015-03-03 at 14:27 -0500, David Miller wrote:
> From: Joe Perches <joe@perches.com>
> Date: Tue, 03 Mar 2015 11:07:51 -0800
> > On Tue, 2015-03-03 at 10:42 -0800, Eric Dumazet wrote:
> >> On Tue, 2015-03-03 at 10:25 -0800, Joe Perches wrote:
> >> 
> >> > At least for arm gcc 4.6.3, it emits different code
> >> > for net/l2tp/l2tp_eth.o
> >> 
> >> Then it looks like arm gcc or arm linux memset() should be improved.
> > 
> > Perhaps you can take that up with the gcc folk.
> > 
> > I think it appropriate to improve the actual emitted
> > code for the compiler I use.
> 
> In the long term, this is poor time spent.  If you fixed GCC
> everyone would benefit in the world, not just kernel builders.
> 
> Furthermore, none of this crap is in the fast path of anything.
> 
> I'm not applying this series, it's basis is not well founded
> yet you keep trying to argue otherwise.

Until such time as the linux crosstools compilers are updated,
(they seem stuck on 4.6.3 from 3 years ago)
https://www.kernel.org/pub/tools/crosstool/
I think the series is a trivial, small improvement.

I believe that's the only "argument" I've made.

Your choice to apply it or not, but if the series
isn't appropriate, likely the existence of both
eth_zero_addr and eth_broadcast_addr is suspect too.

cheers, Joe


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

* Re: [PATCH net-next 01/14] etherdevice: Add eth_<foo>_addr CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS code
  2015-03-03 19:41             ` Joe Perches
@ 2015-03-03 19:56               ` Eric Dumazet
  2015-03-03 19:58               ` David Miller
  1 sibling, 0 replies; 42+ messages in thread
From: Eric Dumazet @ 2015-03-03 19:56 UTC (permalink / raw)
  To: Joe Perches; +Cc: David Miller, netdev, linux-kernel

On Tue, 2015-03-03 at 11:41 -0800, Joe Perches wrote:

> Until such time as the linux crosstools compilers are updated,
> (they seem stuck on 4.6.3 from 3 years ago)
> https://www.kernel.org/pub/tools/crosstool/
> I think the series is a trivial, small improvement.
> 
> I believe that's the only "argument" I've made.
> 
> Your choice to apply it or not, but if the series
> isn't appropriate, likely the existence of both
> eth_zero_addr and eth_broadcast_addr is suspect too.
> 

Please not that my objection was on patch 1/14 itself :

Using if defined(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS) in a slow path,
instead of leaving the existing memset() in place.

If people likes eth_broadcast_addr(), I have nothing against this.

Commit 6d57e9078e880a3dd232d579f42ac437a8f1ef7b
("etherdevice: introduce help function eth_zero_addr()")
was fine.


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

* Re: [PATCH net-next 01/14] etherdevice: Add eth_<foo>_addr CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS code
  2015-03-03 19:41             ` Joe Perches
  2015-03-03 19:56               ` Eric Dumazet
@ 2015-03-03 19:58               ` David Miller
  2015-03-03 20:04                 ` Joe Perches
  1 sibling, 1 reply; 42+ messages in thread
From: David Miller @ 2015-03-03 19:58 UTC (permalink / raw)
  To: joe; +Cc: eric.dumazet, netdev, linux-kernel

From: Joe Perches <joe@perches.com>
Date: Tue, 03 Mar 2015 11:41:09 -0800

> Until such time as the linux crosstools compilers are updated,
> (they seem stuck on 4.6.3 from 3 years ago)
> https://www.kernel.org/pub/tools/crosstool/
> I think the series is a trivial, small improvement.

You are even admitting that even for your specific case you are
using 3+ year old compiler technology.

These are slow paths, so correctness is the most important aspect.

Converting these locations to consistently use eth_*() is fine,
but then "optimizing" a 6 by memset for configuration paths when
the compiler should be more than capable of doing this just fine
is not convincing at all to me.

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

* Re: [PATCH net-next 01/14] etherdevice: Add eth_<foo>_addr CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS code
  2015-03-03 19:58               ` David Miller
@ 2015-03-03 20:04                 ` Joe Perches
  2015-03-03 22:01                   ` David Miller
  0 siblings, 1 reply; 42+ messages in thread
From: Joe Perches @ 2015-03-03 20:04 UTC (permalink / raw)
  To: David Miller; +Cc: eric.dumazet, netdev, linux-kernel

On Tue, 2015-03-03 at 14:58 -0500, David Miller wrote:
> From: Joe Perches <joe@perches.com>
> Date: Tue, 03 Mar 2015 11:41:09 -0800
> 
> > Until such time as the linux crosstools compilers are updated,
> > (they seem stuck on 4.6.3 from 3 years ago)
> > https://www.kernel.org/pub/tools/crosstool/
> > I think the series is a trivial, small improvement.
> 
> You are even admitting that even for your specific case you are
> using 3+ year old compiler technology.

That's what I said.  How is it an "admission"?
Those are the kernel.org "recommended" cross-compilers.

> These are slow paths, so correctness is the most important aspect.
> 
> Converting these locations to consistently use eth_*() is fine,
> but then "optimizing" a 6 by memset for configuration paths when
> the compiler should be more than capable of doing this just fine
> is not convincing at all to me.

Swell, then perhaps you could simply skip 1/14.


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

* Re: [PATCH net-next 01/14] etherdevice: Add eth_<foo>_addr CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS code
  2015-03-03 20:04                 ` Joe Perches
@ 2015-03-03 22:01                   ` David Miller
  0 siblings, 0 replies; 42+ messages in thread
From: David Miller @ 2015-03-03 22:01 UTC (permalink / raw)
  To: joe; +Cc: eric.dumazet, netdev, linux-kernel

From: Joe Perches <joe@perches.com>
Date: Tue, 03 Mar 2015 12:04:28 -0800

> On Tue, 2015-03-03 at 14:58 -0500, David Miller wrote:
>> From: Joe Perches <joe@perches.com>
>> Date: Tue, 03 Mar 2015 11:41:09 -0800
>> 
>> Converting these locations to consistently use eth_*() is fine,
>> but then "optimizing" a 6 by memset for configuration paths when
>> the compiler should be more than capable of doing this just fine
>> is not convincing at all to me.
> 
> Swell, then perhaps you could simply skip 1/14.

Yes, that's reasonable, applied to net-next.

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

* Re: [PATCH net-next 02/14] ethernet: Use eth_<foo>_addr instead of memset
  2015-03-03  3:54 ` [PATCH net-next 02/14] ethernet: Use eth_<foo>_addr instead of memset Joe Perches
  2015-03-03  4:09   ` Jeff Kirsher
@ 2015-03-05  5:39   ` Don Fry
  1 sibling, 0 replies; 42+ messages in thread
From: Don Fry @ 2015-03-05  5:39 UTC (permalink / raw)
  To: Joe Perches; +Cc: netdev, linux-kernel

On Mon, 2015-03-02 at 19:54 -0800, Joe Perches wrote:
> Use the built-in function instead of memset.
> 
> Signed-off-by: Joe Perches <joe@perches.com>

Acked-by: Don Fry <pcnet32@frontier.com>
for pcnet32.c

> ---
>  drivers/net/ethernet/amd/pcnet32.c                  | 2 +-
>  drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c | 2 +-
>  drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c    | 6 +++---
>  drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.c   | 2 +-
>  drivers/net/ethernet/cisco/enic/enic_main.c         | 8 ++++----
>  drivers/net/ethernet/emulex/benet/be_cmds.c         | 2 +-
>  drivers/net/ethernet/emulex/benet/be_main.c         | 2 +-
>  drivers/net/ethernet/intel/ixgbe/ixgbe_main.c       | 4 ++--
>  drivers/net/ethernet/mellanox/mlx4/en_netdev.c      | 4 ++--
>  drivers/net/ethernet/mellanox/mlx4/en_selftest.c    | 2 +-
>  drivers/net/ethernet/micrel/ksz884x.c               | 2 +-
>  drivers/net/ethernet/qlogic/netxen/netxen_nic_hw.c  | 2 +-
>  drivers/net/ethernet/qlogic/qlge/qlge_main.c        | 2 +-
>  drivers/net/ethernet/smsc/smsc911x.c                | 2 +-
>  drivers/net/ethernet/ti/netcp_core.c                | 2 +-
>  drivers/net/ethernet/toshiba/ps3_gelic_wireless.c   | 4 ++--
>  drivers/net/ethernet/xscale/ixp4xx_eth.c            | 2 +-
>  17 files changed, 25 insertions(+), 25 deletions(-)
> 
> diff --git a/drivers/net/ethernet/amd/pcnet32.c b/drivers/net/ethernet/amd/pcnet32.c
> index 11d6e65..8eb37e0 100644
> --- a/drivers/net/ethernet/amd/pcnet32.c
> +++ b/drivers/net/ethernet/amd/pcnet32.c
> @@ -1708,7 +1708,7 @@ pcnet32_probe1(unsigned long ioaddr, int shared, struct pci_dev *pdev)
>  
>  	/* if the ethernet address is not valid, force to 00:00:00:00:00:00 */
>  	if (!is_valid_ether_addr(dev->dev_addr))
> -		memset(dev->dev_addr, 0, ETH_ALEN);
> +		eth_zero_addr(dev->dev_addr);
>  
>  	if (pcnet32_debug & NETIF_MSG_PROBE) {
>  		pr_cont(" %pM", dev->dev_addr);



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

end of thread, other threads:[~2015-03-05  5:48 UTC | newest]

Thread overview: 42+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-03-03  3:54 [PATCH net-next 00/14] Use eth_<foo>_addr instead of memset Joe Perches
2015-03-03  3:54 ` [PATCH net-next 01/14] etherdevice: Add eth_<foo>_addr CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS code Joe Perches
2015-03-03 13:19   ` Eric Dumazet
2015-03-03 18:25     ` Joe Perches
2015-03-03 18:42       ` Eric Dumazet
2015-03-03 19:07         ` Joe Perches
2015-03-03 19:27           ` David Miller
2015-03-03 19:41             ` Joe Perches
2015-03-03 19:56               ` Eric Dumazet
2015-03-03 19:58               ` David Miller
2015-03-03 20:04                 ` Joe Perches
2015-03-03 22:01                   ` David Miller
2015-03-03 19:26         ` David Miller
2015-03-03  3:54 ` [PATCH net-next 02/14] ethernet: Use eth_<foo>_addr instead of memset Joe Perches
2015-03-03  4:09   ` Jeff Kirsher
2015-03-05  5:39   ` Don Fry
2015-03-03  3:54 ` [PATCH net-next 03/14] net: usb: " Joe Perches
2015-03-03  3:54 ` [PATCH net-next 04/14] wireless: " Joe Perches
2015-03-03  3:54 ` [PATCH net-next 05/14] netconsole: " Joe Perches
2015-03-03  3:54 ` [PATCH net-next 06/14] xen: " Joe Perches
2015-03-03 10:05   ` Ian Campbell
2015-03-03 10:13   ` Wei Liu
2015-03-03  3:54 ` [PATCH net-next 07/14] 8021q: " Joe Perches
2015-03-03  3:54 ` [PATCH net-next 08/14] appletalk: " Joe Perches
2015-03-03  3:54 ` [PATCH net-next 09/14] atm: " Joe Perches
2015-03-03  3:54 ` [PATCH net-next 10/14] bluetooth: " Joe Perches
2015-03-03  7:04   ` Marcel Holtmann
2015-03-03  3:54 ` [PATCH net-next 11/14] ethernet: " Joe Perches
2015-03-03  3:54 ` [PATCH net-next 12/14] mac80211: " Joe Perches
2015-03-03  3:54 ` [PATCH net-next 13/14] wireless: " Joe Perches
2015-03-03  8:16   ` Johannes Berg
2015-03-03  8:37     ` Joe Perches
2015-03-03  8:44       ` Johannes Berg
2015-03-03  8:52         ` Joe Perches
2015-03-03  9:00           ` Johannes Berg
2015-03-03 10:29             ` Joe Perches
2015-03-03 10:34               ` Johannes Berg
2015-03-03 18:57     ` David Miller
2015-03-03 19:03       ` Joe Perches
2015-03-03 19:27         ` David Miller
2015-03-03 19:16       ` Johannes Berg
2015-03-03  3:54 ` [PATCH net-next 14/14] l2tp: " Joe Perches

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