netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-2.6.24] introduce MAC_FMT/MAC_ARG
@ 2007-08-22 18:46 Johannes Berg
  2007-08-23 16:01 ` Joe Perches
  2007-08-26  0:09 ` Joe Perches
  0 siblings, 2 replies; 29+ messages in thread
From: Johannes Berg @ 2007-08-22 18:46 UTC (permalink / raw)
  To: David S. Miller; +Cc: netdev

The two different wireless code bases both define macros to ease
printing MAC addresses:

printk(KERN_INFO "MAC address is " MAC_FMT "\n", MAC_ARG(addr));

This patch moves those macros to if_ether.h and uses them all over the
tree.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>

---
 drivers/net/3c505.c         |    4 +---
 drivers/net/8139cp.c        |   11 ++---------
 drivers/net/82596.c         |    4 ++--
 drivers/net/a2065.c         |    4 +---
 drivers/net/acenic.c        |    6 ++----
 drivers/net/ariadne.c       |    4 +---
 drivers/net/dl2k.c          |    6 ++----
 drivers/net/forcedeth.c     |   11 ++++-------
 drivers/net/hp100.c         |    5 ++---
 drivers/net/hydra.c         |    6 ++----
 drivers/net/ibmlana.c       |    6 ++----
 drivers/net/ioc3-eth.c      |    5 ++---
 drivers/net/lguest_net.c    |    3 +--
 drivers/net/lib82596.c      |    4 ++--
 drivers/net/macb.c          |    6 ++----
 drivers/net/meth.c          |    4 +---
 drivers/net/mv643xx_eth.c   |    5 ++---
 drivers/net/mvme147.c       |    7 ++-----
 drivers/net/myri_sbus.c     |    6 ++----
 drivers/net/ns83820.c       |    9 +++------
 drivers/net/pasemi_mac.c    |    5 ++---
 drivers/net/ps3_gelic_net.c |    6 ++----
 drivers/net/qla3xxx.c       |    6 ++----
 drivers/net/rionet.c        |    5 ++---
 drivers/net/s2io.c          |   10 ++--------
 drivers/net/skge.c          |    6 ++----
 drivers/net/sky2.c          |    6 ++----
 drivers/net/tsi108_eth.c    |    6 ++----
 drivers/net/zorro8390.c     |    6 ++----
 include/linux/etherdevice.h |    1 +
 include/linux/if_ether.h    |    5 +++++
 include/net/ieee80211.h     |    5 -----
 include/net/mac80211.h      |    4 ----
 33 files changed, 62 insertions(+), 125 deletions(-)

--- netdev-2.6.orig/drivers/net/3c505.c	2007-08-22 20:33:10.921906163 +0200
+++ netdev-2.6/drivers/net/3c505.c	2007-08-22 20:40:01.011906163 +0200
@@ -1540,9 +1540,7 @@ static int __init elplus_setup(struct ne
 	 */
 	printk(KERN_INFO "%s: 3c505 at %#lx, irq %d, dma %d, ",
 	       dev->name, dev->base_addr, dev->irq, dev->dma);
-	printk("addr %02x:%02x:%02x:%02x:%02x:%02x, ",
-	       dev->dev_addr[0], dev->dev_addr[1], dev->dev_addr[2],
-	       dev->dev_addr[3], dev->dev_addr[4], dev->dev_addr[5]);
+	printk("addr " MAC_FMT ", ", MAC_ARG(dev->dev_addr));
 
 	/*
 	 * read more information from the adapter
--- netdev-2.6.orig/drivers/net/8139cp.c	2007-08-22 20:33:10.931906163 +0200
+++ netdev-2.6/drivers/net/8139cp.c	2007-08-22 20:40:01.011906163 +0200
@@ -1961,15 +1961,8 @@ static int cp_init_one (struct pci_dev *
 	if (rc)
 		goto err_out_iomap;
 
-	printk (KERN_INFO "%s: RTL-8139C+ at 0x%lx, "
-		"%02x:%02x:%02x:%02x:%02x:%02x, "
-		"IRQ %d\n",
-		dev->name,
-		dev->base_addr,
-		dev->dev_addr[0], dev->dev_addr[1],
-		dev->dev_addr[2], dev->dev_addr[3],
-		dev->dev_addr[4], dev->dev_addr[5],
-		dev->irq);
+	printk (KERN_INFO "%s: RTL-8139C+ at 0x%lx, " MAC_FMT ", IRQ %d\n",
+		dev->name, dev->base_addr, MAC_ARG(dev->dev_addr), dev->irq);
 
 	pci_set_drvdata(pdev, dev);
 
--- netdev-2.6.orig/drivers/net/82596.c	2007-08-22 20:33:10.941906163 +0200
+++ netdev-2.6/drivers/net/82596.c	2007-08-22 20:40:01.021906163 +0200
@@ -1561,8 +1561,8 @@ static void set_multicast_list(struct ne
 		for (dmi = dev->mc_list; cnt && dmi != NULL; dmi = dmi->next, cnt--, cp += 6) {
 			memcpy(cp, dmi->dmi_addr, 6);
 			if (i596_debug > 1)
-				DEB(DEB_MULTI,printk(KERN_INFO "%s: Adding address %02x:%02x:%02x:%02x:%02x:%02x\n",
-						dev->name, cp[0],cp[1],cp[2],cp[3],cp[4],cp[5]));
+				DEB(DEB_MULTI,printk(KERN_INFO "%s: Adding address " MAC_FMT "\n",
+						dev->name, MAC_ARG(cp));
 		}
 		i596_add_cmd(dev, &cmd->cmd);
 	}
--- netdev-2.6.orig/drivers/net/a2065.c	2007-08-22 20:33:10.991906163 +0200
+++ netdev-2.6/drivers/net/a2065.c	2007-08-22 20:40:01.031906163 +0200
@@ -802,9 +802,7 @@ static int __devinit a2065_init_one(stru
 	zorro_set_drvdata(z, dev);
 
 	printk(KERN_INFO "%s: A2065 at 0x%08lx, Ethernet Address "
-	       "%02x:%02x:%02x:%02x:%02x:%02x\n", dev->name, board,
-	       dev->dev_addr[0], dev->dev_addr[1], dev->dev_addr[2],
-	       dev->dev_addr[3], dev->dev_addr[4], dev->dev_addr[5]);
+	       MAC_FMT "\n", dev->name, board, MAC_ARG(dev->dev_addr));
 
 	return 0;
 }
--- netdev-2.6.orig/drivers/net/acenic.c	2007-08-22 20:33:10.991906163 +0200
+++ netdev-2.6/drivers/net/acenic.c	2007-08-22 20:40:01.031906163 +0200
@@ -1013,10 +1013,6 @@ static int __devinit ace_init(struct net
 	writel(mac1, &regs->MacAddrHi);
 	writel(mac2, &regs->MacAddrLo);
 
-	printk("MAC: %02x:%02x:%02x:%02x:%02x:%02x\n",
-	       (mac1 >> 8) & 0xff, mac1 & 0xff, (mac2 >> 24) &0xff,
-	       (mac2 >> 16) & 0xff, (mac2 >> 8) & 0xff, mac2 & 0xff);
-
 	dev->dev_addr[0] = (mac1 >> 8) & 0xff;
 	dev->dev_addr[1] = mac1 & 0xff;
 	dev->dev_addr[2] = (mac2 >> 24) & 0xff;
@@ -1024,6 +1020,8 @@ static int __devinit ace_init(struct net
 	dev->dev_addr[4] = (mac2 >> 8) & 0xff;
 	dev->dev_addr[5] = mac2 & 0xff;
 
+	printk("MAC: " MAC_FMT "\n", MAC_ARG(dev->dev_addr));
+
 	/*
 	 * Looks like this is necessary to deal with on all architectures,
 	 * even this %$#%$# N440BX Intel based thing doesn't get it right.
--- netdev-2.6.orig/drivers/net/ariadne.c	2007-08-22 20:33:11.661906163 +0200
+++ netdev-2.6/drivers/net/ariadne.c	2007-08-22 20:40:01.041906163 +0200
@@ -217,9 +217,7 @@ static int __devinit ariadne_init_one(st
     zorro_set_drvdata(z, dev);
 
     printk(KERN_INFO "%s: Ariadne at 0x%08lx, Ethernet Address "
-	   "%02x:%02x:%02x:%02x:%02x:%02x\n", dev->name, board,
-	   dev->dev_addr[0], dev->dev_addr[1], dev->dev_addr[2],
-	   dev->dev_addr[3], dev->dev_addr[4], dev->dev_addr[5]);
+	   MAC_FMT "\n", dev->name, board, MAC_ARG(dev->dev_addr));
 
     return 0;
 }
--- netdev-2.6.orig/drivers/net/dl2k.c	2007-08-22 20:33:12.181906163 +0200
+++ netdev-2.6/drivers/net/dl2k.c	2007-08-22 20:40:01.041906163 +0200
@@ -257,10 +257,8 @@ rio_probe1 (struct pci_dev *pdev, const 
 
 	card_idx++;
 
-	printk (KERN_INFO "%s: %s, %02x:%02x:%02x:%02x:%02x:%02x, IRQ %d\n",
-		dev->name, np->name,
-		dev->dev_addr[0], dev->dev_addr[1], dev->dev_addr[2],
-		dev->dev_addr[3], dev->dev_addr[4], dev->dev_addr[5], irq);
+	printk (KERN_INFO "%s: %s, " MAC_FMT ", IRQ %d\n",
+		dev->name, np->name, MAC_ARG(dev->dev_addr));
 	if (tx_coalesce > 1)
 		printk(KERN_INFO "tx_coalesce:\t%d packets\n",
 				tx_coalesce);
--- netdev-2.6.orig/drivers/net/forcedeth.c	2007-08-22 20:33:12.461906163 +0200
+++ netdev-2.6/drivers/net/forcedeth.c	2007-08-22 20:40:01.051906163 +0200
@@ -5201,10 +5201,8 @@ static int __devinit nv_probe(struct pci
 		 * Bad mac address. At least one bios sets the mac address
 		 * to 01:23:45:67:89:ab
 		 */
-		printk(KERN_ERR "%s: Invalid Mac address detected: %02x:%02x:%02x:%02x:%02x:%02x\n",
-			pci_name(pci_dev),
-			dev->dev_addr[0], dev->dev_addr[1], dev->dev_addr[2],
-			dev->dev_addr[3], dev->dev_addr[4], dev->dev_addr[5]);
+		printk(KERN_ERR "%s: Invalid Mac address detected: " MAC_FMT "\n",
+			pci_name(pci_dev), MAC_ARG(dev->dev_addr));
 		printk(KERN_ERR "Please complain to your hardware vendor. Switching to a random MAC.\n");
 		dev->dev_addr[0] = 0x00;
 		dev->dev_addr[1] = 0x00;
@@ -5212,9 +5210,8 @@ static int __devinit nv_probe(struct pci
 		get_random_bytes(&dev->dev_addr[3], 3);
 	}
 
-	dprintk(KERN_DEBUG "%s: MAC Address %02x:%02x:%02x:%02x:%02x:%02x\n", pci_name(pci_dev),
-			dev->dev_addr[0], dev->dev_addr[1], dev->dev_addr[2],
-			dev->dev_addr[3], dev->dev_addr[4], dev->dev_addr[5]);
+	dprintk(KERN_DEBUG "%s: MAC Address " MAC_FMT "\n", pci_name(pci_dev),
+			MAC_ARG(dev->dev_addr));
 
 	/* set mac address */
 	nv_copy_mac_to_hw(dev);
--- netdev-2.6.orig/drivers/net/hp100.c	2007-08-22 20:33:12.751906163 +0200
+++ netdev-2.6/drivers/net/hp100.c	2007-08-22 20:40:01.061906163 +0200
@@ -2095,9 +2095,8 @@ static void hp100_set_multicast_list(str
 				addrs = dmi->dmi_addr;
 				if ((*addrs & 0x01) == 0x01) {	/* multicast address? */
 #ifdef HP100_DEBUG
-					printk("hp100: %s: multicast = %02x:%02x:%02x:%02x:%02x:%02x, ",
-						     dev->name, addrs[0], addrs[1], addrs[2],
-						     addrs[3], addrs[4], addrs[5]);
+					printk("hp100: %s: multicast = " MAC_FMT ", ",
+						     dev->name, MAC_ARG(addrs));
 #endif
 					for (j = idx = 0; j < 6; j++) {
 						idx ^= *addrs++ & 0x3f;
--- netdev-2.6.orig/drivers/net/hydra.c	2007-08-22 20:33:12.761906163 +0200
+++ netdev-2.6/drivers/net/hydra.c	2007-08-22 20:40:01.061906163 +0200
@@ -163,10 +163,8 @@ static int __devinit hydra_init(struct z
     zorro_set_drvdata(z, dev);
 
     printk(KERN_INFO "%s: Hydra at 0x%08lx, address "
-	   "%02x:%02x:%02x:%02x:%02x:%02x (hydra.c " HYDRA_VERSION ")\n",
-	   dev->name, z->resource.start, dev->dev_addr[0], dev->dev_addr[1],
-	   dev->dev_addr[2], dev->dev_addr[3], dev->dev_addr[4],
-	   dev->dev_addr[5]);
+	   MAC_FMT " (hydra.c " HYDRA_VERSION ")\n",
+	   dev->name, z->resource.start, MAC_ARG(dev->dev_addr));
 
     return 0;
 }
--- netdev-2.6.orig/drivers/net/ibmlana.c	2007-08-22 20:33:12.791906163 +0200
+++ netdev-2.6/drivers/net/ibmlana.c	2007-08-22 20:40:01.071906163 +0200
@@ -992,11 +992,9 @@ static int ibmlana_probe(struct net_devi
 	/* print config */
 
 	printk(KERN_INFO "%s: IRQ %d, I/O %#lx, memory %#lx-%#lx, "
-	       "MAC address %02x:%02x:%02x:%02x:%02x:%02x.\n",
+	       "MAC address " MAC_FMT ".\n",
 	       dev->name, priv->realirq, dev->base_addr,
-	       dev->mem_start, dev->mem_end - 1,
-	       dev->dev_addr[0], dev->dev_addr[1], dev->dev_addr[2],
-	       dev->dev_addr[3], dev->dev_addr[4], dev->dev_addr[5]);
+	       dev->mem_start, dev->mem_end - 1, MAC_ARG(dev->dev_addr));
 	printk(KERN_INFO "%s: %s medium\n", dev->name, MediaNames[priv->medium]);
 
 	/* reset board */
--- netdev-2.6.orig/drivers/net/ioc3-eth.c	2007-08-22 20:33:12.801906163 +0200
+++ netdev-2.6/drivers/net/ioc3-eth.c	2007-08-22 20:40:01.071906163 +0200
@@ -392,9 +392,8 @@ static int nic_init(struct ioc3 *ioc3)
 
 	printk("Found %s NIC", type);
 	if (type != unknown) {
-		printk (" registration number %02x:%02x:%02x:%02x:%02x:%02x,"
-			" CRC %02x", serial[0], serial[1], serial[2],
-			serial[3], serial[4], serial[5], crc);
+		printk (" registration number " MAC_FMT ", CRC %02x",
+			MAC_ARG(serial), crc);
 	}
 	printk(".\n");
 
--- netdev-2.6.orig/drivers/net/lguest_net.c	2007-08-22 20:33:12.921906163 +0200
+++ netdev-2.6/drivers/net/lguest_net.c	2007-08-22 20:40:01.081906163 +0200
@@ -236,8 +236,7 @@ static int lguestnet_start_xmit(struct s
 	/* Extract the destination ethernet address from the packet. */
 	const unsigned char *dest = ((struct ethhdr *)skb->data)->h_dest;
 
-	pr_debug("%s: xmit %02x:%02x:%02x:%02x:%02x:%02x\n",
-		 dev->name, dest[0],dest[1],dest[2],dest[3],dest[4],dest[5]);
+	pr_debug("%s: xmit " MAC_FMT "\n", dev->name, MAC_ARG(dest));
 
 	/* If it's a multicast packet, we broadcast to everyone.  That's not
 	 * very efficient, but there are very few applications which actually
--- netdev-2.6.orig/drivers/net/lib82596.c	2007-08-22 20:33:12.931906163 +0200
+++ netdev-2.6/drivers/net/lib82596.c	2007-08-22 20:40:01.081906163 +0200
@@ -1425,8 +1425,8 @@ static void set_multicast_list(struct ne
 			if (i596_debug > 1)
 				DEB(DEB_MULTI,
 				    printk(KERN_DEBUG
-					   "%s: Adding address %02x:%02x:%02x:%02x:%02x:%02x\n",
-					   dev->name, cp[0], cp[1], cp[2], cp[3], cp[4], cp[5]));
+					   "%s: Adding address " MAC_FMT "\n",
+					   dev->name, MAC_ARG(cp));
 		}
 		DMA_WBACK_INV(dev, &dma->mc_cmd, sizeof(struct mc_cmd));
 		i596_add_cmd(dev, &cmd->cmd);
--- netdev-2.6.orig/drivers/net/macb.c	2007-08-22 20:33:12.931906163 +0200
+++ netdev-2.6/drivers/net/macb.c	2007-08-22 20:40:01.081906163 +0200
@@ -1189,10 +1189,8 @@ static int __devinit macb_probe(struct p
 	platform_set_drvdata(pdev, dev);
 
 	printk(KERN_INFO "%s: Atmel MACB at 0x%08lx irq %d "
-	       "(%02x:%02x:%02x:%02x:%02x:%02x)\n",
-	       dev->name, dev->base_addr, dev->irq,
-	       dev->dev_addr[0], dev->dev_addr[1], dev->dev_addr[2],
-	       dev->dev_addr[3], dev->dev_addr[4], dev->dev_addr[5]);
+	       "(" MAC_FMT ")\n",
+	       dev->name, dev->base_addr, dev->irq, MAC_ARG(dev->dev_addr));
 
 	phydev = bp->phy_dev;
 	printk(KERN_INFO "%s: attached PHY driver [%s] "
--- netdev-2.6.orig/drivers/net/meth.c	2007-08-22 20:33:12.941906163 +0200
+++ netdev-2.6/drivers/net/meth.c	2007-08-22 20:40:01.101906163 +0200
@@ -96,11 +96,9 @@ char o2meth_eaddr[8]={0,0,0,0,0,0,0,0};
 static inline void load_eaddr(struct net_device *dev)
 {
 	int i;
-	DPRINTK("Loading MAC Address: %02x:%02x:%02x:%02x:%02x:%02x\n",
-		(int)o2meth_eaddr[0]&0xFF,(int)o2meth_eaddr[1]&0xFF,(int)o2meth_eaddr[2]&0xFF,
-		(int)o2meth_eaddr[3]&0xFF,(int)o2meth_eaddr[4]&0xFF,(int)o2meth_eaddr[5]&0xFF);
 	for (i = 0; i < 6; i++)
 		dev->dev_addr[i] = o2meth_eaddr[i];
+	DPRINTK("Loading MAC Address: " MAC_FMT "\n", MAC_ARG(dev->dev_addr));
 	mace->eth.mac_addr = (*(unsigned long*)o2meth_eaddr) >> 16;
 }
 
--- netdev-2.6.orig/drivers/net/mv643xx_eth.c	2007-08-22 20:33:12.981906163 +0200
+++ netdev-2.6/drivers/net/mv643xx_eth.c	2007-08-22 20:40:01.111906163 +0200
@@ -1429,9 +1429,8 @@ static int mv643xx_eth_probe(struct plat
 		goto out;
 
 	p = dev->dev_addr;
-	printk(KERN_NOTICE
-		"%s: port %d with MAC address %02x:%02x:%02x:%02x:%02x:%02x\n",
-		dev->name, port_num, p[0], p[1], p[2], p[3], p[4], p[5]);
+	printk(KERN_NOTICE "%s: port %d with MAC address " MAC_FMT "\n",
+		dev->name, port_num, MAC_ARG(p));
 
 	if (dev->features & NETIF_F_SG)
 		printk(KERN_NOTICE "%s: Scatter Gather Enabled\n", dev->name);
--- netdev-2.6.orig/drivers/net/mvme147.c	2007-08-22 20:33:12.991906163 +0200
+++ netdev-2.6/drivers/net/mvme147.c	2007-08-22 20:40:01.111906163 +0200
@@ -103,12 +103,9 @@ struct net_device * __init mvme147lance_
 	address=address>>8;
 	dev->dev_addr[3]=address&0xff;
 
-	printk("%s: MVME147 at 0x%08lx, irq %d, Hardware Address %02x:%02x:%02x:%02x:%02x:%02x\n",
+	printk("%s: MVME147 at 0x%08lx, irq %d, Hardware Address " MAC_FMT "\n",
 		dev->name, dev->base_addr, MVME147_LANCE_IRQ,
-		dev->dev_addr[0],
-		dev->dev_addr[1], dev->dev_addr[2],
-		dev->dev_addr[3], dev->dev_addr[4],
-		dev->dev_addr[5]);
+		MAC_ARG(dev->dev_addr));
 
 	lp = (struct m147lance_private *)dev->priv;
 	lp->ram = __get_dma_pages(GFP_ATOMIC, 3);	/* 16K */
--- netdev-2.6.orig/drivers/net/ns83820.c	2007-08-22 20:33:16.621906163 +0200
+++ netdev-2.6/drivers/net/ns83820.c	2007-08-22 20:40:01.111906163 +0200
@@ -2082,14 +2082,11 @@ static int __devinit ns83820_init_one(st
 		ndev->features |= NETIF_F_HIGHDMA;
 	}
 
-	printk(KERN_INFO "%s: ns83820 v" VERSION ": DP83820 v%u.%u: %02x:%02x:%02x:%02x:%02x:%02x io=0x%08lx irq=%d f=%s\n",
-		ndev->name,
+	printk(KERN_INFO "%s: ns83820 v" VERSION ": DP83820 v%u.%u: " MAC_FMT
+		" io=0x%08lx irq=%d f=%s\n", ndev->name,
 		(unsigned)readl(dev->base + SRR) >> 8,
 		(unsigned)readl(dev->base + SRR) & 0xff,
-		ndev->dev_addr[0], ndev->dev_addr[1],
-		ndev->dev_addr[2], ndev->dev_addr[3],
-		ndev->dev_addr[4], ndev->dev_addr[5],
-		addr, pci_dev->irq,
+		MAC_ARG(ndev->dev_addr) addr, pci_dev->irq,
 		(ndev->features & NETIF_F_HIGHDMA) ? "h,sg" : "sg"
 		);
 
--- netdev-2.6.orig/drivers/net/pasemi_mac.c	2007-08-22 20:33:16.691906163 +0200
+++ netdev-2.6/drivers/net/pasemi_mac.c	2007-08-22 20:40:01.121906163 +0200
@@ -1173,11 +1173,10 @@ pasemi_mac_probe(struct pci_dev *pdev, c
 		goto out;
 	} else
 		printk(KERN_INFO "%s: PA Semi %s: intf %d, txch %d, rxch %d, "
-		       "hw addr %02x:%02x:%02x:%02x:%02x:%02x\n",
+		       "hw addr " MAC_FMT "\n",
 		       dev->name, mac->type == MAC_TYPE_GMAC ? "GMAC" : "XAUI",
 		       mac->dma_if, mac->dma_txch, mac->dma_rxch,
-		       dev->dev_addr[0], dev->dev_addr[1], dev->dev_addr[2],
-		       dev->dev_addr[3], dev->dev_addr[4], dev->dev_addr[5]);
+		       MAC_ARG(dev->dev_addr));
 
 	return err;
 
--- netdev-2.6.orig/drivers/net/ps3_gelic_net.c	2007-08-22 20:33:16.891906163 +0200
+++ netdev-2.6/drivers/net/ps3_gelic_net.c	2007-08-22 20:40:01.121906163 +0200
@@ -1397,10 +1397,8 @@ static int gelic_net_setup_netdev(struct
 	v1 <<= 16;
 	memcpy(addr.sa_data, &v1, ETH_ALEN);
 	memcpy(netdev->dev_addr, addr.sa_data, ETH_ALEN);
-	dev_info(ctodev(card), "MAC addr %02x:%02x:%02x:%02x:%02x:%02x\n",
-		 netdev->dev_addr[0], netdev->dev_addr[1],
-		 netdev->dev_addr[2], netdev->dev_addr[3],
-		 netdev->dev_addr[4], netdev->dev_addr[5]);
+	dev_info(ctodev(card), "MAC addr " MAC_FMT "\n",
+		 MAC_ARG(netdev->dev_addr));
 
 	card->vlan_index = -1;	/* no vlan */
 	for (i = 0; i < GELIC_NET_VLAN_MAX; i++) {
--- netdev-2.6.orig/drivers/net/qla3xxx.c	2007-08-22 20:33:16.901906163 +0200
+++ netdev-2.6/drivers/net/qla3xxx.c	2007-08-22 20:40:01.131906163 +0200
@@ -3576,10 +3576,8 @@ static void ql_display_dev_info(struct n
 
 	if (netif_msg_probe(qdev))
 		printk(KERN_INFO PFX
-		       "%s: MAC address %02x:%02x:%02x:%02x:%02x:%02x\n",
-		       ndev->name, ndev->dev_addr[0], ndev->dev_addr[1],
-		       ndev->dev_addr[2], ndev->dev_addr[3], ndev->dev_addr[4],
-		       ndev->dev_addr[5]);
+		       "%s: MAC address " MAC_FMT "\n",
+		       ndev->name, MAC_ARG(ndev->dev_addr));
 }
 
 static int ql_adapter_down(struct ql3_adapter *qdev, int do_reset)
--- netdev-2.6.orig/drivers/net/rionet.c	2007-08-22 20:33:16.901906163 +0200
+++ netdev-2.6/drivers/net/rionet.c	2007-08-22 20:40:01.141906163 +0200
@@ -482,13 +482,12 @@ static int rionet_setup_netdev(struct ri
 	if (rc != 0)
 		goto out;
 
-	printk("%s: %s %s Version %s, MAC %02x:%02x:%02x:%02x:%02x:%02x\n",
+	printk("%s: %s %s Version %s, MAC " MAC_FMT "\n",
 	       ndev->name,
 	       DRV_NAME,
 	       DRV_DESC,
 	       DRV_VERSION,
-	       ndev->dev_addr[0], ndev->dev_addr[1], ndev->dev_addr[2],
-	       ndev->dev_addr[3], ndev->dev_addr[4], ndev->dev_addr[5]);
+	       MAC_ARG(ndev->dev_addr));
 
       out:
 	return rc;
--- netdev-2.6.orig/drivers/net/s2io.c	2007-08-22 20:33:16.991906163 +0200
+++ netdev-2.6/drivers/net/s2io.c	2007-08-22 20:40:01.151906163 +0200
@@ -7330,14 +7330,8 @@ s2io_init_nic(struct pci_dev *pdev, cons
 		  sp->product_name, pdev->revision);
 	DBG_PRINT(ERR_DBG, "%s: Driver version %s\n", dev->name,
 		  s2io_driver_version);
-	DBG_PRINT(ERR_DBG, "%s: MAC ADDR: "
-			  "%02x:%02x:%02x:%02x:%02x:%02x", dev->name,
-			  sp->def_mac_addr[0].mac_addr[0],
-			  sp->def_mac_addr[0].mac_addr[1],
-			  sp->def_mac_addr[0].mac_addr[2],
-			  sp->def_mac_addr[0].mac_addr[3],
-			  sp->def_mac_addr[0].mac_addr[4],
-			  sp->def_mac_addr[0].mac_addr[5]);
+	DBG_PRINT(ERR_DBG, "%s: MAC ADDR: " MAC_FMT, dev->name,
+		  MAC_ARG(sp->def_mac_addr[0]));
 	DBG_PRINT(ERR_DBG, "SERIAL NUMBER: %s\n", sp->serial_num);
 	if (sp->device_type & XFRAME_II_DEVICE) {
 		mode = s2io_print_pci_mode(sp);
--- netdev-2.6.orig/drivers/net/skge.c	2007-08-22 20:33:18.721906163 +0200
+++ netdev-2.6/drivers/net/skge.c	2007-08-22 20:40:01.211906163 +0200
@@ -3621,10 +3621,8 @@ static void __devinit skge_show_addr(str
 	const struct skge_port *skge = netdev_priv(dev);
 
 	if (netif_msg_probe(skge))
-		printk(KERN_INFO PFX "%s: addr %02x:%02x:%02x:%02x:%02x:%02x\n",
-		       dev->name,
-		       dev->dev_addr[0], dev->dev_addr[1], dev->dev_addr[2],
-		       dev->dev_addr[3], dev->dev_addr[4], dev->dev_addr[5]);
+		printk(KERN_INFO PFX "%s: addr " MAC_FMT "\n",
+		       dev->name, MAC_ARG(dev->dev_addr));
 }
 
 static int __devinit skge_probe(struct pci_dev *pdev,
--- netdev-2.6.orig/drivers/net/sky2.c	2007-08-22 20:33:18.921906163 +0200
+++ netdev-2.6/drivers/net/sky2.c	2007-08-22 20:40:01.221906163 +0200
@@ -3808,10 +3808,8 @@ static void __devinit sky2_show_addr(str
 	const struct sky2_port *sky2 = netdev_priv(dev);
 
 	if (netif_msg_probe(sky2))
-		printk(KERN_INFO PFX "%s: addr %02x:%02x:%02x:%02x:%02x:%02x\n",
-		       dev->name,
-		       dev->dev_addr[0], dev->dev_addr[1], dev->dev_addr[2],
-		       dev->dev_addr[3], dev->dev_addr[4], dev->dev_addr[5]);
+		printk(KERN_INFO PFX "%s: addr " MAC_FMT "\n",
+		       dev->name, MAC_ARG(dev->dev_addr));
 }
 
 /* Handle software interrupt used during MSI test */
--- netdev-2.6.orig/drivers/net/tsi108_eth.c	2007-08-22 20:33:31.261906163 +0200
+++ netdev-2.6/drivers/net/tsi108_eth.c	2007-08-22 20:40:01.231906163 +0200
@@ -1628,10 +1628,8 @@ tsi108_init_one(struct platform_device *
 		goto register_fail;
 	}
 
-	printk(KERN_INFO "%s: Tsi108 Gigabit Ethernet, MAC: "
-	       "%02x:%02x:%02x:%02x:%02x:%02x\n", dev->name,
-	       dev->dev_addr[0], dev->dev_addr[1], dev->dev_addr[2],
-	       dev->dev_addr[3], dev->dev_addr[4], dev->dev_addr[5]);
+	printk(KERN_INFO "%s: Tsi108 Gigabit Ethernet, MAC: " MAC_FMT "\n",
+	       dev->name, MAC_ARG(dev->dev_addr));
 #ifdef DEBUG
 	data->msg_enable = DEBUG;
 	dump_eth_one(dev);
--- netdev-2.6.orig/drivers/net/zorro8390.c	2007-08-22 20:33:34.401906163 +0200
+++ netdev-2.6/drivers/net/zorro8390.c	2007-08-22 20:40:01.231906163 +0200
@@ -244,10 +244,8 @@ static int __devinit zorro8390_init(stru
 	return err;
     }
 
-    printk(KERN_INFO "%s: %s at 0x%08lx, Ethernet Address "
-	   "%02x:%02x:%02x:%02x:%02x:%02x\n", dev->name, name, board,
-	   dev->dev_addr[0], dev->dev_addr[1], dev->dev_addr[2],
-	   dev->dev_addr[3], dev->dev_addr[4], dev->dev_addr[5]);
+    printk(KERN_INFO "%s: %s at 0x%08lx, Ethernet Address " MAC_FMT "\n",
+	   dev->name, name, board, MAC_ARG(dev->dev_addr));
 
     return 0;
 }
--- netdev-2.6.orig/include/linux/etherdevice.h	2007-08-22 20:34:43.451906163 +0200
+++ netdev-2.6/include/linux/etherdevice.h	2007-08-22 20:40:02.101906163 +0200
@@ -133,6 +133,7 @@ static inline unsigned compare_ether_add
 	BUILD_BUG_ON(ETH_ALEN != 6);
 	return ((a[0] ^ b[0]) | (a[1] ^ b[1]) | (a[2] ^ b[2])) != 0;
 }
+
 #endif	/* __KERNEL__ */
 
 #endif	/* _LINUX_ETHERDEVICE_H */
--- netdev-2.6.orig/drivers/net/myri_sbus.c	2007-08-22 20:33:16.251906163 +0200
+++ netdev-2.6/drivers/net/myri_sbus.c	2007-08-22 20:40:02.171906163 +0200
@@ -854,10 +854,8 @@ static inline void determine_reg_space_s
 static void dump_eeprom(struct myri_eth *mp)
 {
 	printk("EEPROM: clockval[%08x] cpuvers[%04x] "
-	       "id[%02x,%02x,%02x,%02x,%02x,%02x]\n",
-	       mp->eeprom.cval, mp->eeprom.cpuvers,
-	       mp->eeprom.id[0], mp->eeprom.id[1], mp->eeprom.id[2],
-	       mp->eeprom.id[3], mp->eeprom.id[4], mp->eeprom.id[5]);
+	       "id[" MAC_FMT "]\n",
+	       mp->eeprom.cval, mp->eeprom.cpuvers, MAC_ARG(mp->eeprom.id));
 	printk("EEPROM: ramsz[%08x]\n", mp->eeprom.ramsz);
 	printk("EEPROM: fvers[%02x,%02x,%02x,%02x,%02x,%02x,%02x,%02x\n",
 	       mp->eeprom.fvers[0], mp->eeprom.fvers[1], mp->eeprom.fvers[2],
--- netdev-2.6.orig/include/net/mac80211.h	2007-08-22 20:35:04.481906163 +0200
+++ netdev-2.6/include/net/mac80211.h	2007-08-22 20:40:02.171906163 +0200
@@ -1058,8 +1058,4 @@ static inline int ieee80211_get_morefrag
 		IEEE80211_FCTL_MOREFRAGS) != 0;
 }
 
-#define MAC_FMT "%02x:%02x:%02x:%02x:%02x:%02x"
-#define MAC_ARG(x) ((u8*)(x))[0], ((u8*)(x))[1], ((u8*)(x))[2], \
-		   ((u8*)(x))[3], ((u8*)(x))[4], ((u8*)(x))[5]
-
 #endif /* MAC80211_H */
--- netdev-2.6.orig/include/net/ieee80211.h	2007-08-22 20:35:03.981906163 +0200
+++ netdev-2.6/include/net/ieee80211.h	2007-08-22 20:40:02.181906163 +0200
@@ -119,11 +119,6 @@ do { if (ieee80211_debug_level & (level)
 #define IEEE80211_DEBUG(level, fmt, args...) do {} while (0)
 #endif				/* CONFIG_IEEE80211_DEBUG */
 
-/* debug macros not dependent on CONFIG_IEEE80211_DEBUG */
-
-#define MAC_FMT "%02x:%02x:%02x:%02x:%02x:%02x"
-#define MAC_ARG(x) ((u8*)(x))[0],((u8*)(x))[1],((u8*)(x))[2],((u8*)(x))[3],((u8*)(x))[4],((u8*)(x))[5]
-
 /* escape_essid() is intended to be used in debug (and possibly error)
  * messages. It should never be used for passing essid to user space. */
 const char *escape_essid(const char *essid, u8 essid_len);
--- netdev-2.6.orig/include/linux/if_ether.h	2007-08-22 20:34:43.751906163 +0200
+++ netdev-2.6/include/linux/if_ether.h	2007-08-22 20:40:02.181906163 +0200
@@ -120,6 +120,11 @@ static inline struct ethhdr *eth_hdr(con
 #ifdef CONFIG_SYSCTL
 extern struct ctl_table ether_table[];
 #endif
+
+/* helper macros to print MAC addresses */
+#define MAC_FMT "%02x:%02x:%02x:%02x:%02x:%02x"
+#define MAC_ARG(x) ((u8*)(x))[0], ((u8*)(x))[1], ((u8*)(x))[2], \
+		   ((u8*)(x))[3], ((u8*)(x))[4], ((u8*)(x))[5]
 #endif
 
 #endif	/* _LINUX_IF_ETHER_H */



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

* Re: [PATCH net-2.6.24] introduce MAC_FMT/MAC_ARG
  2007-08-22 18:46 [PATCH net-2.6.24] introduce MAC_FMT/MAC_ARG Johannes Berg
@ 2007-08-23 16:01 ` Joe Perches
  2007-08-23 16:12   ` Johannes Berg
  2007-08-26  0:09 ` Joe Perches
  1 sibling, 1 reply; 29+ messages in thread
From: Joe Perches @ 2007-08-23 16:01 UTC (permalink / raw)
  To: Johannes Berg; +Cc: David S. Miller, netdev

On Wed, 2007-08-22 at 20:46 +0200, Johannes Berg wrote:
> The two different wireless code bases both define macros to ease
> printing MAC addresses:

There are also several different uses of the equivalent of

	printk("%02x",addr[0])
	for (i=1; i<6; i++)
		printk(":%02x",addr[i]);

to print an ethernet MAC address.

http://www.uwsg.iu.edu/hypermail/linux/net/0602.1/0002.html

As not all device MAC addresses are 6 bytes, colon separated,
perhaps an appropriate ethernet/tr MAC designation is EUI48.

http://standards.ieee.org/regauth/oui/tutorials/EUI48.html


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

* Re: [PATCH net-2.6.24] introduce MAC_FMT/MAC_ARG
  2007-08-23 16:01 ` Joe Perches
@ 2007-08-23 16:12   ` Johannes Berg
  2007-08-23 17:08     ` John W. Linville
  0 siblings, 1 reply; 29+ messages in thread
From: Johannes Berg @ 2007-08-23 16:12 UTC (permalink / raw)
  To: Joe Perches; +Cc: David S. Miller, netdev

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

On Thu, 2007-08-23 at 09:01 -0700, Joe Perches wrote:
> There are also several different uses of the equivalent of
> 
> 	printk("%02x",addr[0])
> 	for (i=1; i<6; i++)
> 		printk(":%02x",addr[i]);
> 
> to print an ethernet MAC address.

Hm. I didn't know that, I can go through in a later patch if desired.

> http://www.uwsg.iu.edu/hypermail/linux/net/0602.1/0002.html
> 
> As not all device MAC addresses are 6 bytes, colon separated,
> perhaps an appropriate ethernet/tr MAC designation is EUI48.
> 
> http://standards.ieee.org/regauth/oui/tutorials/EUI48.html

Practically, however, nobody is going to even find macros named
EUI48_FMT/EUI48_ARG, would they? I don't much care, but I find it rather
unsatisfying that both wireless code bases define these macros.

johannes

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

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

* Re: [PATCH net-2.6.24] introduce MAC_FMT/MAC_ARG
  2007-08-23 16:12   ` Johannes Berg
@ 2007-08-23 17:08     ` John W. Linville
  2007-08-25  6:14       ` David Miller
  0 siblings, 1 reply; 29+ messages in thread
From: John W. Linville @ 2007-08-23 17:08 UTC (permalink / raw)
  To: Johannes Berg; +Cc: Joe Perches, David S. Miller, netdev

On Thu, Aug 23, 2007 at 06:12:00PM +0200, Johannes Berg wrote:
> On Thu, 2007-08-23 at 09:01 -0700, Joe Perches wrote:
> > There are also several different uses of the equivalent of
> > 
> > 	printk("%02x",addr[0])
> > 	for (i=1; i<6; i++)
> > 		printk(":%02x",addr[i]);
> > 
> > to print an ethernet MAC address.
> 
> Hm. I didn't know that, I can go through in a later patch if desired.
> 
> > http://www.uwsg.iu.edu/hypermail/linux/net/0602.1/0002.html
> > 
> > As not all device MAC addresses are 6 bytes, colon separated,
> > perhaps an appropriate ethernet/tr MAC designation is EUI48.
> > 
> > http://standards.ieee.org/regauth/oui/tutorials/EUI48.html
> 
> Practically, however, nobody is going to even find macros named
> EUI48_FMT/EUI48_ARG, would they? I don't much care, but I find it rather
> unsatisfying that both wireless code bases define these macros.

Yeah, accomodating non-48-bit MAC addresses is a bit pedantic.

I ACK the original patch, FWIW.

John
-- 
John W. Linville
linville@tuxdriver.com

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

* Re: [PATCH net-2.6.24] introduce MAC_FMT/MAC_ARG
  2007-08-23 17:08     ` John W. Linville
@ 2007-08-25  6:14       ` David Miller
  0 siblings, 0 replies; 29+ messages in thread
From: David Miller @ 2007-08-25  6:14 UTC (permalink / raw)
  To: linville; +Cc: johannes, joe, netdev

From: "John W. Linville" <linville@tuxdriver.com>
Date: Thu, 23 Aug 2007 13:08:30 -0400

> On Thu, Aug 23, 2007 at 06:12:00PM +0200, Johannes Berg wrote:
> > On Thu, 2007-08-23 at 09:01 -0700, Joe Perches wrote:
> > > There are also several different uses of the equivalent of
> > > 
> > > 	printk("%02x",addr[0])
> > > 	for (i=1; i<6; i++)
> > > 		printk(":%02x",addr[i]);
> > > 
> > > to print an ethernet MAC address.
> > 
> > Hm. I didn't know that, I can go through in a later patch if desired.
> > 
> > > http://www.uwsg.iu.edu/hypermail/linux/net/0602.1/0002.html
> > > 
> > > As not all device MAC addresses are 6 bytes, colon separated,
> > > perhaps an appropriate ethernet/tr MAC designation is EUI48.
> > > 
> > > http://standards.ieee.org/regauth/oui/tutorials/EUI48.html
> > 
> > Practically, however, nobody is going to even find macros named
> > EUI48_FMT/EUI48_ARG, would they? I don't much care, but I find it rather
> > unsatisfying that both wireless code bases define these macros.
> 
> Yeah, accomodating non-48-bit MAC addresses is a bit pedantic.
> 
> I ACK the original patch, FWIW.

I like the patch too, applied to net-2.6.24, thanks everyone.

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

* Re: [PATCH net-2.6.24] introduce MAC_FMT/MAC_ARG
  2007-08-22 18:46 [PATCH net-2.6.24] introduce MAC_FMT/MAC_ARG Johannes Berg
  2007-08-23 16:01 ` Joe Perches
@ 2007-08-26  0:09 ` Joe Perches
  2007-08-27 10:54   ` Johannes Berg
  1 sibling, 1 reply; 29+ messages in thread
From: Joe Perches @ 2007-08-26  0:09 UTC (permalink / raw)
  To: David S. Miller, netdev; +Cc: Johannes Berg

More conversions to MAC_FMT/MAC_ARG in drivers/net

These conversions are for the multiple printk uses
similar to:

	for (i = 0; i < 6; i++)
		printk("%s02x", addr[i], i==0 ? "" : ":");

Signed-off-by:  Joe Perches <joe@perches.com>

---

 drivers/net/3c503.c                  |    3 +-
 drivers/net/3c507.c                  |    8 +++---
 drivers/net/3c509.c                  |   16 +++++------
 drivers/net/3c515.c                  |    3 +-
 drivers/net/3c523.c                  |   10 +++----
 drivers/net/3c59x.c                  |    6 +---
 drivers/net/8139too.c                |   13 ++-------
 drivers/net/82596.c                  |    2 +-
 drivers/net/ac3200.c                 |    7 +++--
 drivers/net/apne.c                   |    8 +++---
 drivers/net/ariadne.c                |   49 ++++++++++++---------------------
 drivers/net/arm/am79c961a.c          |    7 +---
 drivers/net/arm/ether1.c             |    7 +---
 drivers/net/arm/ether3.c             |    7 ++---
 drivers/net/arm/etherh.c             |    7 +---
 drivers/net/at1700.c                 |    3 +-
 drivers/net/atarilance.c             |   35 +++++++++--------------
 drivers/net/atp.c                    |    7 ++---
 drivers/net/b44.c                    |    8 ++---
 drivers/net/bmac.c                   |    5 +--
 drivers/net/bnx2.c                   |   24 +++++++---------
 drivers/net/bonding/bond_main.c      |   31 ++++++---------------
 drivers/net/cris/eth_v10.c           |    8 +----
 drivers/net/cs89x0.c                 |   13 ++-------
 drivers/net/de600.c                  |    5 +---
 drivers/net/de620.c                  |    7 +++--
 drivers/net/declance.c               |   13 ++++-----
 drivers/net/depca.c                  |   11 +------
 drivers/net/dgrs.c                   |   16 +++-------
 drivers/net/dm9000.c                 |    8 ++---
 drivers/net/e1000/e1000_main.c       |    3 +-
 drivers/net/eepro.c                  |    4 +-
 drivers/net/eepro100.c               |    8 +----
 drivers/net/epic100.c                |    8 ++---
 drivers/net/es3210.c                 |   21 +++++++-------
 drivers/net/ewrk3.c                  |    9 ++----
 drivers/net/fealnx.c                 |    8 ++---
 drivers/net/fec.c                    |    6 +---
 drivers/net/gianfar.c                |    6 +---
 drivers/net/hamachi.c                |    7 +---
 drivers/net/hamradio/bpqether.c      |   23 +++++-----------
 drivers/net/hp-plus.c                |    5 ++-
 drivers/net/hp.c                     |    4 ++-
 drivers/net/ibm_emac/ibm_emac_core.c |   12 +++-----
 drivers/net/ioc3-eth.c               |   11 +------
 drivers/net/isa-skeleton.c           |    4 ++-
 drivers/net/jazzsonic.c              |    9 +-----
 drivers/net/lance.c                  |    5 ++-
 drivers/net/mac89x0.c                |   10 +++----
 drivers/net/mace.c                   |    8 ++---
 drivers/net/macmace.c                |    5 +--
 drivers/net/macsonic.c               |   10 +-----
 drivers/net/myri_sbus.c              |   26 +++++-------------
 drivers/net/natsemi.c                |   10 +++----
 drivers/net/ne-h8300.c               |    7 ++---
 drivers/net/ne2.c                    |    8 +++---
 drivers/net/ne2k-pci.c               |   10 +++---
 drivers/net/ni5010.c                 |    3 +-
 drivers/net/pci-skeleton.c           |    8 +----
 drivers/net/pcmcia/3c574_cs.c        |    8 +++---
 drivers/net/pcmcia/3c589_cs.c        |    9 +++---
 drivers/net/pcmcia/axnet_cs.c        |    8 +++---
 drivers/net/pcmcia/fmvj18x_cs.c      |    7 ++---
 drivers/net/pcmcia/smc91c92_cs.c     |    7 ++---
 drivers/net/pcmcia/xirc2ps_cs.c      |    8 ++---
 drivers/net/pppoe.c                  |    7 +---
 drivers/net/rrunner.c                |    7 +----
 drivers/net/sb1250-mac.c             |    6 +---
 drivers/net/seeq8005.c               |    3 +-
 drivers/net/sgiseeq.c                |    5 +--
 drivers/net/sis190.c                 |    9 ++----
 drivers/net/sis900.c                 |    8 ++---
 drivers/net/smc-mca.c                |    7 +++--
 drivers/net/smc-ultra.c              |    7 +++--
 drivers/net/smc-ultra32.c            |    7 +++--
 drivers/net/smc9194.c                |    6 +---
 drivers/net/smc91x.c                 |    8 ++---
 drivers/net/starfire.c               |   21 ++++++--------
 drivers/net/sun3lance.c              |   34 +++++++++--------------
 drivers/net/sunbmac.c                |    7 +---
 drivers/net/sundance.c               |    9 ++----
 drivers/net/sungem.c                 |   11 +++-----
 drivers/net/sunhme.c                 |   10 +-----
 drivers/net/sunlance.c               |    8 +----
 drivers/net/tokenring/abyss.c        |    9 ++----
 drivers/net/tokenring/ibmtr.c        |    5 +--
 drivers/net/tokenring/lanstreamer.c  |   34 +++++++++--------------
 drivers/net/tokenring/madgemc.c      |   14 +++-------
 drivers/net/tokenring/olympic.c      |   27 +++++--------------
 drivers/net/tokenring/proteon.c      |    7 +---
 drivers/net/tokenring/skisa.c        |    7 +---
 drivers/net/tokenring/tmspci.c       |    9 ++----
 drivers/net/tulip/de2104x.c          |    8 +----
 drivers/net/tulip/de4x5.c            |   23 +++-------------
 drivers/net/tulip/dmfe.c             |   14 +++++-----
 drivers/net/tulip/tulip_core.c       |   13 +++-----
 drivers/net/tulip/winbond-840.c      |   26 +++++++----------
 drivers/net/tulip/xircom_cb.c        |    8 ++---
 drivers/net/typhoon.c                |    9 ++----
 drivers/net/via-rhine.c              |   12 +++-----
 drivers/net/wd.c                     |    6 +++-
 101 files changed, 391 insertions(+), 672 deletions(-)

diff --git a/drivers/net/3c503.c b/drivers/net/3c503.c
index bc7e906..f141a4c 100644
--- a/drivers/net/3c503.c
+++ b/drivers/net/3c503.c
@@ -228,7 +228,8 @@ el2_probe1(struct net_device *dev, int ioaddr)
 
     /* Retrieve and print the ethernet address. */
     for (i = 0; i < 6; i++)
-	printk(" %2.2x", dev->dev_addr[i] = inb(ioaddr + i));
+	dev->dev_addr[i] = inb(ioaddr + i);
+    printk(MAC_FMT, MAC_ARG(dev->dev_addr));
 
     /* Map the 8390 back into the window. */
     outb(ECNTRL_THIN, ioaddr + 0x406);
diff --git a/drivers/net/3c507.c b/drivers/net/3c507.c
index eed4299..eda670f 100644
--- a/drivers/net/3c507.c
+++ b/drivers/net/3c507.c
@@ -388,7 +388,7 @@ static int __init el16_probe1(struct net_device *dev, int ioaddr)
 	if (net_debug  &&  version_printed++ == 0)
 		printk(version);
 
-	printk("%s: 3c507 at %#x,", dev->name, ioaddr);
+	printk("%s: 3c507 at %#x, ", dev->name, ioaddr);
 
 	/* We should make a few more checks here, like the first three octets of
 	   the S.A. for the manufacturer's code. */
@@ -397,6 +397,7 @@ static int __init el16_probe1(struct net_device *dev, int ioaddr)
 
 	irqval = request_irq(irq, &el16_interrupt, 0, DRV_NAME, dev);
 	if (irqval) {
+		printk("\n");
 		printk(KERN_ERR "3c507: unable to get IRQ %d (irqval=%d).\n", irq, irqval);
 		retval = -EAGAIN;
 		goto out;
@@ -406,10 +407,9 @@ static int __init el16_probe1(struct net_device *dev, int ioaddr)
 	dev->base_addr = ioaddr;
 
 	outb(0x01, ioaddr + MISC_CTRL);
-	for (i = 0; i < 6; i++) {
+	for (i = 0; i < 6; i++)
 		dev->dev_addr[i] = inb(ioaddr + i);
-		printk(" %02x", dev->dev_addr[i]);
-	}
+	printk(MAC_FMT, MAC_ARG(dev->dev_addr));
 
 	if (mem_start)
 		net_debug = mem_start & 7;
diff --git a/drivers/net/3c509.c b/drivers/net/3c509.c
index 127f608..1f6e950 100644
--- a/drivers/net/3c509.c
+++ b/drivers/net/3c509.c
@@ -313,7 +313,6 @@ static int nopnp;
 static int __init el3_common_init(struct net_device *dev)
 {
 	struct el3_private *lp = netdev_priv(dev);
-	short i;
 	int err;
 
 	spin_lock_init(&lp->lock);
@@ -348,15 +347,14 @@ static int __init el3_common_init(struct net_device *dev)
 
 	{
 		const char *if_names[] = {"10baseT", "AUI", "undefined", "BNC"};
-		printk("%s: 3c5x9 found at %#3.3lx, %s port, address ",
-			dev->name, dev->base_addr,
-			if_names[(dev->if_port & 0x03)]);
-	}
+		printk("%s: 3c5x9 found at %#3.3lx, %s port, "
+		       "address " MAC_FMT ", IRQ %d.\n",
+		       dev->name, dev->base_addr,
+		       if_names[(dev->if_port & 0x03)],
+		       MAC_ARG(dev->dev_addr), dev->irq);
 
-	/* Read in the station address. */
-	for (i = 0; i < 6; i++)
-		printk(" %2.2x", dev->dev_addr[i]);
-	printk(", IRQ %d.\n", dev->irq);
+
+	}
 
 	if (el3_debug > 0)
 		printk(KERN_INFO "%s", version);
diff --git a/drivers/net/3c515.c b/drivers/net/3c515.c
index 290166d..a079d32 100644
--- a/drivers/net/3c515.c
+++ b/drivers/net/3c515.c
@@ -632,8 +632,7 @@ static int corkscrew_setup(struct net_device *dev, int ioaddr,
 	checksum = (checksum ^ (checksum >> 8)) & 0xff;
 	if (checksum != 0x00)
 		printk(" ***INVALID CHECKSUM %4.4x*** ", checksum);
-	for (i = 0; i < 6; i++)
-		printk("%c%2.2x", i ? ':' : ' ', dev->dev_addr[i]);
+	printk(" " MAC_FMT, MAC_ARG(dev->dev_addr));
 	if (eeprom[16] == 0x11c7) {	/* Corkscrew */
 		if (request_dma(dev->dma, "3c515")) {
 			printk(", DMA %d allocation failed", dev->dma);
diff --git a/drivers/net/3c523.c b/drivers/net/3c523.c
index ab18343..0359365 100644
--- a/drivers/net/3c523.c
+++ b/drivers/net/3c523.c
@@ -383,8 +383,7 @@ void alloc586(struct net_device *dev)
 static int elmc_getinfo(char *buf, int slot, void *d)
 {
 	int len = 0;
-	struct net_device *dev = (struct net_device *) d;
-	int i;
+	struct net_device *dev = d;
 
 	if (dev == NULL)
 		return len;
@@ -545,12 +544,11 @@ static int __init do_elmc_probe(struct net_device *dev)
 
 	/* The hardware address for the 3c523 is stored in the first six
 	   bytes of the IO address. */
-	printk(KERN_INFO "%s: hardware address ", dev->name);
 	for (i = 0; i < 6; i++) {
 		dev->dev_addr[i] = inb(dev->base_addr + i);
-		printk(" %02x", dev->dev_addr[i]);
-	}
-	printk("\n");
+
+	printk(KERN_INFO "%s: hardware address " MAC_FMT "\n",
+	       dev->name, MAC_ARG(dev->dev_addr));
 
 	dev->open = &elmc_open;
 	dev->stop = &elmc_close;
diff --git a/drivers/net/3c59x.c b/drivers/net/3c59x.c
index a8c0f43..b2d5d20 100644
--- a/drivers/net/3c59x.c
+++ b/drivers/net/3c59x.c
@@ -1203,10 +1203,8 @@ static int __devinit vortex_probe1(struct device *gendev,
 	for (i = 0; i < 3; i++)
 		((u16 *)dev->dev_addr)[i] = htons(eeprom[i + 10]);
 	memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);
-	if (print_info) {
-		for (i = 0; i < 6; i++)
-			printk("%c%2.2x", i ? ':' : ' ', dev->dev_addr[i]);
-	}
+	if (print_info)
+		printk(" " MAC_FMT, MAC_ARG(dev->dev_addr));
 	/* Unfortunately an all zero eeprom passes the checksum and this
 	   gets found in the wild in failure cases. Crypto is hard 8) */
 	if (!is_valid_ether_addr(dev->dev_addr)) {
diff --git a/drivers/net/8139too.c b/drivers/net/8139too.c
index 538493d..31679f8 100644
--- a/drivers/net/8139too.c
+++ b/drivers/net/8139too.c
@@ -1023,16 +1023,9 @@ static int __devinit rtl8139_init_one (struct pci_dev *pdev,
 
 	pci_set_drvdata (pdev, dev);
 
-	printk (KERN_INFO "%s: %s at 0x%lx, "
-		"%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x, "
-		"IRQ %d\n",
-		dev->name,
-		board_info[ent->driver_data].name,
-		dev->base_addr,
-		dev->dev_addr[0], dev->dev_addr[1],
-		dev->dev_addr[2], dev->dev_addr[3],
-		dev->dev_addr[4], dev->dev_addr[5],
-		dev->irq);
+	printk (KERN_INFO "%s: %s at 0x%lx, " MAC_FMT ", IRQ %d\n",
+		dev->name, board_info[ent->driver_data].name, dev->base_addr,
+		MAC_ARG(dev->dev_addr), dev->irq);
 
 	printk (KERN_DEBUG "%s:  Identified 8139 chip type '%s'\n",
 		dev->name, rtl_chip_info[tp->chipset].name);
diff --git a/drivers/net/82596.c b/drivers/net/82596.c
index 2f718e4..8fb314d 100644
--- a/drivers/net/82596.c
+++ b/drivers/net/82596.c
@@ -1562,7 +1562,7 @@ static void set_multicast_list(struct net_device *dev)
 			memcpy(cp, dmi->dmi_addr, 6);
 			if (i596_debug > 1)
 				DEB(DEB_MULTI,printk(KERN_INFO "%s: Adding address " MAC_FMT "\n",
-						dev->name, MAC_ARG(cp));
+						dev->name, MAC_ARG(cp)));
 		}
 		i596_add_cmd(dev, &cmd->cmd);
 	}
diff --git a/drivers/net/ac3200.c b/drivers/net/ac3200.c
index 644c408..1c725ef 100644
--- a/drivers/net/ac3200.c
+++ b/drivers/net/ac3200.c
@@ -169,10 +169,11 @@ static int __init ac_probe1(int ioaddr, struct net_device *dev)
 		   inb(ioaddr + AC_ID_PORT + 2), inb(ioaddr + AC_ID_PORT + 3));
 #endif
 
-	printk("AC3200 in EISA slot %d, node", ioaddr/0x1000);
-	for(i = 0; i < 6; i++)
-		printk(" %02x", dev->dev_addr[i] = inb(ioaddr + AC_SA_PROM + i));
+	for (i = 0; i < 6; i++)
+		dev->dev_addr[i] = inb(ioaddr + AC_SA_PROM + i);
 
+	printk(KERN_DEBUG "AC3200 in EISA slot %d, node " MAC_FMT,
+	       ioaddr/0x1000, MAC_ARG(dev->dev_addr));
 #if 0
 	/* Check the vendor ID/prefix. Redundant after checking the EISA ID */
 	if (inb(ioaddr + AC_SA_PROM + 0) != AC_ADDR0
diff --git a/drivers/net/apne.c b/drivers/net/apne.c
index 9541911..d295278 100644
--- a/drivers/net/apne.c
+++ b/drivers/net/apne.c
@@ -317,12 +317,12 @@ static int __init apne_probe1(struct net_device *dev, int ioaddr)
     i = request_irq(dev->irq, apne_interrupt, IRQF_SHARED, DRV_NAME, dev);
     if (i) return i;
 
-    for(i = 0; i < ETHER_ADDR_LEN; i++) {
-	printk(" %2.2x", SA_prom[i]);
+    for(i = 0; i < ETHER_ADDR_LEN; i++)
 	dev->dev_addr[i] = SA_prom[i];
-    }
 
-    printk("\n%s: %s found.\n", dev->name, name);
+    printk(" " MAC_FMT "\n", MAC_ARG(dev->dev_addr));
+
+    printk("%s: %s found.\n", dev->name, name);
 
     ei_status.name = name;
     ei_status.tx_start_page = start_page;
diff --git a/drivers/net/ariadne.c b/drivers/net/ariadne.c
index 1e5fa70..bcadd28 100644
--- a/drivers/net/ariadne.c
+++ b/drivers/net/ariadne.c
@@ -613,21 +613,15 @@ static int ariadne_start_xmit(struct sk_buff *skb, struct net_device *dev)
     /* Fill in a Tx ring entry */
 
 #if 0
-    printk(KERN_DEBUG "TX pkt type 0x%04x from ", ((u_short *)skb->data)[6]);
-    {
-	int i;
-	u_char *ptr = &((u_char *)skb->data)[6];
-	for (i = 0; i < 6; i++)
-	    printk("%02x", ptr[i]);
-    }
-    printk(" to ");
-    {
-	int i;
-	u_char *ptr = (u_char *)skb->data;
-	for (i = 0; i < 6; i++)
-	    printk("%02x", ptr[i]);
-    }
-    printk(" data 0x%08x len %d\n", (int)skb->data, (int)skb->len);
+{
+    printk(KERN_DEBUG "TX pkt type 0x%04x"
+	   " from " MAC_FMT " to " MAC_FMT
+	   " data 0x%08x len %d\n",
+	   ((u_short *)skb->data)[6],
+	   MAC_ARG(((u_char *)skb->data)+6),
+	   MAC_ARG((u_char *)skb->data),
+	   (int)skb->data, (int)skb->len);
+}
 #endif
 
     local_irq_save(flags);
@@ -747,22 +741,15 @@ static int ariadne_rx(struct net_device *dev)
 	    skb_copy_to_linear_data(skb, (char *)priv->rx_buff[entry], pkt_len);
 	    skb->protocol=eth_type_trans(skb,dev);
 #if 0
-	    printk(KERN_DEBUG "RX pkt type 0x%04x from ",
-		   ((u_short *)skb->data)[6]);
-	    {
-		int i;
-		u_char *ptr = &((u_char *)skb->data)[6];
-		for (i = 0; i < 6; i++)
-		    printk("%02x", ptr[i]);
-	    }
-	    printk(" to ");
-	    {
-		int i;
-		u_char *ptr = (u_char *)skb->data;
-		for (i = 0; i < 6; i++)
-		    printk("%02x", ptr[i]);
-	    }
-	    printk(" data 0x%08x len %d\n", (int)skb->data, (int)skb->len);
+{
+	    printk(KERN_DEBUG "RX pkt type 0x%04x"
+		   " from " MAC_FMT " to " MAC_FMT
+		   " data 0x%08x len %d\n",
+		   ((u_short *)skb->data)[6],
+		   MAC_ARG(((u_char *)skb->data)+6),
+		   MAC_ARG((u_char *)skb->data),
+		   (int)skb->data, (int)skb->len);
+}
 #endif
 
 	    netif_rx(skb);
diff --git a/drivers/net/arm/am79c961a.c b/drivers/net/arm/am79c961a.c
index 2143eeb..b699557 100644
--- a/drivers/net/arm/am79c961a.c
+++ b/drivers/net/arm/am79c961a.c
@@ -741,12 +741,9 @@ static int __init am79c961_probe(struct platform_device *pdev)
 
 	ret = register_netdev(dev);
 	if (ret == 0) {
-		printk(KERN_INFO "%s: ether address ", dev->name);
-
-		/* Retrive and print the ethernet address. */
-		for (i = 0; i < 6; i++)
-			printk (i == 5 ? "%02x\n" : "%02x:", dev->dev_addr[i]);
 
+		printk(KERN_INFO "%s: ether address " MAC_FMT "\n",
+		       dev->name, MAC_ARG(dev->dev_addr));
 		return 0;
 	}
 
diff --git a/drivers/net/arm/ether1.c b/drivers/net/arm/ether1.c
index 80f33b6..714aa43 100644
--- a/drivers/net/arm/ether1.c
+++ b/drivers/net/arm/ether1.c
@@ -1044,12 +1044,9 @@ ether1_probe(struct expansion_card *ec, const struct ecard_id *id)
 	if (ret)
 		goto free;
 
-	printk(KERN_INFO "%s: ether1 in slot %d, ",
-		dev->name, ec->slot_no);
+	printk(KERN_INFO "%s: ether1 in slot %d, " MAC_FMT "\n",
+		dev->name, ec->slot_no, MAC_ARG(dev->dev_addr));
     
-	for (i = 0; i < 6; i++)
-		printk ("%2.2x%c", dev->dev_addr[i], i == 5 ? '\n' : ':');
-
 	ecard_set_drvdata(ec, dev);
 	return 0;
 
diff --git a/drivers/net/arm/ether3.c b/drivers/net/arm/ether3.c
index 3805506..f05bb98 100644
--- a/drivers/net/arm/ether3.c
+++ b/drivers/net/arm/ether3.c
@@ -775,7 +775,7 @@ ether3_probe(struct expansion_card *ec, const struct ecard_id *id)
 {
 	const struct ether3_data *data = id->data;
 	struct net_device *dev;
-	int i, bus_type, ret;
+	int bus_type, ret;
 
 	ether3_banner();
 
@@ -859,9 +859,8 @@ ether3_probe(struct expansion_card *ec, const struct ecard_id *id)
 	if (ret)
 		goto free;
 
-	printk("%s: %s in slot %d, ", dev->name, data->name, ec->slot_no);
-	for (i = 0; i < 6; i++)
-		printk("%2.2x%c", dev->dev_addr[i], i == 5 ? '\n' : ':');
+	printk("%s: %s in slot %d, " MAC_FMT "\n",
+	       dev->name, data->name, ec->slot_no, MAC_ARG(dev->dev_addr));
 
 	ecard_set_drvdata(ec, dev);
 	return 0;
diff --git a/drivers/net/arm/etherh.c b/drivers/net/arm/etherh.c
index 0d37d9d..dd40c5f 100644
--- a/drivers/net/arm/etherh.c
+++ b/drivers/net/arm/etherh.c
@@ -746,11 +746,8 @@ etherh_probe(struct expansion_card *ec, const struct ecard_id *id)
 	if (ret)
 		goto free;
 
-	printk(KERN_INFO "%s: %s in slot %d, ",
-		dev->name, data->name, ec->slot_no);
-
-	for (i = 0; i < 6; i++)
-		printk("%2.2x%c", dev->dev_addr[i], i == 5 ? '\n' : ':');
+	printk(KERN_INFO "%s: %s in slot %d, " MAC_FMT "\n",
+		dev->name, data->name, ec->slot_no, MAC_ARG(dev->dev_addr));
 
 	ecard_set_drvdata(ec, dev);
 
diff --git a/drivers/net/at1700.c b/drivers/net/at1700.c
index bed8e0e..6631510 100644
--- a/drivers/net/at1700.c
+++ b/drivers/net/at1700.c
@@ -392,16 +392,15 @@ found:
 	if (is_at1700) {
 		for(i = 0; i < 3; i++) {
 			unsigned short eeprom_val = read_eeprom(ioaddr, 4+i);
-			printk("%04x", eeprom_val);
 			((unsigned short *)dev->dev_addr)[i] = ntohs(eeprom_val);
 		}
 	} else {
 		for(i = 0; i < 6; i++) {
 			unsigned char val = inb(ioaddr + SAPROM + i);
-			printk("%02x", val);
 			dev->dev_addr[i] = val;
 		}
 	}
+	printk(MAC_FMT, MAC_ARG(dev->dev_addr));
 
 	/* The EEPROM word 12 bit 0x0400 means use regular 100 ohm 10baseT signals,
 	   rather than 150 ohm shielded twisted pair compensation.
diff --git a/drivers/net/atarilance.c b/drivers/net/atarilance.c
index dfa8b9b..c508469 100644
--- a/drivers/net/atarilance.c
+++ b/drivers/net/atarilance.c
@@ -598,8 +598,7 @@ static unsigned long __init lance_probe1( struct net_device *dev,
 		i = IO->mem;
 		break;
 	}
-	for( i = 0; i < 6; ++i )
-		printk( "%02x%s", dev->dev_addr[i], (i < 5) ? ":" : "\n" );
+	printk(MAC_FMT "\n", MAC_ARG(dev->dev_addr));
 	if (lp->cardtype == OLD_RIEBL) {
 		printk( "%s: Warning: This is a default ethernet address!\n",
 				dev->name );
@@ -812,17 +811,12 @@ static int lance_start_xmit( struct sk_buff *skb, struct net_device *dev )
 
 	/* Fill in a Tx ring entry */
 	if (lance_debug >= 3) {
-		u_char *p;
-		int i;
-		printk( "%s: TX pkt type 0x%04x from ", dev->name,
-				((u_short *)skb->data)[6]);
-		for( p = &((u_char *)skb->data)[6], i = 0; i < 6; i++ )
-			printk("%02x%s", *p++, i != 5 ? ":" : "" );
-		printk(" to ");
-		for( p = (u_char *)skb->data, i = 0; i < 6; i++ )
-			printk("%02x%s", *p++, i != 5 ? ":" : "" );
-		printk(" data at 0x%08x len %d\n", (int)skb->data,
-			   (int)skb->len );
+		printk( "%s: TX pkt type 0x%04x from "
+			MAC_FMT " to " EUI48_FMT
+			" data at 0x%08x len %d\n",
+			dev->name, ((u_short *)skb->data)[6],
+			MAC_ARG(&skb->data[6]), MAC_ARG(skb->data),
+			(int)skb->data, (int)skb->len );
 	}
 
 	/* We're not prepared for the int until the last flags are set/reset. And
@@ -1032,14 +1026,13 @@ static int lance_rx( struct net_device *dev )
 				}
 
 				if (lance_debug >= 3) {
-					u_char *data = PKTBUF_ADDR(head), *p;
-					printk( "%s: RX pkt type 0x%04x from ", dev->name,
-							((u_short *)data)[6]);
-					for( p = &data[6], i = 0; i < 6; i++ )
-						printk("%02x%s", *p++, i != 5 ? ":" : "" );
-					printk(" to ");
-					for( p = data, i = 0; i < 6; i++ )
-						printk("%02x%s", *p++, i != 5 ? ":" : "" );
+					u_char *data = PKTBUF_ADDR(head);
+
+					printk( "%s: RX pkt type 0x%04x from "
+						MAC_FMT " to " EUI48_FMT,
+						dev->name, ((u_short *)data)[6],
+						MAC_ARG(&data[6]), MAC_ARG(data));
+
 					printk(" data %02x %02x %02x %02x %02x %02x %02x %02x "
 						   "len %d\n",
 						   data[15], data[16], data[17], data[18],
diff --git a/drivers/net/atp.c b/drivers/net/atp.c
index 82d78ff..88eccd0 100644
--- a/drivers/net/atp.c
+++ b/drivers/net/atp.c
@@ -325,10 +325,9 @@ static int __init atp_probe1(long ioaddr)
 		printk(KERN_INFO "%s", version);
 #endif
 
-	printk(KERN_NOTICE "%s: Pocket adapter found at %#3lx, IRQ %d, SAPROM "
-		   "%02X:%02X:%02X:%02X:%02X:%02X.\n", dev->name, dev->base_addr,
-		   dev->irq, dev->dev_addr[0], dev->dev_addr[1], dev->dev_addr[2],
-		   dev->dev_addr[3], dev->dev_addr[4], dev->dev_addr[5]);
+	printk(KERN_NOTICE "%s: Pocket adapter found at %#3lx, IRQ %d, "
+	       "SAPROM " MAC_FMT ".\n",
+	       dev->name, dev->base_addr, dev->irq, MAC_ARG(dev->dev_addr));
 
 	/* Reset the ethernet hardware and activate the printer pass-through. */
 	write_reg_high(ioaddr, CMR1, CMR1h_RESET | CMR1h_MUX);
diff --git a/drivers/net/b44.c b/drivers/net/b44.c
index 60b3d56..c36d780 100644
--- a/drivers/net/b44.c
+++ b/drivers/net/b44.c
@@ -2099,7 +2099,7 @@ static int __devinit b44_init_one(struct pci_dev *pdev,
 	unsigned long b44reg_base, b44reg_len;
 	struct net_device *dev;
 	struct b44 *bp;
-	int err, i;
+	int err;
 
 	if (b44_version_printed++ == 0)
 		printk(KERN_INFO "%s", version);
@@ -2229,10 +2229,8 @@ static int __devinit b44_init_one(struct pci_dev *pdev,
 	 */
 	b44_chip_reset(bp);
 
-	printk(KERN_INFO "%s: Broadcom 4400 10/100BaseT Ethernet ", dev->name);
-	for (i = 0; i < 6; i++)
-		printk("%2.2x%c", dev->dev_addr[i],
-		       i == 5 ? '\n' : ':');
+	printk(KERN_INFO "%s: Broadcom 4400 10/100BaseT Ethernet " MAC_FMT "\n",
+	       dev->name, MAC_ARG(dev->dev_addr));
 
 	return 0;
 
diff --git a/drivers/net/bmac.c b/drivers/net/bmac.c
index 9b8d7d9..668a5d2 100644
--- a/drivers/net/bmac.c
+++ b/drivers/net/bmac.c
@@ -1365,9 +1365,8 @@ static int __devinit bmac_probe(struct macio_dev *mdev, const struct of_device_i
 		goto err_out_irq2;
 	}
 
-	printk(KERN_INFO "%s: BMAC%s at", dev->name, (is_bmac_plus? "+": ""));
-	for (j = 0; j < 6; ++j)
-		printk("%c%.2x", (j? ':': ' '), dev->dev_addr[j]);
+	printk(KERN_INFO "%s: BMAC%s at " MAC_FMT,
+	       dev->name, (is_bmac_plus ? "+" : ""), MAC_ARG(dev->dev_addr));
 	XXDEBUG((", base_addr=%#0lx", dev->base_addr));
 	printk("\n");
 
diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c
index 7afffc4..bc23d87 100644
--- a/drivers/net/bnx2.c
+++ b/drivers/net/bnx2.c
@@ -6811,7 +6811,7 @@ bnx2_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 	static int version_printed = 0;
 	struct net_device *dev = NULL;
 	struct bnx2 *bp;
-	int rc, i;
+	int rc;
 	char str[40];
 
 	if (version_printed++ == 0)
@@ -6880,19 +6880,15 @@ bnx2_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 	}
 
 	printk(KERN_INFO "%s: %s (%c%d) %s found at mem %lx, "
-		"IRQ %d, ",
-		dev->name,
-		bp->name,
-		((CHIP_ID(bp) & 0xf000) >> 12) + 'A',
-		((CHIP_ID(bp) & 0x0ff0) >> 4),
-		bnx2_bus_string(bp, str),
-		dev->base_addr,
-		bp->pdev->irq);
-
-	printk("node addr ");
-	for (i = 0; i < 6; i++)
-		printk("%2.2x", dev->dev_addr[i]);
-	printk("\n");
+	       "IRQ %d, node addr " MAC_FMT "\n",
+	       dev->name,
+	       bp->name,
+	       ((CHIP_ID(bp) & 0xf000) >> 12) + 'A',
+	       ((CHIP_ID(bp) & 0x0ff0) >> 4),
+	       bnx2_bus_string(bp, str),
+	       dev->base_addr,
+	       bp->pdev->irq,
+	       MAC_ARG(dev->dev_addr));
 
 	return 0;
 }
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index 1afda32..d03d264 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -1630,19 +1630,13 @@ int bond_release(struct net_device *bond_dev, struct net_device *slave_dev)
 				 ETH_ALEN);
 	if (!mac_addr_differ && (bond->slave_cnt > 1)) {
 		printk(KERN_WARNING DRV_NAME
-		       ": %s: Warning: the permanent HWaddr of %s "
-		       "- %02X:%02X:%02X:%02X:%02X:%02X - is "
-		       "still in use by %s. Set the HWaddr of "
-		       "%s to a different address to avoid "
-		       "conflicts.\n",
+		       ": %s: Warning: the permanent HWaddr of %s - "
+		       MAC_FMT " - is still in use by %s. "
+		       "Set the HWaddr of %s to a different address "
+		       "to avoid conflicts.\n",
 		       bond_dev->name,
 		       slave_dev->name,
-		       slave->perm_hwaddr[0],
-		       slave->perm_hwaddr[1],
-		       slave->perm_hwaddr[2],
-		       slave->perm_hwaddr[3],
-		       slave->perm_hwaddr[4],
-		       slave->perm_hwaddr[5],
+		       MAC_ARG(slave->perm_hwaddr),
 		       bond_dev->name,
 		       slave_dev->name);
 	}
@@ -3021,13 +3015,8 @@ static void bond_info_show_master(struct seq_file *seq)
 				   ad_info.actor_key);
 			seq_printf(seq, "\tPartner Key: %d\n",
 				   ad_info.partner_key);
-			seq_printf(seq, "\tPartner Mac Address: %02x:%02x:%02x:%02x:%02x:%02x\n",
-				   ad_info.partner_system[0],
-				   ad_info.partner_system[1],
-				   ad_info.partner_system[2],
-				   ad_info.partner_system[3],
-				   ad_info.partner_system[4],
-				   ad_info.partner_system[5]);
+			seq_printf(seq, "\tPartner Mac Address: " MAC_FMT "\n",
+				   MAC_ARG(ad_info.partner_system));
 		}
 	}
 }
@@ -3043,10 +3032,8 @@ static void bond_info_show_slave(struct seq_file *seq, const struct slave *slave
 		   slave->link_failure_count);
 
 	seq_printf(seq,
-		   "Permanent HW addr: %02x:%02x:%02x:%02x:%02x:%02x\n",
-		   slave->perm_hwaddr[0], slave->perm_hwaddr[1],
-		   slave->perm_hwaddr[2], slave->perm_hwaddr[3],
-		   slave->perm_hwaddr[4], slave->perm_hwaddr[5]);
+		   "Permanent HW addr: " MAC_FMT "\n",
+		   MAC_ARG(slave->perm_hwaddr));
 
 	if (bond->params.mode == BOND_MODE_8023AD) {
 		const struct aggregator *agg
diff --git a/drivers/net/cris/eth_v10.c b/drivers/net/cris/eth_v10.c
index 5bdf5ca..918380e 100644
--- a/drivers/net/cris/eth_v10.c
+++ b/drivers/net/cris/eth_v10.c
@@ -618,12 +618,8 @@ e100_set_mac_address(struct net_device *dev, void *p)
 
 	/* show it in the log as well */
 
-	printk(KERN_INFO "%s: changed MAC to ", dev->name);
-
-	for (i = 0; i < 5; i++)
-		printk("%02X:", dev->dev_addr[i]);
-
-	printk("%02X\n", dev->dev_addr[i]);
+	printk(KERN_INFO "%s: changed MAC to " MAC_FMT "\n",
+	       dev->name, MAC_ARG(dev->dev_addr));
 
 	spin_unlock(&np->lock);
 
diff --git a/drivers/net/cs89x0.c b/drivers/net/cs89x0.c
index 9774bb1..d342326 100644
--- a/drivers/net/cs89x0.c
+++ b/drivers/net/cs89x0.c
@@ -841,11 +841,7 @@ cs89x0_probe1(struct net_device *dev, int ioaddr, int modular)
 	}
 
 	/* print the ethernet address. */
-	printk(", MAC");
-	for (i = 0; i < ETH_ALEN; i++)
-	{
-		printk("%c%02x", i ? ':' : ' ', dev->dev_addr[i]);
-	}
+	printk(", MAC " MAC_FMT, MAC_ARG(dev->dev_addr));
 
 	dev->open		= net_open;
 	dev->stop		= net_close;
@@ -1807,17 +1803,14 @@ static int set_mac_address(struct net_device *dev, void *p)
 	int i;
 	struct sockaddr *addr = p;
 
-
 	if (netif_running(dev))
 		return -EBUSY;
 
 	memcpy(dev->dev_addr, addr->sa_data, dev->addr_len);
 
 	if (net_debug) {
-		printk("%s: Setting MAC address to ", dev->name);
-		for (i = 0; i < dev->addr_len; i++)
-			printk(" %2.2x", dev->dev_addr[i]);
-		printk(".\n");
+		printk("%s: Setting MAC address to " MAC_FMT ".\n",
+		       dev->name, MAC_ARG(dev->dev_addr));
 	}
 	/* set the Ethernet address */
 	for (i=0; i < ETH_ALEN/2; i++)
diff --git a/drivers/net/de600.c b/drivers/net/de600.c
index dae97b8..cb8c338 100644
--- a/drivers/net/de600.c
+++ b/drivers/net/de600.c
@@ -444,10 +444,7 @@ static struct net_device * __init de600_probe(void)
 		goto out1;
 	}
 
-	printk(", Ethernet Address: %02X", dev->dev_addr[0]);
-	for (i = 1; i < ETH_ALEN; i++)
-		printk(":%02X",dev->dev_addr[i]);
-	printk("\n");
+	printk(", Ethernet Address: " MAC_FMT "\n", MAC_ARG(dev->dev_addr));
 
 	dev->get_stats = get_stats;
 
diff --git a/drivers/net/de620.c b/drivers/net/de620.c
index dc48924..687326b 100644
--- a/drivers/net/de620.c
+++ b/drivers/net/de620.c
@@ -866,13 +866,14 @@ struct net_device * __init de620_probe(int unit)
 	}
 
 	/* else, got it! */
-	printk(", Ethernet Address: %2.2X",
-		dev->dev_addr[0] = nic_data.NodeID[0]);
+	dev->dev_addr[0] = nic_data.NodeID[0];
 	for (i = 1; i < ETH_ALEN; i++) {
-		printk(":%2.2X", dev->dev_addr[i] = nic_data.NodeID[i]);
+		dev->dev_addr[i] = nic_data.NodeID[i];
 		dev->broadcast[i] = 0xff;
 	}
 
+	printk(", Ethernet Address: " MAC_FMT, MAC_ARG(dev->dev_addr));
+
 	printk(" (%dk RAM,",
 		(nic_data.RAM_Size) ? (nic_data.RAM_Size >> 2) : 64);
 
diff --git a/drivers/net/declance.c b/drivers/net/declance.c
index b2577f4..0dcf9df 100644
--- a/drivers/net/declance.c
+++ b/drivers/net/declance.c
@@ -1223,21 +1223,20 @@ static int __init dec_lance_probe(struct device *bdev, const int type)
 	 */
 	switch (type) {
 	case ASIC_LANCE:
-		printk("%s: IOASIC onboard LANCE, addr = ", name);
+		printk("%s: IOASIC onboard LANCE", name);
 		break;
 	case PMAD_LANCE:
-		printk("%s: PMAD-AA, addr = ", name);
+		printk("%s: PMAD-AA", name);
 		break;
 	case PMAX_LANCE:
-		printk("%s: PMAX onboard LANCE, addr = ", name);
+		printk("%s: PMAX onboard LANCE", name);
 		break;
 	}
-	for (i = 0; i < 6; i++) {
+	for (i = 0; i < 6; i++)
 		dev->dev_addr[i] = esar[i * 4];
-		printk("%2.2x%c", dev->dev_addr[i], i == 5 ? ',' : ':');
-	}
 
-	printk(" irq = %d\n", dev->irq);
+	printk(", addr = " MAC_FMT ", irq = %d\n",
+	       MAC_ARG(dev->dev_addr), dev->irq);
 
 	dev->open = &lance_open;
 	dev->stop = &lance_close;
diff --git a/drivers/net/depca.c b/drivers/net/depca.c
index 1834970..3340482 100644
--- a/drivers/net/depca.c
+++ b/drivers/net/depca.c
@@ -634,14 +634,11 @@ static int __init depca_hw_init (struct net_device *dev, struct device *device)
 
 	printk(", h/w address ");
 	status = get_hw_addr(dev);
+	printk(MAC_FMT, MAC_ARG(dev->dev_addr));
 	if (status != 0) {
 		printk("      which has an Ethernet PROM CRC error.\n");
 		return -ENXIO;
 	}
-	for (i = 0; i < ETH_ALEN - 1; i++) {	/* get the ethernet address */
-		printk("%2.2x:", dev->dev_addr[i]);
-	}
-	printk("%2.2x", dev->dev_addr[i]);
 
 	/* Set up the maximum amount of network RAM(kB) */
 	netRAM = ((lp->adapter != DEPCA) ? 64 : 48);
@@ -1893,11 +1890,7 @@ static void depca_dbg_open(struct net_device *dev)
 		printk("...0x%8.8x\n", readl(&lp->tx_ring[i].base));
 		printk("Initialisation block at 0x%8.8lx(Phys)\n", lp->mem_start);
 		printk("        mode: 0x%4.4x\n", p->mode);
-		printk("        physical address: ");
-		for (i = 0; i < ETH_ALEN - 1; i++) {
-			printk("%2.2x:", p->phys_addr[i]);
-		}
-		printk("%2.2x\n", p->phys_addr[i]);
+		printk("        physical address: " MAC_FMT "\n", MAC_ARG(p->phys_addr));
 		printk("        multicast hash table: ");
 		for (i = 0; i < (HASH_TABLE_LEN >> 3) - 1; i++) {
 			printk("%2.2x:", p->mcast_table[i]);
diff --git a/drivers/net/dgrs.c b/drivers/net/dgrs.c
index df62c02..a41f0da 100644
--- a/drivers/net/dgrs.c
+++ b/drivers/net/dgrs.c
@@ -1169,11 +1169,9 @@ dgrs_probe1(struct net_device *dev)
 	/*
 	 * Get ether address of board
 	 */
-	printk("%s: Ethernet address", dev->name);
 	memcpy(dev->dev_addr, priv->port->ethaddr, 6);
-	for (i = 0; i < 6; ++i)
-		printk("%c%2.2x", i ? ':' : ' ', dev->dev_addr[i]);
-	printk("\n");
+	printk("%s: Ethernet address " MAC_FMT "\n",
+	       dev->name, MAC_ARG(dev->dev_addr));
 
 	if (dev->dev_addr[0] & 1)
 	{
@@ -1230,15 +1228,11 @@ static int __init
 dgrs_initclone(struct net_device *dev)
 {
 	DGRS_PRIV	*priv = (DGRS_PRIV *) dev->priv;
-	int		i;
 
-	printk("%s: Digi RightSwitch port %d ",
-		dev->name, priv->chan);
-	for (i = 0; i < 6; ++i)
-		printk("%c%2.2x", i ? ':' : ' ', dev->dev_addr[i]);
-	printk("\n");
+	printk("%s: Digi RightSwitch port %d " MAC_FMT "\n",
+		dev->name, priv->chan, MAC_ARG(dev->dev_addr));
 
-	return (0);
+	return 0;
 }
 
 static struct net_device * __init
diff --git a/drivers/net/dm9000.c b/drivers/net/dm9000.c
index c3de81b..8ea92cd 100644
--- a/drivers/net/dm9000.c
+++ b/drivers/net/dm9000.c
@@ -600,11 +600,9 @@ dm9000_probe(struct platform_device *pdev)
 	ret = register_netdev(ndev);
 
 	if (ret == 0) {
-		printk("%s: dm9000 at %p,%p IRQ %d MAC: ",
-		       ndev->name,  db->io_addr, db->io_data, ndev->irq);
-		for (i = 0; i < 5; i++)
-			printk("%02x:", ndev->dev_addr[i]);
-		printk("%02x\n", ndev->dev_addr[5]);
+		printk("%s: dm9000 at %p,%p IRQ %d MAC: " MAC_FMT "\n",
+		       ndev->name,  db->io_addr, db->io_data, ndev->irq,
+		       MAC_ARG(ndev->dev_addr));
 	}
 	return 0;
 
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index 249cc84..408db03 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -1131,8 +1131,7 @@ e1000_probe(struct pci_dev *pdev,
 		 "32-bit"));
 	}
 
-	for (i = 0; i < 6; i++)
-		printk("%2.2x%c", netdev->dev_addr[i], i == 5 ? '\n' : ':');
+	printk(MAC_FMT "\n", MAC_ARG(netdev->dev_addr));
 
 	/* reset the hardware with the new settings */
 	e1000_reset(adapter);
diff --git a/drivers/net/eepro.c b/drivers/net/eepro.c
index 4768023..7d36471 100644
--- a/drivers/net/eepro.c
+++ b/drivers/net/eepro.c
@@ -717,10 +717,10 @@ static void __init eepro_print_info (struct net_device *dev)
 		case LAN595:
 			printk("%s: Intel 82595-based lan card at %#x,",
 					dev->name, (unsigned)dev->base_addr);
+			break;
 	}
 
-	for (i=0; i < 6; i++)
-		printk("%c%02x", i ? ':' : ' ', dev->dev_addr[i]);
+	printk(" " MAC_FMT, MAC_ARG(dev->dev_addr));
 
 	if (net_debug > 3)
 		printk(KERN_DEBUG ", %dK RCV buffer",
diff --git a/drivers/net/eepro100.c b/drivers/net/eepro100.c
index 3c54014..3ef5506 100644
--- a/drivers/net/eepro100.c
+++ b/drivers/net/eepro100.c
@@ -706,12 +706,8 @@ static int __devinit speedo_found1(struct pci_dev *pdev,
 	else
 		product = pci_name(pdev);
 
-	printk(KERN_INFO "%s: %s, ", dev->name, product);
-
-	for (i = 0; i < 5; i++)
-		printk("%2.2X:", dev->dev_addr[i]);
-	printk("%2.2X, ", dev->dev_addr[i]);
-	printk("IRQ %d.\n", pdev->irq);
+	printk(KERN_INFO "%s: %s, " MAC_FMT ", IRQ %d.\n", dev->name, product,
+		   MAC_ARG(dev->dev_addr), pdev->irq);
 
 	sp = netdev_priv(dev);
 
diff --git a/drivers/net/epic100.c b/drivers/net/epic100.c
index 211909d..842c386 100644
--- a/drivers/net/epic100.c
+++ b/drivers/net/epic100.c
@@ -494,11 +494,9 @@ static int __devinit epic_init_one (struct pci_dev *pdev,
 	if (ret < 0)
 		goto err_out_unmap_rx;
 
-	printk(KERN_INFO "%s: %s at %#lx, IRQ %d, ",
-		   dev->name, pci_id_tbl[chip_idx].name, ioaddr, dev->irq);
-	for (i = 0; i < 5; i++)
-		printk("%2.2x:", dev->dev_addr[i]);
-	printk("%2.2x.\n", dev->dev_addr[i]);
+	printk(KERN_INFO "%s: %s at %#lx, IRQ %d, " MAC_FMT "\n",
+	       dev->name, pci_id_tbl[chip_idx].name, ioaddr, dev->irq,
+	       MAC_ARG(dev->dev_addr));
 
 out:
 	return ret;
diff --git a/drivers/net/es3210.c b/drivers/net/es3210.c
index 822e5bf..c3b79f4 100644
--- a/drivers/net/es3210.c
+++ b/drivers/net/es3210.c
@@ -192,7 +192,6 @@ static int __init es_probe1(struct net_device *dev, int ioaddr)
 		inb(ioaddr + ES_CFG4), inb(ioaddr + ES_CFG5), inb(ioaddr + ES_CFG6));
 #endif
 
-
 /*	Check the EISA ID of the card. */
 	eisa_id = inl(ioaddr + ES_ID_PORT);
 	if ((eisa_id != ES_EISA_ID1) && (eisa_id != ES_EISA_ID2)) {
@@ -200,21 +199,21 @@ static int __init es_probe1(struct net_device *dev, int ioaddr)
 		goto out;
 	}
 
+	for (i = 0; i < ETHER_ADDR_LEN ; i++)
+		dev->dev_addr[i] = inb(ioaddr + ES_SA_PROM + i);
+
 /*	Check the Racal vendor ID as well. */
-	if (inb(ioaddr + ES_SA_PROM + 0) != ES_ADDR0
-		|| inb(ioaddr + ES_SA_PROM + 1) != ES_ADDR1
-		|| inb(ioaddr + ES_SA_PROM + 2) != ES_ADDR2 ) {
-		printk("es3210.c: card not found");
-		for(i = 0; i < ETHER_ADDR_LEN; i++)
-			printk(" %02x", inb(ioaddr + ES_SA_PROM + i));
-		printk(" (invalid prefix).\n");
+	if (dev->dev_addr[0] != ES_ADDR0 ||
+	    dev->dev_addr[1] != ES_ADDR1 ||
+	    dev->dev_addr[2] != ES_ADDR2) {
+		printk("es3210.c: card not found " MAC_FMT
+		       " (invalid_prefix).\n", MAC_ARG(dev->dev_addr));
 		retval = -ENODEV;
 		goto out;
 	}
 
-	printk("es3210.c: ES3210 rev. %ld at %#x, node", eisa_id>>24, ioaddr);
-	for(i = 0; i < ETHER_ADDR_LEN; i++)
-		printk(" %02x", (dev->dev_addr[i] = inb(ioaddr + ES_SA_PROM + i)));
+	printk("es3210.c: ES3210 rev. %ld at %#x", eisa_id>>24, ioaddr);
+	printk(", node " MAC_FMT, MAC_ARG(dev->dev_addr));
 
 	/* Snarf the interrupt now. */
 	if (dev->irq == 0) {
diff --git a/drivers/net/ewrk3.c b/drivers/net/ewrk3.c
index cb0792c..04594fe 100644
--- a/drivers/net/ewrk3.c
+++ b/drivers/net/ewrk3.c
@@ -632,7 +632,7 @@ static int ewrk3_open(struct net_device *dev)
 {
 	struct ewrk3_private *lp = netdev_priv(dev);
 	u_long iobase = dev->base_addr;
-	int i, status = 0;
+	int status = 0;
 	u_char icr, csr;
 
 	/*
@@ -653,11 +653,8 @@ static int ewrk3_open(struct net_device *dev)
 
 			if (ewrk3_debug > 1) {
 				printk("%s: ewrk3 open with irq %d\n", dev->name, dev->irq);
-				printk("  physical address: ");
-				for (i = 0; i < 5; i++) {
-					printk("%2.2x:", (u_char) dev->dev_addr[i]);
-				}
-				printk("%2.2x\n", (u_char) dev->dev_addr[i]);
+				printk("  physical address: " MAC_FMT "\n",
+				       MAC_ARG(dev->dev_addr));
 				if (lp->shmem_length == 0) {
 					printk("  no shared memory, I/O only mode\n");
 				} else {
diff --git a/drivers/net/fealnx.c b/drivers/net/fealnx.c
index ff9f177..d7b48ab 100644
--- a/drivers/net/fealnx.c
+++ b/drivers/net/fealnx.c
@@ -665,11 +665,9 @@ static int __devinit fealnx_init_one(struct pci_dev *pdev,
 	if (err)
 		goto err_out_free_tx;
 
-	printk(KERN_INFO "%s: %s at %p, ",
-	       dev->name, skel_netdrv_tbl[chip_id].chip_name, ioaddr);
-	for (i = 0; i < 5; i++)
-		printk("%2.2x:", dev->dev_addr[i]);
-	printk("%2.2x, IRQ %d.\n", dev->dev_addr[i], irq);
+	printk(KERN_INFO "%s: %s at %p, " MAC_FMT ", IRQ %d.\n",
+	       dev->name, skel_netdrv_tbl[chip_id].chip_name, ioaddr,
+	       MAC_ARG(dev->dev_addr), irq);
 
 	return 0;
 
diff --git a/drivers/net/fec.c b/drivers/net/fec.c
index 4e8df91..bd8b29c 100644
--- a/drivers/net/fec.c
+++ b/drivers/net/fec.c
@@ -2663,10 +2663,8 @@ static int __init fec_enet_module_init(void)
 			return -EIO;
 		}
 
-		printk("%s: ethernet ", dev->name);
-		for (j = 0; (j < 5); j++)
-			printk("%02x:", dev->dev_addr[j]);
-		printk("%02x\n", dev->dev_addr[5]);
+		printk("%s: ethernet " MAC_FMT "\n",
+		       dev->name, MAC_ARG(dev->dev_addr));
 	}
 	return 0;
 }
diff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c
index 89c2fb4..9f03b0b 100644
--- a/drivers/net/gianfar.c
+++ b/drivers/net/gianfar.c
@@ -361,10 +361,8 @@ static int gfar_probe(struct platform_device *pdev)
 	gfar_init_sysfs(dev);
 
 	/* Print out the device info */
-	printk(KERN_INFO DEVICE_NAME, dev->name);
-	for (idx = 0; idx < 6; idx++)
-		printk("%2.2x%c", dev->dev_addr[idx], idx == 5 ? ' ' : ':');
-	printk("\n");
+	printk(KERN_INFO DEVICE_NAME MAC_FMT "\n",
+	       dev->name, MAC_ARG(dev->dev_addr));
 
 	/* Even more device info helps when determining which kernel */
 	/* provided which set of benchmarks. */
diff --git a/drivers/net/hamachi.c b/drivers/net/hamachi.c
index 15254dc..13acd9a 100644
--- a/drivers/net/hamachi.c
+++ b/drivers/net/hamachi.c
@@ -742,12 +742,9 @@ static int __devinit hamachi_init_one (struct pci_dev *pdev,
 		goto err_out_unmap_rx;
 	}
 
-	printk(KERN_INFO "%s: %s type %x at %p, ",
+	printk(KERN_INFO "%s: %s type %x at %p, " MAC_FMT ", IRQ %d.\n",
 		   dev->name, chip_tbl[chip_id].name, readl(ioaddr + ChipRev),
-		   ioaddr);
-	for (i = 0; i < 5; i++)
-			printk("%2.2x:", dev->dev_addr[i]);
-	printk("%2.2x, IRQ %d.\n", dev->dev_addr[i], irq);
+		   ioaddr, MAC_ARG(dev->dev_addr), irq);
 	i = readb(ioaddr + PCIClkMeas);
 	printk(KERN_INFO "%s:  %d-bit %d Mhz PCI bus (%d), Virtual Jumpers "
 		   "%2.2x, LPA %4.4x.\n",
diff --git a/drivers/net/hamradio/bpqether.c b/drivers/net/hamradio/bpqether.c
index cc0ee93..76aae05 100644
--- a/drivers/net/hamradio/bpqether.c
+++ b/drivers/net/hamradio/bpqether.c
@@ -64,6 +64,7 @@
 #include <net/ax25.h>
 #include <linux/inet.h>
 #include <linux/netdevice.h>
+#include <linux/etherdevice.h>
 #include <linux/if_ether.h>
 #include <linux/if_arp.h>
 #include <linux/skbuff.h>
@@ -94,7 +95,6 @@ static char bpq_eth_addr[6];
 
 static int bpq_rcv(struct sk_buff *, struct net_device *, struct packet_type *, struct net_device *);
 static int bpq_device_event(struct notifier_block *, unsigned long, void *);
-static const char *bpq_print_ethaddr(const unsigned char *);
 
 static struct packet_type bpq_packet_type = {
 	.type	= __constant_htons(ETH_P_BPQ),
@@ -379,16 +379,6 @@ static int bpq_close(struct net_device *dev)
 /*
  *	Proc filesystem
  */
-static const char * bpq_print_ethaddr(const unsigned char *e)
-{
-	static char buf[18];
-
-	sprintf(buf, "%2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X",
-		e[0], e[1], e[2], e[3], e[4], e[5]);
-
-	return buf;
-}
-
 static void *bpq_seq_start(struct seq_file *seq, loff_t *pos)
 {
 	int i = 1;
@@ -435,13 +425,14 @@ static int bpq_seq_show(struct seq_file *seq, void *v)
 	else {
 		const struct bpqdev *bpqdev = v;
 
-		seq_printf(seq, "%-5s %-10s %s  ",
+		seq_printf(seq, "%-5s %-10s " MAC_FMT "  ",
 			bpqdev->axdev->name, bpqdev->ethdev->name,
-			bpq_print_ethaddr(bpqdev->dest_addr));
+			MAC_ARG(bpqdev->dest_addr));
 
-		seq_printf(seq, "%s\n",
-			(bpqdev->acpt_addr[0] & 0x01) ? "*" 
-			   : bpq_print_ethaddr(bpqdev->acpt_addr));
+		if (is_multicast_ether_addr(bpqdev->acpt_addr))
+			seq_printf(seq, "*\n");
+		else
+			seq_printf(seq, MAC_FMT "\n", MAC_ARG(bpqdev->acpt_addr));
 
 	}
 	return 0;
diff --git a/drivers/net/hp-plus.c b/drivers/net/hp-plus.c
index 99a36cc..36ecf91 100644
--- a/drivers/net/hp-plus.c
+++ b/drivers/net/hp-plus.c
@@ -182,7 +182,7 @@ static int __init hpp_probe1(struct net_device *dev, int ioaddr)
 	if (ei_debug  &&  version_printed++ == 0)
 		printk(version);
 
-	printk("%s: %s at %#3x,", dev->name, name, ioaddr);
+	printk("%s: %s at %#3x, ", dev->name, name, ioaddr);
 
 	/* Retrieve and checksum the station address. */
 	outw(MAC_Page, ioaddr + HP_PAGING);
@@ -191,10 +191,11 @@ static int __init hpp_probe1(struct net_device *dev, int ioaddr)
 		unsigned char inval = inb(ioaddr + 8 + i);
 		dev->dev_addr[i] = inval;
 		checksum += inval;
-		printk(" %2.2x", inval);
 	}
 	checksum += inb(ioaddr + 14);
 
+	printk(MAC_FMT, MAC_ARG(dev->dev_addr));
+
 	if (checksum != 0xff) {
 		printk(" bad checksum %2.2x.\n", checksum);
 		retval = -ENODEV;
diff --git a/drivers/net/hp.c b/drivers/net/hp.c
index 635b13c..5d24787 100644
--- a/drivers/net/hp.c
+++ b/drivers/net/hp.c
@@ -160,7 +160,9 @@ static int __init hp_probe1(struct net_device *dev, int ioaddr)
 	printk("%s: %s (ID %02x) at %#3x,", dev->name, name, board_id, ioaddr);
 
 	for(i = 0; i < ETHER_ADDR_LEN; i++)
-		printk(" %2.2x", dev->dev_addr[i] = inb(ioaddr + i));
+		dev->dev_addr[i] = inb(ioaddr + i);
+
+	printk(" " MAC_FMT, MAC_ARG(dev->dev_addr));
 
 	/* Snarf the interrupt now.  Someday this could be moved to open(). */
 	if (dev->irq < 2) {
diff --git a/drivers/net/ibm_emac/ibm_emac_core.c b/drivers/net/ibm_emac/ibm_emac_core.c
index f752e5f..9c9214c 100644
--- a/drivers/net/ibm_emac/ibm_emac_core.c
+++ b/drivers/net/ibm_emac/ibm_emac_core.c
@@ -353,10 +353,8 @@ static void emac_hash_mc(struct ocp_enet_private *dev)
 
 	for (dmi = dev->ndev->mc_list; dmi; dmi = dmi->next) {
 		int bit;
-		DBG2("%d: mc %02x:%02x:%02x:%02x:%02x:%02x" NL,
-		     dev->def->index,
-		     dmi->dmi_addr[0], dmi->dmi_addr[1], dmi->dmi_addr[2],
-		     dmi->dmi_addr[3], dmi->dmi_addr[4], dmi->dmi_addr[5]);
+		DBG2("%d: mc " MAC_FMT NL,
+		     dev->def->index, MAC_ARG(dmi->dmi_addr));
 
 		bit = 63 - (ether_crc(ETH_ALEN, dmi->dmi_addr) >> 26);
 		gaht[bit >> 4] |= 0x8000 >> (bit & 0x0f);
@@ -2191,10 +2189,8 @@ static int __init emac_probe(struct ocp_device *ocpdev)
 
 	ocp_set_drvdata(ocpdev, dev);
 
-	printk("%s: emac%d, MAC %02x:%02x:%02x:%02x:%02x:%02x\n",
-	       ndev->name, dev->def->index,
-	       ndev->dev_addr[0], ndev->dev_addr[1], ndev->dev_addr[2],
-	       ndev->dev_addr[3], ndev->dev_addr[4], ndev->dev_addr[5]);
+	printk("%s: emac%d, MAC " MAC_FMT "\n",
+	       ndev->name, dev->def->index, MAC_ARG(ndev->dev_addr));
 
 	if (dev->phy.address >= 0)
 		printk("%s: found %s PHY (0x%02x)\n", ndev->name,
diff --git a/drivers/net/ioc3-eth.c b/drivers/net/ioc3-eth.c
index cc0be53..f07a333 100644
--- a/drivers/net/ioc3-eth.c
+++ b/drivers/net/ioc3-eth.c
@@ -443,18 +443,11 @@ static void ioc3_get_eaddr_nic(struct ioc3_private *ip)
  */
 static void ioc3_get_eaddr(struct ioc3_private *ip)
 {
-	int i;
-
 
 	ioc3_get_eaddr_nic(ip);
 
-	printk("Ethernet address is ");
-	for (i = 0; i < 6; i++) {
-		printk("%02x", priv_netdev(ip)->dev_addr[i]);
-		if (i < 5)
-			printk(":");
-	}
-	printk(".\n");
+	printk("Ethernet address is " MAC_FMT ".\n",
+	       MAC_ARG(priv_netdev(ip)->dev_addr));
 }
 
 static void __ioc3_set_mac_address(struct net_device *dev)
diff --git a/drivers/net/isa-skeleton.c b/drivers/net/isa-skeleton.c
index 0343f12..885837e 100644
--- a/drivers/net/isa-skeleton.c
+++ b/drivers/net/isa-skeleton.c
@@ -219,7 +219,9 @@ static int __init netcard_probe1(struct net_device *dev, int ioaddr)
 
 	/* Retrieve and print the ethernet address. */
 	for (i = 0; i < 6; i++)
-		printk(" %2.2x", dev->dev_addr[i] = inb(ioaddr + i));
+		dev->dev_addr[i] = inb(ioaddr + i);
+
+	printk(MAC_FMT, MAC_ARG(dev->dev_addr));
 
 	err = -EAGAIN;
 #ifdef jumpered_interrupts
diff --git a/drivers/net/jazzsonic.c b/drivers/net/jazzsonic.c
index 75f6f44..434a46a 100644
--- a/drivers/net/jazzsonic.c
+++ b/drivers/net/jazzsonic.c
@@ -255,13 +255,8 @@ static int __init jazz_sonic_probe(struct platform_device *pdev)
 	if (err)
 		goto out1;
 
-	printk("%s: MAC ", dev->name);
-	for (i = 0; i < 6; i++) {
-		printk("%2.2x", dev->dev_addr[i]);
-		if (i < 5)
-			printk(":");
-	}
-	printk(" IRQ %d\n", dev->irq);
+	printk("%s: MAC " MAC_FMT " IRQ %d\n",
+	       dev->name, MAC_ARG(dev->dev_addr), dev->irq);
 
 	return 0;
 
diff --git a/drivers/net/lance.c b/drivers/net/lance.c
index a4e5fab..993a899 100644
--- a/drivers/net/lance.c
+++ b/drivers/net/lance.c
@@ -523,12 +523,13 @@ static int __init lance_probe1(struct net_device *dev, int ioaddr, int irq, int
 	   a ISA DMA-able region. */
 	SET_MODULE_OWNER(dev);
 	chipname = chip_table[lance_version].name;
-	printk("%s: %s at %#3x,", dev->name, chipname, ioaddr);
+	printk("%s: %s at %#3x, ", dev->name, chipname, ioaddr);
 
 	/* There is a 16 byte station address PROM at the base address.
 	   The first six bytes are the station address. */
 	for (i = 0; i < 6; i++)
-		printk(" %2.2x", dev->dev_addr[i] = inb(ioaddr + i));
+		dev->dev_addr[i] = inb(ioaddr + i);
+	printk(MAC_FMT, MAC_ARG(dev->dev_addr));
 
 	dev->base_addr = ioaddr;
 	/* Make certain the data structures used by the LANCE are aligned and DMAble. */
diff --git a/drivers/net/mac89x0.c b/drivers/net/mac89x0.c
index 62c1c62..c4bb9c1 100644
--- a/drivers/net/mac89x0.c
+++ b/drivers/net/mac89x0.c
@@ -274,13 +274,11 @@ struct net_device * __init mac89x0_probe(int unit)
         }
 
 	dev->irq = SLOT2IRQ(slot);
-	printk(" IRQ %d ADDR ", dev->irq);
 
-	/* print the ethernet address. */
-	for (i = 0; i < ETH_ALEN; i++)
-		printk("%2.2x%s", dev->dev_addr[i],
-		       ((i < ETH_ALEN-1) ? ":" : ""));
-	printk("\n");
+	/* print the IRQ and ethernet address. */
+
+	printk(" IRQ %d ADDR " MAC_FMT "\n",
+	       dev->irq, MAC_ARG(dev->dev_addr));
 
 	dev->open		= net_open;
 	dev->stop		= net_close;
diff --git a/drivers/net/mace.c b/drivers/net/mace.c
index 52b9332..2be2677 100644
--- a/drivers/net/mace.c
+++ b/drivers/net/mace.c
@@ -245,11 +245,9 @@ static int __devinit mace_probe(struct macio_dev *mdev, const struct of_device_i
 		goto err_free_rx_irq;
 	}
 
-	printk(KERN_INFO "%s: MACE at", dev->name);
-	for (j = 0; j < 6; ++j) {
-		printk("%c%.2x", (j? ':': ' '), dev->dev_addr[j]);
-	}
-	printk(", chip revision %d.%d\n", mp->chipid >> 8, mp->chipid & 0xff);
+	printk(KERN_INFO "%s: MACE at " MAC_FMT ", chip revision %d.%d\n",
+	       dev->name, MAC_ARG(dev->dev_addr),
+	       mp->chipid >> 8, mp->chipid & 0xff);
 
 	return 0;
 
diff --git a/drivers/net/macmace.c b/drivers/net/macmace.c
index 9a343b9..9697270 100644
--- a/drivers/net/macmace.c
+++ b/drivers/net/macmace.c
@@ -254,9 +254,8 @@ static int __devinit mace_probe(struct platform_device *pdev)
 	dev->set_multicast_list	= mace_set_multicast;
 	dev->set_mac_address	= mace_set_address;
 
-	printk(KERN_INFO "%s: 68K MACE, hardware address %.2X", dev->name, dev->dev_addr[0]);
-	for (j = 1 ; j < 6 ; j++) printk(":%.2X", dev->dev_addr[j]);
-	printk("\n");
+	printk(KERN_INFO "%s: 68K MACE, hardware address " MAC_FMT "\n",
+	       dev->name, MAC_ARG(dev->dev_addr));
 
 	err = register_netdev(dev);
 	if (!err)
diff --git a/drivers/net/macsonic.c b/drivers/net/macsonic.c
index e9ecdbf..fb3a07a 100644
--- a/drivers/net/macsonic.c
+++ b/drivers/net/macsonic.c
@@ -567,7 +567,6 @@ static int __init mac_sonic_probe(struct platform_device *pdev)
 	struct net_device *dev;
 	struct sonic_local *lp;
 	int err;
-	int i;
 
 	dev = alloc_etherdev(sizeof(struct sonic_local));
 	if (!dev)
@@ -592,13 +591,8 @@ found:
 	if (err)
 		goto out;
 
-	printk("%s: MAC ", dev->name);
-	for (i = 0; i < 6; i++) {
-		printk("%2.2x", dev->dev_addr[i]);
-		if (i < 5)
-			printk(":");
-	}
-	printk(" IRQ %d\n", dev->irq);
+	printk("%s: MAC " MAC_FMT " IRQ %d\n",
+	       dev->name, MAC_ARG(dev->dev_addr), dev->irq);
 
 	return 0;
 
diff --git a/drivers/net/myri_sbus.c b/drivers/net/myri_sbus.c
index 1224ba3..e90b656 100644
--- a/drivers/net/myri_sbus.c
+++ b/drivers/net/myri_sbus.c
@@ -311,12 +311,10 @@ static void myri_is_not_so_happy(struct myri_eth *mp)
 #ifdef DEBUG_HEADER
 static void dump_ehdr(struct ethhdr *ehdr)
 {
-	printk("ehdr[h_dst(%02x:%02x:%02x:%02x:%02x:%02x)"
-	       "h_source(%02x:%02x:%02x:%02x:%02x:%02x)h_proto(%04x)]\n",
-	       ehdr->h_dest[0], ehdr->h_dest[1], ehdr->h_dest[2],
-	       ehdr->h_dest[3], ehdr->h_dest[4], ehdr->h_dest[4],
-	       ehdr->h_source[0], ehdr->h_source[1], ehdr->h_source[2],
-	       ehdr->h_source[3], ehdr->h_source[4], ehdr->h_source[4],
+	printk("ehdr[h_dst(" MAC_FMT ")"
+	       "h_source(" MAC_FMT ")"
+	       "h_proto(%04x)]\n",
+	       MAC_ARG(ehdr->h_dest), EUI48_2(ehdr->h_source),
 	       ehdr->h_proto);
 }
 
@@ -325,13 +323,7 @@ static void dump_ehdr_and_myripad(unsigned char *stuff)
 	struct ethhdr *ehdr = (struct ethhdr *) (stuff + 2);
 
 	printk("pad[%02x:%02x]", stuff[0], stuff[1]);
-	printk("ehdr[h_dst(%02x:%02x:%02x:%02x:%02x:%02x)"
-	       "h_source(%02x:%02x:%02x:%02x:%02x:%02x)h_proto(%04x)]\n",
-	       ehdr->h_dest[0], ehdr->h_dest[1], ehdr->h_dest[2],
-	       ehdr->h_dest[3], ehdr->h_dest[4], ehdr->h_dest[4],
-	       ehdr->h_source[0], ehdr->h_source[1], ehdr->h_source[2],
-	       ehdr->h_source[3], ehdr->h_source[4], ehdr->h_source[4],
-	       ehdr->h_proto);
+	dump_ehdr(ehdr);
 }
 #endif
 
@@ -1092,12 +1084,8 @@ static int __devinit myri_ether_init(struct sbus_dev *sdev)
 
 	num++;
 
-	printk("%s: MyriCOM MyriNET Ethernet ", dev->name);
-
-	for (i = 0; i < 6; i++)
-		printk("%2.2x%c", dev->dev_addr[i],
-		       i == 5 ? ' ' : ':');
-	printk("\n");
+	printk("%s: MyriCOM MyriNET Ethernet " MAC_FMT "\n",
+	       dev->name, MAC_ARG(dev->dev_addr));
 
 	return 0;
 
diff --git a/drivers/net/natsemi.c b/drivers/net/natsemi.c
index 8f80970..e973776 100644
--- a/drivers/net/natsemi.c
+++ b/drivers/net/natsemi.c
@@ -959,12 +959,10 @@ static int __devinit natsemi_probe1 (struct pci_dev *pdev,
 		goto err_create_file;
 
 	if (netif_msg_drv(np)) {
-		printk(KERN_INFO "natsemi %s: %s at %#08lx (%s), ",
-			dev->name, natsemi_pci_info[chip_idx].name, iostart,
-			pci_name(np->pci_dev));
-		for (i = 0; i < ETH_ALEN-1; i++)
-				printk("%02x:", dev->dev_addr[i]);
-		printk("%02x, IRQ %d", dev->dev_addr[i], irq);
+		printk(KERN_INFO "natsemi %s: %s at %#08lx "
+		       "(%s), " MAC_FMT ", IRQ %d",
+		       dev->name, natsemi_pci_info[chip_idx].name, iostart,
+		       pci_name(np->pci_dev), MAC_ARG(dev->dev_addr), irq);
 		if (dev->if_port == PORT_TP)
 			printk(", port TP.\n");
 		else if (np->ignore_phy)
diff --git a/drivers/net/ne-h8300.c b/drivers/net/ne-h8300.c
index 38fd525..a4ad58b 100644
--- a/drivers/net/ne-h8300.c
+++ b/drivers/net/ne-h8300.c
@@ -298,12 +298,11 @@ static int __init ne_probe1(struct net_device *dev, int ioaddr)
 
 	dev->base_addr = ioaddr;
 
-	for(i = 0; i < ETHER_ADDR_LEN; i++) {
-		printk(" %2.2x", SA_prom[i]);
+	for(i = 0; i < ETHER_ADDR_LEN; i++)
 		dev->dev_addr[i] = SA_prom[i];
-	}
+	printk(" " MAC_FMT "\n", MAC_ARG(dev->dev_addr));
 
-	printk("\n%s: %s found at %#x, using IRQ %d.\n",
+	printk("%s: %s found at %#x, using IRQ %d.\n",
 		dev->name, name, ioaddr, dev->irq);
 
 	ei_status.name = name;
diff --git a/drivers/net/ne2.c b/drivers/net/ne2.c
index 089b5bb..0f7337d 100644
--- a/drivers/net/ne2.c
+++ b/drivers/net/ne2.c
@@ -471,12 +471,12 @@ static int __init ne2_probe1(struct net_device *dev, int slot)
 
 	dev->base_addr = base_addr;
 
-	for(i = 0; i < ETHER_ADDR_LEN; i++) {
-		printk(" %2.2x", SA_prom[i]);
+	for(i = 0; i < ETHER_ADDR_LEN; i++)
 		dev->dev_addr[i] = SA_prom[i];
-	}
 
-	printk("\n%s: %s found at %#x, using IRQ %d.\n",
+	printk(" " MAC_FMT "\n", MAC_ARG(dev->dev_addr));
+
+	printk("%s: %s found at %#x, using IRQ %d.\n",
 			dev->name, name, base_addr, dev->irq);
 
 	mca_set_adapter_procfn(slot, (MCA_ProcFn) ne2_procinfo, dev);
diff --git a/drivers/net/ne2k-pci.c b/drivers/net/ne2k-pci.c
index f81d939..8a57858 100644
--- a/drivers/net/ne2k-pci.c
+++ b/drivers/net/ne2k-pci.c
@@ -366,12 +366,12 @@ static int __devinit ne2k_pci_init_one (struct pci_dev *pdev,
 	if (i)
 		goto err_out_free_netdev;
 
-	printk("%s: %s found at %#lx, IRQ %d, ",
-		   dev->name, pci_clone_list[chip_idx].name, ioaddr, dev->irq);
-	for(i = 0; i < 6; i++) {
-		printk("%2.2X%s", SA_prom[i], i == 5 ? ".\n": ":");
+	for(i = 0; i < 6; i++)
 		dev->dev_addr[i] = SA_prom[i];
-	}
+	printk("%s: %s found at %#lx, IRQ %d, " MAC_FMT ".\n",
+	       dev->name, pci_clone_list[chip_idx].name, ioaddr, dev->irq,
+	       MAC_ARG(dev->dev_addr));
+
 	memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);
 
 	return 0;
diff --git a/drivers/net/ni5010.c b/drivers/net/ni5010.c
index 22a3b3d..28602dc 100644
--- a/drivers/net/ni5010.c
+++ b/drivers/net/ni5010.c
@@ -272,8 +272,9 @@ static int __init ni5010_probe1(struct net_device *dev, int ioaddr)
 
 	for (i=0; i<6; i++) {
 		outw(i, IE_GP);
-		printk("%2.2x ", dev->dev_addr[i] = inb(IE_SAPROM));
+		dev->dev_addr[i] = inb(IE_SAPROM);
 	}
+	printk(MAC_FMT " ", MAC_ARG(dev->dev_addr));
 
 	PRINTK2((KERN_DEBUG "%s: I/O #4 passed!\n", dev->name));
 
diff --git a/drivers/net/pci-skeleton.c b/drivers/net/pci-skeleton.c
index 3cdbe11..612e6e5 100644
--- a/drivers/net/pci-skeleton.c
+++ b/drivers/net/pci-skeleton.c
@@ -800,15 +800,11 @@ static int __devinit netdrv_init_one (struct pci_dev *pdev,
 
 	tp->phys[0] = 32;
 
-	printk (KERN_INFO "%s: %s at 0x%lx, "
-		"%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x, "
-		"IRQ %d\n",
+	printk (KERN_INFO "%s: %s at 0x%lx, " MAC_FMT "IRQ %d\n",
 		dev->name,
 		board_info[ent->driver_data].name,
 		dev->base_addr,
-		dev->dev_addr[0], dev->dev_addr[1],
-		dev->dev_addr[2], dev->dev_addr[3],
-		dev->dev_addr[4], dev->dev_addr[5],
+		MAC_ARG(dev->dev_addr),
 		dev->irq);
 
 	printk (KERN_DEBUG "%s:  Identified 8139 chip type '%s'\n",
diff --git a/drivers/net/pcmcia/3c574_cs.c b/drivers/net/pcmcia/3c574_cs.c
index 2b395ee..536f571 100644
--- a/drivers/net/pcmcia/3c574_cs.c
+++ b/drivers/net/pcmcia/3c574_cs.c
@@ -458,10 +458,10 @@ static int tc574_config(struct pcmcia_device *link)
 
 	strcpy(lp->node.dev_name, dev->name);
 
-	printk(KERN_INFO "%s: %s at io %#3lx, irq %d, hw_addr ",
-		   dev->name, cardname, dev->base_addr, dev->irq);
-	for (i = 0; i < 6; i++)
-		printk("%02X%s", dev->dev_addr[i], ((i<5) ? ":" : ".\n"));
+	printk(KERN_INFO "%s: %s at io %#3lx, irq %d, "
+	       "hw_addr " MAC_FMT ".\n",
+	       dev->name, cardname, dev->base_addr, dev->irq,
+	       MAC_ARG(dev->dev_addr));
 	printk(" %dK FIFO split %s Rx:Tx, %sMII interface.\n",
 		   8 << config.u.ram_size, ram_split[config.u.ram_split],
 		   config.u.autoselect ? "autoselect " : "");
diff --git a/drivers/net/pcmcia/3c589_cs.c b/drivers/net/pcmcia/3c589_cs.c
index 503f268..0bd8014 100644
--- a/drivers/net/pcmcia/3c589_cs.c
+++ b/drivers/net/pcmcia/3c589_cs.c
@@ -331,11 +331,10 @@ static int tc589_config(struct pcmcia_device *link)
 
     strcpy(lp->node.dev_name, dev->name);
 
-    printk(KERN_INFO "%s: 3Com 3c%s, io %#3lx, irq %d, hw_addr ",
-	   dev->name, (multi ? "562" : "589"), dev->base_addr,
-	   dev->irq);
-    for (i = 0; i < 6; i++)
-	printk("%02X%s", dev->dev_addr[i], ((i<5) ? ":" : "\n"));
+    printk(KERN_INFO "%s: 3Com 3c%s, io %#3lx, irq %d, "
+	   "hw_addr " MAC_FMT "\n",
+	   dev->name, (multi ? "562" : "589"), dev->base_addr, dev->irq,
+	   MAC_ARG(dev->dev_addr));
     printk(KERN_INFO "  %dK FIFO split %s Rx:Tx, %s xcvr\n",
 	   (fifo & 7) ? 32 : 8, ram_split[(fifo >> 16) & 3],
 	   if_names[dev->if_port]);
diff --git a/drivers/net/pcmcia/axnet_cs.c b/drivers/net/pcmcia/axnet_cs.c
index 50dff1b..9df3124 100644
--- a/drivers/net/pcmcia/axnet_cs.c
+++ b/drivers/net/pcmcia/axnet_cs.c
@@ -403,11 +403,11 @@ static int axnet_config(struct pcmcia_device *link)
 
     strcpy(info->node.dev_name, dev->name);
 
-    printk(KERN_INFO "%s: Asix AX88%d90: io %#3lx, irq %d, hw_addr ",
+    printk(KERN_INFO "%s: Asix AX88%d90: io %#3lx, irq %d, "
+	   "hw_addr " MAC_FMT "\n",
 	   dev->name, ((info->flags & IS_AX88790) ? 7 : 1),
-	   dev->base_addr, dev->irq);
-    for (i = 0; i < 6; i++)
-	printk("%02X%s", dev->dev_addr[i], ((i<5) ? ":" : "\n"));
+	   dev->base_addr, dev->irq,
+	   MAC_ARG(dev->dev_addr));
     if (info->phy_id != -1) {
 	DEBUG(0, "  MII transceiver at index %d, status %x.\n", info->phy_id, j);
     } else {
diff --git a/drivers/net/pcmcia/fmvj18x_cs.c b/drivers/net/pcmcia/fmvj18x_cs.c
index 85d5f2c..5a1c105 100644
--- a/drivers/net/pcmcia/fmvj18x_cs.c
+++ b/drivers/net/pcmcia/fmvj18x_cs.c
@@ -534,11 +534,10 @@ static int fmvj18x_config(struct pcmcia_device *link)
     strcpy(lp->node.dev_name, dev->name);
 
     /* print current configuration */
-    printk(KERN_INFO "%s: %s, sram %s, port %#3lx, irq %d, hw_addr ", 
+    printk(KERN_INFO "%s: %s, sram %s, port %#3lx, irq %d, "
+	   "hw_addr " MAC_FMT "\n", 
 	   dev->name, card_name, sram_config == 0 ? "4K TX*2" : "8K TX*2", 
-	   dev->base_addr, dev->irq);
-    for (i = 0; i < 6; i++)
-	printk("%02X%s", dev->dev_addr[i], ((i<5) ? ":" : "\n"));
+	   dev->base_addr, dev->irq, MAC_ARG(dev->dev_addr));
 
     return 0;
     
diff --git a/drivers/net/pcmcia/smc91c92_cs.c b/drivers/net/pcmcia/smc91c92_cs.c
index af6728c..28e4e36 100644
--- a/drivers/net/pcmcia/smc91c92_cs.c
+++ b/drivers/net/pcmcia/smc91c92_cs.c
@@ -1075,10 +1075,9 @@ static int smc91c92_config(struct pcmcia_device *link)
     strcpy(smc->node.dev_name, dev->name);
 
     printk(KERN_INFO "%s: smc91c%s rev %d: io %#3lx, irq %d, "
-	   "hw_addr ", dev->name, name, (rev & 0x0f), dev->base_addr,
-	   dev->irq);
-    for (i = 0; i < 6; i++)
-	printk("%02X%s", dev->dev_addr[i], ((i<5) ? ":" : "\n"));
+	   "hw_addr " MAC_FMT "\n",
+	   dev->name, name, (rev & 0x0f), dev->base_addr, dev->irq,
+	   MAC_ARG(dev->dev_addr));
 
     if (rev > 0) {
 	if (mir & 0x3ff)
diff --git a/drivers/net/pcmcia/xirc2ps_cs.c b/drivers/net/pcmcia/xirc2ps_cs.c
index 258d6f3..d83a288 100644
--- a/drivers/net/pcmcia/xirc2ps_cs.c
+++ b/drivers/net/pcmcia/xirc2ps_cs.c
@@ -1033,11 +1033,9 @@ xirc2ps_config(struct pcmcia_device * link)
     strcpy(local->node.dev_name, dev->name);
 
     /* give some infos about the hardware */
-    printk(KERN_INFO "%s: %s: port %#3lx, irq %d, hwaddr",
-	 dev->name, local->manf_str,(u_long)dev->base_addr, (int)dev->irq);
-    for (i = 0; i < 6; i++)
-	printk("%c%02X", i?':':' ', dev->dev_addr[i]);
-    printk("\n");
+    printk(KERN_INFO "%s: %s: port %#3lx, irq %d, hwaddr " MAC_FMT "\n",
+	   dev->name, local->manf_str,(u_long)dev->base_addr, (int)dev->irq,
+	   MAC_ARG(dev->dev_addr));
 
     return 0;
 
diff --git a/drivers/net/pppoe.c b/drivers/net/pppoe.c
index 68631a5..4c27377 100644
--- a/drivers/net/pppoe.c
+++ b/drivers/net/pppoe.c
@@ -981,11 +981,8 @@ static int pppoe_seq_show(struct seq_file *seq, void *v)
 	po = v;
 	dev_name = po->pppoe_pa.dev;
 
-	seq_printf(seq, "%08X %02X:%02X:%02X:%02X:%02X:%02X %8s\n",
-		   po->pppoe_pa.sid,
-		   po->pppoe_pa.remote[0], po->pppoe_pa.remote[1],
-		   po->pppoe_pa.remote[2], po->pppoe_pa.remote[3],
-		   po->pppoe_pa.remote[4], po->pppoe_pa.remote[5], dev_name);
+	seq_printf(seq, "%08X " MAC_FMT " %8s\n",
+		   po->pppoe_pa.sid, MAC_ARG(po->pppoe_pa.remote), dev_name);
 out:
 	return 0;
 }
diff --git a/drivers/net/rrunner.c b/drivers/net/rrunner.c
index 5c2e41f..15e3c52 100644
--- a/drivers/net/rrunner.c
+++ b/drivers/net/rrunner.c
@@ -522,7 +522,6 @@ static int __devinit rr_init(struct net_device *dev)
 	struct rr_regs __iomem *regs;
 	struct eeprom *hw = NULL;
 	u32 sram_size, rev;
-	int i;
 
 	rrpriv = netdev_priv(dev);
 	regs = rrpriv->regs;
@@ -560,11 +559,7 @@ static int __devinit rr_init(struct net_device *dev)
 	*(u32 *)(dev->dev_addr+2) =
 	  htonl(rr_read_eeprom_word(rrpriv, &hw->manf.BoardULA[4]));
 
-	printk("  MAC: ");
-
-	for (i = 0; i < 5; i++)
-		printk("%2.2x:", dev->dev_addr[i]);
-	printk("%2.2x\n", dev->dev_addr[i]);
+	printk("  MAC: " MAC_FMT "\n", MAC_ARG(dev->dev_addr));
 
 	sram_size = rr_read_eeprom_word(rrpriv, (void *)8);
 	printk("  SRAM size 0x%06x\n", sram_size);
diff --git a/drivers/net/sb1250-mac.c b/drivers/net/sb1250-mac.c
index 8386ba8..775394a 100644
--- a/drivers/net/sb1250-mac.c
+++ b/drivers/net/sb1250-mac.c
@@ -2490,10 +2490,8 @@ static int sbmac_init(struct net_device *dev, int idx)
 	 * was being displayed)
 	 */
 	printk(KERN_INFO
-	       "%s: SiByte Ethernet at 0x%08lX, address: %02X:%02X:%02X:%02X:%02X:%02X\n",
-	       dev->name, dev->base_addr,
-	       eaddr[0],eaddr[1],eaddr[2],eaddr[3],eaddr[4],eaddr[5]);
-
+	       "%s: SiByte Ethernet at 0x%08lX, address: " MAC_FMT "\n",
+	       dev->name, dev->base_addr, MAC_ARG(eaddr));
 
 	return 0;
 
diff --git a/drivers/net/seeq8005.c b/drivers/net/seeq8005.c
index 4bce7c4..f5d31c1 100644
--- a/drivers/net/seeq8005.c
+++ b/drivers/net/seeq8005.c
@@ -303,7 +303,8 @@ static int __init seeq8005_probe1(struct net_device *dev, int ioaddr)
 
 	/* Retrieve and print the ethernet address. */
 	for (i = 0; i < 6; i++)
-		printk(" %2.2x", dev->dev_addr[i] = SA_prom[i+6]);
+		dev->dev_addr[i] = SA_prom[i+6];
+	printk(MAC_FMT, MAC_ARG(dev->dev_addr));
 
 	if (dev->irq == 0xff)
 		;			/* Do nothing: a user-level program will set it. */
diff --git a/drivers/net/sgiseeq.c b/drivers/net/sgiseeq.c
index 384b468..824eaaf 100644
--- a/drivers/net/sgiseeq.c
+++ b/drivers/net/sgiseeq.c
@@ -711,9 +711,8 @@ static int __init sgiseeq_probe(struct platform_device *pdev)
 		goto err_out_free_page;
 	}
 
-	printk(KERN_INFO "%s: %s ", dev->name, sgiseeqstr);
-	for (i = 0; i < 6; i++)
-		printk("%2.2x%c", dev->dev_addr[i], i == 5 ? '\n' : ':');
+	printk(KERN_INFO "%s: %s " MAC_FMT "\n",
+	       dev->name, sgiseeqstr, MAC_ARG(dev->dev_addr));
 
 	return 0;
 
diff --git a/drivers/net/sis190.c b/drivers/net/sis190.c
index 038ccfb..764421c 100644
--- a/drivers/net/sis190.c
+++ b/drivers/net/sis190.c
@@ -1819,12 +1819,9 @@ static int __devinit sis190_init_one(struct pci_dev *pdev,
 		goto err_remove_mii;
 
 	net_probe(tp, KERN_INFO "%s: %s at %p (IRQ: %d), "
-	       "%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x\n",
-	       pci_name(pdev), sis_chip_info[ent->driver_data].name,
-	       ioaddr, dev->irq,
-	       dev->dev_addr[0], dev->dev_addr[1],
-	       dev->dev_addr[2], dev->dev_addr[3],
-	       dev->dev_addr[4], dev->dev_addr[5]);
+		  MAC_FMT "\n",
+		  pci_name(pdev), sis_chip_info[ent->driver_data].name,
+		  ioaddr, dev->irq, MAC_ARG(dev->dev_addr));
 
 	net_probe(tp, KERN_INFO "%s: %s mode.\n", dev->name,
 		  (tp->features & F_HAS_RGMII) ? "RGMII" : "GMII");
diff --git a/drivers/net/sis900.c b/drivers/net/sis900.c
index 7c6e480..610e502 100644
--- a/drivers/net/sis900.c
+++ b/drivers/net/sis900.c
@@ -537,11 +537,9 @@ static int __devinit sis900_probe(struct pci_dev *pci_dev,
 		goto err_unmap_rx;
 
 	/* print some information about our NIC */
-	printk(KERN_INFO "%s: %s at %#lx, IRQ %d, ", net_dev->name,
-	       card_name, ioaddr, net_dev->irq);
-	for (i = 0; i < 5; i++)
-		printk("%2.2x:", (u8)net_dev->dev_addr[i]);
-	printk("%2.2x.\n", net_dev->dev_addr[i]);
+	printk(KERN_INFO "%s: %s at %#lx, IRQ %d, " MAC_FMT "\n",
+	       net_dev->name, card_name, ioaddr, net_dev->irq,
+	       MAC_ARG(net_dev->dev_addr));
 
 	/* Detect Wake on Lan support */
 	ret = (inl(net_dev->base_addr + CFGPMC) & PMESP) >> 27;
diff --git a/drivers/net/smc-mca.c b/drivers/net/smc-mca.c
index ae1ae34..4ebc807 100644
--- a/drivers/net/smc-mca.c
+++ b/drivers/net/smc-mca.c
@@ -331,10 +331,11 @@ static int __init ultramca_probe(struct device *gen_dev)
 	reg4 = inb(ioaddr + 4) & 0x7f;
 	outb(reg4, ioaddr + 4);
 
-	printk(KERN_INFO "smc_mca[%d]: Parameters: %#3x,", slot + 1, ioaddr);
-
 	for (i = 0; i < 6; i++)
-		printk(" %2.2X", dev->dev_addr[i] = inb(ioaddr + 8 + i));
+		dev->dev_addr[i] = inb(ioaddr + 8 + i);
+
+	printk(KERN_INFO "smc_mca[%d]: Parameters: %#3x, " MAC_FMT,
+	       slot + 1, ioaddr, MAC_ARG(dev->dev_addr));
 
 	/* Switch from the station address to the alternate register set
 	 * and read the useful registers there.
diff --git a/drivers/net/smc-ultra.c b/drivers/net/smc-ultra.c
index a52b22d..e89d7f7 100644
--- a/drivers/net/smc-ultra.c
+++ b/drivers/net/smc-ultra.c
@@ -226,10 +226,11 @@ static int __init ultra_probe1(struct net_device *dev, int ioaddr)
 
 	model_name = (idreg & 0xF0) == 0x20 ? "SMC Ultra" : "SMC EtherEZ";
 
-	printk("%s: %s at %#3x,", dev->name, model_name, ioaddr);
-
 	for (i = 0; i < 6; i++)
-		printk(" %2.2X", dev->dev_addr[i] = inb(ioaddr + 8 + i));
+		dev->dev_addr[i] = inb(ioaddr + 8 + i);
+
+	printk("%s: %s at %#3x, " MAC_FMT, dev->name, model_name,
+	       ioaddr, MAC_ARG(dev->dev_addr));
 
 	/* Switch from the station address to the alternate register set and
 	   read the useful registers there. */
diff --git a/drivers/net/smc-ultra32.c b/drivers/net/smc-ultra32.c
index 88a30e5..3b7589a 100644
--- a/drivers/net/smc-ultra32.c
+++ b/drivers/net/smc-ultra32.c
@@ -205,10 +205,11 @@ static int __init ultra32_probe1(struct net_device *dev, int ioaddr)
 
 	model_name = "SMC Ultra32";
 
-	printk("%s: %s at 0x%X,", dev->name, model_name, ioaddr);
-
 	for (i = 0; i < 6; i++)
-		printk(" %2.2X", dev->dev_addr[i] = inb(ioaddr + 8 + i));
+		dev->dev_addr[i] = inb(ioaddr + 8 + i);
+
+	printk("%s: %s at 0x%X, " MAC_FMT,
+	       dev->name, model_name, ioaddr, MAC_ARG(dev->dev_addr));
 
 	/* Switch from the station address to the alternate register set and
 	   read the useful registers there. */
diff --git a/drivers/net/smc9194.c b/drivers/net/smc9194.c
index 36c1eba..9645657 100644
--- a/drivers/net/smc9194.c
+++ b/drivers/net/smc9194.c
@@ -891,6 +891,7 @@ static int __init smc_probe(struct net_device *dev, int ioaddr)
 	word memory_info_register;
 	word memory_cfg_register;
 
+
 	/* Grab the region so that no one else tries to probe our ioports. */
 	if (!request_region(ioaddr, SMC_IO_EXTENT, DRV_NAME))
 		return -EBUSY;
@@ -1046,10 +1047,7 @@ static int __init smc_probe(struct net_device *dev, int ioaddr)
 	/*
 	 . Print the Ethernet address
 	*/
-	printk("ADDR: ");
-	for (i = 0; i < 5; i++)
-		printk("%2.2x:", dev->dev_addr[i] );
-	printk("%2.2x \n", dev->dev_addr[5] );
+	printk("ADDR: " MAC_FMT "\n", MAC_ARG(dev->dev_addr));
 
 	/* set the private data to zero by default */
 	memset(dev->priv, 0, sizeof(struct smc_local));
diff --git a/drivers/net/smc91x.c b/drivers/net/smc91x.c
index 01cc3c7..7d16d3b 100644
--- a/drivers/net/smc91x.c
+++ b/drivers/net/smc91x.c
@@ -1842,7 +1842,7 @@ static int __init smc_probe(struct net_device *dev, void __iomem *ioaddr)
 {
 	struct smc_local *lp = netdev_priv(dev);
 	static int version_printed = 0;
-	int i, retval;
+	int retval;
 	unsigned int val, revision_register;
 	const char *version_string;
 
@@ -2035,10 +2035,8 @@ static int __init smc_probe(struct net_device *dev, void __iomem *ioaddr)
 			       "set using ifconfig\n", dev->name);
 		} else {
 			/* Print the Ethernet address */
-			printk("%s: Ethernet addr: ", dev->name);
-			for (i = 0; i < 5; i++)
-				printk("%2.2x:", dev->dev_addr[i]);
-			printk("%2.2x\n", dev->dev_addr[5]);
+			printk("%s: Ethernet addr: " MAC_FMT "\n",
+			       dev->name, MAC_ARG(dev->dev_addr));
 		}
 
 		if (lp->phy_type == 0) {
diff --git a/drivers/net/starfire.c b/drivers/net/starfire.c
index 2f172a2..016d097 100644
--- a/drivers/net/starfire.c
+++ b/drivers/net/starfire.c
@@ -864,11 +864,9 @@ static int __devinit starfire_init_one(struct pci_dev *pdev,
 	if (register_netdev(dev))
 		goto err_out_cleardev;
 
-	printk(KERN_INFO "%s: %s at %p, ",
-		   dev->name, netdrv_tbl[chip_idx].name, base);
-	for (i = 0; i < 5; i++)
-		printk("%2.2x:", dev->dev_addr[i]);
-	printk("%2.2x, IRQ %d.\n", dev->dev_addr[i], irq);
+	printk(KERN_INFO "%s: %s at %p, " MAC_FMT ", IRQ %d.\n",
+	       dev->name, netdrv_tbl[chip_idx].name, base,
+	       MAC_ARG(dev->dev_addr), irq);
 
 	if (drv_flags & CanHaveMII) {
 		int phy, phy_idx = 0;
@@ -1470,13 +1468,12 @@ static int __netdev_rx(struct net_device *dev, int *quota)
 		}
 #ifndef final_version			/* Remove after testing. */
 		/* You will want this info for the initial debug. */
-		if (debug > 5)
-			printk(KERN_DEBUG "  Rx data %2.2x:%2.2x:%2.2x:%2.2x:%2.2x:"
-			       "%2.2x %2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x %2.2x%2.2x.\n",
-			       skb->data[0], skb->data[1], skb->data[2], skb->data[3],
-			       skb->data[4], skb->data[5], skb->data[6], skb->data[7],
-			       skb->data[8], skb->data[9], skb->data[10],
-			       skb->data[11], skb->data[12], skb->data[13]);
+		if (debug > 5) {
+			printk(KERN_DEBUG "  Rx data " MAC_FMT " " MAC_FMT
+			       " %2.2x%2.2x.\n",
+			       MAC_ARG(&skb->data[0]), MAC_ARG(&skb->data[6]),
+			       skb->data[12], skb->data[13]);
+		}
 #endif
 
 		skb->protocol = eth_type_trans(skb, dev);
diff --git a/drivers/net/sun3lance.c b/drivers/net/sun3lance.c
index f1548c0..1a9b607 100644
--- a/drivers/net/sun3lance.c
+++ b/drivers/net/sun3lance.c
@@ -378,8 +378,7 @@ static int __init lance_probe( struct net_device *dev)
 	MEM->init.hwaddr[4] = dev->dev_addr[5];
 	MEM->init.hwaddr[5] = dev->dev_addr[4];
 
-	for( i = 0; i < 6; ++i )
-		printk( "%02x%s", dev->dev_addr[i], (i < 5) ? ":" : "\n" );
+	printk(MAC_FMT "\n", MAC_ARG(dev->dev_addr));
 
 	MEM->init.mode = 0x0000;
 	MEM->init.filter[0] = 0x00000000;
@@ -596,17 +595,12 @@ static int lance_start_xmit( struct sk_buff *skb, struct net_device *dev )
 	/* Fill in a Tx ring entry */
 #if 0
 	if (lance_debug >= 2) {
-		u_char *p;
-		int i;
-		printk( "%s: TX pkt %d type 0x%04x from ", dev->name,
-			lp->new_tx, ((u_short *)skb->data)[6]);
-		for( p = &((u_char *)skb->data)[6], i = 0; i < 6; i++ )
-			printk("%02x%s", *p++, i != 5 ? ":" : "" );
-		printk(" to ");
-		for( p = (u_char *)skb->data, i = 0; i < 6; i++ )
-			printk("%02x%s", *p++, i != 5 ? ":" : "" );
-		printk(" data at 0x%08x len %d\n", (int)skb->data,
-		       (int)skb->len );
+		printk( "%s: TX pkt %d type 0x%04x"
+			" from " MAC_FMT " to " MAC_FMT
+			" data at 0x%08x len %d\n",
+			dev->name, lp->new_tx, ((u_short *)skb->data)[6],
+			MAC_ARG(&skb->data[6]), MAC_ARG(skb->data),
+			(int)skb->data, (int)skb->len );
 	}
 #endif
 	/* We're not prepared for the int until the last flags are set/reset.
@@ -831,13 +825,13 @@ static int lance_rx( struct net_device *dev )
 
 #if 0
 				if (lance_debug >= 3) {
-					u_char *data = PKTBUF_ADDR(head), *p;
-					printk( "%s: RX pkt %d type 0x%04x from ", dev->name, entry, ((u_short *)data)[6]);
-					for( p = &data[6], i = 0; i < 6; i++ )
-						printk("%02x%s", *p++, i != 5 ? ":" : "" );
-					printk(" to ");
-					for( p = data, i = 0; i < 6; i++ )
-						printk("%02x%s", *p++, i != 5 ? ":" : "" );
+					u_char *data = PKTBUF_ADDR(head);
+
+					printk("%s: RX pkt %d type 0x%04x"
+					       " from " MAC_FMT " to " MAC_FMT,
+					       dev->name, lp->new_tx, ((u_short *)data)[6],
+					       MAC_ARG(&data[6]), MAC_ARG(data));
+
 					printk(" data %02x %02x %02x %02x %02x %02x %02x %02x "
 					       "len %d at %08x\n",
 					       data[15], data[16], data[17], data[18],
diff --git a/drivers/net/sunbmac.c b/drivers/net/sunbmac.c
index b3e0158..f63d594 100644
--- a/drivers/net/sunbmac.c
+++ b/drivers/net/sunbmac.c
@@ -1227,11 +1227,8 @@ static int __init bigmac_ether_init(struct sbus_dev *qec_sdev)
 
 	dev_set_drvdata(&bp->bigmac_sdev->ofdev.dev, bp);
 
-	printk(KERN_INFO "%s: BigMAC 100baseT Ethernet ", dev->name);
-	for (i = 0; i < 6; i++)
-		printk("%2.2x%c", dev->dev_addr[i],
-		       i == 5 ? ' ' : ':');
-	printk("\n");
+	printk(KERN_INFO "%s: BigMAC 100baseT Ethernet " MAC_FMT "\n",
+	       dev->name, MAC_ARG(dev->dev_addr));
 
 	return 0;
 
diff --git a/drivers/net/sundance.c b/drivers/net/sundance.c
index a8f2af8..4e07624 100644
--- a/drivers/net/sundance.c
+++ b/drivers/net/sundance.c
@@ -468,7 +468,6 @@ static int __devinit sundance_probe1 (struct pci_dev *pdev,
 #endif
 	int phy, phy_idx = 0;
 
-
 /* when built into the kernel, we only print version if device is found */
 #ifndef MODULE
 	static int printed_version;
@@ -547,11 +546,9 @@ static int __devinit sundance_probe1 (struct pci_dev *pdev,
 	if (i)
 		goto err_out_unmap_rx;
 
-	printk(KERN_INFO "%s: %s at %p, ",
-		   dev->name, pci_id_tbl[chip_idx].name, ioaddr);
-	for (i = 0; i < 5; i++)
-			printk("%2.2x:", dev->dev_addr[i]);
-	printk("%2.2x, IRQ %d.\n", dev->dev_addr[i], irq);
+	printk(KERN_INFO "%s: %s at %p, " MAC_FMT ", IRQ %d.\n",
+	       dev->name, pci_id_tbl[chip_idx].name, ioaddr,
+	       MAC_ARG(dev->dev_addr), irq);
 
 	np->phys[0] = 1;		/* Default setting */
 	np->mii_preamble_required++;
diff --git a/drivers/net/sungem.c b/drivers/net/sungem.c
index ed6959e..139c74b 100644
--- a/drivers/net/sungem.c
+++ b/drivers/net/sungem.c
@@ -2963,7 +2963,7 @@ static int __devinit gem_init_one(struct pci_dev *pdev,
 	unsigned long gemreg_base, gemreg_len;
 	struct net_device *dev;
 	struct gem *gp;
-	int i, err, pci_using_dac;
+	int err, pci_using_dac;
 
 	if (gem_version_printed++ == 0)
 		printk(KERN_INFO "%s", version);
@@ -3148,12 +3148,9 @@ static int __devinit gem_init_one(struct pci_dev *pdev,
 		goto err_out_free_consistent;
 	}
 
-	printk(KERN_INFO "%s: Sun GEM (PCI) 10/100/1000BaseT Ethernet ",
-	       dev->name);
-	for (i = 0; i < 6; i++)
-		printk("%2.2x%c", dev->dev_addr[i],
-		       i == 5 ? ' ' : ':');
-	printk("\n");
+	printk(KERN_INFO "%s: Sun GEM (PCI) 10/100/1000BaseT Ethernet "
+	       MAC_FMT "\n",
+	       dev->name, MAC_ARG(dev->dev_addr));
 
 	if (gp->phy_type == phy_mii_mdio0 ||
      	    gp->phy_type == phy_mii_mdio1)
diff --git a/drivers/net/sunhme.c b/drivers/net/sunhme.c
index 8b35f13..20bfdcd 100644
--- a/drivers/net/sunhme.c
+++ b/drivers/net/sunhme.c
@@ -2851,10 +2851,7 @@ static int __devinit happy_meal_sbus_probe_one(struct sbus_dev *sdev, int is_qfe
 		printk(KERN_INFO "%s: HAPPY MEAL (SBUS) 10/100baseT Ethernet ",
 		       dev->name);
 
-	for (i = 0; i < 6; i++)
-		printk("%2.2x%c",
-		       dev->dev_addr[i], i == 5 ? ' ' : ':');
-	printk("\n");
+	printk(MAC_FMT "\n", MAC_ARG(dev->dev_addr));
 
 	return 0;
 
@@ -3203,10 +3200,7 @@ static int __devinit happy_meal_pci_probe(struct pci_dev *pdev,
 		printk(KERN_INFO "%s: HAPPY MEAL (PCI/CheerIO) 10/100BaseT Ethernet ",
 		       dev->name);
 
-	for (i = 0; i < 6; i++)
-		printk("%2.2x%c", dev->dev_addr[i], i == 5 ? ' ' : ':');
-
-	printk("\n");
+	printk(MAC_FMT "\n", MAC_ARG(dev->dev_addr));
 
 	return 0;
 
diff --git a/drivers/net/sunlance.c b/drivers/net/sunlance.c
index 68e4f66..d6c9e7f 100644
--- a/drivers/net/sunlance.c
+++ b/drivers/net/sunlance.c
@@ -1489,12 +1489,8 @@ no_link_test:
 
 	dev_set_drvdata(&sdev->ofdev.dev, lp);
 
-	printk(KERN_INFO "%s: LANCE ", dev->name);
-
-	for (i = 0; i < 6; i++)
-		printk("%2.2x%c", dev->dev_addr[i],
-		       i == 5 ? ' ': ':');
-	printk("\n");
+	printk(KERN_INFO "%s: LANCE " MAC_FMT "\n",
+	       dev->name, MAC_ARG(dev->dev_addr));
 
 	return 0;
 
diff --git a/drivers/net/tokenring/abyss.c b/drivers/net/tokenring/abyss.c
index 1bdd3be..8a86baf 100644
--- a/drivers/net/tokenring/abyss.c
+++ b/drivers/net/tokenring/abyss.c
@@ -97,7 +97,7 @@ static int __devinit abyss_attach(struct pci_dev *pdev, const struct pci_device_
 	static int versionprinted;
 	struct net_device *dev;
 	struct net_local *tp;
-	int i, ret, pci_irq_line;
+	int ret, pci_irq_line;
 	unsigned long pci_ioaddr;
 	
 	if (versionprinted++ == 0)
@@ -148,11 +148,8 @@ static int __devinit abyss_attach(struct pci_dev *pdev, const struct pci_device_
 
 	abyss_read_eeprom(dev);
 		
-	printk("%s:    Ring Station Address: ", dev->name);
-	printk("%2.2x", dev->dev_addr[0]);
-	for (i = 1; i < 6; i++)
-		printk(":%2.2x", dev->dev_addr[i]);
-	printk("\n");
+	printk("%s:    Ring Station Address: " MAC_FMT "\n",
+	       dev->name, MAC_ARG(dev->dev_addr));
 
 	tp = netdev_priv(dev);
 	tp->setnselout = abyss_setnselout_pins;
diff --git a/drivers/net/tokenring/ibmtr.c b/drivers/net/tokenring/ibmtr.c
index 1e8958e..84253b2 100644
--- a/drivers/net/tokenring/ibmtr.c
+++ b/drivers/net/tokenring/ibmtr.c
@@ -705,9 +705,8 @@ static int __devinit ibmtr_probe1(struct net_device *dev, int PIOaddr)
 		channel_def[cardpresent - 1], adapter_def(ti->adapter_type));
 	DPRINTK("using irq %d, PIOaddr %hx, %dK shared RAM.\n",
 			irq, PIOaddr, ti->mapped_ram_size / 2);
-	DPRINTK("Hardware address : %02X:%02X:%02X:%02X:%02X:%02X\n",
-		dev->dev_addr[0], dev->dev_addr[1], dev->dev_addr[2],
-		dev->dev_addr[3], dev->dev_addr[4], dev->dev_addr[5]);
+	DPRINTK("Hardware address : " MAC_FMT "\n",
+		MAC_ARG(dev->dev_addr));
 	if (ti->page_mask)
 		DPRINTK("Shared RAM paging enabled. "
 			"Page size: %uK Shared Ram size %dK\n",
diff --git a/drivers/net/tokenring/lanstreamer.c b/drivers/net/tokenring/lanstreamer.c
index 5d849c0..641b75c 100644
--- a/drivers/net/tokenring/lanstreamer.c
+++ b/drivers/net/tokenring/lanstreamer.c
@@ -447,6 +447,8 @@ static int streamer_reset(struct net_device *dev)
 	unsigned int uaa_addr;
 	struct sk_buff *skb = NULL;
 	__u16 misr;
+#if STREAMER_DEBUG
+#endif
 
 	streamer_priv = (struct streamer_private *) dev->priv;
 	streamer_mmio = streamer_priv->streamer_mmio;
@@ -575,11 +577,8 @@ static int streamer_reset(struct net_device *dev)
 			dev->dev_addr[i+1]= addr & 0xff;
 		}
 #if STREAMER_DEBUG
-		printk("Adapter address: ");
-		for (i = 0; i < 6; i++) {
-			printk("%02x:", dev->dev_addr[i]);
-		}
-		printk("\n");
+		printk("Adapter address: " MAC_FMT "\n",
+		       MAC_ARG(dev->dev_addr));
 #endif
 	}
 	return 0;
@@ -1611,15 +1610,11 @@ static void streamer_arb_cmd(struct net_device *dev)
 		       dev->name);
 		mac_hdr = tr_hdr(mac_frame);
 		printk(KERN_WARNING
-		       "%s: MAC Frame Dest. Addr: %02x:%02x:%02x:%02x:%02x:%02x \n",
-		       dev->name, mac_hdr->daddr[0], mac_hdr->daddr[1],
-		       mac_hdr->daddr[2], mac_hdr->daddr[3],
-		       mac_hdr->daddr[4], mac_hdr->daddr[5]);
+		       "%s: MAC Frame Dest. Addr: " MAC_FMT "\n",
+		       dev->name, MAC_ARG(mac_hdr->daddr));
 		printk(KERN_WARNING
-		       "%s: MAC Frame Srce. Addr: %02x:%02x:%02x:%02x:%02x:%02x \n",
-		       dev->name, mac_hdr->saddr[0], mac_hdr->saddr[1],
-		       mac_hdr->saddr[2], mac_hdr->saddr[3],
-		       mac_hdr->saddr[4], mac_hdr->saddr[5]);
+		       "%s: MAC Frame Srce. Addr: " MAC_FMT "\n",
+		       dev->name, DEV->ADDR6(mac_hdr->saddr));
 #endif
 		netif_rx(mac_frame);
 
@@ -1875,13 +1870,12 @@ static int sprintf_info(char *buffer, struct net_device *dev)
 	size = sprintf(buffer, "\n%6s: Adapter Address   : Node Address      : Functional Addr\n", dev->name);
 
 	size += sprintf(buffer + size,
-		    "%6s: %02x:%02x:%02x:%02x:%02x:%02x : %02x:%02x:%02x:%02x:%02x:%02x : %02x:%02x:%02x:%02x\n",
-		    dev->name, dev->dev_addr[0], dev->dev_addr[1],
-		    dev->dev_addr[2], dev->dev_addr[3], dev->dev_addr[4],
-		    dev->dev_addr[5], sat.node_addr[0], sat.node_addr[1],
-		    sat.node_addr[2], sat.node_addr[3], sat.node_addr[4],
-		    sat.node_addr[5], sat.func_addr[0], sat.func_addr[1],
-		    sat.func_addr[2], sat.func_addr[3]);
+			"%6s: " MAC_FMT " : %02x:%02x:%02x:%02x:%02x:%02x : %02x:%02x:%02x:%02x\n",
+			dev->name, MAC_ARG(dev->dev_addr),
+			sat.node_addr[0], sat.node_addr[1], sat.node_addr[2],
+			sat.node_addr[3], sat.node_addr[4], sat.node_addr[5],
+			sat.func_addr[0], sat.func_addr[1],
+			sat.func_addr[2], sat.func_addr[3]);
 
 	size += sprintf(buffer + size, "\n%6s: Token Ring Parameters Table:\n", dev->name);
 
diff --git a/drivers/net/tokenring/madgemc.c b/drivers/net/tokenring/madgemc.c
index f8f4d74..cfcbd20 100644
--- a/drivers/net/tokenring/madgemc.c
+++ b/drivers/net/tokenring/madgemc.c
@@ -323,11 +323,8 @@ static int __devinit madgemc_probe(struct device *device)
 	mca_device_set_name(mdev, (card->cardtype == 0x08)?MADGEMC16_CARDNAME:MADGEMC32_CARDNAME);
 	mca_set_adapter_procfn(mdev->slot, madgemc_mcaproc, dev);
 
-	printk("%s:     Ring Station Address: ", dev->name);
-	printk("%2.2x", dev->dev_addr[0]);
-	for (i = 1; i < 6; i++)
-		printk(":%2.2x", dev->dev_addr[i]);
-	printk("\n");
+	printk("%s:     Ring Station Address: " MAC_FMT "\n",
+	       dev->name, MAC_ARG(dev->dev_addr));
 
 	if (tmsdev_init(dev, device)) {
 		printk("%s: unable to get memory for dev->priv.\n", 
@@ -717,11 +714,8 @@ static int madgemc_mcaproc(char *buf, int slot, void *d)
 		}
 		len += sprintf(buf+len, " (%s)\n", (curcard->fairness)?"Unfair":"Fair");
 		
-		len += sprintf(buf+len, "Ring Station Address: ");
-		len += sprintf(buf+len, "%2.2x", dev->dev_addr[0]);
-		for (i = 1; i < 6; i++)
-			len += sprintf(buf+len, " %2.2x", dev->dev_addr[i]);
-		len += sprintf(buf+len, "\n");
+		len += sprintf(buf+len, "Ring Station Address: " MAC_FMT "\n",
+			       MAC_ARG(dev->dev_addr));
 	} else 
 		len += sprintf(buf+len, "Card not configured\n");
 
diff --git a/drivers/net/tokenring/olympic.c b/drivers/net/tokenring/olympic.c
index 09b3cfb..cd8edc7 100644
--- a/drivers/net/tokenring/olympic.c
+++ b/drivers/net/tokenring/olympic.c
@@ -418,14 +418,12 @@ static int __devinit olympic_init(struct net_device *dev)
 	writel(uaa_addr,olympic_mmio+LAPA);
 	adapter_addr=olympic_priv->olympic_lap + (uaa_addr & (~0xf800));
 
+	memcpy_fromio(&dev->dev_addr[0], adapter_addr,6);
+
 #if OLYMPIC_DEBUG
-	printk("adapter address: %02x:%02x:%02x:%02x:%02x:%02x\n",
-			readb(adapter_addr), readb(adapter_addr+1),readb(adapter_addr+2),
-			readb(adapter_addr+3),readb(adapter_addr+4),readb(adapter_addr+5));
+	printk("adapter address: " MAC_FMT "\n", MAC_ARG(dev->dev_addr));
 #endif
 
-	memcpy_fromio(&dev->dev_addr[0], adapter_addr,6);
-
 	olympic_priv->olympic_addr_table_addr = swab16(readw(init_srb + 12)); 
 	olympic_priv->olympic_parms_addr = swab16(readw(init_srb + 14)); 
 
@@ -567,14 +565,8 @@ static int olympic_open(struct net_device *dev)
 			goto out;
 
 		case 0x32:
-			printk(KERN_WARNING "%s: Invalid LAA: %02x:%02x:%02x:%02x:%02x:%02x\n",
-				dev->name, 
-				olympic_priv->olympic_laa[0],
-				olympic_priv->olympic_laa[1],
-				olympic_priv->olympic_laa[2],
-				olympic_priv->olympic_laa[3],
-				olympic_priv->olympic_laa[4],
-				olympic_priv->olympic_laa[5]) ; 
+			printk(KERN_WARNING "%s: Invalid LAA: " MAC_FMT "\n",
+			       dev->name, MAC_ARG(olympic_priv->olympic_laa));
 			goto out;
 
 		default:
@@ -1650,14 +1642,9 @@ static int olympic_proc_info(char *buffer, char **start, off_t offset, int lengt
 	size += sprintf(buffer+size, "\n%6s: Adapter Address   : Node Address      : Functional Addr\n",
  	   dev->name); 
 
-	size += sprintf(buffer+size, "%6s: %02x:%02x:%02x:%02x:%02x:%02x : %02x:%02x:%02x:%02x:%02x:%02x : %02x:%02x:%02x:%02x\n",
+	size += sprintf(buffer+size, "%6s: " MAC_FMT " : %02x:%02x:%02x:%02x:%02x:%02x : %02x:%02x:%02x:%02x\n",
 	   dev->name,
-           dev->dev_addr[0],
-	   dev->dev_addr[1],
-	   dev->dev_addr[2],
- 	   dev->dev_addr[3],
-	   dev->dev_addr[4],
-	   dev->dev_addr[5],
+	   MAC_ARG(dev->dev_addr),
 	   readb(oat+offsetof(struct olympic_adapter_addr_table,node_addr)), 
 	   readb(oat+offsetof(struct olympic_adapter_addr_table,node_addr)+1),
 	   readb(oat+offsetof(struct olympic_adapter_addr_table,node_addr)+2),
diff --git a/drivers/net/tokenring/proteon.c b/drivers/net/tokenring/proteon.c
index cb7dbb6..0a4a874 100644
--- a/drivers/net/tokenring/proteon.c
+++ b/drivers/net/tokenring/proteon.c
@@ -153,11 +153,8 @@ static int __init setup_card(struct net_device *dev, struct device *pdev)
 		
 	proteon_read_eeprom(dev);
 
-	printk(KERN_DEBUG "proteon.c:    Ring Station Address: ");
-	printk("%2.2x", dev->dev_addr[0]);
-	for (j = 1; j < 6; j++)
-		printk(":%2.2x", dev->dev_addr[j]);
-	printk("\n");
+	printk(KERN_DEBUG "proteon.c:    Ring Station Address: " MAC_FMT "\n",
+	       MAC_ARG(dev->dev_addr));
 		
 	tp = netdev_priv(dev);
 	tp->setnselout = proteon_setnselout_pins;
diff --git a/drivers/net/tokenring/skisa.c b/drivers/net/tokenring/skisa.c
index 33afea3..9b21f32 100644
--- a/drivers/net/tokenring/skisa.c
+++ b/drivers/net/tokenring/skisa.c
@@ -170,11 +170,8 @@ static int __init setup_card(struct net_device *dev, struct device *pdev)
 		
 	sk_isa_read_eeprom(dev);
 
-	printk(KERN_DEBUG "skisa.c:    Ring Station Address: ");
-	printk("%2.2x", dev->dev_addr[0]);
-	for (j = 1; j < 6; j++)
-		printk(":%2.2x", dev->dev_addr[j]);
-	printk("\n");
+	printk(KERN_DEBUG "skisa.c:    Ring Station Address: " MAC_FMT "\n",
+	       MAC_ARG(dev->dev_addr));
 		
 	tp = netdev_priv(dev);
 	tp->setnselout = sk_isa_setnselout_pins;
diff --git a/drivers/net/tokenring/tmspci.c b/drivers/net/tokenring/tmspci.c
index 3b2f00b..e7d885c 100644
--- a/drivers/net/tokenring/tmspci.c
+++ b/drivers/net/tokenring/tmspci.c
@@ -96,7 +96,7 @@ static int __devinit tms_pci_attach(struct pci_dev *pdev, const struct pci_devic
 	static int versionprinted;
 	struct net_device *dev;
 	struct net_local *tp;
-	int i, ret;
+	int ret;
 	unsigned int pci_irq_line;
 	unsigned long pci_ioaddr;
 	struct card_info *cardinfo = &card_info_table[ent->driver_data];
@@ -137,11 +137,8 @@ static int __devinit tms_pci_attach(struct pci_dev *pdev, const struct pci_devic
 		
 	tms_pci_read_eeprom(dev);
 
-	printk("%s:    Ring Station Address: ", dev->name);
-	printk("%2.2x", dev->dev_addr[0]);
-	for (i = 1; i < 6; i++)
-		printk(":%2.2x", dev->dev_addr[i]);
-	printk("\n");
+	printk("%s:    Ring Station Address: " MAC_FMT "\n",
+	       dev->name, MAC_ARG(dev->dev_addr));
 		
 	ret = tmsdev_init(dev, &pdev->dev);
 	if (ret) {
diff --git a/drivers/net/tulip/de2104x.c b/drivers/net/tulip/de2104x.c
index d380e0b..c6606ea 100644
--- a/drivers/net/tulip/de2104x.c
+++ b/drivers/net/tulip/de2104x.c
@@ -2045,15 +2045,11 @@ static int __devinit de_init_one (struct pci_dev *pdev,
 		goto err_out_iomap;
 
 	/* print info about board and interface just registered */
-	printk (KERN_INFO "%s: %s at 0x%lx, "
-		"%02x:%02x:%02x:%02x:%02x:%02x, "
-		"IRQ %d\n",
+	printk (KERN_INFO "%s: %s at 0x%lx, " MAC_FMT ", IRQ %d\n",
 		dev->name,
 		de->de21040 ? "21040" : "21041",
 		dev->base_addr,
-		dev->dev_addr[0], dev->dev_addr[1],
-		dev->dev_addr[2], dev->dev_addr[3],
-		dev->dev_addr[4], dev->dev_addr[5],
+		MAC_ARG(dev->dev_addr),
 		dev->irq);
 
 	pci_set_drvdata(pdev, dev);
diff --git a/drivers/net/tulip/de4x5.c b/drivers/net/tulip/de4x5.c
index 0990289..9f9a73f 100644
--- a/drivers/net/tulip/de4x5.c
+++ b/drivers/net/tulip/de4x5.c
@@ -5475,13 +5475,9 @@ de4x5_dbg_srom(struct de4x5_srom *p)
 	printk("Sub-system ID:        %04x\n", *((u_short *)p->sub_system_id));
 	printk("ID Block CRC:         %02x\n", (u_char)(p->id_block_crc));
 	printk("SROM version:         %02x\n", (u_char)(p->version));
-	printk("# controllers:         %02x\n", (u_char)(p->num_controllers));
+	printk("# controllers:        %02x\n", (u_char)(p->num_controllers));
 
-	printk("Hardware Address:     ");
-	for (i=0;i<ETH_ALEN-1;i++) {
-	    printk("%02x:", (u_char)*(p->ieee_addr+i));
-	}
-	printk("%02x\n", (u_char)*(p->ieee_addr+i));
+	printk("Hardware Address:     " MAC_FMT "\n", MAC_ARG(p->ieee_addr));
 	printk("CRC checksum:         %04x\n", (u_short)(p->chksum));
 	for (i=0; i<64; i++) {
 	    printk("%3d %04x\n", i<<1, (u_short)*((u_short *)p+i));
@@ -5497,19 +5493,8 @@ de4x5_dbg_rx(struct sk_buff *skb, int len)
     int i, j;
 
     if (de4x5_debug & DEBUG_RX) {
-	printk("R: %02x:%02x:%02x:%02x:%02x:%02x <- %02x:%02x:%02x:%02x:%02x:%02x len/SAP:%02x%02x [%d]\n",
-	       (u_char)skb->data[0],
-	       (u_char)skb->data[1],
-	       (u_char)skb->data[2],
-	       (u_char)skb->data[3],
-	       (u_char)skb->data[4],
-	       (u_char)skb->data[5],
-	       (u_char)skb->data[6],
-	       (u_char)skb->data[7],
-	       (u_char)skb->data[8],
-	       (u_char)skb->data[9],
-	       (u_char)skb->data[10],
-	       (u_char)skb->data[11],
+	printk("R: " MAC_FMT " <- " MAC_FMT " len/SAP:%02x%02x [%d]\n",
+	       MAC_ARG(skb->data), MAC_ARG(&skb->data[6]),
 	       (u_char)skb->data[12],
 	       (u_char)skb->data[13],
 	       len);
diff --git a/drivers/net/tulip/dmfe.c b/drivers/net/tulip/dmfe.c
index dab74fe..5e6d40b 100644
--- a/drivers/net/tulip/dmfe.c
+++ b/drivers/net/tulip/dmfe.c
@@ -471,13 +471,13 @@ static int __devinit dmfe_init_one (struct pci_dev *pdev,
 	if (err)
 		goto err_out_res;
 
-	printk(KERN_INFO "%s: Davicom DM%04lx at pci%s,",
-		dev->name,
-		ent->driver_data >> 16,
-		pci_name(pdev));
-	for (i = 0; i < 6; i++)
-		printk("%c%02x", i ? ':' : ' ', dev->dev_addr[i]);
-	printk(", irq %d.\n", dev->irq);
+	printk(KERN_INFO "%s: Davicom DM%04lx at pci%s, "
+	       MAC_FMT ", irq %d.\n",
+	       dev->name,
+	       ent->driver_data >> 16,
+	       pci_name(pdev),
+	       MAC_ARG(dev->dev_addr),
+	       dev->irq);
 
 	pci_set_master(pdev);
 
diff --git a/drivers/net/tulip/tulip_core.c b/drivers/net/tulip/tulip_core.c
index da05a3a..1f319bf 100644
--- a/drivers/net/tulip/tulip_core.c
+++ b/drivers/net/tulip/tulip_core.c
@@ -1044,12 +1044,10 @@ static void set_rx_mode(struct net_device *dev)
 				filterbit &= 0x3f;
 				mc_filter[filterbit >> 5] |= 1 << (filterbit & 31);
 				if (tulip_debug > 2) {
-					printk(KERN_INFO "%s: Added filter for %2.2x:%2.2x:%2.2x:"
-						   "%2.2x:%2.2x:%2.2x  %8.8x bit %d.\n", dev->name,
-						   mclist->dmi_addr[0], mclist->dmi_addr[1],
-						   mclist->dmi_addr[2], mclist->dmi_addr[3],
-						   mclist->dmi_addr[4], mclist->dmi_addr[5],
-						   ether_crc(ETH_ALEN, mclist->dmi_addr), filterbit);
+					printk(KERN_INFO "%s: Added filter for " MAC_FMT
+					       "  %8.8x bit %d.\n",
+					       dev->name, MAC_ARG(mclist->dmi_addr),
+					       ether_crc(ETH_ALEN, mclist->dmi_addr), filterbit);
 				}
 			}
 			if (mc_filter[0] == tp->mc_filter[0]  &&
@@ -1633,8 +1631,7 @@ static int __devinit tulip_init_one (struct pci_dev *pdev,
 
 	if (eeprom_missing)
 		printk(" EEPROM not present,");
-	for (i = 0; i < 6; i++)
-		printk("%c%2.2X", i ? ':' : ' ', dev->dev_addr[i]);
+	printk(" " MAC_FMT, MAC_ARG(dev->dev_addr));
 	printk(", IRQ %d.\n", irq);
 
         if (tp->chip_id == PNIC2)
diff --git a/drivers/net/tulip/winbond-840.c b/drivers/net/tulip/winbond-840.c
index 5824f6a..4f771a4 100644
--- a/drivers/net/tulip/winbond-840.c
+++ b/drivers/net/tulip/winbond-840.c
@@ -434,11 +434,9 @@ static int __devinit w840_probe1 (struct pci_dev *pdev,
 	if (i)
 		goto err_out_cleardev;
 
-	printk(KERN_INFO "%s: %s at %p, ",
-		   dev->name, pci_id_tbl[chip_idx].name, ioaddr);
-	for (i = 0; i < 5; i++)
-			printk("%2.2x:", dev->dev_addr[i]);
-	printk("%2.2x, IRQ %d.\n", dev->dev_addr[i], irq);
+	printk(KERN_INFO "%s: %s at %p, " MAC_FMT ", IRQ %d.\n",
+	       dev->name, pci_id_tbl[chip_idx].name, ioaddr,
+	       MAC_ARG(dev->dev_addr), irq);
 
 	if (np->drv_flags & CanHaveMII) {
 		int phy, phy_idx = 0;
@@ -1246,16 +1244,14 @@ static int netdev_rx(struct net_device *dev)
 			}
 #ifndef final_version				/* Remove after testing. */
 			/* You will want this info for the initial debug. */
-			if (debug > 5)
-				printk(KERN_DEBUG "  Rx data %2.2x:%2.2x:%2.2x:%2.2x:%2.2x:"
-					   "%2.2x %2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x %2.2x%2.2x "
-					   "%d.%d.%d.%d.\n",
-					   skb->data[0], skb->data[1], skb->data[2], skb->data[3],
-					   skb->data[4], skb->data[5], skb->data[6], skb->data[7],
-					   skb->data[8], skb->data[9], skb->data[10],
-					   skb->data[11], skb->data[12], skb->data[13],
-					   skb->data[14], skb->data[15], skb->data[16],
-					   skb->data[17]);
+			if (debug > 5) {
+
+				printk(KERN_DEBUG "  Rx data " MAC_FMT " " MAC_FMT
+				       " %2.2x%2.2x %d.%d.%d.%d.\n",
+				       MAC_ARG(&skb->data[0]), MAC_ARG(&skb->data[6]),
+				       skb->data[12], skb->data[13],
+				       skb->data[14], skb->data[15], skb->data[16], skb->data[17]);
+			}
 #endif
 			skb->protocol = eth_type_trans(skb, dev);
 			netif_rx(skb);
diff --git a/drivers/net/tulip/xircom_cb.c b/drivers/net/tulip/xircom_cb.c
index 16a54e6..4feb09e 100644
--- a/drivers/net/tulip/xircom_cb.c
+++ b/drivers/net/tulip/xircom_cb.c
@@ -1105,11 +1105,7 @@ static void read_mac_address(struct xircom_private *card)
 		}
 	}
 	spin_unlock_irqrestore(&card->lock, flags);
-#ifdef DEBUG
-	for (i = 0; i < 6; i++)
-		printk("%c%2.2X", i ? ':' : ' ', card->dev->dev_addr[i]);
-	printk("\n");
-#endif
+	pr_debug(" " MAC_FMT "\n", MAC_ARG(card->dev->dev_addr));
 	leave("read_mac_address");
 }
 
@@ -1150,6 +1146,8 @@ static void xircom_up(struct xircom_private *card)
 {
 	unsigned long flags;
 	int i;
+#ifdef DEBUG
+#endif
 
 	enter("xircom_up");
 
diff --git a/drivers/net/typhoon.c b/drivers/net/typhoon.c
index fdcbdde..f7a8c30 100644
--- a/drivers/net/typhoon.c
+++ b/drivers/net/typhoon.c
@@ -2315,7 +2315,6 @@ typhoon_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 	dma_addr_t shared_dma;
 	struct cmd_desc xp_cmd;
 	struct resp_desc xp_resp[3];
-	int i;
 	int err = 0;
 
 	if(!did_version++)
@@ -2532,13 +2531,11 @@ typhoon_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 
 	pci_set_drvdata(pdev, dev);
 
-	printk(KERN_INFO "%s: %s at %s 0x%llx, ",
+	printk(KERN_INFO "%s: %s at %s 0x%llx, " MAC_FMT "\n",
 	       dev->name, typhoon_card_info[card_id].name,
 	       use_mmio ? "MMIO" : "IO",
-	       (unsigned long long)pci_resource_start(pdev, use_mmio));
-	for(i = 0; i < 5; i++)
-		printk("%2.2x:", dev->dev_addr[i]);
-	printk("%2.2x\n", dev->dev_addr[i]);
+	       (unsigned long long)pci_resource_start(pdev, use_mmio),
+	       MAC_ARG(dev->dev_addr));
 
 	/* xp_resp still contains the response to the READ_VERSIONS command.
 	 * For debugging, let the user know what version he has.
diff --git a/drivers/net/via-rhine.c b/drivers/net/via-rhine.c
index 0e6aefe..e0ae43f 100644
--- a/drivers/net/via-rhine.c
+++ b/drivers/net/via-rhine.c
@@ -795,18 +795,14 @@ static int __devinit rhine_init_one(struct pci_dev *pdev,
 	if (rc)
 		goto err_out_unmap;
 
-	printk(KERN_INFO "%s: VIA %s at 0x%lx, ",
+	printk(KERN_INFO "%s: VIA %s at 0x%lx, " MAC_FMT ", IRQ %d.\n",
 	       dev->name, name,
 #ifdef USE_MMIO
-		memaddr
+	       memaddr,
 #else
-		(long)ioaddr
+	       (long)ioaddr,
 #endif
-		 );
-
-	for (i = 0; i < 5; i++)
-		printk("%2.2x:", dev->dev_addr[i]);
-	printk("%2.2x, IRQ %d.\n", dev->dev_addr[i], pdev->irq);
+	       MAC_ARG(dev->dev_addr), pdev->irq);
 
 	pci_set_drvdata(pdev, dev);
 
diff --git a/drivers/net/wd.c b/drivers/net/wd.c
index a032681..41a2bb9 100644
--- a/drivers/net/wd.c
+++ b/drivers/net/wd.c
@@ -176,9 +176,11 @@ static int __init wd_probe1(struct net_device *dev, int ioaddr)
 	if (ei_debug  &&  version_printed++ == 0)
 		printk(version);
 
-	printk("%s: WD80x3 at %#3x,", dev->name, ioaddr);
 	for (i = 0; i < 6; i++)
-		printk(" %2.2X", dev->dev_addr[i] = inb(ioaddr + 8 + i));
+		dev->dev_addr[i] = inb(ioaddr + 8 + i);
+
+	printk("%s: WD80x3 at %#3x, " MAC_FMT,
+	       dev->name, ioaddr, MAC_ARG(dev->dev_addr));
 
 	/* The following PureData probe code was contributed by
 	   Mike Jagdis <jaggy@purplet.demon.co.uk>. Puredata does software





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

* Re: [PATCH net-2.6.24] introduce MAC_FMT/MAC_ARG
  2007-08-26  0:09 ` Joe Perches
@ 2007-08-27 10:54   ` Johannes Berg
  2007-08-27 15:44     ` Joe Perches
  2007-08-27 20:41     ` David Miller
  0 siblings, 2 replies; 29+ messages in thread
From: Johannes Berg @ 2007-08-27 10:54 UTC (permalink / raw)
  To: Joe Perches; +Cc: David S. Miller, netdev

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

On Sat, 2007-08-25 at 17:09 -0700, Joe Perches wrote:
> 
> @@ -747,22 +741,15 @@ static int ariadne_rx(struct net_device *dev)
>             skb_copy_to_linear_data(skb, (char *)priv->rx_buff[entry],
> pkt_len);
>             skb->protocol=eth_type_trans(skb,dev);
>  #if 0
>  (int)skb->len);
> +{
> +           printk(KERN_DEBUG "RX pkt type 0x%04x"
> +                  " from " MAC_FMT " to " MAC_FMT
> +                  " data 0x%08x len %d\n",
> +                  ((u_short *)skb->data)[6],
> +                  MAC_ARG(((u_char *)skb->data)+6),
> +                  MAC_ARG((u_char *)skb->data),
> +                  (int)skb->data, (int)skb->len);
> +}
>  #endif 

You could drop the braces since there are no variables there any more.

Thanks for this patch though, I'd have done it otherwise.

I was rereading your original conversion and noticed that it is now
trivial to make the kernel smaller like you originally wanted by doing
something like this

-- define this function somewhere --
print_mac(u8 *mac, char *buf)
{
	sprintf(buf, "%02x:...", mac[0], mac[1], ...);
}
EXPORT_SYMBOL(print_mac)

-- change macros to --
#define MAC_FMT "%s"
#define MAC_ARG(a) ({char __buf[18]; print_mac(a, buf); __buf})

I'm not sure we'd want that, but at the time you said it made the kernel
significantly smaller and I doubt there's a performance problem with it
(who prints mac addresses regularly?)

johannes

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

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

* Re: [PATCH net-2.6.24] introduce MAC_FMT/MAC_ARG
  2007-08-27 10:54   ` Johannes Berg
@ 2007-08-27 15:44     ` Joe Perches
  2007-08-27 20:41     ` David Miller
  1 sibling, 0 replies; 29+ messages in thread
From: Joe Perches @ 2007-08-27 15:44 UTC (permalink / raw)
  To: Johannes Berg; +Cc: David S. Miller, netdev

On Mon, 2007-08-27 at 12:54 +0200, Johannes Berg wrote:
> Thanks for this patch though, I'd have done it otherwise.

I had it, it was just a s/EUI48/MAC/ and copy/paste thing.

There are also the arch, drivers/[^net], and net directories
that have a few of these.

The patch also added the missing ")" in drivers/net/82596.c

> I was rereading your original conversion and noticed that it is now
> trivial to make the kernel smaller like you originally wanted by doing
> something like this
> 
> -- define this function somewhere --
> print_mac(u8 *mac, char *buf)
> {
> 	sprintf(buf, "%02x:...", mac[0], mac[1], ...);
> }
> EXPORT_SYMBOL(print_mac)
> 
> -- change macros to --
> #define MAC_FMT "%s"
> #define MAC_ARG(a) ({char __buf[18]; print_mac(a, buf); __buf})
> 
> I'm not sure we'd want that, but at the time you said it made the kernel
> significantly smaller and I doubt there's a performance problem with it
> (who prints mac addresses regularly?)

The reduction is ~.1% in an allyesconfig.
The compound statement to hide the automatic works well.
The function call is noise compared to the printk.

cheers, Joe


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

* Re: [PATCH net-2.6.24] introduce MAC_FMT/MAC_ARG
  2007-08-27 10:54   ` Johannes Berg
  2007-08-27 15:44     ` Joe Perches
@ 2007-08-27 20:41     ` David Miller
       [not found]       ` <1188248263.18004.131.camel@localhost>
  2007-08-27 21:26       ` Joe Perches
  1 sibling, 2 replies; 29+ messages in thread
From: David Miller @ 2007-08-27 20:41 UTC (permalink / raw)
  To: johannes; +Cc: joe, netdev

From: Johannes Berg <johannes@sipsolutions.net>
Date: Mon, 27 Aug 2007 12:54:09 +0200

> -- change macros to --
> #define MAC_FMT "%s"
> #define MAC_ARG(a) ({char __buf[18]; print_mac(a, buf); __buf})
> 
> I'm not sure we'd want that, but at the time you said it made the kernel
> significantly smaller and I doubt there's a performance problem with it
> (who prints mac addresses regularly?)

I don't think this works.

The scope of the __buf[18] array is inside of that MAC_ARG()
expression, which will be fully evaluated before constructing
the argument to printk().

Therefore printk() will be passed what is essentially a stale stack
pointer.

You'd need something like a "MAC_BUF buf;" all the callers need
to declare, and a new "buf" argument to MAC_ARG().

If this was the goal, there are better approches to this, how
about just calling:

	print_mac(dev->dev_addr);

Sure, we'll have to split up printk() calls, but in the end it's
likely still smaller and better.  And I think it's much cleaner
than this macro stuff.


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

* Re: [PATCH net-2.6.24] introduce MAC_FMT/MAC_ARG
       [not found]       ` <1188248263.18004.131.camel@localhost>
@ 2007-08-27 21:09         ` Stephen Hemminger
  2007-08-27 21:11         ` David Miller
       [not found]         ` <200708281648.44352.mb@bu3sch.de>
  2 siblings, 0 replies; 29+ messages in thread
From: Stephen Hemminger @ 2007-08-27 21:09 UTC (permalink / raw)
  To: Joe Perches; +Cc: David Miller, johannes, netdev

On Mon, 27 Aug 2007 13:57:42 -0700
Joe Perches <joe@perches.com> wrote:

> On Mon, 2007-08-27 at 13:41 -0700, David Miller wrote:
> > From: Johannes Berg <johannes@sipsolutions.net>
> > Date: Mon, 27 Aug 2007 12:54:09 +0200
> > > #define MAC_FMT "%s"
> > > #define MAC_ARG(a) ({char __buf[18]; print_mac(a, __buf); __buf;})
> 
> > I don't think this works.
> 
> $ cat test_fmt.c
> #include <stdio.h>
> #include <stdlib.h>
> 
> #define MAC_FMT "%s"
> #define MAC_ARG(a) ({char __buf[18]; print_mac(a, __buf); __buf;})
> 
> int print_mac(const char* p, char* b)
> {
>   return sprintf(b, "%02x:%02x:%02x:%02x:%02x:%02x",
> 		 p[0], p[1], p[2], p[3], p[4], p[5]);
> }
> 
> int main(int argc, char** argv)
> {
>   char m1[6] = {1,2,3,4,5,6};
>   char m2[6] = {6,5,4,3,2,1};
> 
>   printf("m1: " MAC_FMT " m2: " MAC_FMT "\n", MAC_ARG(m1), MAC_ARG(m2));
>   return 0;
> }
> 
> $ gcc test_fmt.c
> $ ./a.out
> m1: 01:02:03:04:05:06 m2: 06:05:04:03:02:01

As Dave said, you are passing out a variable which is no longer valid outside
of it's scope. GCC today may accidentally allow it or it might work, but it
is only because of a GCC bug. If I recall discussions about some of the
recent kernel space bloat, GCC doesn't reuse space for variables declared
in subblocks.

I.e:
int foo(int x) {
	if (x) {
	    char block1[1024];
		...
	} else {
	    char block2[128];
	}

}

Compiler should be able to use same stack space for block1/block2 and only grow
stack by 1K. But it probably isn't that smart.




-- 
Stephen Hemminger <shemminger@linux-foundation.org>

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

* Re: [PATCH net-2.6.24] introduce MAC_FMT/MAC_ARG
       [not found]       ` <1188248263.18004.131.camel@localhost>
  2007-08-27 21:09         ` Stephen Hemminger
@ 2007-08-27 21:11         ` David Miller
       [not found]         ` <200708281648.44352.mb@bu3sch.de>
  2 siblings, 0 replies; 29+ messages in thread
From: David Miller @ 2007-08-27 21:11 UTC (permalink / raw)
  To: joe; +Cc: johannes, netdev

From: Joe Perches <joe@perches.com>
Date: Mon, 27 Aug 2007 13:57:42 -0700

> On Mon, 2007-08-27 at 13:41 -0700, David Miller wrote:
> > From: Johannes Berg <johannes@sipsolutions.net>
> > Date: Mon, 27 Aug 2007 12:54:09 +0200
> > > #define MAC_FMT "%s"
> > > #define MAC_ARG(a) ({char __buf[18]; print_mac(a, __buf); __buf;})
> 
> > I don't think this works.
> 
> $ cat test_fmt.c
> #include <stdio.h>
> #include <stdlib.h>

You're just getting lucky in this test case.

The language does not allow what you are doing, so you're
playing with fire.

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

* Re: [PATCH net-2.6.24] introduce MAC_FMT/MAC_ARG
  2007-08-27 20:41     ` David Miller
       [not found]       ` <1188248263.18004.131.camel@localhost>
@ 2007-08-27 21:26       ` Joe Perches
  2007-08-27 21:37         ` David Miller
  1 sibling, 1 reply; 29+ messages in thread
From: Joe Perches @ 2007-08-27 21:26 UTC (permalink / raw)
  To: David Miller; +Cc: johannes, netdev

On Mon, 2007-08-27 at 13:41 -0700, David Miller wrote:
> there are better approaches to this,
> how about just calling:
> 
> 	print_mac(dev->dev_addr);
> 
> Sure, we'll have to split up printk() calls, but in the end it's
> likely still smaller and better.  And I think it's much cleaner
> than this macro stuff.

My original patch had the equivalent of

	char* print_mac(char* buf, const char* addr) {
		sprintf(buf,"%02x:...", addr[0]...)
		return buf;
	}

and used:

	DECLARE_MAC_BUF(var); //same as char var[18];
	printk(MAC_FMT, MAC_ARG(var, addr));

which didn't require splitting printk()s

I've still got the original patch.
It's just substituting EUI48 for MAC and forward porting.

Want something like that?


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

* Re: [PATCH net-2.6.24] introduce MAC_FMT/MAC_ARG
  2007-08-27 21:26       ` Joe Perches
@ 2007-08-27 21:37         ` David Miller
       [not found]           ` <1188335521.6062.56.camel@localhost>
  0 siblings, 1 reply; 29+ messages in thread
From: David Miller @ 2007-08-27 21:37 UTC (permalink / raw)
  To: joe; +Cc: johannes, netdev

From: Joe Perches <joe@perches.com>
Date: Mon, 27 Aug 2007 14:26:46 -0700

> My original patch had the equivalent of
> 
> 	char* print_mac(char* buf, const char* addr) {
> 		sprintf(buf,"%02x:...", addr[0]...)
> 		return buf;
> 	}
> 
> and used:
> 
> 	DECLARE_MAC_BUF(var); //same as char var[18];
> 	printk(MAC_FMT, MAC_ARG(var, addr));
> 
> which didn't require splitting printk()s
> 
> I've still got the original patch.
> It's just substituting EUI48 for MAC and forward porting.
> 
> Want something like that?

That sounds OK.  Let's give Johannes a chance to give some
feedback first.

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

* Re: [PATCH net-2.6.24] introduce MAC_FMT/MAC_ARG
       [not found]           ` <20070828.155419.74563234.davem@davemloft.net>
@ 2007-08-29 17:46             ` Michael Buesch
  0 siblings, 0 replies; 29+ messages in thread
From: Michael Buesch @ 2007-08-29 17:46 UTC (permalink / raw)
  To: David Miller; +Cc: joe, johannes, netdev

On Wednesday 29 August 2007 00:54:19 David Miller wrote:
> From: Michael Buesch <mb@bu3sch.de>
> Date: Tue, 28 Aug 2007 16:48:44 +0200
> 
> > On Monday 27 August 2007 23:11:50 David Miller wrote:
> > > From: Joe Perches <joe@perches.com>
> > > Date: Mon, 27 Aug 2007 13:57:42 -0700
> > > 
> > > > On Mon, 2007-08-27 at 13:41 -0700, David Miller wrote:
> > > > > From: Johannes Berg <johannes@sipsolutions.net>
> > > > > Date: Mon, 27 Aug 2007 12:54:09 +0200
> > > > > > #define MAC_FMT "%s"
> > > > > > #define MAC_ARG(a) ({char __buf[18]; print_mac(a, __buf); __buf;})
> > > > 
> > > > > I don't think this works.
> > > > 
> > > > $ cat test_fmt.c
> > > > #include <stdio.h>
> > > > #include <stdlib.h>
> > > 
> > > You're just getting lucky in this test case.
> > > 
> > > The language does not allow what you are doing, so you're
> > > playing with fire.
> > 
> > What exactly to you think it invalid in this code?
> > I think it's fine (except that I'd chose an u8* for the mac
> > address (first arg in print_mac()).
> 
> The __buf[] is used out of scope, therefore it's stack space is
> fair game for the compiler to reuse.
> 
> When the compiler sees:
> 
> 	printk(FMT, ({ char __buf[x]; print_mac(a, __buf); __buf;}));
> 
> It first all of the printk() argument expressions, first FMT and
> then it evaluates the ({ ... }) argument.
> 
> Now that the ({ ... }) expression is done, __buf[] is out of
> scope and illegal to reference.
> 
> printk() is now called, with a pointer to an out-of-scope buffer.
> This is illegal.
> 
> I don't know how else to explain this to you, I can learn how to
> describe the issue in German if this would help :-)

Oh, not needed. I see the bug and indeed, this is a ticking
timebomb.
I don't use the ({}) notation a lot, so I didn't see this here.

-- 
Greetings Michael.

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

* Re: [PATCH net-2.6.24] introduce MAC_FMT/MAC_ARG
       [not found]             ` <20070828.142216.99461544.davem@davemloft.net>
@ 2007-08-31 22:16               ` Joe Perches
  2007-08-31 22:21                 ` Johannes Berg
  2007-09-14 19:41                 ` Joe Perches
  0 siblings, 2 replies; 29+ messages in thread
From: Joe Perches @ 2007-08-31 22:16 UTC (permalink / raw)
  To: David Miller; +Cc: johannes, netdev

On Tue, 2007-08-28 at 14:22 -0700, David Miller wrote:
> From: Joe Perches <joe@perches.com> 
> > Option 2:
> > 	DECLARE_MAC_BUF(mac);
> > 	printk("%s", print_mac(mac, dev->dev_addr));
> I'm slightly leaning towards 2.

Here are the patches for this conversion.

Compiled successfully x86, defconfig and allyesconfig
against net-2.6.24 but the patch is largely untested.

I've inlined the include changes, but the entire patch
is quite large. (300KB)

MAC address format changes:

UPPER->lower case changes in MAC addresses in printks.
presentation from "%x %x..." to "%02x:%02x...". 
seq_printf uses of mac addresses

Perhaps the seq_printf changes might cause problems
with usermode programs.

please pull from:
git pull git://repo.or.cz/linux-2.6/trivial-mods.git net-2.6.24-print_mac

Signed-off-by: Joe Perches <joe@perches.com>

--

 include/linux/if_ether.h |    7 +++++++
 include/net/ieee80211.h  |    5 -----
 include/net/mac80211.h   |    4 ----
 3 files changed, 7 insertions(+), 9 deletions(-)

diff --git a/include/linux/if_ether.h b/include/linux/if_ether.h
index 3213f6f..bb3eb51 100644
--- a/include/linux/if_ether.h
+++ b/include/linux/if_ether.h
@@ -122,4 +122,11 @@ extern struct ctl_table ether_table[];
 #endif
 #endif
 
+/*
+ *      Display a 6 byte device address (MAC) in a readable format.
+ */
+#define MAC_FMT "%02x:%02x:%02x:%02x:%02x:%02x"
+extern char *print_mac(char* buf, const u8 *addr);
+#define DECLARE_MAC_BUF(var) char var[18] __maybe_unused
+
 #endif	/* _LINUX_IF_ETHER_H */
diff --git a/include/net/ieee80211.h b/include/net/ieee80211.h
index bbd85cd..164d132 100644
--- a/include/net/ieee80211.h
+++ b/include/net/ieee80211.h
@@ -119,11 +119,6 @@ do { if (ieee80211_debug_level & (level)) \
 #define IEEE80211_DEBUG(level, fmt, args...) do {} while (0)
 #endif				/* CONFIG_IEEE80211_DEBUG */
 
-/* debug macros not dependent on CONFIG_IEEE80211_DEBUG */
-
-#define MAC_FMT "%02x:%02x:%02x:%02x:%02x:%02x"
-#define MAC_ARG(x) ((u8*)(x))[0],((u8*)(x))[1],((u8*)(x))[2],((u8*)(x))[3],((u8*)(x))[4],((u8*)(x))[5]
-
 /* escape_essid() is intended to be used in debug (and possibly error)
  * messages. It should never be used for passing essid to user space. */
 const char *escape_essid(const char *essid, u8 essid_len);
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index ec8c739..6de3ceb 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -1089,8 +1089,4 @@ static inline int ieee80211_get_morefrag(struct ieee80211_hdr *hdr)
 		IEEE80211_FCTL_MOREFRAGS) != 0;
 }
 
-#define MAC_FMT "%02x:%02x:%02x:%02x:%02x:%02x"
-#define MAC_ARG(x) ((u8*)(x))[0], ((u8*)(x))[1], ((u8*)(x))[2], \
-		   ((u8*)(x))[3], ((u8*)(x))[4], ((u8*)(x))[5]
-
 #endif /* MAC80211_H */

--

 drivers/net/3c503.c                           |    4 +-
 drivers/net/3c505.c                           |   10 +-
 drivers/net/3c507.c                           |    6 +-
 drivers/net/3c509.c                           |    6 +-
 drivers/net/3c515.c                           |    4 +-
 drivers/net/3c523.c                           |   20 +--
 drivers/net/3c527.c                           |    7 +-
 drivers/net/3c59x.c                           |    7 +-
 drivers/net/8139cp.c                          |    8 +-
 drivers/net/8139too.c                         |    8 +-
 drivers/net/82596.c                           |   18 +--
 drivers/net/a2065.c                           |    6 +-
 drivers/net/ac3200.c                          |    8 +-
 drivers/net/acenic.c                          |    7 +-
 drivers/net/amd8111e.c                        |   12 +-
 drivers/net/apne.c                            |    9 +-
 drivers/net/ariadne.c                         |   44 +++---
 drivers/net/arm/am79c961a.c                   |    8 +-
 drivers/net/arm/at91_ether.c                  |   18 +-
 drivers/net/arm/ether1.c                      |    8 +-
 drivers/net/arm/ether3.c                      |    8 +-
 drivers/net/arm/etherh.c                      |    8 +-
 drivers/net/at1700.c                          |    4 +-
 drivers/net/atarilance.c                      |   40 +++---
 drivers/net/atp.c                             |    8 +-
 drivers/net/b44.c                             |    9 +-
 drivers/net/bmac.c                            |    6 +-
 drivers/net/bnx2.c                            |   12 +-
 drivers/net/bonding/bond_main.c               |   34 ++---
 drivers/net/bonding/bond_sysfs.c              |   11 +-
 drivers/net/cassini.c                         |   11 +-
 drivers/net/cris/eth_v10.c                    |    8 +-
 drivers/net/cs89x0.c                          |   15 +--
 drivers/net/de600.c                           |    6 +-
 drivers/net/de620.c                           |    8 +-
 drivers/net/declance.c                        |   14 +-
 drivers/net/depca.c                           |   13 +-
 drivers/net/dgrs.c                            |   18 +--
 drivers/net/dl2k.c                            |    7 +-
 drivers/net/dm9000.c                          |    9 +-
 drivers/net/e100.c                            |    9 +-
 drivers/net/e1000/e1000_main.c                |    5 +-
 drivers/net/eepro.c                           |    5 +-
 drivers/net/eepro100.c                        |    9 +-
 drivers/net/epic100.c                         |    9 +-
 drivers/net/es3210.c                          |   22 ++--
 drivers/net/ewrk3.c                           |   16 +--
 drivers/net/fealnx.c                          |    9 +-
 drivers/net/fec.c                             |    7 +-
 drivers/net/forcedeth.c                       |   12 +-
 drivers/net/gianfar.c                         |    7 +-
 drivers/net/hamachi.c                         |    8 +-
 drivers/net/hamradio/bpqether.c               |   23 +--
 drivers/net/hp-plus.c                         |    6 +-
 drivers/net/hp.c                              |    5 +-
 drivers/net/hp100.c                           |    6 +-
 drivers/net/hydra.c                           |    7 +-
 drivers/net/ibm_emac/ibm_emac_core.c          |   14 +-
 drivers/net/ibmlana.c                         |    6 +-
 drivers/net/ibmveth.c                         |    9 +-
 drivers/net/ioc3-eth.c                        |   12 +-
 drivers/net/isa-skeleton.c                    |    5 +-
 drivers/net/jazzsonic.c                       |   10 +-
 drivers/net/lance.c                           |    6 +-
 drivers/net/lguest_net.c                      |    4 +-
 drivers/net/lib82596.c                        |   18 +--
 drivers/net/lne390.c                          |    9 +-
 drivers/net/mac89x0.c                         |   11 +-
 drivers/net/macb.c                            |    6 +-
 drivers/net/mace.c                            |    9 +-
 drivers/net/macmace.c                         |    6 +-
 drivers/net/macsonic.c                        |   21 +--
 drivers/net/meth.c                            |    6 +-
 drivers/net/mv643xx_eth.c                     |    5 +-
 drivers/net/mvme147.c                         |   11 +-
 drivers/net/myri10ge/myri10ge.c               |   11 +-
 drivers/net/myri_sbus.c                       |   29 ++---
 drivers/net/natsemi.c                         |   11 +-
 drivers/net/ne-h8300.c                        |    8 +-
 drivers/net/ne.c                              |    5 +-
 drivers/net/ne2.c                             |   17 +--
 drivers/net/ne2k-pci.c                        |   11 +-
 drivers/net/ne3210.c                          |   11 +-
 drivers/net/netconsole.c                      |   14 +-
 drivers/net/netxen/netxen_nic_main.c          |   13 +-
 drivers/net/netxen/netxen_nic_niu.c           |   14 +-
 drivers/net/ni5010.c                          |    4 +-
 drivers/net/ns83820.c                         |    7 +-
 drivers/net/pasemi_mac.c                      |    6 +-
 drivers/net/pci-skeleton.c                    |    9 +-
 drivers/net/pcmcia/3c574_cs.c                 |    9 +-
 drivers/net/pcmcia/3c589_cs.c                 |   10 +-
 drivers/net/pcmcia/axnet_cs.c                 |    9 +-
 drivers/net/pcmcia/fmvj18x_cs.c               |    8 +-
 drivers/net/pcmcia/nmclan_cs.c                |    9 +-
 drivers/net/pcmcia/pcnet_cs.c                 |    7 +-
 drivers/net/pcmcia/smc91c92_cs.c              |    8 +-
 drivers/net/pcmcia/xirc2ps_cs.c               |    9 +-
 drivers/net/pppoe.c                           |    8 +-
 drivers/net/ps3_gelic_net.c                   |    7 +-
 drivers/net/qla3xxx.c                         |    7 +-
 drivers/net/rionet.c                          |    6 +-
 drivers/net/rrunner.c                         |    8 +-
 drivers/net/s2io.c                            |   11 +-
 drivers/net/sb1250-mac.c                      |    7 +-
 drivers/net/seeq8005.c                        |    4 +-
 drivers/net/sgiseeq.c                         |    6 +-
 drivers/net/sis190.c                          |   10 +-
 drivers/net/sis900.c                          |    9 +-
 drivers/net/skge.c                            |    7 +-
 drivers/net/sky2.c                            |    7 +-
 drivers/net/smc-mca.c                         |    8 +-
 drivers/net/smc-ultra.c                       |    8 +-
 drivers/net/smc-ultra32.c                     |    8 +-
 drivers/net/smc9194.c                         |    7 +-
 drivers/net/smc91x.c                          |    9 +-
 drivers/net/starfire.c                        |   26 ++--
 drivers/net/sun3lance.c                       |   36 ++---
 drivers/net/sunbmac.c                         |    8 +-
 drivers/net/sundance.c                        |   10 +-
 drivers/net/sungem.c                          |   12 +-
 drivers/net/sunhme.c                          |   12 +-
 drivers/net/sunlance.c                        |    9 +-
 drivers/net/tokenring/abyss.c                 |   12 +-
 drivers/net/tokenring/ibmtr.c                 |   26 ++--
 drivers/net/tokenring/lanstreamer.c           |   64 ++++-----
 drivers/net/tokenring/madgemc.c               |   19 +--
 drivers/net/tokenring/olympic.c               |  138 +++++++---------
 drivers/net/tokenring/proteon.c               |    8 +-
 drivers/net/tokenring/skisa.c                 |    8 +-
 drivers/net/tokenring/tmspci.c                |   10 +-
 drivers/net/tsi108_eth.c                      |    7 +-
 drivers/net/tulip/de2104x.c                   |    9 +-
 drivers/net/tulip/de4x5.c                     |   33 +---
 drivers/net/tulip/dmfe.c                      |   15 +-
 drivers/net/tulip/tulip_core.c                |   15 +-
 drivers/net/tulip/uli526x.c                   |    9 +-
 drivers/net/tulip/winbond-840.c               |   29 ++--
 drivers/net/tulip/xircom_cb.c                 |    7 +-
 drivers/net/tun.c                             |   33 ++---
 drivers/net/typhoon.c                         |   10 +-
 drivers/net/usb/pegasus.c                     |   11 +-
 drivers/net/usb/usbnet.c                      |    8 +-
 drivers/net/via-rhine.c                       |   13 +-
 drivers/net/wd.c                              |    7 +-
 drivers/net/wireless/airo.c                   |   32 ++---
 drivers/net/wireless/arlan-main.c             |   23 ++--
 drivers/net/wireless/atmel.c                  |    7 +-
 drivers/net/wireless/bcm43xx/bcm43xx.h        |    6 -
 drivers/net/wireless/hostap/hostap_80211_rx.c |   49 ++++---
 drivers/net/wireless/hostap/hostap_80211_tx.c |   13 +-
 drivers/net/wireless/hostap/hostap_ap.c       |  198 ++++++++++++++----------
 drivers/net/wireless/hostap/hostap_common.h   |    3 -
 drivers/net/wireless/hostap/hostap_hw.c       |   11 +-
 drivers/net/wireless/hostap/hostap_info.c     |   17 ++-
 drivers/net/wireless/hostap/hostap_ioctl.c    |   15 +-
 drivers/net/wireless/hostap/hostap_main.c     |   30 ++--
 drivers/net/wireless/hostap/hostap_proc.c     |   15 +-
 drivers/net/wireless/ipw2100.c                |   48 +++---
 drivers/net/wireless/ipw2200.c                |  207 ++++++++++++++-----------
 drivers/net/wireless/libertas/assoc.c         |   19 ++-
 drivers/net/wireless/libertas/cmdresp.c       |    7 +-
 drivers/net/wireless/libertas/debugfs.c       |    5 +-
 drivers/net/wireless/libertas/join.c          |   15 +-
 drivers/net/wireless/libertas/main.c          |   12 +-
 drivers/net/wireless/libertas/scan.c          |   14 +-
 drivers/net/wireless/libertas/wext.c          |    5 +-
 drivers/net/wireless/netwave_cs.c             |   14 +-
 drivers/net/wireless/orinoco.c                |    7 +-
 drivers/net/wireless/prism54/isl_ioctl.c      |   50 ++----
 drivers/net/wireless/ray_cs.c                 |   15 +-
 drivers/net/wireless/rtl8187_dev.c            |    7 +-
 drivers/net/wireless/wavelan.c                |   53 +++----
 drivers/net/wireless/wavelan_cs.c             |   54 +++----
 drivers/net/wireless/wl3501_cs.c              |   22 ++--
 drivers/net/wireless/zd1211rw/zd_chip.c       |    3 +-
 drivers/net/wireless/zd1211rw/zd_mac.c        |    8 +-
 drivers/net/yellowfin.c                       |   19 +--
 drivers/net/znet.c                            |   11 +-
 drivers/net/zorro8390.c                       |   15 +-
 180 files changed, 1305 insertions(+), 1504 deletions(-)

--

 net/802/tr.c                                   |   28 ++--
 net/appletalk/aarp.c                           |    9 +-
 net/atm/br2684.c                               |   16 +--
 net/atm/lec.c                                  |   33 ++---
 net/core/dev.c                                 |   13 ++
 net/core/netpoll.c                             |   12 +--
 net/core/pktgen.c                              |   17 +--
 net/ethernet/eth.c                             |    8 +
 net/ieee80211/ieee80211_crypt_ccmp.c           |   30 +++--
 net/ieee80211/ieee80211_crypt_tkip.c           |   31 +++--
 net/ieee80211/ieee80211_rx.c                   |   59 +++++----
 net/ieee80211/ieee80211_wx.c                   |    5 +-
 net/ieee80211/softmac/ieee80211softmac_assoc.c |    4 +-
 net/ieee80211/softmac/ieee80211softmac_auth.c  |   35 +++--
 net/ieee80211/softmac/ieee80211softmac_wx.c    |    5 +-
 net/irda/irlan/irlan_client.c                  |    6 +-
 net/llc/llc_proc.c                             |   12 +-
 net/mac80211/debugfs_key.c                     |    3 +-
 net/mac80211/debugfs_netdev.c                  |    3 +-
 net/mac80211/debugfs_sta.c                     |    6 +-
 net/mac80211/event.c                           |    5 +-
 net/mac80211/ieee80211.c                       |    5 +-
 net/mac80211/ieee80211_ioctl.c                 |    5 +-
 net/mac80211/ieee80211_sta.c                   |  180 +++++++++++++-----------
 net/mac80211/key.c                             |   10 +-
 net/mac80211/rc80211_simple.c                  |    5 +-
 net/mac80211/rx.c                              |  118 +++++++++------
 net/mac80211/sta_info.c                        |   13 +-
 net/mac80211/tkip.c                            |   10 +-
 net/mac80211/tx.c                              |   32 +++--
 net/mac80211/wpa.c                             |   19 ++-
 net/tipc/eth_media.c                           |    4 +-
 32 files changed, 414 insertions(+), 327 deletions(-)



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

* Re: [PATCH net-2.6.24] introduce MAC_FMT/MAC_ARG
  2007-08-31 22:16               ` Joe Perches
@ 2007-08-31 22:21                 ` Johannes Berg
  2007-08-31 22:24                   ` Joe Perches
  2007-09-14 19:41                 ` Joe Perches
  1 sibling, 1 reply; 29+ messages in thread
From: Johannes Berg @ 2007-08-31 22:21 UTC (permalink / raw)
  To: Joe Perches; +Cc: David Miller, netdev

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

On Fri, 2007-08-31 at 15:16 -0700, Joe Perches wrote:

> please pull from:
> git pull git://repo.or.cz/linux-2.6/trivial-mods.git net-2.6.24-print_mac

got a gitweb for that somewhere?

johannes

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

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

* Re: [PATCH net-2.6.24] introduce MAC_FMT/MAC_ARG
  2007-08-31 22:21                 ` Johannes Berg
@ 2007-08-31 22:24                   ` Joe Perches
  2007-08-31 22:27                     ` Johannes Berg
  2007-08-31 22:32                     ` Johannes Berg
  0 siblings, 2 replies; 29+ messages in thread
From: Joe Perches @ 2007-08-31 22:24 UTC (permalink / raw)
  To: Johannes Berg; +Cc: David Miller, netdev

On Sat, 2007-09-01 at 00:21 +0200, Johannes Berg wrote:
> On Fri, 2007-08-31 at 15:16 -0700, Joe Perches wrote:
> > please pull from:
> > git pull git://repo.or.cz/linux-2.6/trivial-mods.git net-2.6.24-print_mac
> got a gitweb for that somewhere?

Does this work for you?

http://repo.or.cz/w/linux-2.6/trivial-mods.git


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

* Re: [PATCH net-2.6.24] introduce MAC_FMT/MAC_ARG
  2007-08-31 22:24                   ` Joe Perches
@ 2007-08-31 22:27                     ` Johannes Berg
  2007-08-31 22:32                     ` Johannes Berg
  1 sibling, 0 replies; 29+ messages in thread
From: Johannes Berg @ 2007-08-31 22:27 UTC (permalink / raw)
  To: Joe Perches; +Cc: David Miller, netdev

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

On Fri, 2007-08-31 at 15:24 -0700, Joe Perches wrote:
> On Sat, 2007-09-01 at 00:21 +0200, Johannes Berg wrote:
> > On Fri, 2007-08-31 at 15:16 -0700, Joe Perches wrote:
> > > please pull from:
> > > git pull git://repo.or.cz/linux-2.6/trivial-mods.git net-2.6.24-print_mac
> > got a gitweb for that somewhere?
> 
> Does this work for you?
> 
> http://repo.or.cz/w/linux-2.6/trivial-mods.git

Perfect, thanks.

johannes

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

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

* Re: [PATCH net-2.6.24] introduce MAC_FMT/MAC_ARG
  2007-08-31 22:24                   ` Joe Perches
  2007-08-31 22:27                     ` Johannes Berg
@ 2007-08-31 22:32                     ` Johannes Berg
  2007-08-31 22:39                       ` Joe Perches
  1 sibling, 1 reply; 29+ messages in thread
From: Johannes Berg @ 2007-08-31 22:32 UTC (permalink / raw)
  To: Joe Perches; +Cc: David Miller, netdev

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

On Fri, 2007-08-31 at 15:24 -0700, Joe Perches wrote:
> On Sat, 2007-09-01 at 00:21 +0200, Johannes Berg wrote:
> > On Fri, 2007-08-31 at 15:16 -0700, Joe Perches wrote:
> > > please pull from:
> > > git pull git://repo.or.cz/linux-2.6/trivial-mods.git net-2.6.24-print_mac
> > got a gitweb for that somewhere?
> 
> Does this work for you?
> 
> http://repo.or.cz/w/linux-2.6/trivial-mods.git

I think you got a bit too trigger-happy:


        p += sprintf(p, "key[%d] alg=CCMP key_set=%d "
-                    "tx_pn=%02x%02x%02x%02x%02x%02x "
-                    "rx_pn=%02x%02x%02x%02x%02x%02x "
+                    "tx_pn=%s "
+                    "rx_pn=%s "
                     "format_errors=%d replays=%d decrypt_errors=%d\n",
                     ccmp->key_idx, ccmp->key_set,
-                    MAC_ARG(ccmp->tx_pn), MAC_ARG(ccmp->rx_pn),
+                    print_mac(mac, ccmp->tx_pn), print_mac(mac2, ccmp->rx_pn),

the PN is a number, not a MAC address :) The fact that it used MAC_ARG,
was, I guess, just laziness of the original author since the PN is also
6 bytes long. That said, I can live with it being printed this way too,
it's just a bit weird.

Going to be fun to merge with my 70 outstanding patches though :)

johannes

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

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

* Re: [PATCH net-2.6.24] introduce MAC_FMT/MAC_ARG
  2007-08-31 22:32                     ` Johannes Berg
@ 2007-08-31 22:39                       ` Joe Perches
  0 siblings, 0 replies; 29+ messages in thread
From: Joe Perches @ 2007-08-31 22:39 UTC (permalink / raw)
  To: Johannes Berg; +Cc: David Miller, netdev

On Sat, 2007-09-01 at 00:32 +0200, Johannes Berg wrote:
> I think you got a bit too trigger-happy:
>         p += sprintf(p, "key[%d] alg=CCMP key_set=%d "
> -                    "tx_pn=%02x%02x%02x%02x%02x%02x "
> -                    "rx_pn=%02x%02x%02x%02x%02x%02x "
> +                    "tx_pn=%s "
> +                    "rx_pn=%s "
>                      "format_errors=%d replays=%d decrypt_errors=%d\n",
>                      ccmp->key_idx, ccmp->key_set,
> -                    MAC_ARG(ccmp->tx_pn), MAC_ARG(ccmp->rx_pn),
> +                    print_mac(mac, ccmp->tx_pn), print_mac(mac2, ccmp->rx_pn),
> 
> the PN is a number, not a MAC address :) The fact that it used MAC_ARG,
> was, I guess, just laziness of the original author since the PN is also
> 6 bytes long. That said, I can live with it being printed this way too,
> it's just a bit weird.

Yes, that was one of the dodgy ones.
I didn't actually realize it wasn't a MAC address though.

I think all of the sprintf/seq_foo changes should be inspected.
I broke ipv6 once doing something similar to v6 addresses.

> Going to be fun to merge with my 70 outstanding patches though :)

That's a cheery definition of fun.


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

* Re: [PATCH net-2.6.24] introduce MAC_FMT/MAC_ARG
  2007-08-31 22:16               ` Joe Perches
  2007-08-31 22:21                 ` Johannes Berg
@ 2007-09-14 19:41                 ` Joe Perches
  2007-09-14 19:48                   ` David Miller
  2007-09-18  2:05                   ` David Miller
  1 sibling, 2 replies; 29+ messages in thread
From: Joe Perches @ 2007-09-14 19:41 UTC (permalink / raw)
  To: David Miller; +Cc: johannes, netdev, Andrew Morton, Jeff Garzik

David?  Did you ever get a chance to look at this?
Do you want me to rebase it against your newer net-2.4.26?

http://repo.or.cz/w/linux-2.6/trivial-mods.git

> I've inlined the include changes, but the entire patch
> is quite large. (300KB)
> 
> MAC address format changes:
> 
> UPPER->lower case changes in MAC addresses in printks.
> presentation from "%x %x..." to "%02x:%02x...". 
> seq_printf uses of mac addresses
> 
> Perhaps the seq_printf changes might cause problems
> with usermode programs.
> 
> please pull from:
> git pull git://repo.or.cz/linux-2.6/trivial-mods.git net-2.6.24-print_mac
> 
> Signed-off-by: Joe Perches <joe@perches.com>
> 
> --
> 
>  include/linux/if_ether.h |    7 +++++++
>  include/net/ieee80211.h  |    5 -----
>  include/net/mac80211.h   |    4 ----
>  3 files changed, 7 insertions(+), 9 deletions(-)
> 
> diff --git a/include/linux/if_ether.h b/include/linux/if_ether.h
> index 3213f6f..bb3eb51 100644
> --- a/include/linux/if_ether.h
> +++ b/include/linux/if_ether.h
> @@ -122,4 +122,11 @@ extern struct ctl_table ether_table[];
>  #endif
>  #endif
>  
> +/*
> + *      Display a 6 byte device address (MAC) in a readable format.
> + */
> +#define MAC_FMT "%02x:%02x:%02x:%02x:%02x:%02x"
> +extern char *print_mac(char* buf, const u8 *addr);
> +#define DECLARE_MAC_BUF(var) char var[18] __maybe_unused
> +
>  #endif	/* _LINUX_IF_ETHER_H */
> diff --git a/include/net/ieee80211.h b/include/net/ieee80211.h
> index bbd85cd..164d132 100644
> --- a/include/net/ieee80211.h
> +++ b/include/net/ieee80211.h
> @@ -119,11 +119,6 @@ do { if (ieee80211_debug_level & (level)) \
>  #define IEEE80211_DEBUG(level, fmt, args...) do {} while (0)
>  #endif				/* CONFIG_IEEE80211_DEBUG */
>  
> -/* debug macros not dependent on CONFIG_IEEE80211_DEBUG */
> -
> -#define MAC_FMT "%02x:%02x:%02x:%02x:%02x:%02x"
> -#define MAC_ARG(x) ((u8*)(x))[0],((u8*)(x))[1],((u8*)(x))[2],((u8*)(x))[3],((u8*)(x))[4],((u8*)(x))[5]
> -
>  /* escape_essid() is intended to be used in debug (and possibly error)
>   * messages. It should never be used for passing essid to user space. */
>  const char *escape_essid(const char *essid, u8 essid_len);
> diff --git a/include/net/mac80211.h b/include/net/mac80211.h
> index ec8c739..6de3ceb 100644
> --- a/include/net/mac80211.h
> +++ b/include/net/mac80211.h
> @@ -1089,8 +1089,4 @@ static inline int ieee80211_get_morefrag(struct ieee80211_hdr *hdr)
>  		IEEE80211_FCTL_MOREFRAGS) != 0;
>  }
>  
> -#define MAC_FMT "%02x:%02x:%02x:%02x:%02x:%02x"
> -#define MAC_ARG(x) ((u8*)(x))[0], ((u8*)(x))[1], ((u8*)(x))[2], \
> -		   ((u8*)(x))[3], ((u8*)(x))[4], ((u8*)(x))[5]
> -
>  #endif /* MAC80211_H */
> 
> --
> 
>  drivers/net/3c503.c                           |    4 +-
>  drivers/net/3c505.c                           |   10 +-
>  drivers/net/3c507.c                           |    6 +-
>  drivers/net/3c509.c                           |    6 +-
>  drivers/net/3c515.c                           |    4 +-
>  drivers/net/3c523.c                           |   20 +--
>  drivers/net/3c527.c                           |    7 +-
>  drivers/net/3c59x.c                           |    7 +-
>  drivers/net/8139cp.c                          |    8 +-
>  drivers/net/8139too.c                         |    8 +-
>  drivers/net/82596.c                           |   18 +--
>  drivers/net/a2065.c                           |    6 +-
>  drivers/net/ac3200.c                          |    8 +-
>  drivers/net/acenic.c                          |    7 +-
>  drivers/net/amd8111e.c                        |   12 +-
>  drivers/net/apne.c                            |    9 +-
>  drivers/net/ariadne.c                         |   44 +++---
>  drivers/net/arm/am79c961a.c                   |    8 +-
>  drivers/net/arm/at91_ether.c                  |   18 +-
>  drivers/net/arm/ether1.c                      |    8 +-
>  drivers/net/arm/ether3.c                      |    8 +-
>  drivers/net/arm/etherh.c                      |    8 +-
>  drivers/net/at1700.c                          |    4 +-
>  drivers/net/atarilance.c                      |   40 +++---
>  drivers/net/atp.c                             |    8 +-
>  drivers/net/b44.c                             |    9 +-
>  drivers/net/bmac.c                            |    6 +-
>  drivers/net/bnx2.c                            |   12 +-
>  drivers/net/bonding/bond_main.c               |   34 ++---
>  drivers/net/bonding/bond_sysfs.c              |   11 +-
>  drivers/net/cassini.c                         |   11 +-
>  drivers/net/cris/eth_v10.c                    |    8 +-
>  drivers/net/cs89x0.c                          |   15 +--
>  drivers/net/de600.c                           |    6 +-
>  drivers/net/de620.c                           |    8 +-
>  drivers/net/declance.c                        |   14 +-
>  drivers/net/depca.c                           |   13 +-
>  drivers/net/dgrs.c                            |   18 +--
>  drivers/net/dl2k.c                            |    7 +-
>  drivers/net/dm9000.c                          |    9 +-
>  drivers/net/e100.c                            |    9 +-
>  drivers/net/e1000/e1000_main.c                |    5 +-
>  drivers/net/eepro.c                           |    5 +-
>  drivers/net/eepro100.c                        |    9 +-
>  drivers/net/epic100.c                         |    9 +-
>  drivers/net/es3210.c                          |   22 ++--
>  drivers/net/ewrk3.c                           |   16 +--
>  drivers/net/fealnx.c                          |    9 +-
>  drivers/net/fec.c                             |    7 +-
>  drivers/net/forcedeth.c                       |   12 +-
>  drivers/net/gianfar.c                         |    7 +-
>  drivers/net/hamachi.c                         |    8 +-
>  drivers/net/hamradio/bpqether.c               |   23 +--
>  drivers/net/hp-plus.c                         |    6 +-
>  drivers/net/hp.c                              |    5 +-
>  drivers/net/hp100.c                           |    6 +-
>  drivers/net/hydra.c                           |    7 +-
>  drivers/net/ibm_emac/ibm_emac_core.c          |   14 +-
>  drivers/net/ibmlana.c                         |    6 +-
>  drivers/net/ibmveth.c                         |    9 +-
>  drivers/net/ioc3-eth.c                        |   12 +-
>  drivers/net/isa-skeleton.c                    |    5 +-
>  drivers/net/jazzsonic.c                       |   10 +-
>  drivers/net/lance.c                           |    6 +-
>  drivers/net/lguest_net.c                      |    4 +-
>  drivers/net/lib82596.c                        |   18 +--
>  drivers/net/lne390.c                          |    9 +-
>  drivers/net/mac89x0.c                         |   11 +-
>  drivers/net/macb.c                            |    6 +-
>  drivers/net/mace.c                            |    9 +-
>  drivers/net/macmace.c                         |    6 +-
>  drivers/net/macsonic.c                        |   21 +--
>  drivers/net/meth.c                            |    6 +-
>  drivers/net/mv643xx_eth.c                     |    5 +-
>  drivers/net/mvme147.c                         |   11 +-
>  drivers/net/myri10ge/myri10ge.c               |   11 +-
>  drivers/net/myri_sbus.c                       |   29 ++---
>  drivers/net/natsemi.c                         |   11 +-
>  drivers/net/ne-h8300.c                        |    8 +-
>  drivers/net/ne.c                              |    5 +-
>  drivers/net/ne2.c                             |   17 +--
>  drivers/net/ne2k-pci.c                        |   11 +-
>  drivers/net/ne3210.c                          |   11 +-
>  drivers/net/netconsole.c                      |   14 +-
>  drivers/net/netxen/netxen_nic_main.c          |   13 +-
>  drivers/net/netxen/netxen_nic_niu.c           |   14 +-
>  drivers/net/ni5010.c                          |    4 +-
>  drivers/net/ns83820.c                         |    7 +-
>  drivers/net/pasemi_mac.c                      |    6 +-
>  drivers/net/pci-skeleton.c                    |    9 +-
>  drivers/net/pcmcia/3c574_cs.c                 |    9 +-
>  drivers/net/pcmcia/3c589_cs.c                 |   10 +-
>  drivers/net/pcmcia/axnet_cs.c                 |    9 +-
>  drivers/net/pcmcia/fmvj18x_cs.c               |    8 +-
>  drivers/net/pcmcia/nmclan_cs.c                |    9 +-
>  drivers/net/pcmcia/pcnet_cs.c                 |    7 +-
>  drivers/net/pcmcia/smc91c92_cs.c              |    8 +-
>  drivers/net/pcmcia/xirc2ps_cs.c               |    9 +-
>  drivers/net/pppoe.c                           |    8 +-
>  drivers/net/ps3_gelic_net.c                   |    7 +-
>  drivers/net/qla3xxx.c                         |    7 +-
>  drivers/net/rionet.c                          |    6 +-
>  drivers/net/rrunner.c                         |    8 +-
>  drivers/net/s2io.c                            |   11 +-
>  drivers/net/sb1250-mac.c                      |    7 +-
>  drivers/net/seeq8005.c                        |    4 +-
>  drivers/net/sgiseeq.c                         |    6 +-
>  drivers/net/sis190.c                          |   10 +-
>  drivers/net/sis900.c                          |    9 +-
>  drivers/net/skge.c                            |    7 +-
>  drivers/net/sky2.c                            |    7 +-
>  drivers/net/smc-mca.c                         |    8 +-
>  drivers/net/smc-ultra.c                       |    8 +-
>  drivers/net/smc-ultra32.c                     |    8 +-
>  drivers/net/smc9194.c                         |    7 +-
>  drivers/net/smc91x.c                          |    9 +-
>  drivers/net/starfire.c                        |   26 ++--
>  drivers/net/sun3lance.c                       |   36 ++---
>  drivers/net/sunbmac.c                         |    8 +-
>  drivers/net/sundance.c                        |   10 +-
>  drivers/net/sungem.c                          |   12 +-
>  drivers/net/sunhme.c                          |   12 +-
>  drivers/net/sunlance.c                        |    9 +-
>  drivers/net/tokenring/abyss.c                 |   12 +-
>  drivers/net/tokenring/ibmtr.c                 |   26 ++--
>  drivers/net/tokenring/lanstreamer.c           |   64 ++++-----
>  drivers/net/tokenring/madgemc.c               |   19 +--
>  drivers/net/tokenring/olympic.c               |  138 +++++++---------
>  drivers/net/tokenring/proteon.c               |    8 +-
>  drivers/net/tokenring/skisa.c                 |    8 +-
>  drivers/net/tokenring/tmspci.c                |   10 +-
>  drivers/net/tsi108_eth.c                      |    7 +-
>  drivers/net/tulip/de2104x.c                   |    9 +-
>  drivers/net/tulip/de4x5.c                     |   33 +---
>  drivers/net/tulip/dmfe.c                      |   15 +-
>  drivers/net/tulip/tulip_core.c                |   15 +-
>  drivers/net/tulip/uli526x.c                   |    9 +-
>  drivers/net/tulip/winbond-840.c               |   29 ++--
>  drivers/net/tulip/xircom_cb.c                 |    7 +-
>  drivers/net/tun.c                             |   33 ++---
>  drivers/net/typhoon.c                         |   10 +-
>  drivers/net/usb/pegasus.c                     |   11 +-
>  drivers/net/usb/usbnet.c                      |    8 +-
>  drivers/net/via-rhine.c                       |   13 +-
>  drivers/net/wd.c                              |    7 +-
>  drivers/net/wireless/airo.c                   |   32 ++---
>  drivers/net/wireless/arlan-main.c             |   23 ++--
>  drivers/net/wireless/atmel.c                  |    7 +-
>  drivers/net/wireless/bcm43xx/bcm43xx.h        |    6 -
>  drivers/net/wireless/hostap/hostap_80211_rx.c |   49 ++++---
>  drivers/net/wireless/hostap/hostap_80211_tx.c |   13 +-
>  drivers/net/wireless/hostap/hostap_ap.c       |  198 ++++++++++++++----------
>  drivers/net/wireless/hostap/hostap_common.h   |    3 -
>  drivers/net/wireless/hostap/hostap_hw.c       |   11 +-
>  drivers/net/wireless/hostap/hostap_info.c     |   17 ++-
>  drivers/net/wireless/hostap/hostap_ioctl.c    |   15 +-
>  drivers/net/wireless/hostap/hostap_main.c     |   30 ++--
>  drivers/net/wireless/hostap/hostap_proc.c     |   15 +-
>  drivers/net/wireless/ipw2100.c                |   48 +++---
>  drivers/net/wireless/ipw2200.c                |  207 ++++++++++++++-----------
>  drivers/net/wireless/libertas/assoc.c         |   19 ++-
>  drivers/net/wireless/libertas/cmdresp.c       |    7 +-
>  drivers/net/wireless/libertas/debugfs.c       |    5 +-
>  drivers/net/wireless/libertas/join.c          |   15 +-
>  drivers/net/wireless/libertas/main.c          |   12 +-
>  drivers/net/wireless/libertas/scan.c          |   14 +-
>  drivers/net/wireless/libertas/wext.c          |    5 +-
>  drivers/net/wireless/netwave_cs.c             |   14 +-
>  drivers/net/wireless/orinoco.c                |    7 +-
>  drivers/net/wireless/prism54/isl_ioctl.c      |   50 ++----
>  drivers/net/wireless/ray_cs.c                 |   15 +-
>  drivers/net/wireless/rtl8187_dev.c            |    7 +-
>  drivers/net/wireless/wavelan.c                |   53 +++----
>  drivers/net/wireless/wavelan_cs.c             |   54 +++----
>  drivers/net/wireless/wl3501_cs.c              |   22 ++--
>  drivers/net/wireless/zd1211rw/zd_chip.c       |    3 +-
>  drivers/net/wireless/zd1211rw/zd_mac.c        |    8 +-
>  drivers/net/yellowfin.c                       |   19 +--
>  drivers/net/znet.c                            |   11 +-
>  drivers/net/zorro8390.c                       |   15 +-
>  180 files changed, 1305 insertions(+), 1504 deletions(-)
> 
> --
> 
>  net/802/tr.c                                   |   28 ++--
>  net/appletalk/aarp.c                           |    9 +-
>  net/atm/br2684.c                               |   16 +--
>  net/atm/lec.c                                  |   33 ++---
>  net/core/dev.c                                 |   13 ++
>  net/core/netpoll.c                             |   12 +--
>  net/core/pktgen.c                              |   17 +--
>  net/ethernet/eth.c                             |    8 +
>  net/ieee80211/ieee80211_crypt_ccmp.c           |   30 +++--
>  net/ieee80211/ieee80211_crypt_tkip.c           |   31 +++--
>  net/ieee80211/ieee80211_rx.c                   |   59 +++++----
>  net/ieee80211/ieee80211_wx.c                   |    5 +-
>  net/ieee80211/softmac/ieee80211softmac_assoc.c |    4 +-
>  net/ieee80211/softmac/ieee80211softmac_auth.c  |   35 +++--
>  net/ieee80211/softmac/ieee80211softmac_wx.c    |    5 +-
>  net/irda/irlan/irlan_client.c                  |    6 +-
>  net/llc/llc_proc.c                             |   12 +-
>  net/mac80211/debugfs_key.c                     |    3 +-
>  net/mac80211/debugfs_netdev.c                  |    3 +-
>  net/mac80211/debugfs_sta.c                     |    6 +-
>  net/mac80211/event.c                           |    5 +-
>  net/mac80211/ieee80211.c                       |    5 +-
>  net/mac80211/ieee80211_ioctl.c                 |    5 +-
>  net/mac80211/ieee80211_sta.c                   |  180 +++++++++++++-----------
>  net/mac80211/key.c                             |   10 +-
>  net/mac80211/rc80211_simple.c                  |    5 +-
>  net/mac80211/rx.c                              |  118 +++++++++------
>  net/mac80211/sta_info.c                        |   13 +-
>  net/mac80211/tkip.c                            |   10 +-
>  net/mac80211/tx.c                              |   32 +++--
>  net/mac80211/wpa.c                             |   19 ++-
>  net/tipc/eth_media.c                           |    4 +-
>  32 files changed, 414 insertions(+), 327 deletions(-)
> 


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

* Re: [PATCH net-2.6.24] introduce MAC_FMT/MAC_ARG
  2007-09-14 19:41                 ` Joe Perches
@ 2007-09-14 19:48                   ` David Miller
  2007-09-18  2:05                   ` David Miller
  1 sibling, 0 replies; 29+ messages in thread
From: David Miller @ 2007-09-14 19:48 UTC (permalink / raw)
  To: joe; +Cc: johannes, netdev, akpm, jgarzik

From: Joe Perches <joe@perches.com>
Date: Fri, 14 Sep 2007 12:41:48 -0700

> David?  Did you ever get a chance to look at this?
> Do you want me to rebase it against your newer net-2.4.26?
> 
> http://repo.or.cz/w/linux-2.6/trivial-mods.git

I just got back from 2 weeks of travelling, sit tight :-)

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

* Re: [PATCH net-2.6.24] introduce MAC_FMT/MAC_ARG
  2007-09-14 19:41                 ` Joe Perches
  2007-09-14 19:48                   ` David Miller
@ 2007-09-18  2:05                   ` David Miller
  2007-09-18  2:14                     ` Joe Perches
  1 sibling, 1 reply; 29+ messages in thread
From: David Miller @ 2007-09-18  2:05 UTC (permalink / raw)
  To: joe; +Cc: johannes, netdev, akpm, jgarzik

From: Joe Perches <joe@perches.com>
Date: Fri, 14 Sep 2007 12:41:48 -0700

> David?  Did you ever get a chance to look at this?
> Do you want me to rebase it against your newer net-2.4.26?
> 
> http://repo.or.cz/w/linux-2.6/trivial-mods.git

How can I pull from this tree?

davem@sunset:~/src/GIT/mac_fmt-2.6$ git pull http://repo.or.cz/w/linux-2.6/trivial-mods.git
error: pick-rref: HEAD not found
No such ref HEAD at http://repo.or.cz/w/linux-2.6/trivial-mods.git
davem@sunset:~/src/GIT/mac_fmt-2.6$ 

Anyways, it would indeed help if you could rebase the patch
against net-2.6.24  It would save me a ton of time.

Thanks!

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

* Re: [PATCH net-2.6.24] introduce MAC_FMT/MAC_ARG
  2007-09-18  2:05                   ` David Miller
@ 2007-09-18  2:14                     ` Joe Perches
  2007-09-19  4:50                       ` Joe Perches
  0 siblings, 1 reply; 29+ messages in thread
From: Joe Perches @ 2007-09-18  2:14 UTC (permalink / raw)
  To: David Miller; +Cc: johannes, netdev, akpm, jgarzik

On Mon, 2007-09-17 at 19:05 -0700, David Miller wrote:
> Anyways, it would indeed help if you could rebase the patch
> against net-2.6.24  It would save me a ton of time.

I'll rebase it tomorrow against whatever's in
your current net-2.6.24.

cheers,  Joe


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

* Re: [PATCH net-2.6.24] introduce MAC_FMT/MAC_ARG
  2007-09-18  2:14                     ` Joe Perches
@ 2007-09-19  4:50                       ` Joe Perches
  2007-09-19 18:11                         ` David Miller
  0 siblings, 1 reply; 29+ messages in thread
From: Joe Perches @ 2007-09-19  4:50 UTC (permalink / raw)
  To: David Miller; +Cc: johannes, netdev, akpm, jgarzik

On Mon, 2007-09-17 at 19:14 -0700, Joe Perches wrote:
> On Mon, 2007-09-17 at 19:05 -0700, David Miller wrote:
> > Anyways, it would indeed help if you could rebase the patch
> > against net-2.6.24  It would save me a ton of time.
> 
> I'll rebase it tomorrow against whatever's in
> your current net-2.6.24.

I rebased against yesterday's net-2.6.24

Please pull from:

git://repo.or.cz/linux-2.6/trivial-mods.git net-2.6.24-fordave

 drivers/net/3c503.c                            |    4 +-
 drivers/net/3c505.c                            |   10 +-
 drivers/net/3c507.c                            |    6 +-
 drivers/net/3c509.c                            |   18 +--
 drivers/net/3c515.c                            |    4 +-
 drivers/net/3c523.c                            |   22 +--
 drivers/net/3c527.c                            |    7 +-
 drivers/net/3c59x.c                            |    7 +-
 drivers/net/8139cp.c                           |    8 +-
 drivers/net/8139too.c                          |    8 +-
 drivers/net/82596.c                            |   18 +--
 drivers/net/a2065.c                            |    6 +-
 drivers/net/ac3200.c                           |    8 +-
 drivers/net/acenic.c                           |    7 +-
 drivers/net/amd8111e.c                         |   12 +-
 drivers/net/apne.c                             |    9 +-
 drivers/net/ariadne.c                          |   44 +++---
 drivers/net/arm/am79c961a.c                    |    8 +-
 drivers/net/arm/at91_ether.c                   |   18 +-
 drivers/net/arm/ether1.c                       |    8 +-
 drivers/net/arm/ether3.c                       |    8 +-
 drivers/net/arm/etherh.c                       |    8 +-
 drivers/net/at1700.c                           |    4 +-
 drivers/net/atarilance.c                       |   43 +++---
 drivers/net/atp.c                              |    8 +-
 drivers/net/b44.c                              |    9 +-
 drivers/net/bmac.c                             |    6 +-
 drivers/net/bnx2.c                             |   12 +-
 drivers/net/bonding/bond_main.c                |   34 ++---
 drivers/net/bonding/bond_sysfs.c               |   11 +-
 drivers/net/cassini.c                          |   11 +-
 drivers/net/cris/eth_v10.c                     |    8 +-
 drivers/net/cs89x0.c                           |   15 +--
 drivers/net/de600.c                            |    6 +-
 drivers/net/de620.c                            |    8 +-
 drivers/net/declance.c                         |   14 +-
 drivers/net/depca.c                            |   13 +-
 drivers/net/dgrs.c                             |   18 +--
 drivers/net/dl2k.c                             |    7 +-
 drivers/net/dm9000.c                           |    9 +-
 drivers/net/e100.c                             |    9 +-
 drivers/net/e1000/e1000_main.c                 |    5 +-
 drivers/net/eepro.c                            |    5 +-
 drivers/net/eepro100.c                         |    9 +-
 drivers/net/epic100.c                          |    9 +-
 drivers/net/es3210.c                           |   22 ++--
 drivers/net/ewrk3.c                            |   16 +--
 drivers/net/fealnx.c                           |    9 +-
 drivers/net/fec.c                              |    7 +-
 drivers/net/forcedeth.c                        |   12 +-
 drivers/net/gianfar.c                          |    7 +-
 drivers/net/hamachi.c                          |    8 +-
 drivers/net/hamradio/bpqether.c                |   23 +--
 drivers/net/hp-plus.c                          |    6 +-
 drivers/net/hp.c                               |    5 +-
 drivers/net/hp100.c                            |    6 +-
 drivers/net/hydra.c                            |    7 +-
 drivers/net/ibm_emac/ibm_emac_core.c           |   14 +-
 drivers/net/ibmlana.c                          |    6 +-
 drivers/net/ibmveth.c                          |    9 +-
 drivers/net/ioc3-eth.c                         |   12 +-
 drivers/net/isa-skeleton.c                     |    5 +-
 drivers/net/jazzsonic.c                        |   10 +-
 drivers/net/lance.c                            |    6 +-
 drivers/net/lguest_net.c                       |    4 +-
 drivers/net/lib82596.c                         |   18 +--
 drivers/net/lne390.c                           |    9 +-
 drivers/net/mac89x0.c                          |   11 +-
 drivers/net/macb.c                             |    6 +-
 drivers/net/mace.c                             |    9 +-
 drivers/net/macmace.c                          |    6 +-
 drivers/net/macsonic.c                         |   21 +--
 drivers/net/meth.c                             |    6 +-
 drivers/net/mv643xx_eth.c                      |    5 +-
 drivers/net/mvme147.c                          |   11 +-
 drivers/net/myri10ge/myri10ge.c                |   11 +-
 drivers/net/myri_sbus.c                        |   29 ++---
 drivers/net/natsemi.c                          |   11 +-
 drivers/net/ne-h8300.c                         |    8 +-
 drivers/net/ne.c                               |    5 +-
 drivers/net/ne2.c                              |   17 +--
 drivers/net/ne2k-pci.c                         |   11 +-
 drivers/net/ne3210.c                           |   11 +-
 drivers/net/netconsole.c                       |   14 +-
 drivers/net/netxen/netxen_nic_main.c           |   13 +-
 drivers/net/netxen/netxen_nic_niu.c            |   14 +-
 drivers/net/ni5010.c                           |    4 +-
 drivers/net/ns83820.c                          |    7 +-
 drivers/net/pasemi_mac.c                       |    6 +-
 drivers/net/pci-skeleton.c                     |    9 +-
 drivers/net/pcmcia/3c574_cs.c                  |    9 +-
 drivers/net/pcmcia/3c589_cs.c                  |   10 +-
 drivers/net/pcmcia/axnet_cs.c                  |    9 +-
 drivers/net/pcmcia/fmvj18x_cs.c                |    8 +-
 drivers/net/pcmcia/nmclan_cs.c                 |    9 +-
 drivers/net/pcmcia/pcnet_cs.c                  |    7 +-
 drivers/net/pcmcia/smc91c92_cs.c               |    8 +-
 drivers/net/pcmcia/xirc2ps_cs.c                |    9 +-
 drivers/net/pppoe.c                            |    8 +-
 drivers/net/ps3_gelic_net.c                    |    7 +-
 drivers/net/qla3xxx.c                          |    7 +-
 drivers/net/rionet.c                           |    6 +-
 drivers/net/rrunner.c                          |    8 +-
 drivers/net/s2io.c                             |   11 +-
 drivers/net/sb1250-mac.c                       |    7 +-
 drivers/net/seeq8005.c                         |    4 +-
 drivers/net/sgiseeq.c                          |    6 +-
 drivers/net/sis190.c                           |   10 +-
 drivers/net/sis900.c                           |    9 +-
 drivers/net/skge.c                             |    7 +-
 drivers/net/sky2.c                             |    7 +-
 drivers/net/smc-mca.c                          |    8 +-
 drivers/net/smc-ultra.c                        |    8 +-
 drivers/net/smc-ultra32.c                      |    8 +-
 drivers/net/smc9194.c                          |    7 +-
 drivers/net/smc91x.c                           |    9 +-
 drivers/net/starfire.c                         |   26 ++--
 drivers/net/sun3lance.c                        |   36 ++---
 drivers/net/sunbmac.c                          |    8 +-
 drivers/net/sundance.c                         |   10 +-
 drivers/net/sungem.c                           |   12 +-
 drivers/net/sunhme.c                           |   12 +-
 drivers/net/sunlance.c                         |    9 +-
 drivers/net/tokenring/abyss.c                  |   12 +-
 drivers/net/tokenring/ibmtr.c                  |   26 ++--
 drivers/net/tokenring/lanstreamer.c            |   64 +++-----
 drivers/net/tokenring/madgemc.c                |   19 +--
 drivers/net/tokenring/olympic.c                |  138 +++++++---------
 drivers/net/tokenring/proteon.c                |    8 +-
 drivers/net/tokenring/skisa.c                  |    8 +-
 drivers/net/tokenring/tmspci.c                 |   10 +-
 drivers/net/tsi108_eth.c                       |    7 +-
 drivers/net/tulip/de2104x.c                    |    9 +-
 drivers/net/tulip/de4x5.c                      |   33 +---
 drivers/net/tulip/dmfe.c                       |   15 +-
 drivers/net/tulip/tulip_core.c                 |   15 +-
 drivers/net/tulip/uli526x.c                    |    9 +-
 drivers/net/tulip/winbond-840.c                |   29 ++--
 drivers/net/tulip/xircom_cb.c                  |    7 +-
 drivers/net/tun.c                              |   33 ++---
 drivers/net/typhoon.c                          |   10 +-
 drivers/net/usb/pegasus.c                      |   11 +-
 drivers/net/usb/usbnet.c                       |    8 +-
 drivers/net/via-rhine.c                        |   13 +-
 drivers/net/wd.c                               |    7 +-
 drivers/net/wireless/adm8211.c                 |    5 +-
 drivers/net/wireless/airo.c                    |   32 ++---
 drivers/net/wireless/arlan-main.c              |   23 ++--
 drivers/net/wireless/atmel.c                   |    7 +-
 drivers/net/wireless/bcm43xx/bcm43xx.h         |    6 -
 drivers/net/wireless/hostap/hostap_80211_rx.c  |   49 ++++---
 drivers/net/wireless/hostap/hostap_80211_tx.c  |   13 +-
 drivers/net/wireless/hostap/hostap_ap.c        |  198 +++++++++++++----------
 drivers/net/wireless/hostap/hostap_common.h    |    3 -
 drivers/net/wireless/hostap/hostap_hw.c        |   11 +-
 drivers/net/wireless/hostap/hostap_info.c      |   17 ++-
 drivers/net/wireless/hostap/hostap_ioctl.c     |   15 +-
 drivers/net/wireless/hostap/hostap_main.c      |   30 ++--
 drivers/net/wireless/hostap/hostap_proc.c      |   15 +-
 drivers/net/wireless/ipw2100.c                 |   48 +++---
 drivers/net/wireless/ipw2200.c                 |  207 +++++++++++++-----------
 drivers/net/wireless/libertas/assoc.c          |   19 ++-
 drivers/net/wireless/libertas/cmdresp.c        |    5 +-
 drivers/net/wireless/libertas/debugfs.c        |    5 +-
 drivers/net/wireless/libertas/join.c           |   16 ++-
 drivers/net/wireless/libertas/main.c           |   12 +-
 drivers/net/wireless/libertas/scan.c           |   14 +-
 drivers/net/wireless/libertas/wext.c           |    5 +-
 drivers/net/wireless/netwave_cs.c              |   14 +-
 drivers/net/wireless/orinoco.c                 |    7 +-
 drivers/net/wireless/prism54/isl_ioctl.c       |   50 ++----
 drivers/net/wireless/ray_cs.c                  |   13 +-
 drivers/net/wireless/rtl8187_dev.c             |    5 +-
 drivers/net/wireless/wavelan.c                 |   53 +++----
 drivers/net/wireless/wavelan_cs.c              |   54 +++----
 drivers/net/wireless/wl3501_cs.c               |   22 ++--
 drivers/net/wireless/zd1211rw/zd_chip.c        |    3 +-
 drivers/net/wireless/zd1211rw/zd_mac.c         |    8 +-
 drivers/net/yellowfin.c                        |   19 +--
 drivers/net/znet.c                             |   11 +-
 drivers/net/zorro8390.c                        |   15 +-
 include/linux/if_ether.h                       |    7 +
 include/net/ieee80211.h                        |    5 -
 include/net/mac80211.h                         |    4 -
 net/802/tr.c                                   |   28 ++--
 net/appletalk/aarp.c                           |    9 +-
 net/atm/br2684.c                               |   16 +--
 net/atm/lec.c                                  |   29 ++--
 net/core/netpoll.c                             |   12 +-
 net/core/pktgen.c                              |   17 +--
 net/ethernet/eth.c                             |    8 +
 net/ieee80211/ieee80211_crypt_ccmp.c           |   27 ++--
 net/ieee80211/ieee80211_crypt_tkip.c           |   31 ++--
 net/ieee80211/ieee80211_rx.c                   |   59 ++++---
 net/ieee80211/ieee80211_wx.c                   |    5 +-
 net/ieee80211/softmac/ieee80211softmac_assoc.c |    4 +-
 net/ieee80211/softmac/ieee80211softmac_auth.c  |   35 +++--
 net/ieee80211/softmac/ieee80211softmac_wx.c    |    5 +-
 net/irda/irlan/irlan_client.c                  |    6 +-
 net/llc/llc_proc.c                             |   12 +-
 net/mac80211/debugfs_key.c                     |    3 +-
 net/mac80211/debugfs_netdev.c                  |    3 +-
 net/mac80211/debugfs_sta.c                     |    6 +-
 net/mac80211/event.c                           |    5 +-
 net/mac80211/ieee80211.c                       |    5 +-
 net/mac80211/ieee80211_ioctl.c                 |    5 +-
 net/mac80211/ieee80211_sta.c                   |  180 ++++++++++++---------
 net/mac80211/key.c                             |   10 +-
 net/mac80211/rc80211_simple.c                  |    5 +-
 net/mac80211/rx.c                              |  102 +++++++------
 net/mac80211/sta_info.c                        |   13 +-
 net/mac80211/tkip.c                            |   10 +-
 net/mac80211/tx.c                              |   32 ++--
 net/mac80211/wpa.c                             |   19 ++-
 net/tipc/eth_media.c                           |    4 +-
 215 files changed, 1700 insertions(+), 1847 deletions(-)




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

* Re: [PATCH net-2.6.24] introduce MAC_FMT/MAC_ARG
  2007-09-19  4:50                       ` Joe Perches
@ 2007-09-19 18:11                         ` David Miller
  2007-09-19 18:50                           ` Joe Perches
  0 siblings, 1 reply; 29+ messages in thread
From: David Miller @ 2007-09-19 18:11 UTC (permalink / raw)
  To: joe; +Cc: johannes, netdev, akpm, jgarzik

From: Joe Perches <joe@perches.com>
Date: Tue, 18 Sep 2007 21:50:01 -0700

> I rebased against yesterday's net-2.6.24
> 
> Please pull from:
> 
> git://repo.or.cz/linux-2.6/trivial-mods.git net-2.6.24-fordave

You didn't "rebase" you "merged" and this makes your tree a complete
mess.

When you do a real "rebase", you clone a fresh new tree from mine and
add only your patches on top.

Your tree as-is is difficult for me to pull from because it contains
all kinds of messy merges and merge error fixups.

Can you just extract out one single patch that does the MAC_FMT change
and get that to me somehow?  Either by adding it into a fresh
net-2.6.24 clone, or as a patch.  Both ways are fine.

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

* Re: [PATCH net-2.6.24] introduce MAC_FMT/MAC_ARG
  2007-09-19 18:11                         ` David Miller
@ 2007-09-19 18:50                           ` Joe Perches
  2007-09-19 19:54                             ` David Miller
  0 siblings, 1 reply; 29+ messages in thread
From: Joe Perches @ 2007-09-19 18:50 UTC (permalink / raw)
  To: David Miller; +Cc: johannes, netdev, akpm, jgarzik

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

On Wed, 2007-09-19 at 11:11 -0700, David Miller wrote:
> Can you just extract out one single patch that does the MAC_FMT change
> and get that to me somehow?

Signed-off-by:  Joe Perches <joe@perches.com>

pull from:

git://repo.or.cz/linux-2.6/trivial-mods.git print_mac

or use the attached bz2

[-- Attachment #2: net-2.6.24-print_mac.diff.bz2 --]
[-- Type: application/x-bzip, Size: 68985 bytes --]

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

* Re: [PATCH net-2.6.24] introduce MAC_FMT/MAC_ARG
  2007-09-19 18:50                           ` Joe Perches
@ 2007-09-19 19:54                             ` David Miller
  2007-09-24 17:28                               ` Joe Perches
  0 siblings, 1 reply; 29+ messages in thread
From: David Miller @ 2007-09-19 19:54 UTC (permalink / raw)
  To: joe; +Cc: johannes, netdev, akpm, jgarzik

From: Joe Perches <joe@perches.com>
Date: Wed, 19 Sep 2007 11:50:54 -0700

> On Wed, 2007-09-19 at 11:11 -0700, David Miller wrote:
> > Can you just extract out one single patch that does the MAC_FMT change
> > and get that to me somehow?
> 
> Signed-off-by:  Joe Perches <joe@perches.com>
> 
> pull from:
> 
> git://repo.or.cz/linux-2.6/trivial-mods.git print_mac
> 
> or use the attached bz2

The newly added wireless drivers needed some MAC_FMT conversions,
which I took care of.

Applied to net-2.6.24, thanks Joe!

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

* Re: [PATCH net-2.6.24] introduce MAC_FMT/MAC_ARG
  2007-09-19 19:54                             ` David Miller
@ 2007-09-24 17:28                               ` Joe Perches
  0 siblings, 0 replies; 29+ messages in thread
From: Joe Perches @ 2007-09-24 17:28 UTC (permalink / raw)
  To: David Miller; +Cc: johannes, netdev, akpm, jgarzik

On Wed, 2007-09-19 at 12:54 -0700, David Miller wrote:
> Applied to net-2.6.24, thanks Joe!

Here is a patch that adds some type safety to print_mac
by using a struct print_mac_buf * instead of char *.

It also reduces the defconfig vmlinux size by 8 bytes.

Signed-off-by:  Joe Perches <joe@perches.com>

--

 include/linux/if_ether.h |   12 ++++++++++--
 net/ethernet/eth.c       |    6 +++---
 2 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/include/linux/if_ether.h b/include/linux/if_ether.h
index 57abca1..620d6b1 100644
--- a/include/linux/if_ether.h
+++ b/include/linux/if_ether.h
@@ -126,7 +126,15 @@ extern struct ctl_table ether_table[];
  *	Display a 6 byte device address (MAC) in a readable format.
  */
 #define MAC_FMT "%02x:%02x:%02x:%02x:%02x:%02x"
-extern char *print_mac(char *buf, const u8 *addr);
-#define DECLARE_MAC_BUF(var) char var[18] __maybe_unused
+
+struct print_mac_buf {
+	char formatted_mac_addr[18];
+};
+
+#define DECLARE_MAC_BUF(var) \
+	struct print_mac_buf __maybe_unused _##var; \
+	struct print_mac_buf __maybe_unused *var = &_##var
+
+extern char *print_mac(struct print_mac_buf *buf, const u8 *addr);
 
 #endif	/* _LINUX_IF_ETHER_H */
diff --git a/net/ethernet/eth.c b/net/ethernet/eth.c
index 2aaf6fa..ad82613 100644
--- a/net/ethernet/eth.c
+++ b/net/ethernet/eth.c
@@ -338,10 +338,10 @@ struct net_device *alloc_etherdev_mq(int sizeof_priv, unsigned int queue_count)
 }
 EXPORT_SYMBOL(alloc_etherdev_mq);
 
-char *print_mac(char *buf, const u8 *addr)
+char *print_mac(struct print_mac_buf *buf, const u8 *addr)
 {
-	sprintf(buf, MAC_FMT,
+	sprintf(buf->formatted_mac_addr, MAC_FMT,
 		addr[0], addr[1], addr[2], addr[3], addr[4], addr[5]);
-	return buf;
+	return buf->formatted_mac_addr;
 }
 EXPORT_SYMBOL(print_mac);



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

end of thread, other threads:[~2007-09-24 17:29 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-08-22 18:46 [PATCH net-2.6.24] introduce MAC_FMT/MAC_ARG Johannes Berg
2007-08-23 16:01 ` Joe Perches
2007-08-23 16:12   ` Johannes Berg
2007-08-23 17:08     ` John W. Linville
2007-08-25  6:14       ` David Miller
2007-08-26  0:09 ` Joe Perches
2007-08-27 10:54   ` Johannes Berg
2007-08-27 15:44     ` Joe Perches
2007-08-27 20:41     ` David Miller
     [not found]       ` <1188248263.18004.131.camel@localhost>
2007-08-27 21:09         ` Stephen Hemminger
2007-08-27 21:11         ` David Miller
     [not found]         ` <200708281648.44352.mb@bu3sch.de>
     [not found]           ` <20070828.155419.74563234.davem@davemloft.net>
2007-08-29 17:46             ` Michael Buesch
2007-08-27 21:26       ` Joe Perches
2007-08-27 21:37         ` David Miller
     [not found]           ` <1188335521.6062.56.camel@localhost>
     [not found]             ` <20070828.142216.99461544.davem@davemloft.net>
2007-08-31 22:16               ` Joe Perches
2007-08-31 22:21                 ` Johannes Berg
2007-08-31 22:24                   ` Joe Perches
2007-08-31 22:27                     ` Johannes Berg
2007-08-31 22:32                     ` Johannes Berg
2007-08-31 22:39                       ` Joe Perches
2007-09-14 19:41                 ` Joe Perches
2007-09-14 19:48                   ` David Miller
2007-09-18  2:05                   ` David Miller
2007-09-18  2:14                     ` Joe Perches
2007-09-19  4:50                       ` Joe Perches
2007-09-19 18:11                         ` David Miller
2007-09-19 18:50                           ` Joe Perches
2007-09-19 19:54                             ` David Miller
2007-09-24 17:28                               ` 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).