Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
authorDavid S. Miller <davem@davemloft.net>
Fri, 31 Oct 2008 07:17:34 +0000 (00:17 -0700)
committerDavid S. Miller <davem@davemloft.net>
Fri, 31 Oct 2008 07:17:34 +0000 (00:17 -0700)
Conflicts:

drivers/net/wireless/p54/p54common.c

380 files changed:
Documentation/feature-removal-schedule.txt
Documentation/networking/ip-sysctl.txt
MAINTAINERS
arch/arm/mach-ixp4xx/fsg-setup.c
arch/arm/mach-ixp4xx/nas100d-setup.c
arch/arm/mach-ixp4xx/nslu2-setup.c
arch/sparc64/kernel/idprom.c
arch/um/drivers/net_kern.c
arch/xtensa/platforms/iss/network.c
drivers/firmware/iscsi_ibft.c
drivers/infiniband/core/sysfs.c
drivers/infiniband/hw/mthca/mthca_mcg.c
drivers/infiniband/hw/nes/nes.c
drivers/infiniband/hw/nes/nes_cm.c
drivers/infiniband/hw/nes/nes_nic.c
drivers/infiniband/ulp/ipoib/ipoib.h
drivers/infiniband/ulp/ipoib/ipoib_cm.c
drivers/infiniband/ulp/ipoib/ipoib_main.c
drivers/infiniband/ulp/ipoib/ipoib_multicast.c
drivers/infiniband/ulp/srp/ib_srp.c
drivers/isdn/i4l/isdn_net.c
drivers/media/dvb/b2c2/flexcop.c
drivers/media/dvb/bt8xx/dst.c
drivers/media/dvb/dm1105/dm1105.c
drivers/media/dvb/dvb-usb/dvb-usb-dvb.c
drivers/media/dvb/pluto2/pluto2.c
drivers/message/fusion/mptlan.c
drivers/net/3c503.c
drivers/net/3c505.c
drivers/net/3c507.c
drivers/net/3c509.c
drivers/net/3c515.c
drivers/net/3c523.c
drivers/net/3c527.c
drivers/net/3c59x.c
drivers/net/8139cp.c
drivers/net/8139too.c
drivers/net/82596.c
drivers/net/Kconfig
drivers/net/Makefile
drivers/net/a2065.c
drivers/net/ac3200.c
drivers/net/acenic.c
drivers/net/amd8111e.c
drivers/net/apne.c
drivers/net/ariadne.c
drivers/net/arm/am79c961a.c
drivers/net/arm/at91_ether.c
drivers/net/arm/ether1.c
drivers/net/arm/ether3.c
drivers/net/arm/etherh.c
drivers/net/at1700.c
drivers/net/atarilance.c
drivers/net/atp.c
drivers/net/ax88796.c
drivers/net/b44.c
drivers/net/bmac.c
drivers/net/bnx2.c
drivers/net/bnx2x_main.c
drivers/net/bonding/bond_main.c
drivers/net/bonding/bond_sysfs.c
drivers/net/cassini.c
drivers/net/cpmac.c
drivers/net/cris/eth_v10.c
drivers/net/cs89x0.c
drivers/net/cxgb3/cxgb3_main.c
drivers/net/de600.c
drivers/net/de620.c
drivers/net/declance.c
drivers/net/depca.c
drivers/net/dl2k.c
drivers/net/dm9000.c
drivers/net/e100.c
drivers/net/e1000/e1000_main.c
drivers/net/e1000e/netdev.c
drivers/net/eepro.c
drivers/net/eepro100.c [deleted file]
drivers/net/enc28j60.c
drivers/net/enic/enic_res.c
drivers/net/enic/vnic_dev.c
drivers/net/epic100.c
drivers/net/es3210.c
drivers/net/ewrk3.c
drivers/net/fealnx.c
drivers/net/fec.c
drivers/net/forcedeth.c
drivers/net/fs_enet/fs_enet-main.c
drivers/net/gianfar.c
drivers/net/hamachi.c
drivers/net/hamradio/bpqether.c
drivers/net/hp-plus.c
drivers/net/hp.c
drivers/net/hp100.c
drivers/net/hydra.c
drivers/net/ibm_newemac/core.c
drivers/net/ibmlana.c
drivers/net/ibmveth.c
drivers/net/igb/igb_main.c
drivers/net/ioc3-eth.c
drivers/net/isa-skeleton.c
drivers/net/ixgb/ixgb_main.c
drivers/net/ixgbe/ixgbe_main.c
drivers/net/jazzsonic.c
drivers/net/jme.c
drivers/net/lance.c
drivers/net/lib82596.c
drivers/net/lne390.c
drivers/net/mac89x0.c
drivers/net/macb.c
drivers/net/mace.c
drivers/net/macmace.c
drivers/net/macsonic.c
drivers/net/macvlan.c
drivers/net/meth.c
drivers/net/mlx4/mcg.c
drivers/net/mv643xx_eth.c
drivers/net/mvme147.c
drivers/net/myri10ge/myri10ge.c
drivers/net/myri_sbus.c
drivers/net/natsemi.c
drivers/net/ne-h8300.c
drivers/net/ne.c
drivers/net/ne2.c
drivers/net/ne2k-pci.c
drivers/net/ne3210.c
drivers/net/netconsole.c
drivers/net/netxen/netxen_nic_main.c
drivers/net/netxen/netxen_nic_niu.c
drivers/net/ni5010.c
drivers/net/niu.c
drivers/net/ns83820.c
drivers/net/pasemi_mac.c
drivers/net/pci-skeleton.c
drivers/net/pcmcia/3c574_cs.c
drivers/net/pcmcia/3c589_cs.c
drivers/net/pcmcia/axnet_cs.c
drivers/net/pcmcia/fmvj18x_cs.c
drivers/net/pcmcia/nmclan_cs.c
drivers/net/pcmcia/pcnet_cs.c
drivers/net/pcmcia/smc91c92_cs.c
drivers/net/pcmcia/xirc2ps_cs.c
drivers/net/pcnet32.c
drivers/net/pppoe.c
drivers/net/ps3_gelic_net.c
drivers/net/ps3_gelic_wireless.c
drivers/net/qla3xxx.c
drivers/net/qlge/qlge_main.c
drivers/net/rionet.c
drivers/net/rrunner.c
drivers/net/s2io.c
drivers/net/sb1250-mac.c
drivers/net/seeq8005.c
drivers/net/sfc/efx.c
drivers/net/sgiseeq.c
drivers/net/sis190.c
drivers/net/sis900.c
drivers/net/skge.c
drivers/net/sky2.c
drivers/net/smc-mca.c
drivers/net/smc-ultra.c
drivers/net/smc-ultra32.c
drivers/net/smc9194.c
drivers/net/smc91x.c
drivers/net/starfire.c
drivers/net/sun3lance.c
drivers/net/sunbmac.c
drivers/net/sundance.c
drivers/net/sungem.c
drivers/net/sunhme.c
drivers/net/sunlance.c
drivers/net/sunvnet.c
drivers/net/tc35815.c
drivers/net/tg3.c
drivers/net/tokenring/abyss.c
drivers/net/tokenring/ibmtr.c
drivers/net/tokenring/lanstreamer.c
drivers/net/tokenring/madgemc.c
drivers/net/tokenring/olympic.c
drivers/net/tokenring/proteon.c
drivers/net/tokenring/skisa.c
drivers/net/tokenring/tmspci.c
drivers/net/tsi108_eth.c
drivers/net/tulip/de2104x.c
drivers/net/tulip/de4x5.c
drivers/net/tulip/dmfe.c
drivers/net/tulip/tulip_core.c
drivers/net/tulip/uli526x.c
drivers/net/tulip/winbond-840.c
drivers/net/tulip/xircom_cb.c
drivers/net/tun.c
drivers/net/typhoon.c
drivers/net/usb/pegasus.c
drivers/net/usb/smsc95xx.c
drivers/net/usb/usbnet.c
drivers/net/veth.c
drivers/net/via-rhine.c
drivers/net/virtio_net.c
drivers/net/wan/dscc4.c
drivers/net/wan/pc300too.c
drivers/net/wan/pci200syn.c
drivers/net/wd.c
drivers/net/wireless/adm8211.c
drivers/net/wireless/airo.c
drivers/net/wireless/arlan-main.c
drivers/net/wireless/ath9k/core.c
drivers/net/wireless/ath9k/hw.c
drivers/net/wireless/ath9k/main.c
drivers/net/wireless/ath9k/rc.c
drivers/net/wireless/ath9k/xmit.c
drivers/net/wireless/atmel.c
drivers/net/wireless/b43/main.c
drivers/net/wireless/hostap/hostap_80211_rx.c
drivers/net/wireless/hostap/hostap_80211_tx.c
drivers/net/wireless/hostap/hostap_ap.c
drivers/net/wireless/hostap/hostap_hw.c
drivers/net/wireless/hostap/hostap_info.c
drivers/net/wireless/hostap/hostap_ioctl.c
drivers/net/wireless/hostap/hostap_main.c
drivers/net/wireless/hostap/hostap_pci.c
drivers/net/wireless/hostap/hostap_proc.c
drivers/net/wireless/ipw2100.c
drivers/net/wireless/ipw2200.c
drivers/net/wireless/iwlwifi/iwl-3945-rs.c
drivers/net/wireless/iwlwifi/iwl-3945.c
drivers/net/wireless/iwlwifi/iwl-agn-rs.c
drivers/net/wireless/iwlwifi/iwl-agn.c
drivers/net/wireless/iwlwifi/iwl-debugfs.c
drivers/net/wireless/iwlwifi/iwl-sta.c
drivers/net/wireless/iwlwifi/iwl-tx.c
drivers/net/wireless/iwlwifi/iwl3945-base.c
drivers/net/wireless/libertas/assoc.c
drivers/net/wireless/libertas/cmd.c
drivers/net/wireless/libertas/debugfs.c
drivers/net/wireless/libertas/main.c
drivers/net/wireless/libertas/scan.c
drivers/net/wireless/libertas/wext.c
drivers/net/wireless/libertas_tf/cmd.c
drivers/net/wireless/mac80211_hwsim.c
drivers/net/wireless/netwave_cs.c
drivers/net/wireless/orinoco.c
drivers/net/wireless/p54/p54common.c
drivers/net/wireless/p54/p54pci.c
drivers/net/wireless/p54/p54usb.c
drivers/net/wireless/prism54/isl_ioctl.c
drivers/net/wireless/ray_cs.c
drivers/net/wireless/rndis_wlan.c
drivers/net/wireless/rt2x00/rt2400pci.c
drivers/net/wireless/rt2x00/rt2500pci.c
drivers/net/wireless/rt2x00/rt2500usb.c
drivers/net/wireless/rt2x00/rt2x00pci.c
drivers/net/wireless/rt2x00/rt61pci.c
drivers/net/wireless/rt2x00/rt73usb.c
drivers/net/wireless/rtl8180_dev.c
drivers/net/wireless/rtl8187_dev.c
drivers/net/wireless/wavelan.c
drivers/net/wireless/wavelan_cs.c
drivers/net/wireless/wl3501_cs.c
drivers/net/wireless/zd1211rw/zd_chip.c
drivers/net/wireless/zd1211rw/zd_mac.c
drivers/net/xtsonic.c
drivers/net/yellowfin.c
drivers/net/znet.c
drivers/net/zorro8390.c
drivers/s390/net/qeth_l2_main.c
drivers/scsi/iscsi_tcp.c
drivers/usb/atm/cxacru.c
drivers/usb/atm/usbatm.c
drivers/usb/gadget/u_ether.c
drivers/uwb/wlp/eda.c
fs/cifs/cifs_spnego.c
fs/lockd/host.c
fs/nfs/super.c
include/linux/kernel.h
include/linux/rculist.h
include/linux/skbuff.h
include/linux/sunrpc/svc_xprt.h
include/linux/xfrm.h
include/net/dst.h
include/net/ip_vs.h
include/net/netfilter/nf_conntrack_tuple.h
include/net/netlink.h
include/net/netns/ipv4.h
include/net/sctp/sctp.h
include/net/sock.h
include/net/udp.h
include/net/udplite.h
include/net/xfrm.h
lib/vsprintf.c
net/802/tr.c
net/8021q/vlan.c
net/8021q/vlan.h
net/8021q/vlan_dev.c
net/Kconfig
net/appletalk/aarp.c
net/atm/br2684.c
net/atm/lec.c
net/bridge/netfilter/ebt_log.c
net/core/dev.c
net/core/neighbour.c
net/core/net-sysfs.c
net/core/net_namespace.c
net/core/netpoll.c
net/core/pktgen.c
net/core/skbuff.c
net/core/sock.c
net/ieee80211/ieee80211_crypt_ccmp.c
net/ieee80211/ieee80211_crypt_tkip.c
net/ieee80211/ieee80211_rx.c
net/ieee80211/ieee80211_wx.c
net/ipv4/cipso_ipv4.c
net/ipv4/devinet.c
net/ipv4/icmp.c
net/ipv4/ip_forward.c
net/ipv4/route.c
net/ipv4/sysctl_net_ipv4.c
net/ipv4/tcp_input.c
net/ipv4/tcp_timer.c
net/ipv4/udp.c
net/ipv4/udp_impl.h
net/ipv4/udplite.c
net/ipv6/addrconf.c
net/ipv6/addrlabel.c
net/ipv6/ah6.c
net/ipv6/anycast.c
net/ipv6/esp6.c
net/ipv6/exthdrs.c
net/ipv6/icmp.c
net/ipv6/ip6_flowlabel.c
net/ipv6/ip6_output.c
net/ipv6/ip6mr.c
net/ipv6/ipcomp6.c
net/ipv6/mcast.c
net/ipv6/ndisc.c
net/ipv6/netfilter/ip6t_LOG.c
net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c
net/ipv6/route.c
net/ipv6/tcp_ipv6.c
net/ipv6/udp.c
net/ipv6/udp_impl.h
net/ipv6/udplite.c
net/irda/irlan/irlan_client.c
net/llc/llc_proc.c
net/mac80211/debugfs_key.c
net/mac80211/debugfs_netdev.c
net/mac80211/debugfs_sta.c
net/mac80211/event.c
net/mac80211/ht.c
net/mac80211/key.c
net/mac80211/mesh_plink.c
net/mac80211/mlme.c
net/mac80211/rx.c
net/mac80211/sta_info.c
net/mac80211/tkip.c
net/mac80211/tx.c
net/mac80211/wme.c
net/mac80211/wpa.c
net/netfilter/ipvs/ip_vs_conn.c
net/netfilter/ipvs/ip_vs_core.c
net/netfilter/ipvs/ip_vs_ctl.c
net/netfilter/ipvs/ip_vs_proto.c
net/netfilter/ipvs/ip_vs_proto_ah_esp.c
net/netfilter/ipvs/ip_vs_xmit.c
net/netfilter/nf_conntrack_ftp.c
net/netfilter/nf_conntrack_h323_main.c
net/netfilter/xt_hashlimit.c
net/netfilter/xt_recent.c
net/netlabel/netlabel_addrlist.c
net/netlink/attr.c
net/sctp/ipv6.c
net/sctp/sm_statefuns.c
net/sunrpc/clnt.c
net/sunrpc/rpcb_clnt.c
net/sunrpc/svcauth_unix.c
net/sunrpc/xprtsock.c
net/tipc/eth_media.c
net/xfrm/xfrm_policy.c
net/xfrm/xfrm_state.c
net/xfrm/xfrm_user.c
security/selinux/avc.c
security/selinux/hooks.c

index 05d71b4..6ecd4f0 100644 (file)
@@ -144,13 +144,6 @@ Who:       Christoph Hellwig <hch@lst.de>
 
 ---------------------------
 
-What:   eepro100 network driver
-When:   January 2007
-Why:    replaced by the e100 driver
-Who:    Adrian Bunk <bunk@stusta.de>
-
----------------------------
-
 What:  Unused EXPORT_SYMBOL/EXPORT_SYMBOL_GPL exports
        (temporary transition config option provided until then)
        The transition config option will also be removed at the same time.
index d849326..c771278 100644 (file)
@@ -27,6 +27,12 @@ min_adv_mss - INTEGER
        The advertised MSS depends on the first hop route MTU, but will
        never be lower than this setting.
 
+rt_cache_rebuild_count - INTEGER
+       The per net-namespace route cache emergency rebuild threshold.
+       Any net-namespace having its route cache rebuilt due to
+       a hash bucket chain being too long more than this many times
+       will have its route caching disabled
+
 IP Fragmentation:
 
 ipfrag_high_thresh - INTEGER
index d643e86..cda50d6 100644 (file)
@@ -1606,11 +1606,6 @@ L:       acpi4asus-user@lists.sourceforge.net
 W:     http://sourceforge.net/projects/acpi4asus
 S:     Maintained
 
-EEPRO100 NETWORK DRIVER
-P:     Andrey V. Savochkin
-M:     saw@saw.sw.com.sg
-S:     Maintained
-
 EFS FILESYSTEM
 W:     http://aeschi.ch.eu.org/efs/
 S:     Orphan
index e7c6386..5add22f 100644 (file)
@@ -177,7 +177,6 @@ static irqreturn_t fsg_reset_handler(int irq, void *dev_id)
 
 static void __init fsg_init(void)
 {
-       DECLARE_MAC_BUF(mac_buf);
        uint8_t __iomem *f;
 
        ixp4xx_sys_init();
@@ -256,10 +255,10 @@ static void __init fsg_init(void)
 #endif
                iounmap(f);
        }
-       printk(KERN_INFO "FSG: Using MAC address %s for port 0\n",
-              print_mac(mac_buf, fsg_plat_eth[0].hwaddr));
-       printk(KERN_INFO "FSG: Using MAC address %s for port 1\n",
-              print_mac(mac_buf, fsg_plat_eth[1].hwaddr));
+       printk(KERN_INFO "FSG: Using MAC address %pM for port 0\n",
+              fsg_plat_eth[0].hwaddr);
+       printk(KERN_INFO "FSG: Using MAC address %pM for port 1\n",
+              fsg_plat_eth[1].hwaddr);
 
 }
 
index 0acd95e..921c947 100644 (file)
@@ -231,7 +231,6 @@ static irqreturn_t nas100d_reset_handler(int irq, void *dev_id)
 
 static void __init nas100d_init(void)
 {
-       DECLARE_MAC_BUF(mac_buf);
        uint8_t __iomem *f;
        int i;
 
@@ -294,8 +293,8 @@ static void __init nas100d_init(void)
 #endif
                iounmap(f);
        }
-       printk(KERN_INFO "NAS100D: Using MAC address %s for port 0\n",
-              print_mac(mac_buf, nas100d_plat_eth[0].hwaddr));
+       printk(KERN_INFO "NAS100D: Using MAC address %pM for port 0\n",
+              nas100d_plat_eth[0].hwaddr);
 
 }
 
index bc9d920..ff6a08d 100644 (file)
@@ -220,7 +220,6 @@ static struct sys_timer nslu2_timer = {
 
 static void __init nslu2_init(void)
 {
-       DECLARE_MAC_BUF(mac_buf);
        uint8_t __iomem *f;
        int i;
 
@@ -275,8 +274,8 @@ static void __init nslu2_init(void)
 #endif
                iounmap(f);
        }
-       printk(KERN_INFO "NSLU2: Using MAC address %s for port 0\n",
-              print_mac(mac_buf, nslu2_plat_eth[0].hwaddr));
+       printk(KERN_INFO "NSLU2: Using MAC address %pM for port 0\n",
+              nslu2_plat_eth[0].hwaddr);
 
 }
 
index 5b45a80..a62ff83 100644 (file)
@@ -42,8 +42,5 @@ void __init idprom_init(void)
                            idprom->id_cksum, calc_idprom_cksum(idprom));
        }
 
-       printk("Ethernet address: %02x:%02x:%02x:%02x:%02x:%02x\n",
-              idprom->id_ethaddr[0], idprom->id_ethaddr[1],
-              idprom->id_ethaddr[2], idprom->id_ethaddr[3],
-              idprom->id_ethaddr[4], idprom->id_ethaddr[5]);
+       printk("Ethernet address: %pM\n", idprom->id_ethaddr);
 }
index 5b4ca8d..74f1a17 100644 (file)
@@ -418,12 +418,7 @@ static void eth_configure(int n, void *init, char *mac,
 
        setup_etheraddr(mac, device->mac, dev->name);
 
-       printk(KERN_INFO "Netdevice %d ", n);
-       printk("(%02x:%02x:%02x:%02x:%02x:%02x) ",
-              device->mac[0], device->mac[1],
-              device->mac[2], device->mac[3],
-              device->mac[4], device->mac[5]);
-       printk(": ");
+       printk(KERN_INFO "Netdevice %d (%pM) : ", n, device->mac);
 
        lp = dev->priv;
        /* This points to the transport private data. It's still clear, but we
index 11a20ad..87f47ca 100644 (file)
@@ -660,10 +660,7 @@ static int iss_net_configure(int index, char *init)
 
        printk(KERN_INFO "Netdevice %d ", index);
        if (lp->have_mac)
-               printk("(%02x:%02x:%02x:%02x:%02x:%02x) ",
-                               lp->mac[0], lp->mac[1],
-                               lp->mac[2], lp->mac[3],
-                               lp->mac[4], lp->mac[5]);
+               printk("(%pM) ", lp->mac);
        printk(": ");
 
        /* sysfs register */
index 4353414..acb82af 100644 (file)
@@ -290,9 +290,7 @@ static ssize_t sprintf_ipaddr(char *buf, u8 *ip)
                /*
                 * IPv6
                 */
-               str += sprintf(str, NIP6_FMT, ntohs(ip[0]), ntohs(ip[1]),
-                              ntohs(ip[2]), ntohs(ip[3]), ntohs(ip[4]),
-                              ntohs(ip[5]), ntohs(ip[6]), ntohs(ip[7]));
+               str += sprintf(str, "%pI6", ip);
        }
        str += sprintf(str, "\n");
        return str - buf;
index 4d10421..4f4d1bb 100644 (file)
@@ -262,15 +262,7 @@ static ssize_t show_port_gid(struct ib_port *p, struct port_attribute *attr,
        if (ret)
                return ret;
 
-       return sprintf(buf, "%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x\n",
-                      be16_to_cpu(((__be16 *) gid.raw)[0]),
-                      be16_to_cpu(((__be16 *) gid.raw)[1]),
-                      be16_to_cpu(((__be16 *) gid.raw)[2]),
-                      be16_to_cpu(((__be16 *) gid.raw)[3]),
-                      be16_to_cpu(((__be16 *) gid.raw)[4]),
-                      be16_to_cpu(((__be16 *) gid.raw)[5]),
-                      be16_to_cpu(((__be16 *) gid.raw)[6]),
-                      be16_to_cpu(((__be16 *) gid.raw)[7]));
+       return sprintf(buf, "%pI6\n", gid.raw);
 }
 
 static ssize_t show_port_pkey(struct ib_port *p, struct port_attribute *attr,
index 3f5f948..d4c8105 100644 (file)
@@ -87,17 +87,7 @@ static int find_mgm(struct mthca_dev *dev,
        }
 
        if (0)
-               mthca_dbg(dev, "Hash for %04x:%04x:%04x:%04x:"
-                         "%04x:%04x:%04x:%04x is %04x\n",
-                         be16_to_cpu(((__be16 *) gid)[0]),
-                         be16_to_cpu(((__be16 *) gid)[1]),
-                         be16_to_cpu(((__be16 *) gid)[2]),
-                         be16_to_cpu(((__be16 *) gid)[3]),
-                         be16_to_cpu(((__be16 *) gid)[4]),
-                         be16_to_cpu(((__be16 *) gid)[5]),
-                         be16_to_cpu(((__be16 *) gid)[6]),
-                         be16_to_cpu(((__be16 *) gid)[7]),
-                         *hash);
+               mthca_dbg(dev, "Hash for %pI6 is %04x\n", gid, *hash);
 
        *index = *hash;
        *prev  = -1;
@@ -264,16 +254,7 @@ int mthca_multicast_detach(struct ib_qp *ibqp, union ib_gid *gid, u16 lid)
                goto out;
 
        if (index == -1) {
-               mthca_err(dev, "MGID %04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x "
-                         "not found\n",
-                         be16_to_cpu(((__be16 *) gid->raw)[0]),
-                         be16_to_cpu(((__be16 *) gid->raw)[1]),
-                         be16_to_cpu(((__be16 *) gid->raw)[2]),
-                         be16_to_cpu(((__be16 *) gid->raw)[3]),
-                         be16_to_cpu(((__be16 *) gid->raw)[4]),
-                         be16_to_cpu(((__be16 *) gid->raw)[5]),
-                         be16_to_cpu(((__be16 *) gid->raw)[6]),
-                         be16_to_cpu(((__be16 *) gid->raw)[7]));
+               mthca_err(dev, "MGID %pI6 not found\n", gid->raw);
                err = -EINVAL;
                goto out;
        }
index a2b04d6..fb7d243 100644 (file)
@@ -138,14 +138,9 @@ static int nes_inetaddr_event(struct notifier_block *notifier,
        struct nes_device *nesdev;
        struct net_device *netdev;
        struct nes_vnic *nesvnic;
-       unsigned int addr;
-       unsigned int mask;
-
-       addr = ntohl(ifa->ifa_address);
-       mask = ntohl(ifa->ifa_mask);
-       nes_debug(NES_DBG_NETDEV, "nes_inetaddr_event: ip address " NIPQUAD_FMT
-                 ", netmask " NIPQUAD_FMT ".\n",
-                 HIPQUAD(addr), HIPQUAD(mask));
+
+       nes_debug(NES_DBG_NETDEV, "nes_inetaddr_event: ip address %pI4, netmask %pI4.\n",
+                 &ifa->ifa_address, &ifa->ifa_mask);
        list_for_each_entry(nesdev, &nes_dev_list, list) {
                nes_debug(NES_DBG_NETDEV, "Nesdev list entry = 0x%p. (%s)\n",
                                nesdev, nesdev->netdev[0]->name);
@@ -356,10 +351,8 @@ struct ib_qp *nes_get_qp(struct ib_device *device, int qpn)
  */
 static void nes_print_macaddr(struct net_device *netdev)
 {
-       DECLARE_MAC_BUF(mac);
-
-       nes_debug(NES_DBG_INIT, "%s: %s, IRQ %u\n",
-                 netdev->name, print_mac(mac, netdev->dev_addr), netdev->irq);
+       nes_debug(NES_DBG_INIT, "%s: %pM, IRQ %u\n",
+                 netdev->name, netdev->dev_addr, netdev->irq);
 }
 
 /**
index 2caf9da..6058d05 100644 (file)
@@ -1027,7 +1027,6 @@ static int nes_addr_resolve_neigh(struct nes_vnic *nesvnic, u32 dst_ip)
        struct flowi fl;
        struct neighbour *neigh;
        int rc = -1;
-       DECLARE_MAC_BUF(mac);
 
        memset(&fl, 0, sizeof fl);
        fl.nl_u.ip4_u.daddr = htonl(dst_ip);
@@ -1041,8 +1040,8 @@ static int nes_addr_resolve_neigh(struct nes_vnic *nesvnic, u32 dst_ip)
        if (neigh) {
                if (neigh->nud_state & NUD_VALID) {
                        nes_debug(NES_DBG_CM, "Neighbor MAC address for 0x%08X"
-                                 " is %s, Gateway is 0x%08X \n", dst_ip,
-                                 print_mac(mac, neigh->ha), ntohl(rt->rt_gateway));
+                                 " is %pM, Gateway is 0x%08X \n", dst_ip,
+                                 neigh->ha, ntohl(rt->rt_gateway));
                        nes_manage_arp_cache(nesvnic->netdev, neigh->ha,
                                             dst_ip, NES_ARP_ADD);
                        rc = nes_arp_table(nesvnic->nesdev, dst_ip, NULL,
@@ -1071,7 +1070,6 @@ static struct nes_cm_node *make_cm_node(struct nes_cm_core *cm_core,
        int arpindex = 0;
        struct nes_device *nesdev;
        struct nes_adapter *nesadapter;
-       DECLARE_MAC_BUF(mac);
 
        /* create an hte and cm_node for this instance */
        cm_node = kzalloc(sizeof(*cm_node), GFP_ATOMIC);
@@ -1137,8 +1135,8 @@ static struct nes_cm_node *make_cm_node(struct nes_cm_core *cm_core,
 
        /* copy the mac addr to node context */
        memcpy(cm_node->rem_mac, nesadapter->arp_table[arpindex].mac_addr, ETH_ALEN);
-       nes_debug(NES_DBG_CM, "Remote mac addr from arp table: %s\n",
-                 print_mac(mac, cm_node->rem_mac));
+       nes_debug(NES_DBG_CM, "Remote mac addr from arp table: %pM\n",
+                 cm_node->rem_mac);
 
        add_hte_node(cm_core, cm_node);
        atomic_inc(&cm_nodes_created);
index 7303586..3c96203 100644 (file)
@@ -797,14 +797,13 @@ static int nes_netdev_set_mac_address(struct net_device *netdev, void *p)
        int i;
        u32 macaddr_low;
        u16 macaddr_high;
-       DECLARE_MAC_BUF(mac);
 
        if (!is_valid_ether_addr(mac_addr->sa_data))
                return -EADDRNOTAVAIL;
 
        memcpy(netdev->dev_addr, mac_addr->sa_data, netdev->addr_len);
-       printk(PFX "%s: Address length = %d, Address = %s\n",
-              __func__, netdev->addr_len, print_mac(mac, mac_addr->sa_data));
+       printk(PFX "%s: Address length = %d, Address = %pM\n",
+              __func__, netdev->addr_len, mac_addr->sa_data);
        macaddr_high  = ((u16)netdev->dev_addr[0]) << 8;
        macaddr_high += (u16)netdev->dev_addr[1];
        macaddr_low   = ((u32)netdev->dev_addr[2]) << 24;
@@ -909,9 +908,8 @@ static void nes_netdev_set_multicast_list(struct net_device *netdev)
                        if (mc_index >= max_pft_entries_avaiable)
                                break;
                        if (multicast_addr) {
-                               DECLARE_MAC_BUF(mac);
-                               nes_debug(NES_DBG_NIC_RX, "Assigning MC Address %s to register 0x%04X nic_idx=%d\n",
-                                         print_mac(mac, multicast_addr->dmi_addr),
+                               nes_debug(NES_DBG_NIC_RX, "Assigning MC Address %pM to register 0x%04X nic_idx=%d\n",
+                                         multicast_addr->dmi_addr,
                                          perfect_filter_register_address+(mc_index * 8),
                                          mc_nic_index);
                                macaddr_high  = ((u16)multicast_addr->dmi_addr[0]) << 8;
index e0c7dfa..753a983 100644 (file)
@@ -732,29 +732,6 @@ extern int ipoib_debug_level;
        do { (void) (priv); } while (0)
 #endif /* CONFIG_INFINIBAND_IPOIB_DEBUG_DATA */
 
-
-#define IPOIB_GID_FMT          "%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:%2.2x%2.2x"
-
-#define IPOIB_GID_RAW_ARG(gid) ((u8 *)(gid))[0], \
-                               ((u8 *)(gid))[1], \
-                               ((u8 *)(gid))[2], \
-                               ((u8 *)(gid))[3], \
-                               ((u8 *)(gid))[4], \
-                               ((u8 *)(gid))[5], \
-                               ((u8 *)(gid))[6], \
-                               ((u8 *)(gid))[7], \
-                               ((u8 *)(gid))[8], \
-                               ((u8 *)(gid))[9], \
-                               ((u8 *)(gid))[10],\
-                               ((u8 *)(gid))[11],\
-                               ((u8 *)(gid))[12],\
-                               ((u8 *)(gid))[13],\
-                               ((u8 *)(gid))[14],\
-                               ((u8 *)(gid))[15]
-
-#define IPOIB_GID_ARG(gid)     IPOIB_GID_RAW_ARG((gid).raw)
-
 #define IPOIB_QPN(ha) (be32_to_cpup((__be32 *) ha) & 0xffffff)
 
 #endif /* _IPOIB_H */
index 7b14c2c..47d588b 100644 (file)
@@ -1128,8 +1128,8 @@ static int ipoib_cm_tx_init(struct ipoib_cm_tx *p, u32 qpn,
                goto err_send_cm;
        }
 
-       ipoib_dbg(priv, "Request connection 0x%x for gid " IPOIB_GID_FMT " qpn 0x%x\n",
-                 p->qp->qp_num, IPOIB_GID_ARG(pathrec->dgid), qpn);
+       ipoib_dbg(priv, "Request connection 0x%x for gid %pI6 qpn 0x%x\n",
+                 p->qp->qp_num, pathrec->dgid.raw, qpn);
 
        return 0;
 
@@ -1276,8 +1276,8 @@ void ipoib_cm_destroy_tx(struct ipoib_cm_tx *tx)
        if (test_and_clear_bit(IPOIB_FLAG_INITIALIZED, &tx->flags)) {
                list_move(&tx->list, &priv->cm.reap_list);
                queue_work(ipoib_workqueue, &priv->cm.reap_task);
-               ipoib_dbg(priv, "Reap connection for gid " IPOIB_GID_FMT "\n",
-                         IPOIB_GID_ARG(tx->neigh->dgid));
+               ipoib_dbg(priv, "Reap connection for gid %pI6\n",
+                         tx->neigh->dgid.raw);
                tx->neigh = NULL;
        }
 }
index fddded7..b3a6718 100644 (file)
@@ -359,9 +359,9 @@ void ipoib_mark_paths_invalid(struct net_device *dev)
        spin_lock_irq(&priv->lock);
 
        list_for_each_entry_safe(path, tp, &priv->path_list, list) {
-               ipoib_dbg(priv, "mark path LID 0x%04x GID " IPOIB_GID_FMT " invalid\n",
+               ipoib_dbg(priv, "mark path LID 0x%04x GID %pI6 invalid\n",
                        be16_to_cpu(path->pathrec.dlid),
-                       IPOIB_GID_ARG(path->pathrec.dgid));
+                       path->pathrec.dgid.raw);
                path->valid =  0;
        }
 
@@ -413,11 +413,11 @@ static void path_rec_completion(int status,
        unsigned long flags;
 
        if (!status)
-               ipoib_dbg(priv, "PathRec LID 0x%04x for GID " IPOIB_GID_FMT "\n",
-                         be16_to_cpu(pathrec->dlid), IPOIB_GID_ARG(pathrec->dgid));
+               ipoib_dbg(priv, "PathRec LID 0x%04x for GID %pI6\n",
+                         be16_to_cpu(pathrec->dlid), pathrec->dgid.raw);
        else
-               ipoib_dbg(priv, "PathRec status %d for GID " IPOIB_GID_FMT "\n",
-                         status, IPOIB_GID_ARG(path->pathrec.dgid));
+               ipoib_dbg(priv, "PathRec status %d for GID %pI6\n",
+                         status, path->pathrec.dgid.raw);
 
        skb_queue_head_init(&skqueue);
 
@@ -527,8 +527,8 @@ static int path_rec_start(struct net_device *dev,
 {
        struct ipoib_dev_priv *priv = netdev_priv(dev);
 
-       ipoib_dbg(priv, "Start path record lookup for " IPOIB_GID_FMT "\n",
-                 IPOIB_GID_ARG(path->pathrec.dgid));
+       ipoib_dbg(priv, "Start path record lookup for %pI6\n",
+                 path->pathrec.dgid.raw);
 
        init_completion(&path->done);
 
@@ -764,12 +764,11 @@ static int ipoib_start_xmit(struct sk_buff *skb, struct net_device *dev)
 
                        if ((be16_to_cpup((__be16 *) skb->data) != ETH_P_ARP) &&
                            (be16_to_cpup((__be16 *) skb->data) != ETH_P_RARP)) {
-                               ipoib_warn(priv, "Unicast, no %s: type %04x, QPN %06x "
-                                          IPOIB_GID_FMT "\n",
+                               ipoib_warn(priv, "Unicast, no %s: type %04x, QPN %06x %pI6\n",
                                           skb->dst ? "neigh" : "dst",
                                           be16_to_cpup((__be16 *) skb->data),
                                           IPOIB_QPN(phdr->hwaddr),
-                                          IPOIB_GID_RAW_ARG(phdr->hwaddr + 4));
+                                          phdr->hwaddr + 4);
                                dev_kfree_skb_any(skb);
                                ++dev->stats.tx_dropped;
                                return NETDEV_TX_OK;
@@ -845,9 +844,9 @@ static void ipoib_neigh_cleanup(struct neighbour *n)
        else
                return;
        ipoib_dbg(priv,
-                 "neigh_cleanup for %06x " IPOIB_GID_FMT "\n",
+                 "neigh_cleanup for %06x %pI6\n",
                  IPOIB_QPN(n->ha),
-                 IPOIB_GID_RAW_ARG(n->ha + 4));
+                 n->ha + 4);
 
        spin_lock_irqsave(&priv->lock, flags);
 
index d9d1223..a2eb3b9 100644 (file)
@@ -71,9 +71,8 @@ static void ipoib_mcast_free(struct ipoib_mcast *mcast)
        struct ipoib_neigh *neigh, *tmp;
        int tx_dropped = 0;
 
-       ipoib_dbg_mcast(netdev_priv(dev),
-                       "deleting multicast group " IPOIB_GID_FMT "\n",
-                       IPOIB_GID_ARG(mcast->mcmember.mgid));
+       ipoib_dbg_mcast(netdev_priv(dev), "deleting multicast group %pI6\n",
+                       mcast->mcmember.mgid.raw);
 
        spin_lock_irq(&priv->lock);
 
@@ -205,9 +204,8 @@ static int ipoib_mcast_join_finish(struct ipoib_mcast *mcast,
 
        if (!test_bit(IPOIB_MCAST_FLAG_SENDONLY, &mcast->flags)) {
                if (test_and_set_bit(IPOIB_MCAST_FLAG_ATTACHED, &mcast->flags)) {
-                       ipoib_warn(priv, "multicast group " IPOIB_GID_FMT
-                                  " already attached\n",
-                                  IPOIB_GID_ARG(mcast->mcmember.mgid));
+                       ipoib_warn(priv, "multicast group %pI6 already attached\n",
+                                  mcast->mcmember.mgid.raw);
 
                        return 0;
                }
@@ -215,9 +213,8 @@ static int ipoib_mcast_join_finish(struct ipoib_mcast *mcast,
                ret = ipoib_mcast_attach(dev, be16_to_cpu(mcast->mcmember.mlid),
                                         &mcast->mcmember.mgid, set_qkey);
                if (ret < 0) {
-                       ipoib_warn(priv, "couldn't attach QP to multicast group "
-                                  IPOIB_GID_FMT "\n",
-                                  IPOIB_GID_ARG(mcast->mcmember.mgid));
+                       ipoib_warn(priv, "couldn't attach QP to multicast group %pI6\n",
+                                  mcast->mcmember.mgid.raw);
 
                        clear_bit(IPOIB_MCAST_FLAG_ATTACHED, &mcast->flags);
                        return ret;
@@ -248,9 +245,8 @@ static int ipoib_mcast_join_finish(struct ipoib_mcast *mcast,
                        mcast->ah = ah;
                        spin_unlock_irq(&priv->lock);
 
-                       ipoib_dbg_mcast(priv, "MGID " IPOIB_GID_FMT
-                                       " AV %p, LID 0x%04x, SL %d\n",
-                                       IPOIB_GID_ARG(mcast->mcmember.mgid),
+                       ipoib_dbg_mcast(priv, "MGID %pI6 AV %p, LID 0x%04x, SL %d\n",
+                                       mcast->mcmember.mgid.raw,
                                        mcast->ah->ah,
                                        be16_to_cpu(mcast->mcmember.mlid),
                                        mcast->mcmember.sl);
@@ -295,9 +291,8 @@ ipoib_mcast_sendonly_join_complete(int status,
 
        if (status) {
                if (mcast->logcount++ < 20)
-                       ipoib_dbg_mcast(netdev_priv(dev), "multicast join failed for "
-                                       IPOIB_GID_FMT ", status %d\n",
-                                       IPOIB_GID_ARG(mcast->mcmember.mgid), status);
+                       ipoib_dbg_mcast(netdev_priv(dev), "multicast join failed for %pI6, status %d\n",
+                                       mcast->mcmember.mgid.raw, status);
 
                /* Flush out any queued packets */
                netif_tx_lock_bh(dev);
@@ -356,9 +351,8 @@ static int ipoib_mcast_sendonly_join(struct ipoib_mcast *mcast)
                ipoib_warn(priv, "ib_sa_join_multicast failed (ret = %d)\n",
                           ret);
        } else {
-               ipoib_dbg_mcast(priv, "no multicast record for " IPOIB_GID_FMT
-                               ", starting join\n",
-                               IPOIB_GID_ARG(mcast->mcmember.mgid));
+               ipoib_dbg_mcast(priv, "no multicast record for %pI6, starting join\n",
+                               mcast->mcmember.mgid.raw);
        }
 
        return ret;
@@ -386,9 +380,8 @@ static int ipoib_mcast_join_complete(int status,
        struct net_device *dev = mcast->dev;
        struct ipoib_dev_priv *priv = netdev_priv(dev);
 
-       ipoib_dbg_mcast(priv, "join completion for " IPOIB_GID_FMT
-                       " (status %d)\n",
-                       IPOIB_GID_ARG(mcast->mcmember.mgid), status);
+       ipoib_dbg_mcast(priv, "join completion for %pI6 (status %d)\n",
+                       mcast->mcmember.mgid.raw, status);
 
        /* We trap for port events ourselves. */
        if (status == -ENETRESET)
@@ -417,15 +410,11 @@ static int ipoib_mcast_join_complete(int status,
 
        if (mcast->logcount++ < 20) {
                if (status == -ETIMEDOUT) {
-                       ipoib_dbg_mcast(priv, "multicast join failed for " IPOIB_GID_FMT
-                                       ", status %d\n",
-                                       IPOIB_GID_ARG(mcast->mcmember.mgid),
-                                       status);
+                       ipoib_dbg_mcast(priv, "multicast join failed for %pI6, status %d\n",
+                                       mcast->mcmember.mgid.raw, status);
                } else {
-                       ipoib_warn(priv, "multicast join failed for "
-                                  IPOIB_GID_FMT ", status %d\n",
-                                  IPOIB_GID_ARG(mcast->mcmember.mgid),
-                                  status);
+                       ipoib_warn(priv, "multicast join failed for %pI6, status %d\n",
+                                  mcast->mcmember.mgid.raw, status);
                }
        }
 
@@ -457,8 +446,7 @@ static void ipoib_mcast_join(struct net_device *dev, struct ipoib_mcast *mcast,
        ib_sa_comp_mask comp_mask;
        int ret = 0;
 
-       ipoib_dbg_mcast(priv, "joining MGID " IPOIB_GID_FMT "\n",
-                       IPOIB_GID_ARG(mcast->mcmember.mgid));
+       ipoib_dbg_mcast(priv, "joining MGID %pI6\n", mcast->mcmember.mgid.raw);
 
        rec.mgid     = mcast->mcmember.mgid;
        rec.port_gid = priv->local_gid;
@@ -643,8 +631,8 @@ static int ipoib_mcast_leave(struct net_device *dev, struct ipoib_mcast *mcast)
                ib_sa_free_multicast(mcast->mc);
 
        if (test_and_clear_bit(IPOIB_MCAST_FLAG_ATTACHED, &mcast->flags)) {
-               ipoib_dbg_mcast(priv, "leaving MGID " IPOIB_GID_FMT "\n",
-                               IPOIB_GID_ARG(mcast->mcmember.mgid));
+               ipoib_dbg_mcast(priv, "leaving MGID %pI6\n",
+                               mcast->mcmember.mgid.raw);
 
                /* Remove ourselves from the multicast group */
                ret = ib_detach_mcast(priv->qp, &mcast->mcmember.mgid,
@@ -675,8 +663,8 @@ void ipoib_mcast_send(struct net_device *dev, void *mgid, struct sk_buff *skb)
        mcast = __ipoib_mcast_find(dev, mgid);
        if (!mcast) {
                /* Let's create a new send only group now */
-               ipoib_dbg_mcast(priv, "setting up send only multicast group for "
-                               IPOIB_GID_FMT "\n", IPOIB_GID_RAW_ARG(mgid));
+               ipoib_dbg_mcast(priv, "setting up send only multicast group for %pI6\n",
+                               mgid);
 
                mcast = ipoib_mcast_alloc(dev, 0);
                if (!mcast) {
@@ -809,14 +797,14 @@ void ipoib_mcast_restart_task(struct work_struct *work)
                        /* ignore group which is directly joined by userspace */
                        if (test_bit(IPOIB_FLAG_UMCAST, &priv->flags) &&
                            !ib_sa_get_mcmember_rec(priv->ca, priv->port, &mgid, &rec)) {
-                               ipoib_dbg_mcast(priv, "ignoring multicast entry for mgid "
-                                               IPOIB_GID_FMT "\n", IPOIB_GID_ARG(mgid));
+                               ipoib_dbg_mcast(priv, "ignoring multicast entry for mgid %pI6\n",
+                                               mgid.raw);
                                continue;
                        }
 
                        /* Not found or send-only group, let's add a new entry */
-                       ipoib_dbg_mcast(priv, "adding multicast entry for mgid "
-                                       IPOIB_GID_FMT "\n", IPOIB_GID_ARG(mgid));
+                       ipoib_dbg_mcast(priv, "adding multicast entry for mgid %pI6\n",
+                                       mgid.raw);
 
                        nmcast = ipoib_mcast_alloc(dev, 0);
                        if (!nmcast) {
@@ -849,8 +837,8 @@ void ipoib_mcast_restart_task(struct work_struct *work)
        list_for_each_entry_safe(mcast, tmcast, &priv->multicast_list, list) {
                if (!test_bit(IPOIB_MCAST_FLAG_FOUND, &mcast->flags) &&
                    !test_bit(IPOIB_MCAST_FLAG_SENDONLY, &mcast->flags)) {
-                       ipoib_dbg_mcast(priv, "deleting multicast group " IPOIB_GID_FMT "\n",
-                                       IPOIB_GID_ARG(mcast->mcmember.mgid));
+                       ipoib_dbg_mcast(priv, "deleting multicast group %pI6\n",
+                                       mcast->mcmember.mgid.raw);
 
                        rb_erase(&mcast->rb_node, &priv->multicast_tree);
 
index 5b8b533..7c13db8 100644 (file)
@@ -1514,15 +1514,7 @@ static ssize_t show_dgid(struct device *dev, struct device_attribute *attr,
            target->state == SRP_TARGET_REMOVED)
                return -ENODEV;
 
-       return sprintf(buf, "%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x\n",
-                      be16_to_cpu(((__be16 *) target->path.dgid.raw)[0]),
-                      be16_to_cpu(((__be16 *) target->path.dgid.raw)[1]),
-                      be16_to_cpu(((__be16 *) target->path.dgid.raw)[2]),
-                      be16_to_cpu(((__be16 *) target->path.dgid.raw)[3]),
-                      be16_to_cpu(((__be16 *) target->path.dgid.raw)[4]),
-                      be16_to_cpu(((__be16 *) target->path.dgid.raw)[5]),
-                      be16_to_cpu(((__be16 *) target->path.dgid.raw)[6]),
-                      be16_to_cpu(((__be16 *) target->path.dgid.raw)[7]));
+       return sprintf(buf, "%pI6\n", target->path.dgid.raw);
 }
 
 static ssize_t show_orig_dgid(struct device *dev,
@@ -1534,15 +1526,7 @@ static ssize_t show_orig_dgid(struct device *dev,
            target->state == SRP_TARGET_REMOVED)
                return -ENODEV;
 
-       return sprintf(buf, "%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x\n",
-                      be16_to_cpu(target->orig_dgid[0]),
-                      be16_to_cpu(target->orig_dgid[1]),
-                      be16_to_cpu(target->orig_dgid[2]),
-                      be16_to_cpu(target->orig_dgid[3]),
-                      be16_to_cpu(target->orig_dgid[4]),
-                      be16_to_cpu(target->orig_dgid[5]),
-                      be16_to_cpu(target->orig_dgid[6]),
-                      be16_to_cpu(target->orig_dgid[7]));
+       return sprintf(buf, "%pI6\n", target->orig_dgid);
 }
 
 static ssize_t show_zero_req_lim(struct device *dev,
@@ -1883,19 +1867,12 @@ static ssize_t srp_create_target(struct device *dev,
 
        shost_printk(KERN_DEBUG, target->scsi_host, PFX
                     "new target: id_ext %016llx ioc_guid %016llx pkey %04x "
-                    "service_id %016llx dgid %04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x\n",
+                    "service_id %016llx dgid %pI6\n",
               (unsigned long long) be64_to_cpu(target->id_ext),
               (unsigned long long) be64_to_cpu(target->ioc_guid),
               be16_to_cpu(target->path.pkey),
               (unsigned long long) be64_to_cpu(target->service_id),
-              (int) be16_to_cpu(*(__be16 *) &target->path.dgid.raw[0]),
-              (int) be16_to_cpu(*(__be16 *) &target->path.dgid.raw[2]),
-              (int) be16_to_cpu(*(__be16 *) &target->path.dgid.raw[4]),
-              (int) be16_to_cpu(*(__be16 *) &target->path.dgid.raw[6]),
-              (int) be16_to_cpu(*(__be16 *) &target->path.dgid.raw[8]),
-              (int) be16_to_cpu(*(__be16 *) &target->path.dgid.raw[10]),
-              (int) be16_to_cpu(*(__be16 *) &target->path.dgid.raw[12]),
-              (int) be16_to_cpu(*(__be16 *) &target->path.dgid.raw[14]));
+              target->path.dgid.raw);
 
        ret = srp_create_target_ib(target);
        if (ret)
index bb904a0..60c82d7 100644 (file)
@@ -1654,9 +1654,10 @@ isdn_net_ciscohdlck_slarp_in(isdn_net_local *lp, struct sk_buff *skb)
        unsigned char *p;
        int period;
        u32 code;
-       u32 my_seq, addr;
-       u32 your_seq, mask;
-       u32 local;
+       u32 my_seq;
+       u32 your_seq;
+       __be32 local;
+       __be32 *addr, *mask;
        u16 unused;
 
        if (skb->len < 14)
@@ -1671,27 +1672,20 @@ isdn_net_ciscohdlck_slarp_in(isdn_net_local *lp, struct sk_buff *skb)
                isdn_net_ciscohdlck_slarp_send_reply(lp);
                break;
        case CISCO_SLARP_REPLY:
-               addr = ntohl(*(u32 *)p);
-               mask = ntohl(*(u32 *)(p+4));
-               if (mask != 0xfffffffc)
+               addr = (__be32 *)p;
+               mask = (__be32 *)(p + 4);
+               if (*mask != cpu_to_be32(0xfffffffc))
                        goto slarp_reply_out;
-               if ((addr & 3) == 0 || (addr & 3) == 3)
+               if ((*addr & cpu_to_be32(3)) == cpu_to_be32(0) ||
+                   (*addr & cpu_to_be32(3)) == cpu_to_be32(3))
                        goto slarp_reply_out;
-               local = addr ^ 3;
-               printk(KERN_INFO "%s: got slarp reply: "
-                       "remote ip: %d.%d.%d.%d, "
-                       "local ip: %d.%d.%d.%d "
-                       "mask: %d.%d.%d.%d\n",
-                      lp->netdev->dev->name,
-                      HIPQUAD(addr),
-                      HIPQUAD(local),
-                      HIPQUAD(mask));
+               local = *addr ^ cpu_to_be32(3);
+               printk(KERN_INFO "%s: got slarp reply: remote ip: %pI4, local ip: %pI4 mask: %pI4\n",
+                      lp->netdev->dev->name, addr, &local, mask);
                break;
   slarp_reply_out:
-                printk(KERN_INFO "%s: got invalid slarp "
-                                "reply (%d.%d.%d.%d/%d.%d.%d.%d) "
-                                "- ignored\n", lp->netdev->dev->name,
-                                HIPQUAD(addr), HIPQUAD(mask));
+               printk(KERN_INFO "%s: got invalid slarp reply (%pI4/%pI4) - ignored\n",
+                      lp->netdev->dev->name, addr, mask);
                break;
        case CISCO_SLARP_KEEPALIVE:
                period = (int)((jiffies - lp->cisco_last_slarp_in
index 5f79c8d..676413a 100644 (file)
@@ -270,7 +270,7 @@ int flexcop_device_initialize(struct flexcop_device *fc)
        /* do the MAC address reading after initializing the dvb_adapter */
        if (fc->get_mac_addr(fc, 0) == 0) {
                u8 *b = fc->dvb_adapter.proposed_mac;
-               info("MAC address = %02x:%02x:%02x:%02x:%02x:%02x", b[0],b[1],b[2],b[3],b[4],b[5]);
+               info("MAC address = %pM", b);
                flexcop_set_mac_filter(fc,b);
                flexcop_mac_filter_ctrl(fc,1);
        } else
index aa3db57..29e8f15 100644 (file)
@@ -917,9 +917,7 @@ static int dst_get_mac(struct dst_state *state)
        }
        memset(&state->mac_address, '\0', 8);
        memcpy(&state->mac_address, &state->rxbuffer, 6);
-       dprintk(verbose, DST_ERROR, 1, "MAC Address=[%02x:%02x:%02x:%02x:%02x:%02x]",
-               state->mac_address[0], state->mac_address[1], state->mac_address[2],
-               state->mac_address[4], state->mac_address[5], state->mac_address[6]);
+       dprintk(verbose, DST_ERROR, 1, "MAC Address=[%pM]", state->mac_address);
 
        return 0;
 }
index 14e627e..d15984e 100644 (file)
@@ -697,8 +697,7 @@ static void __devinit dm1105dvb_read_mac(struct dm1105dvb *dm1105dvb, u8 *mac)
        };
 
        dm1105_i2c_xfer(&dm1105dvb->i2c_adap, msg , 2);
-       dev_info(&dm1105dvb->pdev->dev, "MAC %02x:%02x:%02x:%02x:%02x:%02x\n",
-                       mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
+       dev_info(&dm1105dvb->pdev->dev, "MAC %pM\n", mac);
 }
 
 static int __devinit dm1105_probe(struct pci_dev *pdev,
index ce8cd0c..8a7d87b 100644 (file)
@@ -91,10 +91,7 @@ int dvb_usb_adapter_dvb_init(struct dvb_usb_adapter *adap, short *adapter_nums)
 
        if (adap->dev->props.read_mac_address) {
                if (adap->dev->props.read_mac_address(adap->dev,adap->dvb_adap.proposed_mac) == 0)
-                       info("MAC address: %02x:%02x:%02x:%02x:%02x:%02x",adap->dvb_adap.proposed_mac[0],
-                                       adap->dvb_adap.proposed_mac[1], adap->dvb_adap.proposed_mac[2],
-                                       adap->dvb_adap.proposed_mac[3], adap->dvb_adap.proposed_mac[4],
-                                       adap->dvb_adap.proposed_mac[5]);
+                       info("MAC address: %pM",adap->dvb_adap.proposed_mac);
                else
                        err("MAC address reading failed.");
        }
index a9653c6..d101b30 100644 (file)
@@ -560,8 +560,7 @@ static void __devinit pluto_read_mac(struct pluto *pluto, u8 *mac)
        mac[4] = (val >> 8) & 0xff;
        mac[5] = (val >> 0) & 0xff;
 
-       dev_info(&pluto->pdev->dev, "MAC %02x:%02x:%02x:%02x:%02x:%02x\n",
-                       mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
+       dev_info(&pluto->pdev->dev, "MAC %pM\n", mac);
 }
 
 static int __devinit pluto_read_serial(struct pluto *pluto)
index a1abf95..582a921 100644 (file)
@@ -1462,11 +1462,9 @@ mptlan_probe(struct pci_dev *pdev, const struct pci_device_id *id)
                printk(KERN_INFO MYNAM ": %s: Fusion MPT LAN device "
                       "registered as '%s'\n", ioc->name, dev->name);
                printk(KERN_INFO MYNAM ": %s/%s: "
-                      "LanAddr = %02X:%02X:%02X:%02X:%02X:%02X\n",
+                      "LanAddr = %pM\n",
                       IOC_AND_NETDEV_NAMES_s_s(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]);
+                      dev->dev_addr);
        
                ioc->netdev = dev;
 
@@ -1551,9 +1549,8 @@ mpt_lan_type_trans(struct sk_buff *skb, struct net_device *dev)
 
                printk (KERN_WARNING MYNAM ": %s: WARNING - Broadcast swap F/W bug detected!\n",
                                NETDEV_PTR_TO_IOC_NAME_s(dev));
-               printk (KERN_WARNING MYNAM ": Please update sender @ MAC_addr = %02x:%02x:%02x:%02x:%02x:%02x\n",
-                               fch->saddr[0], fch->saddr[1], fch->saddr[2],
-                               fch->saddr[3], fch->saddr[4], fch->saddr[5]);
+               printk (KERN_WARNING MYNAM ": Please update sender @ MAC_addr = %pM\n",
+                               fch->saddr);
        }
 
        if (*fch->daddr & 1) {
@@ -1628,10 +1625,9 @@ mpt_lan_type_trans(struct sk_buff *skb, struct net_device *dev)
                                nh->NAA = source_naa; /* Set the S_NAA value. */
                                for (i = 0; i < FC_ALEN; i++)
                                        nh->ieee[i] = fch->saddr[i];
-                               dlprintk ((KERN_INFO "Got ARP from %02x:%02x:%02x:%02x:"
-                                         "%02x:%02x with non-compliant S_NAA value.\n",
-                                         fch->saddr[0], fch->saddr[1], fch->saddr[2],
-                                         fch->saddr[3], fch->saddr[4],fch->saddr[5]));
+                               dlprintk ((KERN_INFO "Got ARP from %pM with"
+                                         " non-compliant S_NAA value.\n",
+                                         fch->saddr));
                        } else {
                                printk (KERN_ERR "mptlan/type_trans: Unable to"
                                        " kmalloc a NAA_Hosed struct.\n");
index 900b0ff..95bd95f 100644 (file)
@@ -177,7 +177,6 @@ el2_probe1(struct net_device *dev, int ioaddr)
     int i, iobase_reg, membase_reg, saved_406, wordlength, retval;
     static unsigned version_printed;
     unsigned long vendor_id;
-    DECLARE_MAC_BUF(mac);
 
     if (!request_region(ioaddr, EL2_IO_EXTENT, DRV_NAME))
        return -EBUSY;
@@ -228,7 +227,7 @@ el2_probe1(struct net_device *dev, int ioaddr)
     /* Retrieve and print the ethernet address. */
     for (i = 0; i < 6; i++)
        dev->dev_addr[i] = inb(ioaddr + i);
-    printk("%s", print_mac(mac, dev->dev_addr));
+    printk("%pM", dev->dev_addr);
 
     /* Map the 8390 back into the window. */
     outb(ECNTRL_THIN, ioaddr + 0x406);
index a424869..6ecb418 100644 (file)
@@ -1385,7 +1385,6 @@ static int __init elplus_setup(struct net_device *dev)
        unsigned long timeout;
        unsigned long cookie = 0;
        int err = -ENODEV;
-       DECLARE_MAC_BUF(mac);
 
        /*
         *  setup adapter structure
@@ -1522,9 +1521,9 @@ static int __init elplus_setup(struct net_device *dev)
         * print remainder of startup message
         */
        printk(KERN_INFO "%s: 3c505 at %#lx, irq %d, dma %d, "
-              "addr %s, ",
+              "addr %pM, ",
               dev->name, dev->base_addr, dev->irq, dev->dma,
-              print_mac(mac, dev->dev_addr));
+              dev->dev_addr);
 
        /*
         * read more information from the adapter
index 030c147..66fd505 100644 (file)
@@ -357,7 +357,6 @@ static int __init el16_probe1(struct net_device *dev, int ioaddr)
        static unsigned char init_ID_done, version_printed;
        int i, irq, irqval, retval;
        struct net_local *lp;
-       DECLARE_MAC_BUF(mac);
 
        if (init_ID_done == 0) {
                ushort lrs_state = 0xff;
@@ -405,7 +404,7 @@ static int __init el16_probe1(struct net_device *dev, int ioaddr)
        outb(0x01, ioaddr + MISC_CTRL);
        for (i = 0; i < 6; i++)
                dev->dev_addr[i] = inb(ioaddr + i);
-       printk(" %s", print_mac(mac, dev->dev_addr));
+       printk(" %pM", dev->dev_addr);
 
        if (mem_start)
                net_debug = mem_start & 7;
index 3a7bc52..cc970c4 100644 (file)
@@ -541,7 +541,6 @@ static int __init el3_common_init(struct net_device *dev)
 {
        struct el3_private *lp = netdev_priv(dev);
        int err;
-       DECLARE_MAC_BUF(mac);
        const char *if_names[] = {"10baseT", "AUI", "undefined", "BNC"};
 
        spin_lock_init(&lp->lock);
@@ -575,9 +574,9 @@ static int __init el3_common_init(struct net_device *dev)
        }
 
        printk(KERN_INFO "%s: 3c5x9 found at %#3.3lx, %s port, "
-              "address %s, IRQ %d.\n",
+              "address %pM, IRQ %d.\n",
               dev->name, dev->base_addr, if_names[(dev->if_port & 0x03)],
-              print_mac(mac, dev->dev_addr), dev->irq);
+              dev->dev_addr, dev->irq);
 
        if (el3_debug > 0)
                printk(KERN_INFO "%s", version);
index a0f8b6e..a2c2468 100644 (file)
@@ -570,7 +570,6 @@ static int corkscrew_setup(struct net_device *dev, int ioaddr,
        unsigned int eeprom[0x40], checksum = 0;        /* EEPROM contents */
        int i;
        int irq;
-       DECLARE_MAC_BUF(mac);
 
 #ifdef __ISAPNP__
        if (idev) {
@@ -636,7 +635,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);
-       printk(" %s", print_mac(mac, dev->dev_addr));
+       printk(" %pM", dev->dev_addr);
        if (eeprom[16] == 0x11c7) {     /* Corkscrew */
                if (request_dma(dev->dma, "3c515")) {
                        printk(", DMA %d allocation failed", dev->dma);
index e2ce41d..23a3123 100644 (file)
@@ -383,7 +383,6 @@ static int elmc_getinfo(char *buf, int slot, void *d)
 {
        int len = 0;
        struct net_device *dev = d;
-       DECLARE_MAC_BUF(mac);
 
        if (dev == NULL)
                return len;
@@ -398,8 +397,8 @@ static int elmc_getinfo(char *buf, int slot, void *d)
        len += sprintf(buf + len, "Transceiver: %s\n", dev->if_port ?
                       "External" : "Internal");
        len += sprintf(buf + len, "Device: %s\n", dev->name);
-       len += sprintf(buf + len, "Hardware Address: %s\n",
-                      print_mac(mac, dev->dev_addr));
+       len += sprintf(buf + len, "Hardware Address: %pM\n",
+                      dev->dev_addr);
 
        return len;
 }                              /* elmc_getinfo() */
@@ -417,7 +416,6 @@ static int __init do_elmc_probe(struct net_device *dev)
        unsigned int size = 0;
        int retval;
        struct priv *pr = dev->priv;
-       DECLARE_MAC_BUF(mac);
 
        if (MCA_bus == 0) {
                return -ENODEV;
@@ -543,8 +541,8 @@ static int __init do_elmc_probe(struct net_device *dev)
        for (i = 0; i < 6; i++)
                dev->dev_addr[i] = inb(dev->base_addr + i);
 
-       printk(KERN_INFO "%s: hardware address %s\n",
-              dev->name, print_mac(mac, dev->dev_addr));
+       printk(KERN_INFO "%s: hardware address %pM\n",
+              dev->name, dev->dev_addr);
 
        dev->open = &elmc_open;
        dev->stop = &elmc_close;
index abc84f7..0f4cabb 100644 (file)
@@ -335,7 +335,6 @@ static int __init mc32_probe1(struct net_device *dev, int slot)
                "82586 initialisation failure",
                "Adapter list configuration error"
        };
-       DECLARE_MAC_BUF(mac);
 
        /* Time to play MCA games */
 
@@ -405,7 +404,7 @@ static int __init mc32_probe1(struct net_device *dev, int slot)
                dev->dev_addr[i] = mca_read_pos(slot,3);
        }
 
-       printk("%s: Address %s", dev->name, print_mac(mac, dev->dev_addr));
+       printk("%s: Address %pM", dev->name, dev->dev_addr);
 
        mca_write_pos(slot, 6, 0);
        mca_write_pos(slot, 7, 0);
index 9ba295d..38d58fd 100644 (file)
@@ -1013,7 +1013,6 @@ static int __devinit vortex_probe1(struct device *gendev,
        const char *print_name = "3c59x";
        struct pci_dev *pdev = NULL;
        struct eisa_device *edev = NULL;
-       DECLARE_MAC_BUF(mac);
 
        if (!printed_version) {
                printk (version);
@@ -1206,7 +1205,7 @@ static int __devinit vortex_probe1(struct device *gendev,
                ((__be16 *)dev->dev_addr)[i] = htons(eeprom[i + 10]);
        memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);
        if (print_info)
-               printk(" %s", print_mac(mac, dev->dev_addr));
+               printk(" %pM", 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)) {
index 9ba1f0b..9e90d41 100644 (file)
@@ -1826,7 +1826,6 @@ static int cp_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
        void __iomem *regs;
        resource_size_t pciaddr;
        unsigned int addr_len, i, pci_using_dac;
-       DECLARE_MAC_BUF(mac);
 
 #ifndef MODULE
        static int version_printed;
@@ -1967,10 +1966,10 @@ static int cp_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
                goto err_out_iomap;
 
        printk (KERN_INFO "%s: RTL-8139C+ at 0x%lx, "
-               "%s, IRQ %d\n",
+               "%pM, IRQ %d\n",
                dev->name,
                dev->base_addr,
-               print_mac(mac, dev->dev_addr),
+               dev->dev_addr,
                dev->irq);
 
        pci_set_drvdata(pdev, dev);
index 63f906b..96841e4 100644 (file)
@@ -925,7 +925,6 @@ static int __devinit rtl8139_init_one (struct pci_dev *pdev,
        int i, addr_len, option;
        void __iomem *ioaddr;
        static int board_idx = -1;
-       DECLARE_MAC_BUF(mac);
 
        assert (pdev != NULL);
        assert (ent != NULL);
@@ -1024,11 +1023,11 @@ static int __devinit rtl8139_init_one (struct pci_dev *pdev,
        pci_set_drvdata (pdev, dev);
 
        printk (KERN_INFO "%s: %s at 0x%lx, "
-               "%s, IRQ %d\n",
+               "%pM, IRQ %d\n",
                dev->name,
                board_info[ent->driver_data].name,
                dev->base_addr,
-               print_mac(mac, dev->dev_addr),
+               dev->dev_addr,
                dev->irq);
 
        printk (KERN_DEBUG "%s:  Identified 8139 chip type '%s'\n",
index da292e6..1d97bb5 100644 (file)
@@ -1116,12 +1116,8 @@ static int i596_start_xmit(struct sk_buff *skb, struct net_device *dev)
 
 static void print_eth(unsigned char *add, char *str)
 {
-       DECLARE_MAC_BUF(mac);
-       DECLARE_MAC_BUF(mac2);
-
-       printk(KERN_DEBUG "i596 0x%p, %s --> %s %02X%02X, %s\n",
-              add, print_mac(mac, add + 6), print_mac(mac2, add),
-              add[12], add[13], str);
+       printk(KERN_DEBUG "i596 0x%p, %pM --> %pM %02X%02X, %s\n",
+              add, add + 6, add, add[12], add[13], str);
 }
 
 static int io = 0x300;
@@ -1544,7 +1540,6 @@ static void set_multicast_list(struct net_device *dev)
                struct dev_mc_list *dmi;
                unsigned char *cp;
                struct mc_cmd *cmd;
-               DECLARE_MAC_BUF(mac);
 
                if (wait_cfg(dev, &lp->mc_cmd.cmd, 1000, "multicast list change request timed out"))
                        return;
@@ -1555,8 +1550,8 @@ static void set_multicast_list(struct net_device *dev)
                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 %s\n",
-                                               dev->name, print_mac(mac, cp)));
+                               DEB(DEB_MULTI,printk(KERN_INFO "%s: Adding address %pM\n",
+                                               dev->name, cp));
                }
                i596_add_cmd(dev, &cmd->cmd);
        }
index f749b40..0f3e6b2 100644 (file)
@@ -1414,19 +1414,6 @@ config TC35815
        depends on NET_PCI && PCI && MIPS
        select PHYLIB
 
-config EEPRO100
-       tristate "EtherExpressPro/100 support (eepro100, original Becker driver)"
-       depends on NET_PCI && PCI
-       select MII
-       help
-         If you have an Intel EtherExpress PRO/100 PCI network (Ethernet)
-         card, say Y and read the Ethernet-HOWTO, available from
-         <http://www.tldp.org/docs.html#howto>.
-
-         To compile this driver as a module, choose M here. The module
-         will be called eepro100.
-
-
 config E100
        tristate "Intel(R) PRO/100+ support"
        depends on NET_PCI && PCI
index f19acf8..657c47b 100644 (file)
@@ -53,7 +53,6 @@ obj-$(CONFIG_VORTEX) += 3c59x.o
 obj-$(CONFIG_TYPHOON) += typhoon.o
 obj-$(CONFIG_NE2K_PCI) += ne2k-pci.o 8390.o
 obj-$(CONFIG_PCNET32) += pcnet32.o
-obj-$(CONFIG_EEPRO100) += eepro100.o
 obj-$(CONFIG_E100) += e100.o
 obj-$(CONFIG_TLAN) += tlan.o
 obj-$(CONFIG_EPIC100) += epic100.o
index 9c08374..48965de 100644 (file)
@@ -710,7 +710,6 @@ static int __devinit a2065_init_one(struct zorro_dev *z,
        unsigned long board, base_addr, mem_start;
        struct resource *r1, *r2;
        int err;
-       DECLARE_MAC_BUF(mac);
 
        board = z->resource.start;
        base_addr = board+A2065_LANCE;
@@ -787,8 +786,7 @@ static int __devinit a2065_init_one(struct zorro_dev *z,
        zorro_set_drvdata(z, dev);
 
        printk(KERN_INFO "%s: A2065 at 0x%08lx, Ethernet Address "
-              "%s\n", dev->name, board,
-              print_mac(mac, dev->dev_addr));
+              "%pM\n", dev->name, board, dev->dev_addr);
 
        return 0;
 }
index b144863..071a851 100644 (file)
@@ -146,7 +146,6 @@ out:
 static int __init ac_probe1(int ioaddr, struct net_device *dev)
 {
        int i, retval;
-       DECLARE_MAC_BUF(mac);
 
        if (!request_region(ioaddr, AC_IO_EXTENT, DRV_NAME))
                return -EBUSY;
@@ -171,8 +170,8 @@ static int __init ac_probe1(int ioaddr, struct net_device *dev)
        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 %s",
-              ioaddr/0x1000, print_mac(mac, dev->dev_addr));
+       printk(KERN_DEBUG "AC3200 in EISA slot %d, node %pM",
+              ioaddr/0x1000, 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
index 66de80b..6eefd93 100644 (file)
@@ -892,7 +892,6 @@ static int __devinit ace_init(struct net_device *dev)
        int board_idx, ecode = 0;
        short i;
        unsigned char cache_size;
-       DECLARE_MAC_BUF(mac);
 
        ap = netdev_priv(dev);
        regs = ap->regs;
@@ -1019,7 +1018,7 @@ static int __devinit ace_init(struct net_device *dev)
        dev->dev_addr[4] = (mac2 >> 8) & 0xff;
        dev->dev_addr[5] = mac2 & 0xff;
 
-       printk("MAC: %s\n", print_mac(mac, dev->dev_addr));
+       printk("MAC: %pM\n", dev->dev_addr);
 
        /*
         * Looks like this is necessary to deal with on all architectures,
index 07a6697..4a2ef83 100644 (file)
@@ -1821,7 +1821,6 @@ static int __devinit amd8111e_probe_one(struct pci_dev *pdev,
        unsigned long reg_addr,reg_len;
        struct amd8111e_priv* lp;
        struct net_device* dev;
-       DECLARE_MAC_BUF(mac);
 
        err = pci_enable_device(pdev);
        if(err){
@@ -1963,8 +1962,8 @@ static int __devinit amd8111e_probe_one(struct pci_dev *pdev,
        chip_version = (readl(lp->mmio + CHIPID) & 0xf0000000)>>28;
        printk(KERN_INFO "%s: AMD-8111e Driver Version: %s\n",
               dev->name,MODULE_VERS);
-       printk(KERN_INFO "%s: [ Rev %x ] PCI 10/100BaseT Ethernet %s\n",
-              dev->name, chip_version, print_mac(mac, dev->dev_addr));
+       printk(KERN_INFO "%s: [ Rev %x ] PCI 10/100BaseT Ethernet %pM\n",
+              dev->name, chip_version, dev->dev_addr);
        if (lp->ext_phy_id)
                printk(KERN_INFO "%s: Found MII PHY ID 0x%08x at address 0x%02x\n",
                       dev->name, lp->ext_phy_id, lp->ext_phy_addr);
index 867f6ff..7426f69 100644 (file)
@@ -207,7 +207,6 @@ static int __init apne_probe1(struct net_device *dev, int ioaddr)
     int neX000, ctron;
 #endif
     static unsigned version_printed;
-    DECLARE_MAC_BUF(mac);
 
     if (ei_debug  &&  version_printed++ == 0)
        printk(version);
@@ -323,7 +322,7 @@ static int __init apne_probe1(struct net_device *dev, int ioaddr)
     for(i = 0; i < ETHER_ADDR_LEN; i++)
        dev->dev_addr[i] = SA_prom[i];
 
-    printk(" %s\n", print_mac(mac, dev->dev_addr));
+    printk(" %pM\n", dev->dev_addr);
 
     printk("%s: %s found.\n", dev->name, name);
 
index 29e53eb..2903191 100644 (file)
@@ -165,7 +165,6 @@ static int __devinit ariadne_init_one(struct zorro_dev *z,
     struct net_device *dev;
     struct ariadne_private *priv;
     int err;
-    DECLARE_MAC_BUF(mac);
 
     r1 = request_mem_region(base_addr, sizeof(struct Am79C960), "Am79C960");
     if (!r1)
@@ -215,9 +214,8 @@ static int __devinit ariadne_init_one(struct zorro_dev *z,
     }
     zorro_set_drvdata(z, dev);
 
-    printk(KERN_INFO "%s: Ariadne at 0x%08lx, Ethernet Address "
-          "%s\n", dev->name, board,
-          print_mac(mac, dev->dev_addr));
+    printk(KERN_INFO "%s: Ariadne at 0x%08lx, Ethernet Address %pM\n",
+           dev->name, board, dev->dev_addr);
 
     return 0;
 }
@@ -613,14 +611,10 @@ static int ariadne_start_xmit(struct sk_buff *skb, struct net_device *dev)
 
 #if 0
 {
-    DECLARE_MAC_BUF(mac);
-    DECLARE_MAC_BUF(mac2);
-
-    printk(KERN_DEBUG "TX pkt type 0x%04x from %s to %s "
+    printk(KERN_DEBUG "TX pkt type 0x%04x from %pM to %pM "
           " data 0x%08x len %d\n",
           ((u_short *)skb->data)[6],
-          print_mac(mac, ((const u8 *)skb->data)+6),
-          print_mac(mac, (const u8 *)skb->data),
+          skb->data + 6, skb->data,
           (int)skb->data, (int)skb->len);
 }
 #endif
@@ -743,18 +737,16 @@ static int ariadne_rx(struct net_device *dev)
            skb->protocol=eth_type_trans(skb,dev);
 #if 0
 {
-           DECLARE_MAC_BUF(mac);
-
            printk(KERN_DEBUG "RX pkt type 0x%04x from ",
                   ((u_short *)skb->data)[6]);
            {
                u_char *ptr = &((u_char *)skb->data)[6];
-               printk("%s", print_mac(mac, ptr));
+               printk("%pM", ptr);
            }
            printk(" to ");
            {
                u_char *ptr = (u_char *)skb->data;
-               printk("%s", print_mac(mac, ptr));
+               printk("%pM", ptr);
            }
            printk(" data 0x%08x len %d\n", (int)skb->data, (int)skb->len);
 }
index aa4a524..6459155 100644 (file)
@@ -745,10 +745,8 @@ static int __init am79c961_probe(struct platform_device *pdev)
 
        ret = register_netdev(dev);
        if (ret == 0) {
-               DECLARE_MAC_BUF(mac);
-
-               printk(KERN_INFO "%s: ether address %s\n",
-                      dev->name, print_mac(mac, dev->dev_addr));
+               printk(KERN_INFO "%s: ether address %pM\n",
+                      dev->name, dev->dev_addr);
                return 0;
        }
 
index 6f431a8..e21dc20 100644 (file)
@@ -485,7 +485,6 @@ static void update_mac_address(struct net_device *dev)
 static int set_mac_address(struct net_device *dev, void* addr)
 {
        struct sockaddr *address = addr;
-       DECLARE_MAC_BUF(mac);
 
        if (!is_valid_ether_addr(address->sa_data))
                return -EADDRNOTAVAIL;
@@ -493,8 +492,8 @@ static int set_mac_address(struct net_device *dev, void* addr)
        memcpy(dev->dev_addr, address->sa_data, dev->addr_len);
        update_mac_address(dev);
 
-       printk("%s: Setting MAC address to %s\n", dev->name,
-              print_mac(mac, dev->dev_addr));
+       printk("%s: Setting MAC address to %pM\n", dev->name,
+              dev->dev_addr);
 
        return 0;
 }
@@ -978,7 +977,6 @@ static int __init at91ether_setup(unsigned long phy_type, unsigned short phy_add
        struct at91_private *lp;
        unsigned int val;
        int res;
-       DECLARE_MAC_BUF(mac);
 
        dev = alloc_etherdev(sizeof(struct at91_private));
        if (!dev)
@@ -1084,11 +1082,11 @@ static int __init at91ether_setup(unsigned long phy_type, unsigned short phy_add
                gpio_request(lp->board_data.phy_irq_pin, "ethernet_phy");
 
        /* Display ethernet banner */
-       printk(KERN_INFO "%s: AT91 ethernet at 0x%08x int=%d %s%s (%s)\n",
+       printk(KERN_INFO "%s: AT91 ethernet at 0x%08x int=%d %s%s (%pM)\n",
               dev->name, (uint) dev->base_addr, dev->irq,
               at91_emac_read(AT91_EMAC_CFG) & AT91_EMAC_SPD ? "100-" : "10-",
               at91_emac_read(AT91_EMAC_CFG) & AT91_EMAC_FD ? "FullDuplex" : "HalfDuplex",
-              print_mac(mac, dev->dev_addr));
+              dev->dev_addr);
        if ((phy_type == MII_DM9161_ID) || (lp->phy_type == MII_DM9161A_ID))
                printk(KERN_INFO "%s: Davicom 9161 PHY %s\n", dev->name, (lp->phy_media == PORT_FIBRE) ? "(Fiber)" : "(Copper)");
        else if (phy_type == MII_LXT971A_ID)
index 3bb9e29..e380de4 100644 (file)
@@ -996,7 +996,6 @@ ether1_probe(struct expansion_card *ec, const struct ecard_id *id)
 {
        struct net_device *dev;
        int i, ret = 0;
-       DECLARE_MAC_BUF(mac);
 
        ether1_banner();
 
@@ -1044,8 +1043,8 @@ ether1_probe(struct expansion_card *ec, const struct ecard_id *id)
        if (ret)
                goto free;
 
-       printk(KERN_INFO "%s: ether1 in slot %d, %s\n",
-               dev->name, ec->slot_no, print_mac(mac, dev->dev_addr));
+       printk(KERN_INFO "%s: ether1 in slot %d, %pM\n",
+               dev->name, ec->slot_no, dev->dev_addr);
     
        ecard_set_drvdata(ec, dev);
        return 0;
index 67e96ae..21a7bef 100644 (file)
@@ -776,7 +776,6 @@ ether3_probe(struct expansion_card *ec, const struct ecard_id *id)
        const struct ether3_data *data = id->data;
        struct net_device *dev;
        int bus_type, ret;
-       DECLARE_MAC_BUF(mac);
 
        ether3_banner();
 
@@ -859,8 +858,8 @@ ether3_probe(struct expansion_card *ec, const struct ecard_id *id)
        if (ret)
                goto free;
 
-       printk("%s: %s in slot %d, %s\n",
-              dev->name, data->name, ec->slot_no, print_mac(mac, dev->dev_addr));
+       printk("%s: %s in slot %d, %pM\n",
+              dev->name, data->name, ec->slot_no, dev->dev_addr);
 
        ecard_set_drvdata(ec, dev);
        return 0;
index 5c5f1e4..9eb9d1b 100644 (file)
@@ -648,7 +648,6 @@ etherh_probe(struct expansion_card *ec, const struct ecard_id *id)
        struct net_device *dev;
        struct etherh_priv *eh;
        int ret;
-       DECLARE_MAC_BUF(mac);
 
        etherh_banner();
 
@@ -746,8 +745,8 @@ etherh_probe(struct expansion_card *ec, const struct ecard_id *id)
        if (ret)
                goto free;
 
-       printk(KERN_INFO "%s: %s in slot %d, %s\n",
-               dev->name, data->name, ec->slot_no, print_mac(mac, dev->dev_addr));
+       printk(KERN_INFO "%s: %s in slot %d, %pM\n",
+               dev->name, data->name, ec->slot_no, dev->dev_addr);
 
        ecard_set_drvdata(ec, dev);
 
index 7e874d4..18f7245 100644 (file)
@@ -265,7 +265,6 @@ static int __init at1700_probe1(struct net_device *dev, int ioaddr)
        unsigned int i, irq, is_fmv18x = 0, is_at1700 = 0;
        int slot, ret = -ENODEV;
        struct net_local *lp = netdev_priv(dev);
-       DECLARE_MAC_BUF(mac);
 
        if (!request_region(ioaddr, AT1700_IO_EXTENT, DRV_NAME))
                return -EBUSY;
@@ -397,7 +396,7 @@ found:
                        dev->dev_addr[i] = val;
                }
        }
-       printk("%s", print_mac(mac, dev->dev_addr));
+       printk("%pM", dev->dev_addr);
 
        /* The EEPROM word 12 bit 0x0400 means use regular 100 ohm 10baseT signals,
           rather than 150 ohm shielded twisted pair compensation.
index 0860cc2..5a94c49 100644 (file)
@@ -466,7 +466,6 @@ static unsigned long __init lance_probe1( struct net_device *dev,
        int                                     i;
        static int                              did_version;
        unsigned short                  save1, save2;
-       DECLARE_MAC_BUF(mac);
 
        PROBE_PRINT(( "Probing for Lance card at mem %#lx io %#lx\n",
                                  (long)memaddr, (long)ioaddr ));
@@ -595,7 +594,7 @@ static unsigned long __init lance_probe1( struct net_device *dev,
                i = IO->mem;
                break;
        }
-       printk("%s\n", print_mac(mac, dev->dev_addr));
+       printk("%pM\n", dev->dev_addr);
        if (lp->cardtype == OLD_RIEBL) {
                printk( "%s: Warning: This is a default ethernet address!\n",
                                dev->name );
@@ -778,8 +777,6 @@ static int lance_start_xmit( struct sk_buff *skb, struct net_device *dev )
        int entry, len;
        struct lance_tx_head *head;
        unsigned long flags;
-       DECLARE_MAC_BUF(mac);
-       DECLARE_MAC_BUF(mac2);
 
        DPRINTK( 2, ( "%s: lance_start_xmit() called, csr0 %4.4x.\n",
                                  dev->name, DREG ));
@@ -802,12 +799,10 @@ static int lance_start_xmit( struct sk_buff *skb, struct net_device *dev )
 
        /* Fill in a Tx ring entry */
        if (lance_debug >= 3) {
-               printk( "%s: TX pkt type 0x%04x from "
-                               "%s to %s"
+               printk( "%s: TX pkt type 0x%04x from %pM to %pM"
                                " data at 0x%08x len %d\n",
                                dev->name, ((u_short *)skb->data)[6],
-                               print_mac(mac, &skb->data[6]),
-                               print_mac(mac2, skb->data),
+                               &skb->data[6], skb->data,
                                (int)skb->data, (int)skb->len );
        }
 
@@ -1019,14 +1014,12 @@ static int lance_rx( struct net_device *dev )
 
                                if (lance_debug >= 3) {
                                        u_char *data = PKTBUF_ADDR(head);
-                                       DECLARE_MAC_BUF(mac);
-                                       DECLARE_MAC_BUF(mac2);
 
-                                       printk(KERN_DEBUG "%s: RX pkt type 0x%04x from %s to %s "
+                                       printk(KERN_DEBUG "%s: RX pkt type 0x%04x from %pM to %pM "
                                                   "data %02x %02x %02x %02x %02x %02x %02x %02x "
                                                   "len %d\n",
                                                   dev->name, ((u_short *)data)[6],
-                                                  print_mac(mac, &data[6]), print_mac(mac2, data),
+                                                  &data[6], data,
                                                   data[15], data[16], data[17], data[18],
                                                   data[19], data[20], data[21], data[22],
                                                   pkt_len);
index c10cd80..405c2dc 100644 (file)
@@ -248,7 +248,6 @@ static int __init atp_probe1(long ioaddr)
        struct net_local *lp;
        int saved_ctrl_reg, status, i;
        int res;
-       DECLARE_MAC_BUF(mac);
 
        outb(0xff, ioaddr + PAR_DATA);
        /* Save the original value of the Control register, in case we guessed
@@ -324,8 +323,8 @@ static int __init atp_probe1(long ioaddr)
 #endif
 
        printk(KERN_NOTICE "%s: Pocket adapter found at %#3lx, IRQ %d, "
-              "SAPROM %s.\n",
-              dev->name, dev->base_addr, dev->irq, print_mac(mac, dev->dev_addr));
+              "SAPROM %pM.\n",
+              dev->name, dev->base_addr, dev->irq, dev->dev_addr);
 
        /* Reset the ethernet hardware and activate the printer pass-through. */
        write_reg_high(ioaddr, CMR1, CMR1h_RESET | CMR1h_MUX);
index 9a314d8..337488e 100644 (file)
@@ -758,13 +758,10 @@ static int ax_init_dev(struct net_device *dev, int first_init)
 #endif
        ax_NS8390_init(dev, 0);
 
-       if (first_init) {
-               DECLARE_MAC_BUF(mac);
-
-               dev_info(&ax->dev->dev, "%dbit, irq %d, %lx, MAC: %s\n",
+       if (first_init)
+               dev_info(&ax->dev->dev, "%dbit, irq %d, %lx, MAC: %pM\n",
                         ei_status.word16 ? 16:8, dev->irq, dev->base_addr,
-                        print_mac(mac, dev->dev_addr));
-       }
+                        dev->dev_addr);
 
        ret = register_netdev(dev);
        if (ret)
index c3bda5c..1978d25 100644 (file)
@@ -2117,7 +2117,6 @@ static int __devinit b44_init_one(struct ssb_device *sdev,
        struct net_device *dev;
        struct b44 *bp;
        int err;
-       DECLARE_MAC_BUF(mac);
 
        instance++;
 
@@ -2213,8 +2212,8 @@ static int __devinit b44_init_one(struct ssb_device *sdev,
         */
        b44_chip_reset(bp, B44_CHIP_RESET_FULL);
 
-       printk(KERN_INFO "%s: Broadcom 44xx/47xx 10/100BaseT Ethernet %s\n",
-              dev->name, print_mac(mac, dev->dev_addr));
+       printk(KERN_INFO "%s: Broadcom 44xx/47xx 10/100BaseT Ethernet %pM\n",
+              dev->name, dev->dev_addr);
 
        return 0;
 
index a42bd19..b141d02 100644 (file)
@@ -1258,7 +1258,6 @@ static int __devinit bmac_probe(struct macio_dev *mdev, const struct of_device_i
        unsigned char addr[6];
        struct net_device *dev;
        int is_bmac_plus = ((int)match->data) != 0;
-       DECLARE_MAC_BUF(mac);
 
        if (macio_resource_count(mdev) != 3 || macio_irq_count(mdev) != 3) {
                printk(KERN_ERR "BMAC: can't use, need 3 addrs and 3 intrs\n");
@@ -1368,8 +1367,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 %s",
-              dev->name, (is_bmac_plus ? "+" : ""), print_mac(mac, dev->dev_addr));
+       printk(KERN_INFO "%s: BMAC%s at %pM",
+              dev->name, (is_bmac_plus ? "+" : ""), dev->dev_addr);
        XXDEBUG((", base_addr=%#0lx", dev->base_addr));
        printk("\n");
 
index 430d430..f2e8c3b 100644 (file)
@@ -7700,7 +7700,6 @@ bnx2_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
        struct bnx2 *bp;
        int rc;
        char str[40];
-       DECLARE_MAC_BUF(mac);
 
        if (version_printed++ == 0)
                printk(KERN_INFO "%s", version);
@@ -7767,14 +7766,14 @@ 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, node addr %s\n",
+               "IRQ %d, node addr %pM\n",
                dev->name,
                board_info[ent->driver_data].name,
                ((CHIP_ID(bp) & 0xf000) >> 12) + 'A',
                ((CHIP_ID(bp) & 0x0ff0) >> 4),
                bnx2_bus_string(bp, str),
                dev->base_addr,
-               bp->pdev->irq, print_mac(mac, dev->dev_addr));
+               bp->pdev->irq, dev->dev_addr);
 
        return 0;
 }
index fce7451..42965ad 100644 (file)
@@ -9851,11 +9851,8 @@ static void bnx2x_set_rx_mode(struct net_device *dev)
                             mclist && (i < dev->mc_count);
                             i++, mclist = mclist->next) {
 
-                               DP(NETIF_MSG_IFUP, "Adding mcast MAC: "
-                                  "%02x:%02x:%02x:%02x:%02x:%02x\n",
-                                  mclist->dmi_addr[0], mclist->dmi_addr[1],
-                                  mclist->dmi_addr[2], mclist->dmi_addr[3],
-                                  mclist->dmi_addr[4], mclist->dmi_addr[5]);
+                               DP(NETIF_MSG_IFUP, "Adding mcast MAC: %pM\n",
+                                  mclist->dmi_addr);
 
                                crc = crc32c_le(0, mclist->dmi_addr, ETH_ALEN);
                                bit = (crc >> 24) & 0xff;
@@ -10090,8 +10087,7 @@ static int __devinit bnx2x_init_dev(struct pci_dev *pdev,
 
        dev->irq = pdev->irq;
 
-       bp->regview = ioremap_nocache(dev->base_addr,
-                                     pci_resource_len(pdev, 0));
+       bp->regview = pci_ioremap_bar(pdev, 0);
        if (!bp->regview) {
                printk(KERN_ERR PFX "Cannot map register space, aborting\n");
                rc = -ENOMEM;
@@ -10192,7 +10188,6 @@ static int __devinit bnx2x_init_one(struct pci_dev *pdev,
        struct net_device *dev = NULL;
        struct bnx2x *bp;
        int rc;
-       DECLARE_MAC_BUF(mac);
 
        if (version_printed++ == 0)
                printk(KERN_INFO "%s", version);
@@ -10236,7 +10231,7 @@ static int __devinit bnx2x_init_one(struct pci_dev *pdev,
               bnx2x_get_pcie_width(bp),
               (bnx2x_get_pcie_speed(bp) == 2) ? "5GHz (Gen2)" : "2.5GHz",
               dev->base_addr, bp->pdev->irq);
-       printk(KERN_CONT "node addr %s\n", print_mac(mac, dev->dev_addr));
+       printk(KERN_CONT "node addr %pM\n", dev->dev_addr);
        return 0;
 
 init_one_exit:
index a3efba5..fd9028d 100644 (file)
@@ -1791,7 +1791,6 @@ int bond_release(struct net_device *bond_dev, struct net_device *slave_dev)
        struct slave *slave, *oldcurrent;
        struct sockaddr addr;
        int mac_addr_differ;
-       DECLARE_MAC_BUF(mac);
 
        /* slave is not a slave or master is not master of this slave */
        if (!(slave_dev->flags & IFF_SLAVE) ||
@@ -1820,11 +1819,11 @@ int bond_release(struct net_device *bond_dev, struct net_device *slave_dev)
                if (!mac_addr_differ && (bond->slave_cnt > 1))
                        printk(KERN_WARNING DRV_NAME
                               ": %s: Warning: the permanent HWaddr of %s - "
-                              "%s - is still in use by %s. "
+                              "%pM - 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,
-                              print_mac(mac, slave->perm_hwaddr),
+                              slave->perm_hwaddr,
                               bond_dev->name, slave_dev->name);
        }
 
@@ -3239,7 +3238,6 @@ static void bond_info_show_master(struct seq_file *seq)
        struct bonding *bond = seq->private;
        struct slave *curr;
        int i;
-       u32 target;
 
        read_lock(&bond->curr_slave_lock);
        curr = bond->curr_active_slave;
@@ -3293,8 +3291,7 @@ static void bond_info_show_master(struct seq_file *seq)
                                continue;
                        if (printed)
                                seq_printf(seq, ",");
-                       target = ntohl(bond->params.arp_targets[i]);
-                       seq_printf(seq, " %d.%d.%d.%d", HIPQUAD(target));
+                       seq_printf(seq, " %pI4", &bond->params.arp_targets[i]);
                        printed = 1;
                }
                seq_printf(seq, "\n");
@@ -3302,7 +3299,6 @@ static void bond_info_show_master(struct seq_file *seq)
 
        if (bond->params.mode == BOND_MODE_8023AD) {
                struct ad_info ad_info;
-               DECLARE_MAC_BUF(mac);
 
                seq_puts(seq, "\n802.3ad info\n");
                seq_printf(seq, "LACP rate: %s\n",
@@ -3322,8 +3318,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: %s\n",
-                                  print_mac(mac, ad_info.partner_system));
+                       seq_printf(seq, "\tPartner Mac Address: %pM\n",
+                                  ad_info.partner_system);
                }
        }
 }
@@ -3331,7 +3327,6 @@ static void bond_info_show_master(struct seq_file *seq)
 static void bond_info_show_slave(struct seq_file *seq, const struct slave *slave)
 {
        struct bonding *bond = seq->private;
-       DECLARE_MAC_BUF(mac);
 
        seq_printf(seq, "\nSlave Interface: %s\n", slave->dev->name);
        seq_printf(seq, "MII Status: %s\n",
@@ -3339,9 +3334,7 @@ static void bond_info_show_slave(struct seq_file *seq, const struct slave *slave
        seq_printf(seq, "Link Failure Count: %u\n",
                   slave->link_failure_count);
 
-       seq_printf(seq,
-                  "Permanent HW addr: %s\n",
-                  print_mac(mac, slave->perm_hwaddr));
+       seq_printf(seq, "Permanent HW addr: %pM\n", slave->perm_hwaddr);
 
        if (bond->params.mode == BOND_MODE_8023AD) {
                const struct aggregator *agg
index 3bdb473..99c79a4 100644 (file)
@@ -1391,13 +1391,11 @@ static ssize_t bonding_show_ad_partner_mac(struct device *d,
 {
        int count = 0;
        struct bonding *bond = to_bond(d);
-       DECLARE_MAC_BUF(mac);
 
        if (bond->params.mode == BOND_MODE_8023AD) {
                struct ad_info ad_info;
                if (!bond_3ad_get_active_agg_info(bond, &ad_info)) {
-                       count = sprintf(buf,"%s\n",
-                                       print_mac(mac, ad_info.partner_system));
+                       count = sprintf(buf, "%pM\n", ad_info.partner_system);
                }
        }
 
index 86909cf..a06931d 100644 (file)
@@ -4988,7 +4988,6 @@ static int __devinit cas_init_one(struct pci_dev *pdev,
        int i, err, pci_using_dac;
        u16 pci_cmd;
        u8 orig_cacheline_size = 0, cas_cacheline_size = 0;
-       DECLARE_MAC_BUF(mac);
 
        if (cas_version_printed++ == 0)
                printk(KERN_INFO "%s", version);
@@ -5201,12 +5200,12 @@ static int __devinit cas_init_one(struct pci_dev *pdev,
 
        i = readl(cp->regs + REG_BIM_CFG);
        printk(KERN_INFO "%s: Sun Cassini%s (%sbit/%sMHz PCI/%s) "
-              "Ethernet[%d] %s\n",  dev->name,
+              "Ethernet[%d] %pM\n",  dev->name,
               (cp->cas_flags & CAS_FLAG_REG_PLUS) ? "+" : "",
               (i & BIM_CFG_32BIT) ? "32" : "64",
               (i & BIM_CFG_66MHZ) ? "66" : "33",
               (cp->phy_type == CAS_PHY_SERDES) ? "Fi" : "Cu", pdev->irq,
-              print_mac(mac, dev->dev_addr));
+              dev->dev_addr);
 
        pci_set_drvdata(pdev, dev);
        cp->hw_running = 1;
index 017a536..d39a77c 100644 (file)
@@ -1103,7 +1103,6 @@ static int __devinit cpmac_probe(struct platform_device *pdev)
        struct cpmac_priv *priv;
        struct net_device *dev;
        struct plat_cpmac_data *pdata;
-       DECLARE_MAC_BUF(mac);
 
        pdata = pdev->dev.platform_data;
 
@@ -1180,8 +1179,8 @@ static int __devinit cpmac_probe(struct platform_device *pdev)
        if (netif_msg_probe(priv)) {
                printk(KERN_INFO
                       "cpmac: device %s (regs: %p, irq: %d, phy: %s, "
-                      "mac: %s)\n", dev->name, (void *)mem->start, dev->irq,
-                      priv->phy_name, print_mac(mac, dev->dev_addr));
+                      "mac: %pM)\n", dev->name, (void *)mem->start, dev->irq,
+                      priv->phy_name, dev->dev_addr);
        }
        return 0;
 
index 65d0a91..486fa21 100644 (file)
@@ -419,7 +419,6 @@ e100_set_mac_address(struct net_device *dev, void *p)
 {
        struct net_local *np = netdev_priv(dev);
        struct sockaddr *addr = p;
-       DECLARE_MAC_BUF(mac);
 
        spin_lock(&np->lock); /* preemption protection */
 
@@ -440,8 +439,7 @@ e100_set_mac_address(struct net_device *dev, void *p)
 
        /* show it in the log as well */
 
-       printk(KERN_INFO "%s: changed MAC to %s\n",
-              dev->name, print_mac(mac, dev->dev_addr));
+       printk(KERN_INFO "%s: changed MAC to %pM\n", dev->name, dev->dev_addr);
 
        spin_unlock(&np->lock);
 
index 7107620..65174d3 100644 (file)
@@ -521,7 +521,6 @@ cs89x0_probe1(struct net_device *dev, int ioaddr, int modular)
        unsigned rev_type = 0;
        int eeprom_buff[CHKSUM_LEN];
        int retval;
-       DECLARE_MAC_BUF(mac);
 
        /* Initialize the device structure. */
        if (!modular) {
@@ -846,7 +845,7 @@ cs89x0_probe1(struct net_device *dev, int ioaddr, int modular)
        }
 
        /* print the ethernet address. */
-       printk(", MAC %s", print_mac(mac, dev->dev_addr));
+       printk(", MAC %pM", dev->dev_addr);
 
        dev->open               = net_open;
        dev->stop               = net_close;
@@ -1817,11 +1816,10 @@ static int set_mac_address(struct net_device *dev, void *p)
 
        memcpy(dev->dev_addr, addr->sa_data, dev->addr_len);
 
-       if (net_debug) {
-               DECLARE_MAC_BUF(mac);
-               printk("%s: Setting MAC address to %s.\n",
-                      dev->name, print_mac(mac, dev->dev_addr));
-       }
+       if (net_debug)
+               printk("%s: Setting MAC address to %pM.\n",
+                      dev->name, dev->dev_addr);
+
        /* set the Ethernet address */
        for (i=0; i < ETH_ALEN/2; i++)
                writereg(dev, PP_IA+i*2, dev->dev_addr[i*2] | (dev->dev_addr[i*2+1] << 8));
index 1ace41a..e1746ee 100644 (file)
@@ -493,6 +493,36 @@ static void enable_all_napi(struct adapter *adap)
                        napi_enable(&adap->sge.qs[i].napi);
 }
 
+/**
+ *     set_qset_lro - Turn a queue set's LRO capability on and off
+ *     @dev: the device the qset is attached to
+ *     @qset_idx: the queue set index
+ *     @val: the LRO switch
+ *
+ *     Sets LRO on or off for a particular queue set.
+ *     the device's features flag is updated to reflect the LRO
+ *     capability when all queues belonging to the device are
+ *     in the same state.
+ */
+static void set_qset_lro(struct net_device *dev, int qset_idx, int val)
+{
+       struct port_info *pi = netdev_priv(dev);
+       struct adapter *adapter = pi->adapter;
+       int i, lro_on = 1;
+
+       adapter->params.sge.qset[qset_idx].lro = !!val;
+       adapter->sge.qs[qset_idx].lro_enabled = !!val;
+
+       /* let ethtool report LRO on only if all queues are LRO enabled */
+       for (i = pi->first_qset; i < pi->first_qset + pi->nqsets; ++i)
+               lro_on &= adapter->params.sge.qset[i].lro;
+
+       if (lro_on)
+               dev->features |= NETIF_F_LRO;
+       else
+               dev->features &= ~NETIF_F_LRO;
+}
+
 /**
  *     setup_sge_qsets - configure SGE Tx/Rx/response queues
  *     @adap: the adapter
@@ -516,8 +546,7 @@ static int setup_sge_qsets(struct adapter *adap)
                pi->qs = &adap->sge.qs[pi->first_qset];
                for (j = pi->first_qset; j < pi->first_qset + pi->nqsets;
                     ++j, ++qset_idx) {
-                       if (!pi->rx_csum_offload)
-                               adap->params.sge.qset[qset_idx].lro = 0;
+                       set_qset_lro(dev, qset_idx, pi->rx_csum_offload);
                        err = t3_sge_alloc_qset(adap, qset_idx, 1,
                                (adap->flags & USING_MSIX) ? qset_idx + 1 :
                                                             irq_idx,
@@ -1632,13 +1661,10 @@ static int set_rx_csum(struct net_device *dev, u32 data)
 
        p->rx_csum_offload = data;
        if (!data) {
-               struct adapter *adap = p->adapter;
                int i;
 
-               for (i = p->first_qset; i < p->first_qset + p->nqsets; i++) {
-                       adap->params.sge.qset[i].lro = 0;
-                       adap->sge.qs[i].lro_enabled = 0;
-               }
+               for (i = p->first_qset; i < p->first_qset + p->nqsets; i++)
+                       set_qset_lro(dev, i, 0);
        }
        return 0;
 }
@@ -1793,6 +1819,25 @@ static void get_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
        memset(&wol->sopass, 0, sizeof(wol->sopass));
 }
 
+static int cxgb3_set_flags(struct net_device *dev, u32 data)
+{
+       struct port_info *pi = netdev_priv(dev);
+       int i;
+
+       if (data & ETH_FLAG_LRO) {
+               if (!pi->rx_csum_offload)
+                       return -EINVAL;
+
+               for (i = pi->first_qset; i < pi->first_qset + pi->nqsets; i++)
+                       set_qset_lro(dev, i, 1);
+
+       } else
+               for (i = pi->first_qset; i < pi->first_qset + pi->nqsets; i++)
+                       set_qset_lro(dev, i, 0);
+
+       return 0;
+}
+
 static const struct ethtool_ops cxgb_ethtool_ops = {
        .get_settings = get_settings,
        .set_settings = set_settings,
@@ -1822,6 +1867,8 @@ static const struct ethtool_ops cxgb_ethtool_ops = {
        .get_regs = get_regs,
        .get_wol = get_wol,
        .set_tso = ethtool_op_set_tso,
+       .get_flags = ethtool_op_get_flags,
+       .set_flags = cxgb3_set_flags,
 };
 
 static int in_range(int val, int lo, int hi)
@@ -1938,11 +1985,9 @@ static int cxgb_extension_ioctl(struct net_device *dev, void __user *useraddr)
                                }
                        }
                }
-               if (t.lro >= 0) {
-                       struct sge_qset *qs = &adapter->sge.qs[t.qset_idx];
-                       q->lro = t.lro;
-                       qs->lro_enabled = t.lro;
-               }
+               if (t.lro >= 0)
+                       set_qset_lro(dev, t.qset_idx, t.lro);
+
                break;
        }
        case CHELSIO_GET_QSET_PARAMS:{
index cb849b0..2826c74 100644 (file)
@@ -384,7 +384,6 @@ static struct net_device * __init de600_probe(void)
        int     i;
        struct net_device *dev;
        int err;
-       DECLARE_MAC_BUF(mac);
 
        dev = alloc_etherdev(0);
        if (!dev)
@@ -439,7 +438,7 @@ static struct net_device * __init de600_probe(void)
                goto out1;
        }
 
-       printk(", Ethernet Address: %s\n", print_mac(mac, dev->dev_addr));
+       printk(", Ethernet Address: %pM\n", dev->dev_addr);
 
        dev->open = de600_open;
        dev->stop = de600_close;
index d454e14..643b1ea 100644 (file)
@@ -800,7 +800,6 @@ struct net_device * __init de620_probe(int unit)
        struct net_device *dev;
        int err = -ENOMEM;
        int i;
-       DECLARE_MAC_BUF(mac);
 
        dev = alloc_etherdev(0);
        if (!dev)
@@ -853,7 +852,7 @@ struct net_device * __init de620_probe(int unit)
                dev->broadcast[i] = 0xff;
        }
 
-       printk(", Ethernet Address: %s", print_mac(mac, dev->dev_addr));
+       printk(", Ethernet Address: %pM", dev->dev_addr);
 
        printk(" (%dk RAM,",
                (nic_data.RAM_Size) ? (nic_data.RAM_Size >> 2) : 64);
@@ -876,10 +875,7 @@ struct net_device * __init de620_probe(int unit)
        if (de620_debug) {
                printk("\nEEPROM contents:\n");
                printk("RAM_Size = 0x%02X\n", nic_data.RAM_Size);
-               printk("NodeID = %02X:%02X:%02X:%02X:%02X:%02X\n",
-                       nic_data.NodeID[0], nic_data.NodeID[1],
-                       nic_data.NodeID[2], nic_data.NodeID[3],
-                       nic_data.NodeID[4], nic_data.NodeID[5]);
+               printk("NodeID = %pM\n", nic_data.NodeID);
                printk("Model = %d\n", nic_data.Model);
                printk("Media = %d\n", nic_data.Media);
                printk("SCR = 0x%02x\n", nic_data.SCR);
index 3e35064..df01ad3 100644 (file)
@@ -1023,7 +1023,6 @@ static int __init dec_lance_probe(struct device *bdev, const int type)
        int i, ret;
        unsigned long esar_base;
        unsigned char *esar;
-       DECLARE_MAC_BUF(mac);
 
        if (dec_lance_debug && version_printed++ == 0)
                printk(version);
@@ -1223,8 +1222,7 @@ static int __init dec_lance_probe(struct device *bdev, const int type)
        for (i = 0; i < 6; i++)
                dev->dev_addr[i] = esar[i * 4];
 
-       printk(", addr = %s, irq = %d\n",
-              print_mac(mac, dev->dev_addr), dev->irq);
+       printk(", addr = %pM, irq = %d\n", dev->dev_addr, dev->irq);
 
        dev->open = &lance_open;
        dev->stop = &lance_close;
index ace39ec..bf6401f 100644 (file)
@@ -573,7 +573,6 @@ static int __init depca_hw_init (struct net_device *dev, struct device *device)
        s16 nicsr;
        u_long ioaddr;
        u_long mem_start;
-       DECLARE_MAC_BUF(mac);
 
        /*
         * We are now supposed to enter this function with the
@@ -633,7 +632,7 @@ static int __init depca_hw_init (struct net_device *dev, struct device *device)
 
        printk(", h/w address ");
        status = get_hw_addr(dev);
-       printk("%s", print_mac(mac, dev->dev_addr));
+       printk("%pM", dev->dev_addr);
        if (status != 0) {
                printk("      which has an Ethernet PROM CRC error.\n");
                return -ENXIO;
@@ -1841,7 +1840,6 @@ static void depca_dbg_open(struct net_device *dev)
        u_long ioaddr = dev->base_addr;
        struct depca_init *p = &lp->init_block;
        int i;
-       DECLARE_MAC_BUF(mac);
 
        if (depca_debug > 1) {
                /* Do not copy the shadow init block into shared memory */
@@ -1880,7 +1878,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: %s\n", print_mac(mac, p->phys_addr));
+               printk("        physical address: %pM\n", p->phys_addr);
                printk("        multicast hash table: ");
                for (i = 0; i < (HASH_TABLE_LEN >> 3) - 1; i++) {
                        printk("%2.2x:", p->mcast_table[i]);
index f803711..f9e405a 100644 (file)
@@ -97,7 +97,6 @@ rio_probe1 (struct pci_dev *pdev, const struct pci_device_id *ent)
        static int version_printed;
        void *ring_space;
        dma_addr_t ring_dma;
-       DECLARE_MAC_BUF(mac);
 
        if (!version_printed++)
                printk ("%s", version);
@@ -257,8 +256,8 @@ rio_probe1 (struct pci_dev *pdev, const struct pci_device_id *ent)
 
        card_idx++;
 
-       printk (KERN_INFO "%s: %s, %s, IRQ %d\n",
-               dev->name, np->name, print_mac(mac, dev->dev_addr), irq);
+       printk (KERN_INFO "%s: %s, %pM, IRQ %d\n",
+               dev->name, np->name, dev->dev_addr, irq);
        if (tx_coalesce > 1)
                printk(KERN_INFO "tx_coalesce:\t%d packets\n",
                                tx_coalesce);
index 5a9083e..22dd308 100644 (file)
@@ -1385,13 +1385,11 @@ dm9000_probe(struct platform_device *pdev)
        platform_set_drvdata(pdev, ndev);
        ret = register_netdev(ndev);
 
-       if (ret == 0) {
-               DECLARE_MAC_BUF(mac);
-               printk(KERN_INFO "%s: dm9000%c at %p,%p IRQ %d MAC: %s (%s)\n",
+       if (ret == 0)
+               printk(KERN_INFO "%s: dm9000%c at %p,%p IRQ %d MAC: %pM (%s)\n",
                       ndev->name, dm9000_type_to_char(db->type),
                       db->io_addr, db->io_data, ndev->irq,
-                      print_mac(mac, ndev->dev_addr), mac_src);
-       }
+                      ndev->dev_addr, mac_src);
        return 0;
 
 out:
index 3d69fae..084127f 100644 (file)
@@ -2322,7 +2322,8 @@ static int e100_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
 {
        struct nic *nic = netdev_priv(netdev);
 
-       if(wol->wolopts != WAKE_MAGIC && wol->wolopts != 0)
+       if ((wol->wolopts && wol->wolopts != WAKE_MAGIC) ||
+           !device_can_wakeup(&nic->pdev->dev))
                return -EOPNOTSUPP;
 
        if(wol->wolopts)
@@ -2330,6 +2331,8 @@ static int e100_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
        else
                nic->flags &= ~wol_magic;
 
+       device_set_wakeup_enable(&nic->pdev->dev, wol->wolopts);
+
        e100_exec_cb(nic, NULL, e100_configure);
 
        return 0;
@@ -2616,7 +2619,6 @@ static int __devinit e100_probe(struct pci_dev *pdev,
        struct net_device *netdev;
        struct nic *nic;
        int err;
-       DECLARE_MAC_BUF(mac);
 
        if(!(netdev = alloc_etherdev(sizeof(struct nic)))) {
                if(((1 << debug) - 1) & NETIF_MSG_PROBE)
@@ -2734,8 +2736,10 @@ static int __devinit e100_probe(struct pci_dev *pdev,
 
        /* Wol magic packet can be enabled from eeprom */
        if((nic->mac >= mac_82558_D101_A4) &&
-          (nic->eeprom[eeprom_id] & eeprom_id_wol))
+          (nic->eeprom[eeprom_id] & eeprom_id_wol)) {
                nic->flags |= wol_magic;
+               device_set_wakeup_enable(&pdev->dev, true);
+       }
 
        /* ack any pending wake events, disable PME */
        pci_pme_active(pdev, false);
@@ -2746,9 +2750,9 @@ static int __devinit e100_probe(struct pci_dev *pdev,
                goto err_out_free;
        }
 
-       DPRINTK(PROBE, INFO, "addr 0x%llx, irq %d, MAC addr %s\n",
+       DPRINTK(PROBE, INFO, "addr 0x%llx, irq %d, MAC addr %pM\n",
                (unsigned long long)pci_resource_start(pdev, use_io ? 1 : 0),
-               pdev->irq, print_mac(mac, netdev->dev_addr));
+               pdev->irq, netdev->dev_addr);
 
        return 0;
 
@@ -2794,11 +2798,10 @@ static int e100_suspend(struct pci_dev *pdev, pm_message_t state)
        pci_save_state(pdev);
 
        if ((nic->flags & wol_magic) | e100_asf(nic)) {
-               pci_enable_wake(pdev, PCI_D3hot, 1);
-               pci_enable_wake(pdev, PCI_D3cold, 1);
+               if (pci_enable_wake(pdev, PCI_D3cold, true))
+                       pci_enable_wake(pdev, PCI_D3hot, true);
        } else {
-               pci_enable_wake(pdev, PCI_D3hot, 0);
-               pci_enable_wake(pdev, PCI_D3cold, 0);
+               pci_enable_wake(pdev, PCI_D3hot, false);
        }
 
        pci_disable_device(pdev);
index fac8215..07b38fb 100644 (file)
@@ -912,7 +912,6 @@ static int __devinit e1000_probe(struct pci_dev *pdev,
        u16 eeprom_data = 0;
        u16 eeprom_apme_mask = E1000_EEPROM_APME;
        int bars, need_ioport;
-       DECLARE_MAC_BUF(mac);
 
        /* do not allocate ioport bars when not needed */
        need_ioport = e1000_is_need_ioport(pdev);
@@ -967,8 +966,7 @@ static int __devinit e1000_probe(struct pci_dev *pdev,
        hw->back = adapter;
 
        err = -EIO;
-       hw->hw_addr = ioremap(pci_resource_start(pdev, BAR_0),
-                             pci_resource_len(pdev, BAR_0));
+       hw->hw_addr = pci_ioremap_bar(pdev, BAR_0);
        if (!hw->hw_addr)
                goto err_ioremap;
 
@@ -1016,9 +1014,7 @@ static int __devinit e1000_probe(struct pci_dev *pdev,
         * because it depends on mac_type */
        if ((hw->mac_type == e1000_ich8lan) &&
           (pci_resource_flags(pdev, 1) & IORESOURCE_MEM)) {
-               hw->flash_address =
-                       ioremap(pci_resource_start(pdev, 1),
-                               pci_resource_len(pdev, 1));
+               hw->flash_address = pci_ioremap_bar(pdev, 1);
                if (!hw->flash_address)
                        goto err_flashmap;
        }
@@ -1194,7 +1190,7 @@ static int __devinit e1000_probe(struct pci_dev *pdev,
                 (hw->bus_width == e1000_bus_width_pciex_1) ? "Width x1" :
                 "32-bit"));
 
-       printk("%s\n", print_mac(mac, netdev->dev_addr));
+       printk("%pM\n", netdev->dev_addr);
 
        if (hw->bus_type == e1000_bus_type_pci_express) {
                DPRINTK(PROBE, WARNING, "This device (id %04x:%04x) will no "
index abd492b..a5c9266 100644 (file)
@@ -4652,14 +4652,12 @@ static void e1000_print_device_info(struct e1000_adapter *adapter)
        u32 pba_num;
 
        /* print bus type/speed/width info */
-       e_info("(PCI Express:2.5GB/s:%s) %02x:%02x:%02x:%02x:%02x:%02x\n",
+       e_info("(PCI Express:2.5GB/s:%s) %pM\n",
               /* bus width */
               ((hw->bus.width == e1000_bus_width_pcie_x4) ? "Width x4" :
                "Width x1"),
               /* MAC address */
-              netdev->dev_addr[0], netdev->dev_addr[1],
-              netdev->dev_addr[2], netdev->dev_addr[3],
-              netdev->dev_addr[4], netdev->dev_addr[5]);
+              netdev->dev_addr);
        e_info("Intel(R) PRO/%s Network Connection\n",
               (hw->phy.type == e1000_phy_ife) ? "10/100" : "1000");
        e1000e_read_pba_num(hw, &pba_num);
@@ -4906,10 +4904,7 @@ static int __devinit e1000_probe(struct pci_dev *pdev,
        memcpy(netdev->perm_addr, adapter->hw.mac.addr, netdev->addr_len);
 
        if (!is_valid_ether_addr(netdev->perm_addr)) {
-               e_err("Invalid MAC Address: %02x:%02x:%02x:%02x:%02x:%02x\n",
-                     netdev->perm_addr[0], netdev->perm_addr[1],
-                     netdev->perm_addr[2], netdev->perm_addr[3],
-                     netdev->perm_addr[4], netdev->perm_addr[5]);
+               e_err("Invalid MAC Address: %pM\n", netdev->perm_addr);
                err = -EIO;
                goto err_eeprom;
        }
index 1f11350..5f72362 100644 (file)
@@ -690,7 +690,6 @@ static void __init eepro_print_info (struct net_device *dev)
        struct eepro_local *    lp = netdev_priv(dev);
        int                     i;
        const char *            ifmap[] = {"AUI", "10Base2", "10BaseT"};
-       DECLARE_MAC_BUF(mac);
 
        i = inb(dev->base_addr + ID_REG);
        printk(KERN_DEBUG " id: %#x ",i);
@@ -715,7 +714,7 @@ static void __init eepro_print_info (struct net_device *dev)
                        break;
        }
 
-       printk(" %s", print_mac(mac, dev->dev_addr));
+       printk(" %pM", 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
deleted file mode 100644 (file)
index e3e26c5..0000000
+++ /dev/null
@@ -1,2401 +0,0 @@
-/* drivers/net/eepro100.c: An Intel i82557-559 Ethernet driver for Linux. */
-/*
-       Written 1996-1999 by Donald Becker.
-
-       The driver also contains updates by different kernel developers
-       (see incomplete list below).
-       Current maintainer is Andrey V. Savochkin <saw@saw.sw.com.sg>.
-       Please use this email address and linux-kernel mailing list for bug reports.
-
-       This software may be used and distributed according to the terms
-       of the GNU General Public License, incorporated herein by reference.
-
-       This driver is for the Intel EtherExpress Pro100 (Speedo3) design.
-       It should work with all i82557/558/559 boards.
-
-       Version history:
-       1998 Apr - 2000 Feb  Andrey V. Savochkin <saw@saw.sw.com.sg>
-               Serious fixes for multicast filter list setting, TX timeout routine;
-               RX ring refilling logic;  other stuff
-       2000 Feb  Jeff Garzik <jgarzik@pobox.com>
-               Convert to new PCI driver interface
-       2000 Mar 24  Dragan Stancevic <visitor@valinux.com>
-               Disabled FC and ER, to avoid lockups when when we get FCP interrupts.
-       2000 Jul 17 Goutham Rao <goutham.rao@intel.com>
-               PCI DMA API fixes, adding pci_dma_sync_single calls where neccesary
-       2000 Aug 31 David Mosberger <davidm@hpl.hp.com>
-               rx_align support: enables rx DMA without causing unaligned accesses.
-*/
-
-static const char * const version =
-"eepro100.c:v1.09j-t 9/29/99 Donald Becker\n"
-"eepro100.c: $Revision: 1.36 $ 2000/11/17 Modified by Andrey V. Savochkin <saw@saw.sw.com.sg> and others\n";
-
-/* A few user-configurable values that apply to all boards.
-   First set is undocumented and spelled per Intel recommendations. */
-
-static int congenb /* = 0 */; /* Enable congestion control in the DP83840. */
-static int txfifo = 8;         /* Tx FIFO threshold in 4 byte units, 0-15 */
-static int rxfifo = 8;         /* Rx FIFO threshold, default 32 bytes. */
-/* Tx/Rx DMA burst length, 0-127, 0 == no preemption, tx==128 -> disabled. */
-static int txdmacount = 128;
-static int rxdmacount /* = 0 */;
-
-#if defined(__ia64__) || defined(__alpha__) || defined(__sparc__) || defined(__mips__) || \
-       defined(__arm__)
-  /* align rx buffers to 2 bytes so that IP header is aligned */
-# define rx_align(skb)         skb_reserve((skb), 2)
-# define RxFD_ALIGNMENT                __attribute__ ((aligned (2), packed))
-#else
-# define rx_align(skb)
-# define RxFD_ALIGNMENT
-#endif
-
-/* Set the copy breakpoint for the copy-only-tiny-buffer Rx method.
-   Lower values use more memory, but are faster. */
-static int rx_copybreak = 200;
-
-/* Maximum events (Rx packets, etc.) to handle at each interrupt. */
-static int max_interrupt_work = 20;
-
-/* Maximum number of multicast addresses to filter (vs. rx-all-multicast) */
-static int multicast_filter_limit = 64;
-
-/* 'options' is used to pass a transceiver override or full-duplex flag
-   e.g. "options=16" for FD, "options=32" for 100mbps-only. */
-static int full_duplex[] = {-1, -1, -1, -1, -1, -1, -1, -1};
-static int options[] = {-1, -1, -1, -1, -1, -1, -1, -1};
-
-/* A few values that may be tweaked. */
-/* The ring sizes should be a power of two for efficiency. */
-#define TX_RING_SIZE   64
-#define RX_RING_SIZE   64
-/* How much slots multicast filter setup may take.
-   Do not descrease without changing set_rx_mode() implementaion. */
-#define TX_MULTICAST_SIZE   2
-#define TX_MULTICAST_RESERV (TX_MULTICAST_SIZE*2)
-/* Actual number of TX packets queued, must be
-   <= TX_RING_SIZE-TX_MULTICAST_RESERV. */
-#define TX_QUEUE_LIMIT  (TX_RING_SIZE-TX_MULTICAST_RESERV)
-/* Hysteresis marking queue as no longer full. */
-#define TX_QUEUE_UNFULL (TX_QUEUE_LIMIT-4)
-
-/* Operational parameters that usually are not changed. */
-
-/* Time in jiffies before concluding the transmitter is hung. */
-#define TX_TIMEOUT             (2*HZ)
-/* Size of an pre-allocated Rx buffer: <Ethernet MTU> + slack.*/
-#define PKT_BUF_SZ             1536
-
-#include <linux/module.h>
-
-#include <linux/kernel.h>
-#include <linux/string.h>
-#include <linux/errno.h>
-#include <linux/ioport.h>
-#include <linux/slab.h>
-#include <linux/interrupt.h>
-#include <linux/timer.h>
-#include <linux/pci.h>
-#include <linux/spinlock.h>
-#include <linux/init.h>
-#include <linux/mii.h>
-#include <linux/delay.h>
-#include <linux/bitops.h>
-
-#include <asm/io.h>
-#include <asm/uaccess.h>
-#include <asm/irq.h>
-
-#include <linux/netdevice.h>
-#include <linux/etherdevice.h>
-#include <linux/rtnetlink.h>
-#include <linux/skbuff.h>
-#include <linux/ethtool.h>
-
-static int use_io;
-static int debug = -1;
-#define DEBUG_DEFAULT          (NETIF_MSG_DRV          | \
-                                NETIF_MSG_HW           | \
-                                NETIF_MSG_RX_ERR       | \
-                                NETIF_MSG_TX_ERR)
-#define DEBUG                  ((debug >= 0) ? (1<<debug)-1 : DEBUG_DEFAULT)
-
-
-MODULE_AUTHOR("Maintainer: Andrey V. Savochkin <saw@saw.sw.com.sg>");
-MODULE_DESCRIPTION("Intel i82557/i82558/i82559 PCI EtherExpressPro driver");
-MODULE_LICENSE("GPL");
-module_param(use_io, int, 0);
-module_param(debug, int, 0);
-module_param_array(options, int, NULL, 0);
-module_param_array(full_duplex, int, NULL, 0);
-module_param(congenb, int, 0);
-module_param(txfifo, int, 0);
-module_param(rxfifo, int, 0);
-module_param(txdmacount, int, 0);
-module_param(rxdmacount, int, 0);
-module_param(rx_copybreak, int, 0);
-module_param(max_interrupt_work, int, 0);
-module_param(multicast_filter_limit, int, 0);
-MODULE_PARM_DESC(debug, "debug level (0-6)");
-MODULE_PARM_DESC(options, "Bits 0-3: transceiver type, bit 4: full duplex, bit 5: 100Mbps");
-MODULE_PARM_DESC(full_duplex, "full duplex setting(s) (1)");
-MODULE_PARM_DESC(congenb, "Enable congestion control (1)");
-MODULE_PARM_DESC(txfifo, "Tx FIFO threshold in 4 byte units, (0-15)");
-MODULE_PARM_DESC(rxfifo, "Rx FIFO threshold in 4 byte units, (0-15)");
-MODULE_PARM_DESC(txdmacount, "Tx DMA burst length; 128 - disable (0-128)");
-MODULE_PARM_DESC(rxdmacount, "Rx DMA burst length; 128 - disable (0-128)");
-MODULE_PARM_DESC(rx_copybreak, "copy breakpoint for copy-only-tiny-frames");
-MODULE_PARM_DESC(max_interrupt_work, "maximum events handled per interrupt");
-MODULE_PARM_DESC(multicast_filter_limit, "maximum number of filtered multicast addresses");
-
-#define RUN_AT(x) (jiffies + (x))
-
-#define netdevice_start(dev)
-#define netdevice_stop(dev)
-#define netif_set_tx_timeout(dev, tf, tm) \
-                                                               do { \
-                                                                       (dev)->tx_timeout = (tf); \
-                                                                       (dev)->watchdog_timeo = (tm); \
-                                                               } while(0)
-
-
-
-/*
-                               Theory of Operation
-
-I. Board Compatibility
-
-This device driver is designed for the Intel i82557 "Speedo3" chip, Intel's
-single-chip fast Ethernet controller for PCI, as used on the Intel
-EtherExpress Pro 100 adapter.
-
-II. Board-specific settings
-
-PCI bus devices are configured by the system at boot time, so no jumpers
-need to be set on the board.  The system BIOS should be set to assign the
-PCI INTA signal to an otherwise unused system IRQ line.  While it's
-possible to share PCI interrupt lines, it negatively impacts performance and
-only recent kernels support it.
-
-III. Driver operation
-
-IIIA. General
-The Speedo3 is very similar to other Intel network chips, that is to say
-"apparently designed on a different planet".  This chips retains the complex
-Rx and Tx descriptors and multiple buffers pointers as previous chips, but
-also has simplified Tx and Rx buffer modes.  This driver uses the "flexible"
-Tx mode, but in a simplified lower-overhead manner: it associates only a
-single buffer descriptor with each frame descriptor.
-
-Despite the extra space overhead in each receive skbuff, the driver must use
-the simplified Rx buffer mode to assure that only a single data buffer is
-associated with each RxFD. The driver implements this by reserving space
-for the Rx descriptor at the head of each Rx skbuff.
-
-The Speedo-3 has receive and command unit base addresses that are added to
-almost all descriptor pointers.  The driver sets these to zero, so that all
-pointer fields are absolute addresses.
-
-The System Control Block (SCB) of some previous Intel chips exists on the
-chip in both PCI I/O and memory space.  This driver uses the I/O space
-registers, but might switch to memory mapped mode to better support non-x86
-processors.
-
-IIIB. Transmit structure
-
-The driver must use the complex Tx command+descriptor mode in order to
-have a indirect pointer to the skbuff data section.  Each Tx command block
-(TxCB) is associated with two immediately appended Tx Buffer Descriptor
-(TxBD).  A fixed ring of these TxCB+TxBD pairs are kept as part of the
-speedo_private data structure for each adapter instance.
-
-The newer i82558 explicitly supports this structure, and can read the two
-TxBDs in the same PCI burst as the TxCB.
-
-This ring structure is used for all normal transmit packets, but the
-transmit packet descriptors aren't long enough for most non-Tx commands such
-as CmdConfigure.  This is complicated by the possibility that the chip has
-already loaded the link address in the previous descriptor.  So for these
-commands we convert the next free descriptor on the ring to a NoOp, and point
-that descriptor's link to the complex command.
-
-An additional complexity of these non-transmit commands are that they may be
-added asynchronous to the normal transmit queue, so we disable interrupts
-whenever the Tx descriptor ring is manipulated.
-
-A notable aspect of these special configure commands is that they do
-work with the normal Tx ring entry scavenge method.  The Tx ring scavenge
-is done at interrupt time using the 'dirty_tx' index, and checking for the
-command-complete bit.  While the setup frames may have the NoOp command on the
-Tx ring marked as complete, but not have completed the setup command, this
-is not a problem.  The tx_ring entry can be still safely reused, as the
-tx_skbuff[] entry is always empty for config_cmd and mc_setup frames.
-
-Commands may have bits set e.g. CmdSuspend in the command word to either
-suspend or stop the transmit/command unit.  This driver always flags the last
-command with CmdSuspend, erases the CmdSuspend in the previous command, and
-then issues a CU_RESUME.
-Note: Watch out for the potential race condition here: imagine
-       erasing the previous suspend
-               the chip processes the previous command
-               the chip processes the final command, and suspends
-       doing the CU_RESUME
-               the chip processes the next-yet-valid post-final-command.
-So blindly sending a CU_RESUME is only safe if we do it immediately after
-after erasing the previous CmdSuspend, without the possibility of an
-intervening delay.  Thus the resume command is always within the
-interrupts-disabled region.  This is a timing dependence, but handling this
-condition in a timing-independent way would considerably complicate the code.
-
-Note: In previous generation Intel chips, restarting the command unit was a
-notoriously slow process.  This is presumably no longer true.
-
-IIIC. Receive structure
-
-Because of the bus-master support on the Speedo3 this driver uses the new
-SKBUFF_RX_COPYBREAK scheme, rather than a fixed intermediate receive buffer.
-This scheme allocates full-sized skbuffs as receive buffers.  The value
-SKBUFF_RX_COPYBREAK is used as the copying breakpoint: it is chosen to
-trade-off the memory wasted by passing the full-sized skbuff to the queue
-layer for all frames vs. the copying cost of copying a frame to a
-correctly-sized skbuff.
-
-For small frames the copying cost is negligible (esp. considering that we
-are pre-loading the cache with immediately useful header information), so we
-allocate a new, minimally-sized skbuff.  For large frames the copying cost
-is non-trivial, and the larger copy might flush the cache of useful data, so
-we pass up the skbuff the packet was received into.
-
-IV. Notes
-
-Thanks to Steve Williams of Intel for arranging the non-disclosure agreement
-that stated that I could disclose the information.  But I still resent
-having to sign an Intel NDA when I'm helping Intel sell their own product!
-
-*/
-
-static int speedo_found1(struct pci_dev *pdev, void __iomem *ioaddr, int fnd_cnt, int acpi_idle_state);
-
-/* Offsets to the various registers.
-   All accesses need not be longword aligned. */
-enum speedo_offsets {
-       SCBStatus = 0, SCBCmd = 2,      /* Rx/Command Unit command and status. */
-       SCBIntmask = 3,
-       SCBPointer = 4,                         /* General purpose pointer. */
-       SCBPort = 8,                            /* Misc. commands and operands.  */
-       SCBflash = 12, SCBeeprom = 14, /* EEPROM and flash memory control. */
-       SCBCtrlMDI = 16,                        /* MDI interface control. */
-       SCBEarlyRx = 20,                        /* Early receive byte count. */
-};
-/* Commands that can be put in a command list entry. */
-enum commands {
-       CmdNOp = 0, CmdIASetup = 0x10000, CmdConfigure = 0x20000,
-       CmdMulticastList = 0x30000, CmdTx = 0x40000, CmdTDR = 0x50000,
-       CmdDump = 0x60000, CmdDiagnose = 0x70000,
-       CmdSuspend = 0x40000000,        /* Suspend after completion. */
-       CmdIntr = 0x20000000,           /* Interrupt after completion. */
-       CmdTxFlex = 0x00080000,         /* Use "Flexible mode" for CmdTx command. */
-};
-/* Clear CmdSuspend (1<<30) avoiding interference with the card access to the
-   status bits.  Previous driver versions used separate 16 bit fields for
-   commands and statuses.  --SAW
- */
-#if defined(__alpha__)
-# define clear_suspend(cmd)  clear_bit(30, &(cmd)->cmd_status);
-#else
-# define clear_suspend(cmd)  ((__le16 *)&(cmd)->cmd_status)[1] &= ~cpu_to_le16(1<<14)
-#endif
-
-enum SCBCmdBits {
-       SCBMaskCmdDone=0x8000, SCBMaskRxDone=0x4000, SCBMaskCmdIdle=0x2000,
-       SCBMaskRxSuspend=0x1000, SCBMaskEarlyRx=0x0800, SCBMaskFlowCtl=0x0400,
-       SCBTriggerIntr=0x0200, SCBMaskAll=0x0100,
-       /* The rest are Rx and Tx commands. */
-       CUStart=0x0010, CUResume=0x0020, CUStatsAddr=0x0040, CUShowStats=0x0050,
-       CUCmdBase=0x0060,       /* CU Base address (set to zero) . */
-       CUDumpStats=0x0070, /* Dump then reset stats counters. */
-       RxStart=0x0001, RxResume=0x0002, RxAbort=0x0004, RxAddrLoad=0x0006,
-       RxResumeNoResources=0x0007,
-};
-
-enum SCBPort_cmds {
-       PortReset=0, PortSelfTest=1, PortPartialReset=2, PortDump=3,
-};
-
-/* The Speedo3 Rx and Tx frame/buffer descriptors. */
-struct descriptor {                        /* A generic descriptor. */
-       volatile __le32 cmd_status;     /* All command and status fields. */
-       __le32 link;                                /* struct descriptor *  */
-       unsigned char params[0];
-};
-
-/* The Speedo3 Rx and Tx buffer descriptors. */
-struct RxFD {                                  /* Receive frame descriptor. */
-       volatile __le32 status;
-       __le32 link;                                    /* struct RxFD * */
-       __le32 rx_buf_addr;                     /* void * */
-       __le32 count;
-} RxFD_ALIGNMENT;
-
-/* Selected elements of the Tx/RxFD.status word. */
-enum RxFD_bits {
-       RxComplete=0x8000, RxOK=0x2000,
-       RxErrCRC=0x0800, RxErrAlign=0x0400, RxErrTooBig=0x0200, RxErrSymbol=0x0010,
-       RxEth2Type=0x0020, RxNoMatch=0x0004, RxNoIAMatch=0x0002,
-       TxUnderrun=0x1000,  StatusComplete=0x8000,
-};
-
-#define CONFIG_DATA_SIZE 22
-struct TxFD {                                  /* Transmit frame descriptor set. */
-       __le32 status;
-       __le32 link;                                    /* void * */
-       __le32 tx_desc_addr;                    /* Always points to the tx_buf_addr element. */
-       __le32 count;                                   /* # of TBD (=1), Tx start thresh., etc. */
-       /* This constitutes two "TBD" entries -- we only use one. */
-#define TX_DESCR_BUF_OFFSET 16
-       __le32 tx_buf_addr0;                    /* void *, frame to be transmitted.  */
-       __le32 tx_buf_size0;                    /* Length of Tx frame. */
-       __le32 tx_buf_addr1;                    /* void *, frame to be transmitted.  */
-       __le32 tx_buf_size1;                    /* Length of Tx frame. */
-       /* the structure must have space for at least CONFIG_DATA_SIZE starting
-        * from tx_desc_addr field */
-};
-
-/* Multicast filter setting block.  --SAW */
-struct speedo_mc_block {
-       struct speedo_mc_block *next;
-       unsigned int tx;
-       dma_addr_t frame_dma;
-       unsigned int len;
-       struct descriptor frame __attribute__ ((__aligned__(16)));
-};
-
-/* Elements of the dump_statistics block. This block must be lword aligned. */
-struct speedo_stats {
-       __le32 tx_good_frames;
-       __le32 tx_coll16_errs;
-       __le32 tx_late_colls;
-       __le32 tx_underruns;
-       __le32 tx_lost_carrier;
-       __le32 tx_deferred;
-       __le32 tx_one_colls;
-       __le32 tx_multi_colls;
-       __le32 tx_total_colls;
-       __le32 rx_good_frames;
-       __le32 rx_crc_errs;
-       __le32 rx_align_errs;
-       __le32 rx_resource_errs;
-       __le32 rx_overrun_errs;
-       __le32 rx_colls_errs;
-       __le32 rx_runt_errs;
-       __le32 done_marker;
-};
-
-enum Rx_ring_state_bits {
-       RrNoMem=1, RrPostponed=2, RrNoResources=4, RrOOMReported=8,
-};
-
-/* Do not change the position (alignment) of the first few elements!
-   The later elements are grouped for cache locality.
-
-   Unfortunately, all the positions have been shifted since there.
-   A new re-alignment is required.  2000/03/06  SAW */
-struct speedo_private {
-    void __iomem *regs;
-       struct TxFD     *tx_ring;               /* Commands (usually CmdTxPacket). */
-       struct RxFD *rx_ringp[RX_RING_SIZE];    /* Rx descriptor, used as ring. */
-       /* The addresses of a Tx/Rx-in-place packets/buffers. */
-       struct sk_buff *tx_skbuff[TX_RING_SIZE];
-       struct sk_buff *rx_skbuff[RX_RING_SIZE];
-       /* Mapped addresses of the rings. */
-       dma_addr_t tx_ring_dma;
-#define TX_RING_ELEM_DMA(sp, n) ((sp)->tx_ring_dma + (n)*sizeof(struct TxFD))
-       dma_addr_t rx_ring_dma[RX_RING_SIZE];
-       struct descriptor *last_cmd;            /* Last command sent. */
-       unsigned int cur_tx, dirty_tx;          /* The ring entries to be free()ed. */
-       spinlock_t lock;                        /* Group with Tx control cache line. */
-       u32 tx_threshold;                       /* The value for txdesc.count. */
-       struct RxFD *last_rxf;                  /* Last filled RX buffer. */
-       dma_addr_t last_rxf_dma;
-       unsigned int cur_rx, dirty_rx;          /* The next free ring entry */
-       long last_rx_time;                      /* Last Rx, in jiffies, to handle Rx hang. */
-       struct net_device_stats stats;
-       struct speedo_stats *lstats;
-       dma_addr_t lstats_dma;
-       int chip_id;
-       struct pci_dev *pdev;
-       struct timer_list timer;                /* Media selection timer. */
-       struct speedo_mc_block *mc_setup_head;  /* Multicast setup frame list head. */
-       struct speedo_mc_block *mc_setup_tail;  /* Multicast setup frame list tail. */
-       long in_interrupt;                      /* Word-aligned dev->interrupt */
-       unsigned char acpi_pwr;
-       signed char rx_mode;                    /* Current PROMISC/ALLMULTI setting. */
-       unsigned int tx_full:1;                 /* The Tx queue is full. */
-       unsigned int flow_ctrl:1;               /* Use 802.3x flow control. */
-       unsigned int rx_bug:1;                  /* Work around receiver hang errata. */
-       unsigned char default_port:8;           /* Last dev->if_port value. */
-       unsigned char rx_ring_state;            /* RX ring status flags. */
-       unsigned short phy[2];                  /* PHY media interfaces available. */
-       unsigned short partner;                 /* Link partner caps. */
-       struct mii_if_info mii_if;              /* MII API hooks, info */
-       u32 msg_enable;                         /* debug message level */
-};
-
-/* The parameters for a CmdConfigure operation.
-   There are so many options that it would be difficult to document each bit.
-   We mostly use the default or recommended settings. */
-static const char i82557_config_cmd[CONFIG_DATA_SIZE] = {
-       22, 0x08, 0, 0,  0, 0, 0x32, 0x03,  1, /* 1=Use MII  0=Use AUI */
-       0, 0x2E, 0,  0x60, 0,
-       0xf2, 0x48,   0, 0x40, 0xf2, 0x80,              /* 0x40=Force full-duplex */
-       0x3f, 0x05, };
-static const char i82558_config_cmd[CONFIG_DATA_SIZE] = {
-       22, 0x08, 0, 1,  0, 0, 0x22, 0x03,  1, /* 1=Use MII  0=Use AUI */
-       0, 0x2E, 0,  0x60, 0x08, 0x88,
-       0x68, 0, 0x40, 0xf2, 0x84,              /* Disable FC */
-       0x31, 0x05, };
-
-/* PHY media interface chips. */
-static const char * const phys[] = {
-       "None", "i82553-A/B", "i82553-C", "i82503",
-       "DP83840", "80c240", "80c24", "i82555",
-       "unknown-8", "unknown-9", "DP83840A", "unknown-11",
-       "unknown-12", "unknown-13", "unknown-14", "unknown-15", };
-enum phy_chips { NonSuchPhy=0, I82553AB, I82553C, I82503, DP83840, S80C240,
-                                        S80C24, I82555, DP83840A=10, };
-static const char is_mii[] = { 0, 1, 1, 0, 1, 1, 0, 1 };
-#define EE_READ_CMD            (6)
-
-static int eepro100_init_one(struct pci_dev *pdev,
-               const struct pci_device_id *ent);
-
-static int do_eeprom_cmd(void __iomem *ioaddr, int cmd, int cmd_len);
-static int mdio_read(struct net_device *dev, int phy_id, int location);
-static void mdio_write(struct net_device *dev, int phy_id, int location, int value);
-static int speedo_open(struct net_device *dev);
-static void speedo_resume(struct net_device *dev);
-static void speedo_timer(unsigned long data);
-static void speedo_init_rx_ring(struct net_device *dev);
-static void speedo_tx_timeout(struct net_device *dev);
-static int speedo_start_xmit(struct sk_buff *skb, struct net_device *dev);
-static void speedo_refill_rx_buffers(struct net_device *dev, int force);
-static int speedo_rx(struct net_device *dev);
-static void speedo_tx_buffer_gc(struct net_device *dev);
-static irqreturn_t speedo_interrupt(int irq, void *dev_instance);
-static int speedo_close(struct net_device *dev);
-static struct net_device_stats *speedo_get_stats(struct net_device *dev);
-static int speedo_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);
-static void set_rx_mode(struct net_device *dev);
-static void speedo_show_state(struct net_device *dev);
-static const struct ethtool_ops ethtool_ops;
-
-
-
-#ifdef honor_default_port
-/* Optional driver feature to allow forcing the transceiver setting.
-   Not recommended. */
-static int mii_ctrl[8] = { 0x3300, 0x3100, 0x0000, 0x0100,
-                                                  0x2000, 0x2100, 0x0400, 0x3100};
-#endif
-
-/* How to wait for the command unit to accept a command.
-   Typically this takes 0 ticks. */
-static inline unsigned char wait_for_cmd_done(struct net_device *dev,
-                                                                                               struct speedo_private *sp)
-{
-       int wait = 1000;
-       void __iomem *cmd_ioaddr = sp->regs + SCBCmd;
-       unsigned char r;
-
-       do  {
-               udelay(1);
-               r = ioread8(cmd_ioaddr);
-       } while(r && --wait >= 0);
-
-       if (wait < 0)
-               printk(KERN_ALERT "%s: wait_for_cmd_done timeout!\n", dev->name);
-       return r;
-}
-
-static int __devinit eepro100_init_one (struct pci_dev *pdev,
-               const struct pci_device_id *ent)
-{
-       void __iomem *ioaddr;
-       int irq, pci_bar;
-       int acpi_idle_state = 0, pm;
-       static int cards_found /* = 0 */;
-       unsigned long pci_base;
-
-#ifndef MODULE
-       /* when built-in, we only print version if device is found */
-       static int did_version;
-       if (did_version++ == 0)
-               printk(version);
-#endif
-
-       /* save power state before pci_enable_device overwrites it */
-       pm = pci_find_capability(pdev, PCI_CAP_ID_PM);
-       if (pm) {
-               u16 pwr_command;
-               pci_read_config_word(pdev, pm + PCI_PM_CTRL, &pwr_command);
-               acpi_idle_state = pwr_command & PCI_PM_CTRL_STATE_MASK;
-       }
-
-       if (pci_enable_device(pdev))
-               goto err_out_free_mmio_region;
-
-       pci_set_master(pdev);
-
-       if (!request_region(pci_resource_start(pdev, 1),
-                       pci_resource_len(pdev, 1), "eepro100")) {
-               dev_err(&pdev->dev, "eepro100: cannot reserve I/O ports\n");
-               goto err_out_none;
-       }
-       if (!request_mem_region(pci_resource_start(pdev, 0),
-                       pci_resource_len(pdev, 0), "eepro100")) {
-               dev_err(&pdev->dev, "eepro100: cannot reserve MMIO region\n");
-               goto err_out_free_pio_region;
-       }
-
-       irq = pdev->irq;
-       pci_bar = use_io ? 1 : 0;
-       pci_base = pci_resource_start(pdev, pci_bar);
-       if (DEBUG & NETIF_MSG_PROBE)
-               printk("Found Intel i82557 PCI Speedo at %#lx, IRQ %d.\n",
-                      pci_base, irq);
-
-       ioaddr = pci_iomap(pdev, pci_bar, 0);
-       if (!ioaddr) {
-               dev_err(&pdev->dev, "eepro100: cannot remap IO\n");
-               goto err_out_free_mmio_region;
-       }
-
-       if (speedo_found1(pdev, ioaddr, cards_found, acpi_idle_state) == 0)
-               cards_found++;
-       else
-               goto err_out_iounmap;
-
-       return 0;
-
-err_out_iounmap: ;
-       pci_iounmap(pdev, ioaddr);
-err_out_free_mmio_region:
-       release_mem_region(pci_resource_start(pdev, 0), pci_resource_len(pdev, 0));
-err_out_free_pio_region:
-       release_region(pci_resource_start(pdev, 1), pci_resource_len(pdev, 1));
-err_out_none:
-       return -ENODEV;
-}
-
-#ifdef CONFIG_NET_POLL_CONTROLLER
-/*
- * Polling 'interrupt' - used by things like netconsole to send skbs
- * without having to re-enable interrupts. It's not called while
- * the interrupt routine is executing.
- */
-
-static void poll_speedo (struct net_device *dev)
-{
-       /* disable_irq is not very nice, but with the funny lockless design
-          we have no other choice. */
-       disable_irq(dev->irq);
-       speedo_interrupt (dev->irq, dev);
-       enable_irq(dev->irq);
-}
-#endif
-
-static int __devinit speedo_found1(struct pci_dev *pdev,
-               void __iomem *ioaddr, int card_idx, int acpi_idle_state)
-{
-       struct net_device *dev;
-       struct speedo_private *sp;
-       const char *product;
-       int i, option;
-       u16 eeprom[0x100];
-       int size;
-       void *tx_ring_space;
-       dma_addr_t tx_ring_dma;
-       DECLARE_MAC_BUF(mac);
-
-       size = TX_RING_SIZE * sizeof(struct TxFD) + sizeof(struct speedo_stats);
-       tx_ring_space = pci_alloc_consistent(pdev, size, &tx_ring_dma);
-       if (tx_ring_space == NULL)
-               return -1;
-
-       dev = alloc_etherdev(sizeof(struct speedo_private));
-       if (dev == NULL) {
-               printk(KERN_ERR "eepro100: Could not allocate ethernet device.\n");
-               pci_free_consistent(pdev, size, tx_ring_space, tx_ring_dma);
-               return -1;
-       }
-
-       SET_NETDEV_DEV(dev, &pdev->dev);
-
-       if (dev->mem_start > 0)
-               option = dev->mem_start;
-       else if (card_idx >= 0  &&  options[card_idx] >= 0)
-               option = options[card_idx];
-       else
-               option = 0;
-
-       rtnl_lock();
-       if (dev_alloc_name(dev, dev->name) < 0)
-               goto err_free_unlock;
-
-       /* Read the station address EEPROM before doing the reset.
-          Nominally his should even be done before accepting the device, but
-          then we wouldn't have a device name with which to report the error.
-          The size test is for 6 bit vs. 8 bit address serial EEPROMs.
-       */
-       {
-               void __iomem *iobase;
-               int read_cmd, ee_size;
-               u16 sum;
-               int j;
-
-               /* Use IO only to avoid postponed writes and satisfy EEPROM timing
-                  requirements. */
-               iobase = pci_iomap(pdev, 1, pci_resource_len(pdev, 1));
-               if (!iobase)
-                       goto err_free_unlock;
-               if ((do_eeprom_cmd(iobase, EE_READ_CMD << 24, 27) & 0xffe0000)
-                       == 0xffe0000) {
-                       ee_size = 0x100;
-                       read_cmd = EE_READ_CMD << 24;
-               } else {
-                       ee_size = 0x40;
-                       read_cmd = EE_READ_CMD << 22;
-               }
-
-               for (j = 0, i = 0, sum = 0; i < ee_size; i++) {
-                       u16 value = do_eeprom_cmd(iobase, read_cmd | (i << 16), 27);
-                       eeprom[i] = value;
-                       sum += value;
-                       if (i < 3) {
-                               dev->dev_addr[j++] = value;
-                               dev->dev_addr[j++] = value >> 8;
-                       }
-               }
-               if (sum != 0xBABA)
-                       printk(KERN_WARNING "%s: Invalid EEPROM checksum %#4.4x, "
-                                  "check settings before activating this device!\n",
-                                  dev->name, sum);
-               /* Don't  unregister_netdev(dev);  as the EEPro may actually be
-                  usable, especially if the MAC address is set later.
-                  On the other hand, it may be unusable if MDI data is corrupted. */
-
-               pci_iounmap(pdev, iobase);
-       }
-
-       /* Reset the chip: stop Tx and Rx processes and clear counters.
-          This takes less than 10usec and will easily finish before the next
-          action. */
-       iowrite32(PortReset, ioaddr + SCBPort);
-       ioread32(ioaddr + SCBPort);
-       udelay(10);
-
-       if (eeprom[3] & 0x0100)
-               product = "OEM i82557/i82558 10/100 Ethernet";
-       else
-               product = pci_name(pdev);
-
-       printk(KERN_INFO "%s: %s, %s, IRQ %d.\n", dev->name, product,
-                  print_mac(mac, dev->dev_addr), pdev->irq);
-
-       sp = netdev_priv(dev);
-
-       /* we must initialize this early, for mdio_{read,write} */
-       sp->regs = ioaddr;
-
-#if 1 || defined(kernel_bloat)
-       /* OK, this is pure kernel bloat.  I don't like it when other drivers
-          waste non-pageable kernel space to emit similar messages, but I need
-          them for bug reports. */
-       {
-               const char *connectors[] = {" RJ45", " BNC", " AUI", " MII"};
-               /* The self-test results must be paragraph aligned. */
-               volatile s32 *self_test_results;
-               int boguscnt = 16000;   /* Timeout for set-test. */
-               if ((eeprom[3] & 0x03) != 0x03)
-                       printk(KERN_INFO "  Receiver lock-up bug exists -- enabling"
-                                  " work-around.\n");
-               printk(KERN_INFO "  Board assembly %4.4x%2.2x-%3.3d, Physical"
-                          " connectors present:",
-                          eeprom[8], eeprom[9]>>8, eeprom[9] & 0xff);
-               for (i = 0; i < 4; i++)
-                       if (eeprom[5] & (1<<i))
-                               printk(connectors[i]);
-               printk("\n"KERN_INFO"  Primary interface chip %s PHY #%d.\n",
-                          phys[(eeprom[6]>>8)&15], eeprom[6] & 0x1f);
-               if (eeprom[7] & 0x0700)
-                       printk(KERN_INFO "    Secondary interface chip %s.\n",
-                                  phys[(eeprom[7]>>8)&7]);
-               if (((eeprom[6]>>8) & 0x3f) == DP83840
-                       ||  ((eeprom[6]>>8) & 0x3f) == DP83840A) {
-                       int mdi_reg23 = mdio_read(dev, eeprom[6] & 0x1f, 23) | 0x0422;
-                       if (congenb)
-                         mdi_reg23 |= 0x0100;
-                       printk(KERN_INFO"  DP83840 specific setup, setting register 23 to %4.4x.\n",
-                                  mdi_reg23);
-                       mdio_write(dev, eeprom[6] & 0x1f, 23, mdi_reg23);
-               }
-               if ((option >= 0) && (option & 0x70)) {
-                       printk(KERN_INFO "  Forcing %dMbs %s-duplex operation.\n",
-                                  (option & 0x20 ? 100 : 10),
-                                  (option & 0x10 ? "full" : "half"));
-                       mdio_write(dev, eeprom[6] & 0x1f, MII_BMCR,
-                                          ((option & 0x20) ? 0x2000 : 0) |     /* 100mbps? */
-                                          ((option & 0x10) ? 0x0100 : 0)); /* Full duplex? */
-               }
-
-               /* Perform a system self-test. */
-               self_test_results = (s32*) ((((long) tx_ring_space) + 15) & ~0xf);
-               self_test_results[0] = 0;
-               self_test_results[1] = -1;
-               iowrite32(tx_ring_dma | PortSelfTest, ioaddr + SCBPort);
-               do {
-                       udelay(10);
-               } while (self_test_results[1] == -1  &&  --boguscnt >= 0);
-
-               if (boguscnt < 0) {             /* Test optimized out. */
-                       printk(KERN_ERR "Self test failed, status %8.8x:\n"
-                                  KERN_ERR " Failure to initialize the i82557.\n"
-                                  KERN_ERR " Verify that the card is a bus-master"
-                                  " capable slot.\n",
-                                  self_test_results[1]);
-               } else
-                       printk(KERN_INFO "  General self-test: %s.\n"
-                                  KERN_INFO "  Serial sub-system self-test: %s.\n"
-                                  KERN_INFO "  Internal registers self-test: %s.\n"
-                                  KERN_INFO "  ROM checksum self-test: %s (%#8.8x).\n",
-                                  self_test_results[1] & 0x1000 ? "failed" : "passed",
-                                  self_test_results[1] & 0x0020 ? "failed" : "passed",
-                                  self_test_results[1] & 0x0008 ? "failed" : "passed",
-                                  self_test_results[1] & 0x0004 ? "failed" : "passed",
-                                  self_test_results[0]);
-       }
-#endif  /* kernel_bloat */
-
-       iowrite32(PortReset, ioaddr + SCBPort);
-       ioread32(ioaddr + SCBPort);
-       udelay(10);
-
-       /* Return the chip to its original power state. */
-       pci_set_power_state(pdev, acpi_idle_state);
-
-       pci_set_drvdata (pdev, dev);
-       SET_NETDEV_DEV(dev, &pdev->dev);
-
-       dev->irq = pdev->irq;
-
-       sp->pdev = pdev;
-       sp->msg_enable = DEBUG;
-       sp->acpi_pwr = acpi_idle_state;
-       sp->tx_ring = tx_ring_space;
-       sp->tx_ring_dma = tx_ring_dma;
-       sp->lstats = (struct speedo_stats *)(sp->tx_ring + TX_RING_SIZE);
-       sp->lstats_dma = TX_RING_ELEM_DMA(sp, TX_RING_SIZE);
-       init_timer(&sp->timer); /* used in ioctl() */
-       spin_lock_init(&sp->lock);
-
-       sp->mii_if.full_duplex = option >= 0 && (option & 0x10) ? 1 : 0;
-       if (card_idx >= 0) {
-               if (full_duplex[card_idx] >= 0)
-                       sp->mii_if.full_duplex = full_duplex[card_idx];
-       }
-       sp->default_port = option >= 0 ? (option & 0x0f) : 0;
-
-       sp->phy[0] = eeprom[6];
-       sp->phy[1] = eeprom[7];
-
-       sp->mii_if.phy_id = eeprom[6] & 0x1f;
-       sp->mii_if.phy_id_mask = 0x1f;
-       sp->mii_if.reg_num_mask = 0x1f;
-       sp->mii_if.dev = dev;
-       sp->mii_if.mdio_read = mdio_read;
-       sp->mii_if.mdio_write = mdio_write;
-
-       sp->rx_bug = (eeprom[3] & 0x03) == 3 ? 0 : 1;
-       if (((pdev->device > 0x1030 && (pdev->device < 0x103F)))
-           || (pdev->device == 0x2449) || (pdev->device == 0x2459)
-            || (pdev->device == 0x245D)) {
-               sp->chip_id = 1;
-       }
-
-       if (sp->rx_bug)
-               printk(KERN_INFO "  Receiver lock-up workaround activated.\n");
-
-       /* The Speedo-specific entries in the device structure. */
-       dev->open = &speedo_open;
-       dev->hard_start_xmit = &speedo_start_xmit;
-       netif_set_tx_timeout(dev, &speedo_tx_timeout, TX_TIMEOUT);
-       dev->stop = &speedo_close;
-       dev->get_stats = &speedo_get_stats;
-       dev->set_multicast_list = &set_rx_mode;
-       dev->do_ioctl = &speedo_ioctl;
-       SET_ETHTOOL_OPS(dev, &ethtool_ops);
-#ifdef CONFIG_NET_POLL_CONTROLLER
-       dev->poll_controller = &poll_speedo;
-#endif
-
-       if (register_netdevice(dev))
-               goto err_free_unlock;
-       rtnl_unlock();
-
-       return 0;
-
- err_free_unlock:
-       rtnl_unlock();
-       free_netdev(dev);
-       return -1;
-}
-
-static void do_slow_command(struct net_device *dev, struct speedo_private *sp, int cmd)
-{
-       void __iomem *cmd_ioaddr = sp->regs + SCBCmd;
-       int wait = 0;
-       do
-               if (ioread8(cmd_ioaddr) == 0) break;
-       while(++wait <= 200);
-       if (wait > 100)
-               printk(KERN_ERR "Command %4.4x never accepted (%d polls)!\n",
-                      ioread8(cmd_ioaddr), wait);
-
-       iowrite8(cmd, cmd_ioaddr);
-
-       for (wait = 0; wait <= 100; wait++)
-               if (ioread8(cmd_ioaddr) == 0) return;
-       for (; wait <= 20000; wait++)
-               if (ioread8(cmd_ioaddr) == 0) return;
-               else udelay(1);
-       printk(KERN_ERR "Command %4.4x was not accepted after %d polls!"
-              "  Current status %8.8x.\n",
-              cmd, wait, ioread32(sp->regs + SCBStatus));
-}
-
-/* Serial EEPROM section.
-   A "bit" grungy, but we work our way through bit-by-bit :->. */
-/*  EEPROM_Ctrl bits. */
-#define EE_SHIFT_CLK   0x01    /* EEPROM shift clock. */
-#define EE_CS                  0x02    /* EEPROM chip select. */
-#define EE_DATA_WRITE  0x04    /* EEPROM chip data in. */
-#define EE_DATA_READ   0x08    /* EEPROM chip data out. */
-#define EE_ENB                 (0x4800 | EE_CS)
-#define EE_WRITE_0             0x4802
-#define EE_WRITE_1             0x4806
-#define EE_OFFSET              SCBeeprom
-
-/* The fixes for the code were kindly provided by Dragan Stancevic
-   <visitor@valinux.com> to strictly follow Intel specifications of EEPROM
-   access timing.
-   The publicly available sheet 64486302 (sec. 3.1) specifies 1us access
-   interval for serial EEPROM.  However, it looks like that there is an
-   additional requirement dictating larger udelay's in the code below.
-   2000/05/24  SAW */
-static int __devinit do_eeprom_cmd(void __iomem *ioaddr, int cmd, int cmd_len)
-{
-       unsigned retval = 0;
-       void __iomem *ee_addr = ioaddr + SCBeeprom;
-
-       iowrite16(EE_ENB, ee_addr); udelay(2);
-       iowrite16(EE_ENB | EE_SHIFT_CLK, ee_addr); udelay(2);
-
-       /* Shift the command bits out. */
-       do {
-               short dataval = (cmd & (1 << cmd_len)) ? EE_WRITE_1 : EE_WRITE_0;
-               iowrite16(dataval, ee_addr); udelay(2);
-               iowrite16(dataval | EE_SHIFT_CLK, ee_addr); udelay(2);
-               retval = (retval << 1) | ((ioread16(ee_addr) & EE_DATA_READ) ? 1 : 0);
-       } while (--cmd_len >= 0);
-       iowrite16(EE_ENB, ee_addr); udelay(2);
-
-       /* Terminate the EEPROM access. */
-       iowrite16(EE_ENB & ~EE_CS, ee_addr);
-       return retval;
-}
-
-static int mdio_read(struct net_device *dev, int phy_id, int location)
-{
-       struct speedo_private *sp = netdev_priv(dev);
-       void __iomem *ioaddr = sp->regs;
-       int val, boguscnt = 64*10;              /* <64 usec. to complete, typ 27 ticks */
-       iowrite32(0x08000000 | (location<<16) | (phy_id<<21), ioaddr + SCBCtrlMDI);
-       do {
-               val = ioread32(ioaddr + SCBCtrlMDI);
-               if (--boguscnt < 0) {
-                       printk(KERN_ERR " mdio_read() timed out with val = %8.8x.\n", val);
-                       break;
-               }
-       } while (! (val & 0x10000000));
-       return val & 0xffff;
-}
-
-static void mdio_write(struct net_device *dev, int phy_id, int location, int value)
-{
-       struct speedo_private *sp = netdev_priv(dev);
-       void __iomem *ioaddr = sp->regs;
-       int val, boguscnt = 64*10;              /* <64 usec. to complete, typ 27 ticks */
-       iowrite32(0x04000000 | (location<<16) | (phy_id<<21) | value,
-                ioaddr + SCBCtrlMDI);
-       do {
-               val = ioread32(ioaddr + SCBCtrlMDI);
-               if (--boguscnt < 0) {
-                       printk(KERN_ERR" mdio_write() timed out with val = %8.8x.\n", val);
-                       break;
-               }
-       } while (! (val & 0x10000000));
-}
-
-static int
-speedo_open(struct net_device *dev)
-{
-       struct speedo_private *sp = netdev_priv(dev);
-       void __iomem *ioaddr = sp->regs;
-       int retval;
-
-       if (netif_msg_ifup(sp))
-               printk(KERN_DEBUG "%s: speedo_open() irq %d.\n", dev->name, dev->irq);
-
-       pci_set_power_state(sp->pdev, PCI_D0);
-
-       /* Set up the Tx queue early.. */
-       sp->cur_tx = 0;
-       sp->dirty_tx = 0;
-       sp->last_cmd = NULL;
-       sp->tx_full = 0;
-       sp->in_interrupt = 0;
-
-       /* .. we can safely take handler calls during init. */
-       retval = request_irq(dev->irq, &speedo_interrupt, IRQF_SHARED, dev->name, dev);
-       if (retval) {
-               return retval;
-       }
-
-       dev->if_port = sp->default_port;
-
-#ifdef oh_no_you_dont_unless_you_honour_the_options_passed_in_to_us
-       /* Retrigger negotiation to reset previous errors. */
-       if ((sp->phy[0] & 0x8000) == 0) {
-               int phy_addr = sp->phy[0] & 0x1f ;
-               /* Use 0x3300 for restarting NWay, other values to force xcvr:
-                  0x0000 10-HD
-                  0x0100 10-FD
-                  0x2000 100-HD
-                  0x2100 100-FD
-               */
-#ifdef honor_default_port
-               mdio_write(dev, phy_addr, MII_BMCR, mii_ctrl[dev->default_port & 7]);
-#else
-               mdio_write(dev, phy_addr, MII_BMCR, 0x3300);
-#endif
-       }
-#endif
-
-       speedo_init_rx_ring(dev);
-
-       /* Fire up the hardware. */
-       iowrite16(SCBMaskAll, ioaddr + SCBCmd);
-       speedo_resume(dev);
-
-       netdevice_start(dev);
-       netif_start_queue(dev);
-
-       /* Setup the chip and configure the multicast list. */
-       sp->mc_setup_head = NULL;
-       sp->mc_setup_tail = NULL;
-       sp->flow_ctrl = sp->partner = 0;
-       sp->rx_mode = -1;                       /* Invalid -> always reset the mode. */
-       set_rx_mode(dev);
-       if ((sp->phy[0] & 0x8000) == 0)
-               sp->mii_if.advertising = mdio_read(dev, sp->phy[0] & 0x1f, MII_ADVERTISE);
-
-       mii_check_link(&sp->mii_if);
-
-       if (netif_msg_ifup(sp)) {
-               printk(KERN_DEBUG "%s: Done speedo_open(), status %8.8x.\n",
-                          dev->name, ioread16(ioaddr + SCBStatus));
-       }
-
-       /* Set the timer.  The timer serves a dual purpose:
-          1) to monitor the media interface (e.g. link beat) and perhaps switch
-          to an alternate media type
-          2) to monitor Rx activity, and restart the Rx process if the receiver
-          hangs. */
-       sp->timer.expires = RUN_AT((24*HZ)/10);                         /* 2.4 sec. */
-       sp->timer.data = (unsigned long)dev;
-       sp->timer.function = &speedo_timer;                                     /* timer handler */
-       add_timer(&sp->timer);
-
-       /* No need to wait for the command unit to accept here. */
-       if ((sp->phy[0] & 0x8000) == 0)
-               mdio_read(dev, sp->phy[0] & 0x1f, MII_BMCR);
-
-       return 0;
-}
-
-/* Start the chip hardware after a full reset. */
-static void speedo_resume(struct net_device *dev)
-{
-       struct speedo_private *sp = netdev_priv(dev);
-       void __iomem *ioaddr = sp->regs;
-
-       /* Start with a Tx threshold of 256 (0x..20.... 8 byte units). */
-       sp->tx_threshold = 0x01208000;
-
-       /* Set the segment registers to '0'. */
-       if (wait_for_cmd_done(dev, sp) != 0) {
-               iowrite32(PortPartialReset, ioaddr + SCBPort);
-               udelay(10);
-       }
-
-        iowrite32(0, ioaddr + SCBPointer);
-        ioread32(ioaddr + SCBPointer);                 /* Flush to PCI. */
-        udelay(10);                    /* Bogus, but it avoids the bug. */
-
-        /* Note: these next two operations can take a while. */
-        do_slow_command(dev, sp, RxAddrLoad);
-        do_slow_command(dev, sp, CUCmdBase);
-
-       /* Load the statistics block and rx ring addresses. */
-       iowrite32(sp->lstats_dma, ioaddr + SCBPointer);
-       ioread32(ioaddr + SCBPointer);                  /* Flush to PCI */
-
-       iowrite8(CUStatsAddr, ioaddr + SCBCmd);
-       sp->lstats->done_marker = 0;
-       wait_for_cmd_done(dev, sp);
-
-       if (sp->rx_ringp[sp->cur_rx % RX_RING_SIZE] == NULL) {
-               if (netif_msg_rx_err(sp))
-                       printk(KERN_DEBUG "%s: NULL cur_rx in speedo_resume().\n",
-                                       dev->name);
-       } else {
-               iowrite32(sp->rx_ring_dma[sp->cur_rx % RX_RING_SIZE],
-                        ioaddr + SCBPointer);
-               ioread32(ioaddr + SCBPointer);          /* Flush to PCI */
-       }
-
-       /* Note: RxStart should complete instantly. */
-       do_slow_command(dev, sp, RxStart);
-       do_slow_command(dev, sp, CUDumpStats);
-
-       /* Fill the first command with our physical address. */
-       {
-               struct descriptor *ias_cmd;
-
-               ias_cmd =
-                       (struct descriptor *)&sp->tx_ring[sp->cur_tx++ % TX_RING_SIZE];
-               /* Avoid a bug(?!) here by marking the command already completed. */
-               ias_cmd->cmd_status = cpu_to_le32((CmdSuspend | CmdIASetup) | 0xa000);
-               ias_cmd->link =
-                       cpu_to_le32(TX_RING_ELEM_DMA(sp, sp->cur_tx % TX_RING_SIZE));
-               memcpy(ias_cmd->params, dev->dev_addr, 6);
-               if (sp->last_cmd)
-                       clear_suspend(sp->last_cmd);
-               sp->last_cmd = ias_cmd;
-       }
-
-       /* Start the chip's Tx process and unmask interrupts. */
-       iowrite32(TX_RING_ELEM_DMA(sp, sp->dirty_tx % TX_RING_SIZE),
-                ioaddr + SCBPointer);
-       /* We are not ACK-ing FCP and ER in the interrupt handler yet so they should
-          remain masked --Dragan */
-       iowrite16(CUStart | SCBMaskEarlyRx | SCBMaskFlowCtl, ioaddr + SCBCmd);
-}
-
-/*
- * Sometimes the receiver stops making progress.  This routine knows how to
- * get it going again, without losing packets or being otherwise nasty like
- * a chip reset would be.  Previously the driver had a whole sequence
- * of if RxSuspended, if it's no buffers do one thing, if it's no resources,
- * do another, etc.  But those things don't really matter.  Separate logic
- * in the ISR provides for allocating buffers--the other half of operation
- * is just making sure the receiver is active.  speedo_rx_soft_reset does that.
- * This problem with the old, more involved algorithm is shown up under
- * ping floods on the order of 60K packets/second on a 100Mbps fdx network.
- */
-static void
-speedo_rx_soft_reset(struct net_device *dev)
-{
-       struct speedo_private *sp = netdev_priv(dev);
-       struct RxFD *rfd;
-       void __iomem *ioaddr;
-
-       ioaddr = sp->regs;
-       if (wait_for_cmd_done(dev, sp) != 0) {
-               printk("%s: previous command stalled\n", dev->name);
-               return;
-       }
-       /*
-       * Put the hardware into a known state.
-       */
-       iowrite8(RxAbort, ioaddr + SCBCmd);
-
-       rfd = sp->rx_ringp[sp->cur_rx % RX_RING_SIZE];
-
-       rfd->rx_buf_addr = cpu_to_le32(0xffffffff);
-
-       if (wait_for_cmd_done(dev, sp) != 0) {
-               printk("%s: RxAbort command stalled\n", dev->name);
-               return;
-       }
-       iowrite32(sp->rx_ring_dma[sp->cur_rx % RX_RING_SIZE],
-               ioaddr + SCBPointer);
-       iowrite8(RxStart, ioaddr + SCBCmd);
-}
-
-
-/* Media monitoring and control. */
-static void speedo_timer(unsigned long data)
-{
-       struct net_device *dev = (struct net_device *)data;
-       struct speedo_private *sp = netdev_priv(dev);
-       void __iomem *ioaddr = sp->regs;
-       int phy_num = sp->phy[0] & 0x1f;
-
-       /* We have MII and lost link beat. */
-       if ((sp->phy[0] & 0x8000) == 0) {
-               int partner = mdio_read(dev, phy_num, MII_LPA);
-               if (partner != sp->partner) {
-                       int flow_ctrl = sp->mii_if.advertising & partner & 0x0400 ? 1 : 0;
-                       if (netif_msg_link(sp)) {
-                               printk(KERN_DEBUG "%s: Link status change.\n", dev->name);
-                               printk(KERN_DEBUG "%s: Old partner %x, new %x, adv %x.\n",
-                                          dev->name, sp->partner, partner, sp->mii_if.advertising);
-                       }
-                       sp->partner = partner;
-                       if (flow_ctrl != sp->flow_ctrl) {
-                               sp->flow_ctrl = flow_ctrl;
-                               sp->rx_mode = -1;       /* Trigger a reload. */
-                       }
-               }
-       }
-       mii_check_link(&sp->mii_if);
-       if (netif_msg_timer(sp)) {
-               printk(KERN_DEBUG "%s: Media control tick, status %4.4x.\n",
-                          dev->name, ioread16(ioaddr + SCBStatus));
-       }
-       if (sp->rx_mode < 0  ||
-               (sp->rx_bug  && jiffies - sp->last_rx_time > 2*HZ)) {
-               /* We haven't received a packet in a Long Time.  We might have been
-                  bitten by the receiver hang bug.  This can be cleared by sending
-                  a set multicast list command. */
-               if (netif_msg_timer(sp))
-                       printk(KERN_DEBUG "%s: Sending a multicast list set command"
-                                  " from a timer routine,"
-                                  " m=%d, j=%ld, l=%ld.\n",
-                                  dev->name, sp->rx_mode, jiffies, sp->last_rx_time);
-               set_rx_mode(dev);
-       }
-       /* We must continue to monitor the media. */
-       sp->timer.expires = RUN_AT(2*HZ);                       /* 2.0 sec. */
-       add_timer(&sp->timer);
-}
-
-static void speedo_show_state(struct net_device *dev)
-{
-       struct speedo_private *sp = netdev_priv(dev);
-       int i;
-
-       if (netif_msg_pktdata(sp)) {
-               printk(KERN_DEBUG "%s: Tx ring dump,  Tx queue %u / %u:\n",
-                   dev->name, sp->cur_tx, sp->dirty_tx);
-               for (i = 0; i < TX_RING_SIZE; i++)
-                       printk(KERN_DEBUG "%s:  %c%c%2d %8.8x.\n", dev->name,
-                           i == sp->dirty_tx % TX_RING_SIZE ? '*' : ' ',
-                           i == sp->cur_tx % TX_RING_SIZE ? '=' : ' ',
-                           i, sp->tx_ring[i].status);
-
-               printk(KERN_DEBUG "%s: Printing Rx ring"
-                   " (next to receive into %u, dirty index %u).\n",
-                   dev->name, sp->cur_rx, sp->dirty_rx);
-               for (i = 0; i < RX_RING_SIZE; i++)
-                       printk(KERN_DEBUG "%s: %c%c%c%2d %8.8x.\n", dev->name,
-                           sp->rx_ringp[i] == sp->last_rxf ? 'l' : ' ',
-                           i == sp->dirty_rx % RX_RING_SIZE ? '*' : ' ',
-                           i == sp->cur_rx % RX_RING_SIZE ? '=' : ' ',
-                           i, (sp->rx_ringp[i] != NULL) ?
-                           (unsigned)sp->rx_ringp[i]->status : 0);
-       }
-
-#if 0
-       {
-               void __iomem *ioaddr = sp->regs;
-               int phy_num = sp->phy[0] & 0x1f;
-               for (i = 0; i < 16; i++) {
-                       /* FIXME: what does it mean?  --SAW */
-                       if (i == 6) i = 21;
-                       printk(KERN_DEBUG "%s:  PHY index %d register %d is %4.4x.\n",
-                                  dev->name, phy_num, i, mdio_read(dev, phy_num, i));
-               }
-       }
-#endif
-
-}
-
-/* Initialize the Rx and Tx rings, along with various 'dev' bits. */
-static void
-speedo_init_rx_ring(struct net_device *dev)
-{
-       struct speedo_private *sp = netdev_priv(dev);
-       struct RxFD *rxf, *last_rxf = NULL;
-       dma_addr_t last_rxf_dma = 0 /* to shut up the compiler */;
-       int i;
-
-       sp->cur_rx = 0;
-
-       for (i = 0; i < RX_RING_SIZE; i++) {
-               struct sk_buff *skb;
-               skb = dev_alloc_skb(PKT_BUF_SZ + sizeof(struct RxFD));
-               if (skb)
-                       rx_align(skb);        /* Align IP on 16 byte boundary */
-               sp->rx_skbuff[i] = skb;
-               if (skb == NULL)
-                       break;                  /* OK.  Just initially short of Rx bufs. */
-               skb->dev = dev;                 /* Mark as being used by this device. */
-               rxf = (struct RxFD *)skb->data;
-               sp->rx_ringp[i] = rxf;
-               sp->rx_ring_dma[i] =
-                       pci_map_single(sp->pdev, rxf,
-                                       PKT_BUF_SZ + sizeof(struct RxFD), PCI_DMA_BIDIRECTIONAL);
-               skb_reserve(skb, sizeof(struct RxFD));
-               if (last_rxf) {
-                       last_rxf->link = cpu_to_le32(sp->rx_ring_dma[i]);
-                       pci_dma_sync_single_for_device(sp->pdev, last_rxf_dma,
-                                                                                  sizeof(struct RxFD), PCI_DMA_TODEVICE);
-               }
-               last_rxf = rxf;
-               last_rxf_dma = sp->rx_ring_dma[i];
-               rxf->status = cpu_to_le32(0x00000001);  /* '1' is flag value only. */
-               rxf->link = 0;                                          /* None yet. */
-               /* This field unused by i82557. */
-               rxf->rx_buf_addr = cpu_to_le32(0xffffffff);
-               rxf->count = cpu_to_le32(PKT_BUF_SZ << 16);
-               pci_dma_sync_single_for_device(sp->pdev, sp->rx_ring_dma[i],
-                                                                          sizeof(struct RxFD), PCI_DMA_TODEVICE);
-       }
-       sp->dirty_rx = (unsigned int)(i - RX_RING_SIZE);
-       /* Mark the last entry as end-of-list. */
-       last_rxf->status = cpu_to_le32(0xC0000002);     /* '2' is flag value only. */
-       pci_dma_sync_single_for_device(sp->pdev, sp->rx_ring_dma[RX_RING_SIZE-1],
-                                                                  sizeof(struct RxFD), PCI_DMA_TODEVICE);
-       sp->last_rxf = last_rxf;
-       sp->last_rxf_dma = last_rxf_dma;
-}
-
-static void speedo_purge_tx(struct net_device *dev)
-{
-       struct speedo_private *sp = netdev_priv(dev);
-       int entry;
-
-       while ((int)(sp->cur_tx - sp->dirty_tx) > 0) {
-               entry = sp->dirty_tx % TX_RING_SIZE;
-               if (sp->tx_skbuff[entry]) {
-                       sp->stats.tx_errors++;
-                       pci_unmap_single(sp->pdev,
-                                       le32_to_cpu(sp->tx_ring[entry].tx_buf_addr0),
-                                       sp->tx_skbuff[entry]->len, PCI_DMA_TODEVICE);
-                       dev_kfree_skb_irq(sp->tx_skbuff[entry]);
-                       sp->tx_skbuff[entry] = NULL;
-               }
-               sp->dirty_tx++;
-       }
-       while (sp->mc_setup_head != NULL) {
-               struct speedo_mc_block *t;
-               if (netif_msg_tx_err(sp))
-                       printk(KERN_DEBUG "%s: freeing mc frame.\n", dev->name);
-               pci_unmap_single(sp->pdev, sp->mc_setup_head->frame_dma,
-                               sp->mc_setup_head->len, PCI_DMA_TODEVICE);
-               t = sp->mc_setup_head->next;
-               kfree(sp->mc_setup_head);
-               sp->mc_setup_head = t;
-       }
-       sp->mc_setup_tail = NULL;
-       sp->tx_full = 0;
-       netif_wake_queue(dev);
-}
-
-static void reset_mii(struct net_device *dev)
-{
-       struct speedo_private *sp = netdev_priv(dev);
-
-       /* Reset the MII transceiver, suggested by Fred Young @ scalable.com. */
-       if ((sp->phy[0] & 0x8000) == 0) {
-               int phy_addr = sp->phy[0] & 0x1f;
-               int advertising = mdio_read(dev, phy_addr, MII_ADVERTISE);
-               int mii_bmcr = mdio_read(dev, phy_addr, MII_BMCR);
-               mdio_write(dev, phy_addr, MII_BMCR, 0x0400);
-               mdio_write(dev, phy_addr, MII_BMSR, 0x0000);
-               mdio_write(dev, phy_addr, MII_ADVERTISE, 0x0000);
-               mdio_write(dev, phy_addr, MII_BMCR, 0x8000);
-#ifdef honor_default_port
-               mdio_write(dev, phy_addr, MII_BMCR, mii_ctrl[dev->default_port & 7]);
-#else
-               mdio_read(dev, phy_addr, MII_BMCR);
-               mdio_write(dev, phy_addr, MII_BMCR, mii_bmcr);
-               mdio_write(dev, phy_addr, MII_ADVERTISE, advertising);
-#endif
-       }
-}
-
-static void speedo_tx_timeout(struct net_device *dev)
-{
-       struct speedo_private *sp = netdev_priv(dev);
-       void __iomem *ioaddr = sp->regs;
-       int status = ioread16(ioaddr + SCBStatus);
-       unsigned long flags;
-
-       if (netif_msg_tx_err(sp)) {
-               printk(KERN_WARNING "%s: Transmit timed out: status %4.4x "
-                  " %4.4x at %d/%d command %8.8x.\n",
-                  dev->name, status, ioread16(ioaddr + SCBCmd),
-                  sp->dirty_tx, sp->cur_tx,
-                  sp->tx_ring[sp->dirty_tx % TX_RING_SIZE].status);
-
-       }
-       speedo_show_state(dev);
-#if 0
-       if ((status & 0x00C0) != 0x0080
-               &&  (status & 0x003C) == 0x0010) {
-               /* Only the command unit has stopped. */
-               printk(KERN_WARNING "%s: Trying to restart the transmitter...\n",
-                          dev->name);
-               iowrite32(TX_RING_ELEM_DMA(sp, dirty_tx % TX_RING_SIZE]),
-                        ioaddr + SCBPointer);
-               iowrite16(CUStart, ioaddr + SCBCmd);
-               reset_mii(dev);
-       } else {
-#else
-       {
-#endif
-               del_timer_sync(&sp->timer);
-               /* Reset the Tx and Rx units. */
-               iowrite32(PortReset, ioaddr + SCBPort);
-               /* We may get spurious interrupts here.  But I don't think that they
-                  may do much harm.  1999/12/09 SAW */
-               udelay(10);
-               /* Disable interrupts. */
-               iowrite16(SCBMaskAll, ioaddr + SCBCmd);
-               synchronize_irq(dev->irq);
-               speedo_tx_buffer_gc(dev);
-               /* Free as much as possible.
-                  It helps to recover from a hang because of out-of-memory.
-                  It also simplifies speedo_resume() in case TX ring is full or
-                  close-to-be full. */
-               speedo_purge_tx(dev);
-               speedo_refill_rx_buffers(dev, 1);
-               spin_lock_irqsave(&sp->lock, flags);
-               speedo_resume(dev);
-               sp->rx_mode = -1;
-               dev->trans_start = jiffies;
-               spin_unlock_irqrestore(&sp->lock, flags);
-               set_rx_mode(dev); /* it takes the spinlock itself --SAW */
-               /* Reset MII transceiver.  Do it before starting the timer to serialize
-                  mdio_xxx operations.  Yes, it's a paranoya :-)  2000/05/09 SAW */
-               reset_mii(dev);
-               sp->timer.expires = RUN_AT(2*HZ);
-               add_timer(&sp->timer);
-       }
-       return;
-}
-
-static int
-speedo_start_xmit(struct sk_buff *skb, struct net_device *dev)
-{
-       struct speedo_private *sp = netdev_priv(dev);
-       void __iomem *ioaddr = sp->regs;
-       int entry;
-
-       /* Prevent interrupts from changing the Tx ring from underneath us. */
-       unsigned long flags;
-
-       spin_lock_irqsave(&sp->lock, flags);
-
-       /* Check if there are enough space. */
-       if ((int)(sp->cur_tx - sp->dirty_tx) >= TX_QUEUE_LIMIT) {
-               printk(KERN_ERR "%s: incorrect tbusy state, fixed.\n", dev->name);
-               netif_stop_queue(dev);
-               sp->tx_full = 1;
-               spin_unlock_irqrestore(&sp->lock, flags);
-               return 1;
-       }
-
-       /* Calculate the Tx descriptor entry. */
-       entry = sp->cur_tx++ % TX_RING_SIZE;
-
-       sp->tx_skbuff[entry] = skb;
-       sp->tx_ring[entry].status =
-               cpu_to_le32(CmdSuspend | CmdTx | CmdTxFlex);
-       if (!(entry & ((TX_RING_SIZE>>2)-1)))
-               sp->tx_ring[entry].status |= cpu_to_le32(CmdIntr);
-       sp->tx_ring[entry].link =
-               cpu_to_le32(TX_RING_ELEM_DMA(sp, sp->cur_tx % TX_RING_SIZE));
-       sp->tx_ring[entry].tx_desc_addr =
-               cpu_to_le32(TX_RING_ELEM_DMA(sp, entry) + TX_DESCR_BUF_OFFSET);
-       /* The data region is always in one buffer descriptor. */
-       sp->tx_ring[entry].count = cpu_to_le32(sp->tx_threshold);
-       sp->tx_ring[entry].tx_buf_addr0 =
-               cpu_to_le32(pci_map_single(sp->pdev, skb->data,
-                                          skb->len, PCI_DMA_TODEVICE));
-       sp->tx_ring[entry].tx_buf_size0 = cpu_to_le32(skb->len);
-
-       /* workaround for hardware bug on 10 mbit half duplex */
-
-       if ((sp->partner == 0) && (sp->chip_id == 1)) {
-               wait_for_cmd_done(dev, sp);
-               iowrite8(0 , ioaddr + SCBCmd);
-               udelay(1);
-       }
-
-       /* Trigger the command unit resume. */
-       wait_for_cmd_done(dev, sp);
-       clear_suspend(sp->last_cmd);
-       /* We want the time window between clearing suspend flag on the previous
-          command and resuming CU to be as small as possible.
-          Interrupts in between are very undesired.  --SAW */
-       iowrite8(CUResume, ioaddr + SCBCmd);
-       sp->last_cmd = (struct descriptor *)&sp->tx_ring[entry];
-
-       /* Leave room for set_rx_mode(). If there is no more space than reserved
-          for multicast filter mark the ring as full. */
-       if ((int)(sp->cur_tx - sp->dirty_tx) >= TX_QUEUE_LIMIT) {
-               netif_stop_queue(dev);
-               sp->tx_full = 1;
-       }
-
-       spin_unlock_irqrestore(&sp->lock, flags);
-
-       dev->trans_start = jiffies;
-
-       return 0;
-}
-
-static void speedo_tx_buffer_gc(struct net_device *dev)
-{
-       unsigned int dirty_tx;
-       struct speedo_private *sp = netdev_priv(dev);
-
-       dirty_tx = sp->dirty_tx;
-       while ((int)(sp->cur_tx - dirty_tx) > 0) {
-               int entry = dirty_tx % TX_RING_SIZE;
-               int status = le32_to_cpu(sp->tx_ring[entry].status);
-
-               if (netif_msg_tx_done(sp))
-                       printk(KERN_DEBUG " scavenge candidate %d status %4.4x.\n",
-                                  entry, status);
-               if ((status & StatusComplete) == 0)
-                       break;                  /* It still hasn't been processed. */
-               if (status & TxUnderrun)
-                       if (sp->tx_threshold < 0x01e08000) {
-                               if (netif_msg_tx_err(sp))
-                                       printk(KERN_DEBUG "%s: TX underrun, threshold adjusted.\n",
-                                                  dev->name);
-                               sp->tx_threshold += 0x00040000;
-                       }
-               /* Free the original skb. */
-               if (sp->tx_skbuff[entry]) {
-                       sp->stats.tx_packets++; /* Count only user packets. */
-                       sp->stats.tx_bytes += sp->tx_skbuff[entry]->len;
-                       pci_unmap_single(sp->pdev,
-                                       le32_to_cpu(sp->tx_ring[entry].tx_buf_addr0),
-                                       sp->tx_skbuff[entry]->len, PCI_DMA_TODEVICE);
-                       dev_kfree_skb_irq(sp->tx_skbuff[entry]);
-                       sp->tx_skbuff[entry] = NULL;
-               }
-               dirty_tx++;
-       }
-
-       if (netif_msg_tx_err(sp) && (int)(sp->cur_tx - dirty_tx) > TX_RING_SIZE) {
-               printk(KERN_ERR "out-of-sync dirty pointer, %d vs. %d,"
-                          " full=%d.\n",
-                          dirty_tx, sp->cur_tx, sp->tx_full);
-               dirty_tx += TX_RING_SIZE;
-       }
-
-       while (sp->mc_setup_head != NULL
-                  && (int)(dirty_tx - sp->mc_setup_head->tx - 1) > 0) {
-               struct speedo_mc_block *t;
-               if (netif_msg_tx_err(sp))
-                       printk(KERN_DEBUG "%s: freeing mc frame.\n", dev->name);
-               pci_unmap_single(sp->pdev, sp->mc_setup_head->frame_dma,
-                               sp->mc_setup_head->len, PCI_DMA_TODEVICE);
-               t = sp->mc_setup_head->next;
-               kfree(sp->mc_setup_head);
-               sp->mc_setup_head = t;
-       }
-       if (sp->mc_setup_head == NULL)
-               sp->mc_setup_tail = NULL;
-
-       sp->dirty_tx = dirty_tx;
-}
-
-/* The interrupt handler does all of the Rx thread work and cleans up
-   after the Tx thread. */
-static irqreturn_t speedo_interrupt(int irq, void *dev_instance)
-{
-       struct net_device *dev = (struct net_device *)dev_instance;
-       struct speedo_private *sp;
-       void __iomem *ioaddr;
-       long boguscnt = max_interrupt_work;
-       unsigned short status;
-       unsigned int handled = 0;
-
-       sp = netdev_priv(dev);
-       ioaddr = sp->regs;
-
-#ifndef final_version
-       /* A lock to prevent simultaneous entry on SMP machines. */
-       if (test_and_set_bit(0, (void*)&sp->in_interrupt)) {
-               printk(KERN_ERR"%s: SMP simultaneous entry of an interrupt handler.\n",
-                          dev->name);
-               sp->in_interrupt = 0;   /* Avoid halting machine. */
-               return IRQ_NONE;
-       }
-#endif
-
-       do {
-               status = ioread16(ioaddr + SCBStatus);
-               /* Acknowledge all of the current interrupt sources ASAP. */
-               /* Will change from 0xfc00 to 0xff00 when we start handling
-                  FCP and ER interrupts --Dragan */
-               iowrite16(status & 0xfc00, ioaddr + SCBStatus);
-
-               if (netif_msg_intr(sp))
-                       printk(KERN_DEBUG "%s: interrupt  status=%#4.4x.\n",
-                                  dev->name, status);
-
-               if ((status & 0xfc00) == 0)
-                       break;
-               handled = 1;
-
-
-               if ((status & 0x5000) ||        /* Packet received, or Rx error. */
-                       (sp->rx_ring_state&(RrNoMem|RrPostponed)) == RrPostponed)
-                                                                       /* Need to gather the postponed packet. */
-                       speedo_rx(dev);
-
-               /* Always check if all rx buffers are allocated.  --SAW */
-               speedo_refill_rx_buffers(dev, 0);
-
-               spin_lock(&sp->lock);
-               /*
-                * The chip may have suspended reception for various reasons.
-                * Check for that, and re-prime it should this be the case.
-                */
-               switch ((status >> 2) & 0xf) {
-               case 0: /* Idle */
-                       break;
-               case 1: /* Suspended */
-               case 2: /* No resources (RxFDs) */
-               case 9: /* Suspended with no more RBDs */
-               case 10: /* No resources due to no RBDs */
-               case 12: /* Ready with no RBDs */
-                       speedo_rx_soft_reset(dev);
-                       break;
-               case 3:  case 5:  case 6:  case 7:  case 8:
-               case 11:  case 13:  case 14:  case 15:
-                       /* these are all reserved values */
-                       break;
-               }
-
-
-               /* User interrupt, Command/Tx unit interrupt or CU not active. */
-               if (status & 0xA400) {
-                       speedo_tx_buffer_gc(dev);
-                       if (sp->tx_full
-                               && (int)(sp->cur_tx - sp->dirty_tx) < TX_QUEUE_UNFULL) {
-                               /* The ring is no longer full. */
-                               sp->tx_full = 0;
-                               netif_wake_queue(dev); /* Attention: under a spinlock.  --SAW */
-                       }
-               }
-
-               spin_unlock(&sp->lock);
-
-               if (--boguscnt < 0) {
-                       printk(KERN_ERR "%s: Too much work at interrupt, status=0x%4.4x.\n",
-                                  dev->name, status);
-                       /* Clear all interrupt sources. */
-                       /* Will change from 0xfc00 to 0xff00 when we start handling
-                          FCP and ER interrupts --Dragan */
-                       iowrite16(0xfc00, ioaddr + SCBStatus);
-                       break;
-               }
-       } while (1);
-
-       if (netif_msg_intr(sp))
-               printk(KERN_DEBUG "%s: exiting interrupt, status=%#4.4x.\n",
-                          dev->name, ioread16(ioaddr + SCBStatus));
-
-       clear_bit(0, (void*)&sp->in_interrupt);
-       return IRQ_RETVAL(handled);
-}
-
-static inline struct RxFD *speedo_rx_alloc(struct net_device *dev, int entry)
-{
-       struct speedo_private *sp = netdev_priv(dev);
-       struct RxFD *rxf;
-       struct sk_buff *skb;
-       /* Get a fresh skbuff to replace the consumed one. */
-       skb = dev_alloc_skb(PKT_BUF_SZ + sizeof(struct RxFD));
-       if (skb)
-               rx_align(skb);          /* Align IP on 16 byte boundary */
-       sp->rx_skbuff[entry] = skb;
-       if (skb == NULL) {
-               sp->rx_ringp[entry] = NULL;
-               return NULL;
-       }
-       rxf = sp->rx_ringp[entry] = (struct RxFD *)skb->data;
-       sp->rx_ring_dma[entry] =
-               pci_map_single(sp->pdev, rxf,
-                                          PKT_BUF_SZ + sizeof(struct RxFD), PCI_DMA_FROMDEVICE);
-       skb->dev = dev;
-       skb_reserve(skb, sizeof(struct RxFD));
-       rxf->rx_buf_addr = cpu_to_le32(0xffffffff);
-       pci_dma_sync_single_for_device(sp->pdev, sp->rx_ring_dma[entry],
-                                                                  sizeof(struct RxFD), PCI_DMA_TODEVICE);
-       return rxf;
-}
-
-static inline void speedo_rx_link(struct net_device *dev, int entry,
-                                                                 struct RxFD *rxf, dma_addr_t rxf_dma)
-{
-       struct speedo_private *sp = netdev_priv(dev);
-       rxf->status = cpu_to_le32(0xC0000001);  /* '1' for driver use only. */
-       rxf->link = 0;                  /* None yet. */
-       rxf->count = cpu_to_le32(PKT_BUF_SZ << 16);
-       sp->last_rxf->link = cpu_to_le32(rxf_dma);
-       sp->last_rxf->status &= cpu_to_le32(~0xC0000000);
-       pci_dma_sync_single_for_device(sp->pdev, sp->last_rxf_dma,
-                                                                  sizeof(struct RxFD), PCI_DMA_TODEVICE);
-       sp->last_rxf = rxf;
-       sp->last_rxf_dma = rxf_dma;
-}
-
-static int speedo_refill_rx_buf(struct net_device *dev, int force)
-{
-       struct speedo_private *sp = netdev_priv(dev);
-       int entry;
-       struct RxFD *rxf;
-
-       entry = sp->dirty_rx % RX_RING_SIZE;
-       if (sp->rx_skbuff[entry] == NULL) {
-               rxf = speedo_rx_alloc(dev, entry);
-               if (rxf == NULL) {
-                       unsigned int forw;
-                       int forw_entry;
-                       if (netif_msg_rx_err(sp) || !(sp->rx_ring_state & RrOOMReported)) {
-                               printk(KERN_WARNING "%s: can't fill rx buffer (force %d)!\n",
-                                               dev->name, force);
-                               sp->rx_ring_state |= RrOOMReported;
-                       }
-                       speedo_show_state(dev);
-                       if (!force)
-                               return -1;      /* Better luck next time!  */
-                       /* Borrow an skb from one of next entries. */
-                       for (forw = sp->dirty_rx + 1; forw != sp->cur_rx; forw++)
-                               if (sp->rx_skbuff[forw % RX_RING_SIZE] != NULL)
-                                       break;
-                       if (forw == sp->cur_rx)
-                               return -1;
-                       forw_entry = forw % RX_RING_SIZE;
-                       sp->rx_skbuff[entry] = sp->rx_skbuff[forw_entry];
-                       sp->rx_skbuff[forw_entry] = NULL;
-                       rxf = sp->rx_ringp[forw_entry];
-                       sp->rx_ringp[forw_entry] = NULL;
-                       sp->rx_ringp[entry] = rxf;
-               }
-       } else {
-               rxf = sp->rx_ringp[entry];
-       }
-       speedo_rx_link(dev, entry, rxf, sp->rx_ring_dma[entry]);
-       sp->dirty_rx++;
-       sp->rx_ring_state &= ~(RrNoMem|RrOOMReported); /* Mark the progress. */
-       return 0;
-}
-
-static void speedo_refill_rx_buffers(struct net_device *dev, int force)
-{
-       struct speedo_private *sp = netdev_priv(dev);
-
-       /* Refill the RX ring. */
-       while ((int)(sp->cur_rx - sp->dirty_rx) > 0 &&
-                       speedo_refill_rx_buf(dev, force) != -1);
-}
-
-static int
-speedo_rx(struct net_device *dev)
-{
-       struct speedo_private *sp = netdev_priv(dev);
-       int entry = sp->cur_rx % RX_RING_SIZE;
-       int rx_work_limit = sp->dirty_rx + RX_RING_SIZE - sp->cur_rx;
-       int alloc_ok = 1;
-       int npkts = 0;
-
-       if (netif_msg_intr(sp))
-               printk(KERN_DEBUG " In speedo_rx().\n");
-       /* If we own the next entry, it's a new packet. Send it up. */
-       while (sp->rx_ringp[entry] != NULL) {
-               int status;
-               int pkt_len;
-
-               pci_dma_sync_single_for_cpu(sp->pdev, sp->rx_ring_dma[entry],
-                                                                       sizeof(struct RxFD), PCI_DMA_FROMDEVICE);
-               status = le32_to_cpu(sp->rx_ringp[entry]->status);
-               pkt_len = le32_to_cpu(sp->rx_ringp[entry]->count) & 0x3fff;
-
-               if (!(status & RxComplete))
-                       break;
-
-               if (--rx_work_limit < 0)
-                       break;
-
-               /* Check for a rare out-of-memory case: the current buffer is
-                  the last buffer allocated in the RX ring.  --SAW */
-               if (sp->last_rxf == sp->rx_ringp[entry]) {
-                       /* Postpone the packet.  It'll be reaped at an interrupt when this
-                          packet is no longer the last packet in the ring. */
-                       if (netif_msg_rx_err(sp))
-                               printk(KERN_DEBUG "%s: RX packet postponed!\n",
-                                          dev->name);
-                       sp->rx_ring_state |= RrPostponed;
-                       break;
-               }
-
-               if (netif_msg_rx_status(sp))
-                       printk(KERN_DEBUG "  speedo_rx() status %8.8x len %d.\n", status,
-                                  pkt_len);
-               if ((status & (RxErrTooBig|RxOK|0x0f90)) != RxOK) {
-                       if (status & RxErrTooBig)
-                               printk(KERN_ERR "%s: Ethernet frame overran the Rx buffer, "
-                                          "status %8.8x!\n", dev->name, status);
-                       else if (! (status & RxOK)) {
-                               /* There was a fatal error.  This *should* be impossible. */
-                               sp->stats.rx_errors++;
-                               printk(KERN_ERR "%s: Anomalous event in speedo_rx(), "
-                                          "status %8.8x.\n",
-                                          dev->name, status);
-                       }
-               } else {
-                       struct sk_buff *skb;
-
-                       /* Check if the packet is long enough to just accept without
-                          copying to a properly sized skbuff. */
-                       if (pkt_len < rx_copybreak
-                               && (skb = dev_alloc_skb(pkt_len + 2)) != NULL) {
-                               skb_reserve(skb, 2);    /* Align IP on 16 byte boundaries */
-                               /* 'skb_put()' points to the start of sk_buff data area. */
-                               pci_dma_sync_single_for_cpu(sp->pdev, sp->rx_ring_dma[entry],
-                                                                                       sizeof(struct RxFD) + pkt_len,
-                                                                                       PCI_DMA_FROMDEVICE);
-
-#if 1 || USE_IP_CSUM
-                               /* Packet is in one chunk -- we can copy + cksum. */
-                               skb_copy_to_linear_data(skb, sp->rx_skbuff[entry]->data, pkt_len);
-                               skb_put(skb, pkt_len);
-#else
-                               skb_copy_from_linear_data(sp->rx_skbuff[entry],
-                                                         skb_put(skb, pkt_len),
-                                                         pkt_len);
-#endif
-                               pci_dma_sync_single_for_device(sp->pdev, sp->rx_ring_dma[entry],
-                                                                                          sizeof(struct RxFD) + pkt_len,
-                                                                                          PCI_DMA_FROMDEVICE);
-                               npkts++;
-                       } else {
-                               /* Pass up the already-filled skbuff. */
-                               skb = sp->rx_skbuff[entry];
-                               if (skb == NULL) {
-                                       printk(KERN_ERR "%s: Inconsistent Rx descriptor chain.\n",
-                                                  dev->name);
-                                       break;
-                               }
-                               sp->rx_skbuff[entry] = NULL;
-                               skb_put(skb, pkt_len);
-                               npkts++;
-                               sp->rx_ringp[entry] = NULL;
-                               pci_unmap_single(sp->pdev, sp->rx_ring_dma[entry],
-                                                                PKT_BUF_SZ + sizeof(struct RxFD),
-                                                                PCI_DMA_FROMDEVICE);
-                       }
-                       skb->protocol = eth_type_trans(skb, dev);
-                       netif_rx(skb);
-                       dev->last_rx = jiffies;
-                       sp->stats.rx_packets++;
-                       sp->stats.rx_bytes += pkt_len;
-               }
-               entry = (++sp->cur_rx) % RX_RING_SIZE;
-               sp->rx_ring_state &= ~RrPostponed;
-               /* Refill the recently taken buffers.
-                  Do it one-by-one to handle traffic bursts better. */
-               if (alloc_ok && speedo_refill_rx_buf(dev, 0) == -1)
-                       alloc_ok = 0;
-       }
-
-       /* Try hard to refill the recently taken buffers. */
-       speedo_refill_rx_buffers(dev, 1);
-
-       if (npkts)
-               sp->last_rx_time = jiffies;
-
-       return 0;
-}
-
-static int
-speedo_close(struct net_device *dev)
-{
-       struct speedo_private *sp = netdev_priv(dev);
-       void __iomem *ioaddr = sp->regs;
-       int i;
-
-       netdevice_stop(dev);
-       netif_stop_queue(dev);
-
-       if (netif_msg_ifdown(sp))
-               printk(KERN_DEBUG "%s: Shutting down ethercard, status was %4.4x.\n",
-                          dev->name, ioread16(ioaddr + SCBStatus));
-
-       /* Shut off the media monitoring timer. */
-       del_timer_sync(&sp->timer);
-
-       iowrite16(SCBMaskAll, ioaddr + SCBCmd);
-
-       /* Shutting down the chip nicely fails to disable flow control. So.. */
-       iowrite32(PortPartialReset, ioaddr + SCBPort);
-       ioread32(ioaddr + SCBPort); /* flush posted write */
-       /*
-        * The chip requires a 10 microsecond quiet period.  Wait here!
-        */
-       udelay(10);
-
-       free_irq(dev->irq, dev);
-       speedo_show_state(dev);
-
-    /* Free all the skbuffs in the Rx and Tx queues. */
-       for (i = 0; i < RX_RING_SIZE; i++) {
-               struct sk_buff *skb = sp->rx_skbuff[i];
-               sp->rx_skbuff[i] = NULL;
-               /* Clear the Rx descriptors. */
-               if (skb) {
-                       pci_unmap_single(sp->pdev,
-                                        sp->rx_ring_dma[i],
-                                        PKT_BUF_SZ + sizeof(struct RxFD), PCI_DMA_FROMDEVICE);
-                       dev_kfree_skb(skb);
-               }
-       }
-
-       for (i = 0; i < TX_RING_SIZE; i++) {
-               struct sk_buff *skb = sp->tx_skbuff[i];
-               sp->tx_skbuff[i] = NULL;
-               /* Clear the Tx descriptors. */
-               if (skb) {
-                       pci_unmap_single(sp->pdev,
-                                        le32_to_cpu(sp->tx_ring[i].tx_buf_addr0),
-                                        skb->len, PCI_DMA_TODEVICE);
-                       dev_kfree_skb(skb);
-               }
-       }
-
-       /* Free multicast setting blocks. */
-       for (i = 0; sp->mc_setup_head != NULL; i++) {
-               struct speedo_mc_block *t;
-               t = sp->mc_setup_head->next;
-               kfree(sp->mc_setup_head);
-               sp->mc_setup_head = t;
-       }
-       sp->mc_setup_tail = NULL;
-       if (netif_msg_ifdown(sp))
-               printk(KERN_DEBUG "%s: %d multicast blocks dropped.\n", dev->name, i);
-
-       pci_set_power_state(sp->pdev, PCI_D2);
-
-       return 0;
-}
-
-/* The Speedo-3 has an especially awkward and unusable method of getting
-   statistics out of the chip.  It takes an unpredictable length of time
-   for the dump-stats command to complete.  To avoid a busy-wait loop we
-   update the stats with the previous dump results, and then trigger a
-   new dump.
-
-   Oh, and incoming frames are dropped while executing dump-stats!
-   */
-static struct net_device_stats *
-speedo_get_stats(struct net_device *dev)
-{
-       struct speedo_private *sp = netdev_priv(dev);
-       void __iomem *ioaddr = sp->regs;
-
-       /* Update only if the previous dump finished. */
-       if (sp->lstats->done_marker == cpu_to_le32(0xA007)) {
-               sp->stats.tx_aborted_errors += le32_to_cpu(sp->lstats->tx_coll16_errs);
-               sp->stats.tx_window_errors += le32_to_cpu(sp->lstats->tx_late_colls);
-               sp->stats.tx_fifo_errors += le32_to_cpu(sp->lstats->tx_underruns);
-               sp->stats.tx_fifo_errors += le32_to_cpu(sp->lstats->tx_lost_carrier);
-               /*sp->stats.tx_deferred += le32_to_cpu(sp->lstats->tx_deferred);*/
-               sp->stats.collisions += le32_to_cpu(sp->lstats->tx_total_colls);
-               sp->stats.rx_crc_errors += le32_to_cpu(sp->lstats->rx_crc_errs);
-               sp->stats.rx_frame_errors += le32_to_cpu(sp->lstats->rx_align_errs);
-               sp->stats.rx_over_errors += le32_to_cpu(sp->lstats->rx_resource_errs);
-               sp->stats.rx_fifo_errors += le32_to_cpu(sp->lstats->rx_overrun_errs);
-               sp->stats.rx_length_errors += le32_to_cpu(sp->lstats->rx_runt_errs);
-               sp->lstats->done_marker = 0x0000;
-               if (netif_running(dev)) {
-                       unsigned long flags;
-                       /* Take a spinlock to make wait_for_cmd_done and sending the
-                          command atomic.  --SAW */
-                       spin_lock_irqsave(&sp->lock, flags);
-                       wait_for_cmd_done(dev, sp);
-                       iowrite8(CUDumpStats, ioaddr + SCBCmd);
-                       spin_unlock_irqrestore(&sp->lock, flags);
-               }
-       }
-       return &sp->stats;
-}
-
-static void speedo_get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info)
-{
-       struct speedo_private *sp = netdev_priv(dev);
-       strncpy(info->driver, "eepro100", sizeof(info->driver)-1);
-       strncpy(info->version, version, sizeof(info->version)-1);
-       if (sp->pdev)
-               strcpy(info->bus_info, pci_name(sp->pdev));
-}
-
-static int speedo_get_settings(struct net_device *dev, struct ethtool_cmd *ecmd)
-{
-       struct speedo_private *sp = netdev_priv(dev);
-       spin_lock_irq(&sp->lock);
-       mii_ethtool_gset(&sp->mii_if, ecmd);
-       spin_unlock_irq(&sp->lock);
-       return 0;
-}
-
-static int speedo_set_settings(struct net_device *dev, struct ethtool_cmd *ecmd)
-{
-       struct speedo_private *sp = netdev_priv(dev);
-       int res;
-       spin_lock_irq(&sp->lock);
-       res = mii_ethtool_sset(&sp->mii_if, ecmd);
-       spin_unlock_irq(&sp->lock);
-       return res;
-}
-
-static int speedo_nway_reset(struct net_device *dev)
-{
-       struct speedo_private *sp = netdev_priv(dev);
-       return mii_nway_restart(&sp->mii_if);
-}
-
-static u32 speedo_get_link(struct net_device *dev)
-{
-       struct speedo_private *sp = netdev_priv(dev);
-       return mii_link_ok(&sp->mii_if);
-}
-
-static u32 speedo_get_msglevel(struct net_device *dev)
-{
-       struct speedo_private *sp = netdev_priv(dev);
-       return sp->msg_enable;
-}
-
-static void speedo_set_msglevel(struct net_device *dev, u32 v)
-{
-       struct speedo_private *sp = netdev_priv(dev);
-       sp->msg_enable = v;
-}
-
-static const struct ethtool_ops ethtool_ops = {
-       .get_drvinfo = speedo_get_drvinfo,
-       .get_settings = speedo_get_settings,
-       .set_settings = speedo_set_settings,
-       .nway_reset = speedo_nway_reset,
-       .get_link = speedo_get_link,
-       .get_msglevel = speedo_get_msglevel,
-       .set_msglevel = speedo_set_msglevel,
-};
-
-static int speedo_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
-{
-       struct speedo_private *sp = netdev_priv(dev);
-       struct mii_ioctl_data *data = if_mii(rq);
-       int phy = sp->phy[0] & 0x1f;
-       int saved_acpi;
-       int t;
-
-    switch(cmd) {
-       case SIOCGMIIPHY:               /* Get address of MII PHY in use. */
-               data->phy_id = phy;
-
-       case SIOCGMIIREG:               /* Read MII PHY register. */
-               /* FIXME: these operations need to be serialized with MDIO
-                  access from the timeout handler.
-                  They are currently serialized only with MDIO access from the
-                  timer routine.  2000/05/09 SAW */
-               saved_acpi = pci_set_power_state(sp->pdev, PCI_D0);
-               t = del_timer_sync(&sp->timer);
-               data->val_out = mdio_read(dev, data->phy_id & 0x1f, data->reg_num & 0x1f);
-               if (t)
-                       add_timer(&sp->timer); /* may be set to the past  --SAW */
-               pci_set_power_state(sp->pdev, saved_acpi);
-               return 0;
-
-       case SIOCSMIIREG:               /* Write MII PHY register. */
-               if (!capable(CAP_NET_ADMIN))
-                       return -EPERM;
-               saved_acpi = pci_set_power_state(sp->pdev, PCI_D0);
-               t = del_timer_sync(&sp->timer);
-               mdio_write(dev, data->phy_id, data->reg_num, data->val_in);
-               if (t)
-                       add_timer(&sp->timer); /* may be set to the past  --SAW */
-               pci_set_power_state(sp->pdev, saved_acpi);
-               return 0;
-       default:
-               return -EOPNOTSUPP;
-       }
-}
-
-/* Set or clear the multicast filter for this adaptor.
-   This is very ugly with Intel chips -- we usually have to execute an
-   entire configuration command, plus process a multicast command.
-   This is complicated.  We must put a large configuration command and
-   an arbitrarily-sized multicast command in the transmit list.
-   To minimize the disruption -- the previous command might have already
-   loaded the link -- we convert the current command block, normally a Tx
-   command, into a no-op and link it to the new command.
-*/
-static void set_rx_mode(struct net_device *dev)
-{
-       struct speedo_private *sp = netdev_priv(dev);
-       void __iomem *ioaddr = sp->regs;
-       struct descriptor *last_cmd;
-       char new_rx_mode;
-       unsigned long flags;
-       int entry, i;
-
-       if (dev->flags & IFF_PROMISC) {                 /* Set promiscuous. */
-               new_rx_mode = 3;
-       } else if ((dev->flags & IFF_ALLMULTI)  ||
-                          dev->mc_count > multicast_filter_limit) {
-               new_rx_mode = 1;
-       } else
-               new_rx_mode = 0;
-
-       if (netif_msg_rx_status(sp))
-               printk(KERN_DEBUG "%s: set_rx_mode %d -> %d\n", dev->name,
-                               sp->rx_mode, new_rx_mode);
-
-       if ((int)(sp->cur_tx - sp->dirty_tx) > TX_RING_SIZE - TX_MULTICAST_SIZE) {
-           /* The Tx ring is full -- don't add anything!  Hope the mode will be
-                * set again later. */
-               sp->rx_mode = -1;
-               return;
-       }
-
-       if (new_rx_mode != sp->rx_mode) {
-               u8 *config_cmd_data;
-
-               spin_lock_irqsave(&sp->lock, flags);
-               entry = sp->cur_tx++ % TX_RING_SIZE;
-               last_cmd = sp->last_cmd;
-               sp->last_cmd = (struct descriptor *)&sp->tx_ring[entry];
-
-               sp->tx_skbuff[entry] = NULL;                    /* Redundant. */
-               sp->tx_ring[entry].status = cpu_to_le32(CmdSuspend | CmdConfigure);
-               sp->tx_ring[entry].link =
-                       cpu_to_le32(TX_RING_ELEM_DMA(sp, (entry + 1) % TX_RING_SIZE));
-               config_cmd_data = (void *)&sp->tx_ring[entry].tx_desc_addr;
-               /* Construct a full CmdConfig frame. */
-               memcpy(config_cmd_data, i82558_config_cmd, CONFIG_DATA_SIZE);
-               config_cmd_data[1] = (txfifo << 4) | rxfifo;
-               config_cmd_data[4] = rxdmacount;
-               config_cmd_data[5] = txdmacount + 0x80;
-               config_cmd_data[15] |= (new_rx_mode & 2) ? 1 : 0;
-               /* 0x80 doesn't disable FC 0x84 does.
-                  Disable Flow control since we are not ACK-ing any FC interrupts
-                  for now. --Dragan */
-               config_cmd_data[19] = 0x84;
-               config_cmd_data[19] |= sp->mii_if.full_duplex ? 0x40 : 0;
-               config_cmd_data[21] = (new_rx_mode & 1) ? 0x0D : 0x05;
-               if (sp->phy[0] & 0x8000) {                      /* Use the AUI port instead. */
-                       config_cmd_data[15] |= 0x80;
-                       config_cmd_data[8] = 0;
-               }
-               /* Trigger the command unit resume. */
-               wait_for_cmd_done(dev, sp);
-               clear_suspend(last_cmd);
-               iowrite8(CUResume, ioaddr + SCBCmd);
-               if ((int)(sp->cur_tx - sp->dirty_tx) >= TX_QUEUE_LIMIT) {
-                       netif_stop_queue(dev);
-                       sp->tx_full = 1;
-               }
-               spin_unlock_irqrestore(&sp->lock, flags);
-       }
-
-       if (new_rx_mode == 0  &&  dev->mc_count < 4) {
-               /* The simple case of 0-3 multicast list entries occurs often, and
-                  fits within one tx_ring[] entry. */
-               struct dev_mc_list *mclist;
-               __le16 *setup_params, *eaddrs;
-
-               spin_lock_irqsave(&sp->lock, flags);
-               entry = sp->cur_tx++ % TX_RING_SIZE;
-               last_cmd = sp->last_cmd;
-               sp->last_cmd = (struct descriptor *)&sp->tx_ring[entry];
-
-               sp->tx_skbuff[entry] = NULL;
-               sp->tx_ring[entry].status = cpu_to_le32(CmdSuspend | CmdMulticastList);
-               sp->tx_ring[entry].link =
-                       cpu_to_le32(TX_RING_ELEM_DMA(sp, (entry + 1) % TX_RING_SIZE));
-               sp->tx_ring[entry].tx_desc_addr = 0; /* Really MC list count. */
-               setup_params = (__le16 *)&sp->tx_ring[entry].tx_desc_addr;
-               *setup_params++ = cpu_to_le16(dev->mc_count*6);
-               /* Fill in the multicast addresses. */
-               for (i = 0, mclist = dev->mc_list; i < dev->mc_count;
-                        i++, mclist = mclist->next) {
-                       eaddrs = (__le16 *)mclist->dmi_addr;
-                       *setup_params++ = *eaddrs++;
-                       *setup_params++ = *eaddrs++;
-                       *setup_params++ = *eaddrs++;
-               }
-
-               wait_for_cmd_done(dev, sp);
-               clear_suspend(last_cmd);
-               /* Immediately trigger the command unit resume. */
-               iowrite8(CUResume, ioaddr + SCBCmd);
-
-               if ((int)(sp->cur_tx - sp->dirty_tx) >= TX_QUEUE_LIMIT) {
-                       netif_stop_queue(dev);
-                       sp->tx_full = 1;
-               }
-               spin_unlock_irqrestore(&sp->lock, flags);
-       } else if (new_rx_mode == 0) {
-               struct dev_mc_list *mclist;
-               __le16 *setup_params, *eaddrs;
-               struct speedo_mc_block *mc_blk;
-               struct descriptor *mc_setup_frm;
-               int i;
-
-               mc_blk = kmalloc(sizeof(*mc_blk) + 2 + multicast_filter_limit*6,
-                                                GFP_ATOMIC);
-               if (mc_blk == NULL) {
-                       printk(KERN_ERR "%s: Failed to allocate a setup frame.\n",
-                                  dev->name);
-                       sp->rx_mode = -1; /* We failed, try again. */
-                       return;
-               }
-               mc_blk->next = NULL;
-               mc_blk->len = 2 + multicast_filter_limit*6;
-               mc_blk->frame_dma =
-                       pci_map_single(sp->pdev, &mc_blk->frame, mc_blk->len,
-                                       PCI_DMA_TODEVICE);
-               mc_setup_frm = &mc_blk->frame;
-
-               /* Fill the setup frame. */
-               if (netif_msg_ifup(sp))
-                       printk(KERN_DEBUG "%s: Constructing a setup frame at %p.\n",
-                                  dev->name, mc_setup_frm);
-               mc_setup_frm->cmd_status =
-                       cpu_to_le32(CmdSuspend | CmdIntr | CmdMulticastList);
-               /* Link set below. */
-               setup_params = (__le16 *)&mc_setup_frm->params;
-               *setup_params++ = cpu_to_le16(dev->mc_count*6);
-               /* Fill in the multicast addresses. */
-               for (i = 0, mclist = dev->mc_list; i < dev->mc_count;
-                        i++, mclist = mclist->next) {
-                       eaddrs = (__le16 *)mclist->dmi_addr;
-                       *setup_params++ = *eaddrs++;
-                       *setup_params++ = *eaddrs++;
-                       *setup_params++ = *eaddrs++;
-               }
-
-               /* Disable interrupts while playing with the Tx Cmd list. */
-               spin_lock_irqsave(&sp->lock, flags);
-
-               if (sp->mc_setup_tail)
-                       sp->mc_setup_tail->next = mc_blk;
-               else
-                       sp->mc_setup_head = mc_blk;
-               sp->mc_setup_tail = mc_blk;
-               mc_blk->tx = sp->cur_tx;
-
-               entry = sp->cur_tx++ % TX_RING_SIZE;
-               last_cmd = sp->last_cmd;
-               sp->last_cmd = mc_setup_frm;
-
-               /* Change the command to a NoOp, pointing to the CmdMulti command. */
-               sp->tx_skbuff[entry] = NULL;
-               sp->tx_ring[entry].status = cpu_to_le32(CmdNOp);
-               sp->tx_ring[entry].link = cpu_to_le32(mc_blk->frame_dma);
-
-               /* Set the link in the setup frame. */
-               mc_setup_frm->link =
-                       cpu_to_le32(TX_RING_ELEM_DMA(sp, (entry + 1) % TX_RING_SIZE));
-
-               pci_dma_sync_single_for_device(sp->pdev, mc_blk->frame_dma,
-                                                                          mc_blk->len, PCI_DMA_TODEVICE);
-
-               wait_for_cmd_done(dev, sp);
-               clear_suspend(last_cmd);
-               /* Immediately trigger the command unit resume. */
-               iowrite8(CUResume, ioaddr + SCBCmd);
-
-               if ((int)(sp->cur_tx - sp->dirty_tx) >= TX_QUEUE_LIMIT) {
-                       netif_stop_queue(dev);
-                       sp->tx_full = 1;
-               }
-               spin_unlock_irqrestore(&sp->lock, flags);
-
-               if (netif_msg_rx_status(sp))
-                       printk(" CmdMCSetup frame length %d in entry %d.\n",
-                                  dev->mc_count, entry);
-       }
-
-       sp->rx_mode = new_rx_mode;
-}
-
-#ifdef CONFIG_PM
-static int eepro100_suspend(struct pci_dev *pdev, pm_message_t state)
-{
-       struct net_device *dev = pci_get_drvdata (pdev);
-       struct speedo_private *sp = netdev_priv(dev);
-       void __iomem *ioaddr = sp->regs;
-
-       pci_save_state(pdev);
-
-       if (!netif_running(dev))
-               return 0;
-
-       del_timer_sync(&sp->timer);
-
-       netif_device_detach(dev);
-       iowrite32(PortPartialReset, ioaddr + SCBPort);
-
-       /* XXX call pci_set_power_state ()? */
-       pci_disable_device(pdev);
-       pci_set_power_state (pdev, PCI_D3hot);
-       return 0;
-}
-
-static int eepro100_resume(struct pci_dev *pdev)
-{
-       struct net_device *dev = pci_get_drvdata (pdev);
-       struct speedo_private *sp = netdev_priv(dev);
-       void __iomem *ioaddr = sp->regs;
-       int rc;
-
-       pci_set_power_state(pdev, PCI_D0);
-       pci_restore_state(pdev);
-
-       rc = pci_enable_device(pdev);
-       if (rc)
-               return rc;
-
-       pci_set_master(pdev);
-
-       if (!netif_running(dev))
-               return 0;
-
-       /* I'm absolutely uncertain if this part of code may work.
-          The problems are:
-           - correct hardware reinitialization;
-               - correct driver behavior between different steps of the
-                 reinitialization;
-               - serialization with other driver calls.
-          2000/03/08  SAW */
-       iowrite16(SCBMaskAll, ioaddr + SCBCmd);
-       speedo_resume(dev);
-       netif_device_attach(dev);
-       sp->rx_mode = -1;
-       sp->flow_ctrl = sp->partner = 0;
-       set_rx_mode(dev);
-       sp->timer.expires = RUN_AT(2*HZ);
-       add_timer(&sp->timer);
-       return 0;
-}
-#endif /* CONFIG_PM */
-
-static void __devexit eepro100_remove_one (struct pci_dev *pdev)
-{
-       struct net_device *dev = pci_get_drvdata (pdev);
-       struct speedo_private *sp = netdev_priv(dev);
-
-       unregister_netdev(dev);
-
-       release_region(pci_resource_start(pdev, 1), pci_resource_len(pdev, 1));
-       release_mem_region(pci_resource_start(pdev, 0), pci_resource_len(pdev, 0));
-
-       pci_iounmap(pdev, sp->regs);
-       pci_free_consistent(pdev, TX_RING_SIZE * sizeof(struct TxFD)
-                                                               + sizeof(struct speedo_stats),
-                                               sp->tx_ring, sp->tx_ring_dma);
-       pci_disable_device(pdev);
-       free_netdev(dev);
-}
-
-static struct pci_device_id eepro100_pci_tbl[] = {
-       { PCI_VENDOR_ID_INTEL, 0x1229, PCI_ANY_ID, PCI_ANY_ID, },
-       { PCI_VENDOR_ID_INTEL, 0x1209, PCI_ANY_ID, PCI_ANY_ID, },
-       { PCI_VENDOR_ID_INTEL, 0x1029, PCI_ANY_ID, PCI_ANY_ID, },
-       { PCI_VENDOR_ID_INTEL, 0x1030, PCI_ANY_ID, PCI_ANY_ID, },
-       { PCI_VENDOR_ID_INTEL, 0x1031, PCI_ANY_ID, PCI_ANY_ID, },
-       { PCI_VENDOR_ID_INTEL, 0x1032, PCI_ANY_ID, PCI_ANY_ID, },
-       { PCI_VENDOR_ID_INTEL, 0x1033, PCI_ANY_ID, PCI_ANY_ID, },
-       { PCI_VENDOR_ID_INTEL, 0x1034, PCI_ANY_ID, PCI_ANY_ID, },
-       { PCI_VENDOR_ID_INTEL, 0x1035, PCI_ANY_ID, PCI_ANY_ID, },
-       { PCI_VENDOR_ID_INTEL, 0x1036, PCI_ANY_ID, PCI_ANY_ID, },
-       { PCI_VENDOR_ID_INTEL, 0x1037, PCI_ANY_ID, PCI_ANY_ID, },
-       { PCI_VENDOR_ID_INTEL, 0x1038, PCI_ANY_ID, PCI_ANY_ID, },
-       { PCI_VENDOR_ID_INTEL, 0x1039, PCI_ANY_ID, PCI_ANY_ID, },
-       { PCI_VENDOR_ID_INTEL, 0x103A, PCI_ANY_ID, PCI_ANY_ID, },
-       { PCI_VENDOR_ID_INTEL, 0x103B, PCI_ANY_ID, PCI_ANY_ID, },
-       { PCI_VENDOR_ID_INTEL, 0x103C, PCI_ANY_ID, PCI_ANY_ID, },
-       { PCI_VENDOR_ID_INTEL, 0x103D, PCI_ANY_ID, PCI_ANY_ID, },
-       { PCI_VENDOR_ID_INTEL, 0x103E, PCI_ANY_ID, PCI_ANY_ID, },
-       { PCI_VENDOR_ID_INTEL, 0x1050, PCI_ANY_ID, PCI_ANY_ID, },
-       { PCI_VENDOR_ID_INTEL, 0x1059, PCI_ANY_ID, PCI_ANY_ID, },
-       { PCI_VENDOR_ID_INTEL, 0x1227, PCI_ANY_ID, PCI_ANY_ID, },
-       { PCI_VENDOR_ID_INTEL, 0x2449, PCI_ANY_ID, PCI_ANY_ID, },
-       { PCI_VENDOR_ID_INTEL, 0x2459, PCI_ANY_ID, PCI_ANY_ID, },
-       { PCI_VENDOR_ID_INTEL, 0x245D, PCI_ANY_ID, PCI_ANY_ID, },
-       { PCI_VENDOR_ID_INTEL, 0x5200, PCI_ANY_ID, PCI_ANY_ID, },
-       { PCI_VENDOR_ID_INTEL, 0x5201, PCI_ANY_ID, PCI_ANY_ID, },
-       { 0,}
-};
-MODULE_DEVICE_TABLE(pci, eepro100_pci_tbl);
-
-static struct pci_driver eepro100_driver = {
-       .name           = "eepro100",
-       .id_table       = eepro100_pci_tbl,
-       .probe          = eepro100_init_one,
-       .remove         = __devexit_p(eepro100_remove_one),
-#ifdef CONFIG_PM
-       .suspend        = eepro100_suspend,
-       .resume         = eepro100_resume,
-#endif /* CONFIG_PM */
-};
-
-static int __init eepro100_init_module(void)
-{
-#ifdef MODULE
-       printk(version);
-#endif
-       return pci_register_driver(&eepro100_driver);
-}
-
-static void __exit eepro100_cleanup_module(void)
-{
-       pci_unregister_driver(&eepro100_driver);
-}
-
-module_init(eepro100_init_module);
-module_exit(eepro100_cleanup_module);
-
-/*
- * Local variables:
- *  compile-command: "gcc -DMODULE -D__KERNEL__ -I/usr/src/linux/net/inet -Wall -Wstrict-prototypes -O6 -c eepro100.c `[ -f /usr/include/linux/modversions.h ] && echo -DMODVERSIONS`"
- *  c-indent-level: 4
- *  c-basic-offset: 4
- *  tab-width: 4
- * End:
- */
index e1b441e..a5c7bd4 100644 (file)
@@ -477,12 +477,10 @@ static int enc28j60_set_hw_macaddr(struct net_device *ndev)
 
        mutex_lock(&priv->lock);
        if (!priv->hw_enable) {
-               if (netif_msg_drv(priv)) {
-                       DECLARE_MAC_BUF(mac);
+               if (netif_msg_drv(priv))
                        printk(KERN_INFO DRV_NAME
-                               ": %s: Setting MAC address to %s\n",
-                               ndev->name, print_mac(mac, ndev->dev_addr));
-               }
+                               ": %s: Setting MAC address to %pM\n",
+                               ndev->name, ndev->dev_addr);
                /* NOTE: MAC address in ENC28J60 is byte-backward */
                nolock_regb_write(priv, MAADR5, ndev->dev_addr[0]);
                nolock_regb_write(priv, MAADR4, ndev->dev_addr[1]);
@@ -1328,11 +1326,9 @@ static int enc28j60_net_open(struct net_device *dev)
                printk(KERN_DEBUG DRV_NAME ": %s() enter\n", __func__);
 
        if (!is_valid_ether_addr(dev->dev_addr)) {
-               if (netif_msg_ifup(priv)) {
-                       DECLARE_MAC_BUF(mac);
-                       dev_err(&dev->dev, "invalid MAC address %s\n",
-                               print_mac(mac, dev->dev_addr));
-               }
+               if (netif_msg_ifup(priv))
+                       dev_err(&dev->dev, "invalid MAC address %pM\n",
+                               dev->dev_addr);
                return -EADDRNOTAVAIL;
        }
        /* Reset the hardware here (and take it out of low power mode) */
index 95184b9..e5fc938 100644 (file)
@@ -90,11 +90,8 @@ int enic_get_vnic_config(struct enic *enic)
 
        c->intr_timer = min_t(u16, VNIC_INTR_TIMER_MAX, c->intr_timer);
 
-       printk(KERN_INFO PFX "vNIC MAC addr %02x:%02x:%02x:%02x:%02x:%02x "
-               "wq/rq %d/%d\n",
-               enic->mac_addr[0], enic->mac_addr[1], enic->mac_addr[2],
-               enic->mac_addr[3], enic->mac_addr[4], enic->mac_addr[5],
-               c->wq_desc_count, c->rq_desc_count);
+       printk(KERN_INFO PFX "vNIC MAC addr %pM wq/rq %d/%d\n",
+               enic->mac_addr, c->wq_desc_count, c->rq_desc_count);
        printk(KERN_INFO PFX "vNIC mtu %d csum tx/rx %d/%d tso/lro %d/%d "
                "intr timer %d\n",
                c->mtu, ENIC_SETTING(enic, TXCSUM),
index 4d104f5..9afd33c 100644 (file)
@@ -489,10 +489,7 @@ void vnic_dev_add_addr(struct vnic_dev *vdev, u8 *addr)
 
        err = vnic_dev_cmd(vdev, CMD_ADDR_ADD, &a0, &a1, wait);
        if (err)
-               printk(KERN_ERR
-                       "Can't add addr [%02x:%02x:%02x:%02x:%02x:%02x], %d\n",
-                       addr[0], addr[1], addr[2], addr[3], addr[4], addr[5],
-                       err);
+               printk(KERN_ERR "Can't add addr [%pM], %d\n", addr, err);
 }
 
 void vnic_dev_del_addr(struct vnic_dev *vdev, u8 *addr)
@@ -507,10 +504,7 @@ void vnic_dev_del_addr(struct vnic_dev *vdev, u8 *addr)
 
        err = vnic_dev_cmd(vdev, CMD_ADDR_DEL, &a0, &a1, wait);
        if (err)
-               printk(KERN_ERR
-                       "Can't del addr [%02x:%02x:%02x:%02x:%02x:%02x], %d\n",
-                       addr[0], addr[1], addr[2], addr[3], addr[4], addr[5],
-                       err);
+               printk(KERN_ERR "Can't del addr [%pM], %d\n", addr, err);
 }
 
 int vnic_dev_notify_set(struct vnic_dev *vdev, u16 intr)
index 76118dd..65a4040 100644 (file)
@@ -322,7 +322,6 @@ static int __devinit epic_init_one (struct pci_dev *pdev,
        int i, ret, option = 0, duplex = 0;
        void *ring_space;
        dma_addr_t ring_dma;
-       DECLARE_MAC_BUF(mac);
 
 /* when built into the kernel, we only print version if device is found */
 #ifndef MODULE
@@ -364,7 +363,7 @@ static int __devinit epic_init_one (struct pci_dev *pdev,
        ioaddr = pci_resource_start (pdev, 0);
 #else
        ioaddr = pci_resource_start (pdev, 1);
-       ioaddr = (long) ioremap (ioaddr, pci_resource_len (pdev, 1));
+       ioaddr = (long) pci_ioremap_bar(pdev, 1);
        if (!ioaddr) {
                dev_err(&pdev->dev, "ioremap failed\n");
                goto err_out_free_netdev;
@@ -499,9 +498,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, %s\n",
+       printk(KERN_INFO "%s: %s at %#lx, IRQ %d, %pM\n",
               dev->name, pci_id_tbl[chip_idx].name, ioaddr, dev->irq,
-              print_mac(mac, dev->dev_addr));
+              dev->dev_addr);
 
 out:
        return ret;
index deefa51..e7df9f4 100644 (file)
@@ -179,7 +179,6 @@ static int __init es_probe1(struct net_device *dev, int ioaddr)
 {
        int i, retval;
        unsigned long eisa_id;
-       DECLARE_MAC_BUF(mac);
 
        if (!request_region(ioaddr + ES_SA_PROM, ES_IO_EXTENT, "es3210"))
                return -ENODEV;
@@ -205,14 +204,14 @@ static int __init es_probe1(struct net_device *dev, int ioaddr)
        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 %s (invalid_prefix).\n",
-                      print_mac(mac, dev->dev_addr));
+               printk("es3210.c: card not found %pM (invalid_prefix).\n",
+                      dev->dev_addr);
                retval = -ENODEV;
                goto out;
        }
 
-       printk("es3210.c: ES3210 rev. %ld at %#x, node %s",
-              eisa_id>>24, ioaddr, print_mac(mac, dev->dev_addr));
+       printk("es3210.c: ES3210 rev. %ld at %#x, node %pM",
+              eisa_id>>24, ioaddr, dev->dev_addr);
 
        /* Snarf the interrupt now. */
        if (dev->irq == 0) {
index 593a120..3ab2156 100644 (file)
@@ -396,7 +396,6 @@ ewrk3_hw_init(struct net_device *dev, u_long iobase)
        u_long mem_start, shmem_length;
        u_char cr, cmr, icr, nicsr, lemac, hard_strapped = 0;
        u_char eeprom_image[EEPROM_MAX], chksum, eisa_cr = 0;
-       DECLARE_MAC_BUF(mac);
 
        /*
        ** Stop the EWRK3. Enable the DBR ROM. Disable interrupts and remote boot.
@@ -461,7 +460,7 @@ ewrk3_hw_init(struct net_device *dev, u_long iobase)
        if (lemac != LeMAC2)
                DevicePresent(iobase);  /* need after EWRK3_INIT */
        status = get_hw_addr(dev, eeprom_image, lemac);
-       printk("%s\n", print_mac(mac, dev->dev_addr));
+       printk("%pM\n", dev->dev_addr);
 
        if (status) {
                printk("      which has an EEPROM CRC error.\n");
@@ -646,10 +645,8 @@ static int ewrk3_open(struct net_device *dev)
                        ewrk3_init(dev);
 
                        if (ewrk3_debug > 1) {
-                               DECLARE_MAC_BUF(mac);
                                printk("%s: ewrk3 open with irq %d\n", dev->name, dev->irq);
-                               printk("  physical address: %s\n",
-                                      print_mac(mac, dev->dev_addr));
+                               printk("  physical address: %pM\n", dev->dev_addr);
                                if (lp->shmem_length == 0) {
                                        printk("  no shared memory, I/O only mode\n");
                                } else {
index b455ae9..61c7cbb 100644 (file)
@@ -486,7 +486,6 @@ static int __devinit fealnx_init_one(struct pci_dev *pdev,
 #else
        int bar = 1;
 #endif
-       DECLARE_MAC_BUF(mac);
 
 /* when built into the kernel, we only print version if device is found */
 #ifndef MODULE
@@ -665,9 +664,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, %s, IRQ %d.\n",
+       printk(KERN_INFO "%s: %s at %p, %pM, IRQ %d.\n",
               dev->name, skel_netdrv_tbl[chip_id].chip_name, ioaddr,
-              print_mac(mac, dev->dev_addr), irq);
+              dev->dev_addr, irq);
 
        return 0;
 
index ecd5c71..2487d83 100644 (file)
@@ -2562,7 +2562,6 @@ static int __init fec_enet_module_init(void)
 {
        struct net_device *dev;
        int i, err;
-       DECLARE_MAC_BUF(mac);
 
        printk("FEC ENET Version 0.2\n");
 
@@ -2581,8 +2580,7 @@ static int __init fec_enet_module_init(void)
                        return -EIO;
                }
 
-               printk("%s: ethernet %s\n",
-                      dev->name, print_mac(mac, dev->dev_addr));
+               printk("%s: ethernet %pM\n", dev->name, dev->dev_addr);
        }
        return 0;
 }
index cc7328b..74c588e 100644 (file)
@@ -5420,7 +5420,6 @@ static int __devinit nv_probe(struct pci_dev *pci_dev, const struct pci_device_i
        u32 powerstate, txreg;
        u32 phystate_orig = 0, phystate;
        int phyinitialized = 0;
-       DECLARE_MAC_BUF(mac);
        static int printed_version;
 
        if (!printed_version++)
@@ -5653,8 +5652,8 @@ static int __devinit nv_probe(struct pci_dev *pci_dev, const struct pci_device_i
                 * to 01:23:45:67:89:ab
                 */
                dev_printk(KERN_ERR, &pci_dev->dev,
-                       "Invalid Mac address detected: %s\n",
-                       print_mac(mac, dev->dev_addr));
+                       "Invalid Mac address detected: %pM\n",
+                       dev->dev_addr);
                dev_printk(KERN_ERR, &pci_dev->dev,
                        "Please complain to your hardware vendor. Switching to a random MAC.\n");
                dev->dev_addr[0] = 0x00;
@@ -5663,8 +5662,8 @@ static int __devinit nv_probe(struct pci_dev *pci_dev, const struct pci_device_i
                get_random_bytes(&dev->dev_addr[3], 3);
        }
 
-       dprintk(KERN_DEBUG "%s: MAC Address %s\n",
-               pci_name(pci_dev), print_mac(mac, dev->dev_addr));
+       dprintk(KERN_DEBUG "%s: MAC Address %pM\n",
+               pci_name(pci_dev), dev->dev_addr);
 
        /* set mac address */
        nv_copy_mac_to_hw(dev);
index cb51c1f..e32f08d 100644 (file)
@@ -1115,10 +1115,7 @@ static int __devinit fs_enet_probe(struct of_device *ofdev,
        if (ret)
                goto out_free_bd;
 
-       printk(KERN_INFO "%s: fs_enet: %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]);
+       printk(KERN_INFO "%s: fs_enet: %pM\n", ndev->name, ndev->dev_addr);
 
        return 0;
 
index 83a5cb6..013525f 100644 (file)
@@ -162,7 +162,6 @@ static int gfar_probe(struct platform_device *pdev)
        struct gianfar_platform_data *einfo;
        struct resource *r;
        int err = 0, irq;
-       DECLARE_MAC_BUF(mac);
 
        einfo = (struct gianfar_platform_data *) pdev->dev.platform_data;
 
@@ -364,8 +363,7 @@ static int gfar_probe(struct platform_device *pdev)
        gfar_init_sysfs(dev);
 
        /* Print out the device info */
-       printk(KERN_INFO DEVICE_NAME "%s\n",
-              dev->name, print_mac(mac, dev->dev_addr));
+       printk(KERN_INFO DEVICE_NAME "%pM\n", dev->name, dev->dev_addr);
 
        /* Even more device info helps when determining which kernel */
        /* provided which set of benchmarks. */
index 3199526..1dc0fd0 100644 (file)
@@ -582,7 +582,6 @@ static int __devinit hamachi_init_one (struct pci_dev *pdev,
        void *ring_space;
        dma_addr_t ring_dma;
        int ret = -ENOMEM;
-       DECLARE_MAC_BUF(mac);
 
 /* when built into the kernel, we only print version if device is found */
 #ifndef MODULE
@@ -744,9 +743,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, %s, IRQ %d.\n",
+       printk(KERN_INFO "%s: %s type %x at %p, %pM, IRQ %d.\n",
                   dev->name, chip_tbl[chip_id].name, readl(ioaddr + ChipRev),
-                  ioaddr, print_mac(mac, dev->dev_addr), irq);
+                  ioaddr, 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",
index 58f4b1d..74529c8 100644 (file)
@@ -441,16 +441,15 @@ static int bpq_seq_show(struct seq_file *seq, void *v)
                         "dev   ether      destination        accept from\n");
        else {
                const struct bpqdev *bpqdev = v;
-               DECLARE_MAC_BUF(mac);
 
-               seq_printf(seq, "%-5s %-10s %s  ",
+               seq_printf(seq, "%-5s %-10s %pM  ",
                        bpqdev->axdev->name, bpqdev->ethdev->name,
-                       print_mac(mac, bpqdev->dest_addr));
+                       bpqdev->dest_addr);
 
                if (is_multicast_ether_addr(bpqdev->acpt_addr))
                        seq_printf(seq, "*\n");
                else
-                       seq_printf(seq, "%s\n", print_mac(mac, bpqdev->acpt_addr));
+                       seq_printf(seq, "%pM\n", bpqdev->acpt_addr);
 
        }
        return 0;
index fbbd3e6..9026fd6 100644 (file)
@@ -166,7 +166,6 @@ static int __init hpp_probe1(struct net_device *dev, int ioaddr)
        const char name[] = "HP-PC-LAN+";
        int mem_start;
        static unsigned version_printed;
-       DECLARE_MAC_BUF(mac);
 
        if (!request_region(ioaddr, HP_IO_EXTENT, DRV_NAME))
                return -EBUSY;
@@ -193,7 +192,7 @@ static int __init hpp_probe1(struct net_device *dev, int ioaddr)
        }
        checksum += inb(ioaddr + 14);
 
-       printk("%s", print_mac(mac, dev->dev_addr));
+       printk("%pM", dev->dev_addr);
 
        if (checksum != 0xff) {
                printk(" bad checksum %2.2x.\n", checksum);
index 0a8c649..3669194 100644 (file)
@@ -127,7 +127,6 @@ static int __init hp_probe1(struct net_device *dev, int ioaddr)
        int i, retval, board_id, wordmode;
        const char *name;
        static unsigned version_printed;
-       DECLARE_MAC_BUF(mac);
 
        if (!request_region(ioaddr, HP_IO_EXTENT, DRV_NAME))
                return -EBUSY;
@@ -161,7 +160,7 @@ static int __init hp_probe1(struct net_device *dev, int ioaddr)
        for(i = 0; i < ETHER_ADDR_LEN; i++)
                dev->dev_addr[i] = inb(ioaddr + i);
 
-       printk(" %s", print_mac(mac, dev->dev_addr));
+       printk(" %pM", dev->dev_addr);
 
        /* Snarf the interrupt now.  Someday this could be moved to open(). */
        if (dev->irq < 2) {
index 571dd80..fd34452 100644 (file)
@@ -2093,9 +2093,8 @@ static void hp100_set_multicast_list(struct net_device *dev)
                                addrs = dmi->dmi_addr;
                                if ((*addrs & 0x01) == 0x01) {  /* multicast address? */
 #ifdef HP100_DEBUG
-                                       DECLARE_MAC_BUF(mac);
-                                       printk("hp100: %s: multicast = %s, ",
-                                                    dev->name, print_mac(mac, addrs));
+                                       printk("hp100: %s: multicast = %pM, ",
+                                                    dev->name, addrs);
 #endif
                                        for (j = idx = 0; j < 6; j++) {
                                                idx ^= *addrs++ & 0x3f;
index b96cf2d..b0ae076 100644 (file)
@@ -103,7 +103,6 @@ static int __devinit hydra_init(struct zorro_dev *z)
     int start_page, stop_page;
     int j;
     int err;
-    DECLARE_MAC_BUF(mac);
 
     static u32 hydra_offsets[16] = {
        0x00, 0x02, 0x04, 0x06, 0x08, 0x0a, 0x0c, 0x0e,
@@ -163,8 +162,8 @@ static int __devinit hydra_init(struct zorro_dev *z)
     zorro_set_drvdata(z, dev);
 
     printk(KERN_INFO "%s: Hydra at 0x%08lx, address "
-          "%s (hydra.c " HYDRA_VERSION ")\n",
-          dev->name, z->resource.start, print_mac(mac, dev->dev_addr));
+          "%pM (hydra.c " HYDRA_VERSION ")\n",
+          dev->name, z->resource.start, dev->dev_addr);
 
     return 0;
 }
index 901212a..87a7066 100644 (file)
@@ -396,9 +396,7 @@ static void emac_hash_mc(struct emac_instance *dev)
 
        for (dmi = dev->ndev->mc_list; dmi; dmi = dmi->next) {
                int slot, reg, mask;
-               DBG2(dev, "mc %02x:%02x:%02x:%02x:%02x:%02x" NL,
-                    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(dev, "mc %pM" NL, dmi->dmi_addr);
 
                slot = EMAC_XAHT_CRC_TO_SLOT(dev, ether_crc(ETH_ALEN, dmi->dmi_addr));
                reg = EMAC_XAHT_SLOT_TO_REG(dev, slot);
@@ -2865,11 +2863,8 @@ static int __devinit emac_probe(struct of_device *ofdev,
        wake_up_all(&emac_probe_wait);
 
 
-       printk(KERN_INFO
-              "%s: EMAC-%d %s, MAC %02x:%02x:%02x:%02x:%02x:%02x\n",
-              ndev->name, dev->cell_index, np->full_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]);
+       printk(KERN_INFO "%s: EMAC-%d %s, MAC %pM\n",
+              ndev->name, dev->cell_index, np->full_name, ndev->dev_addr);
 
        if (dev->phy_mode == PHY_MODE_SGMII)
                printk(KERN_NOTICE "%s: in SGMII mode\n", ndev->name);
index f027647..0fad08c 100644 (file)
@@ -914,7 +914,6 @@ static int __devinit ibmlana_init_one(struct device *kdev)
        int base = 0, irq = 0, iobase = 0, memlen = 0;
        ibmlana_priv *priv;
        ibmlana_medium medium;
-       DECLARE_MAC_BUF(mac);
 
        dev = alloc_etherdev(sizeof(ibmlana_priv));
        if (!dev)
@@ -990,10 +989,10 @@ static int __devinit ibmlana_init_one(struct device *kdev)
        /* print config */
 
        printk(KERN_INFO "%s: IRQ %d, I/O %#lx, memory %#lx-%#lx, "
-              "MAC address %s.\n",
+              "MAC address %pM.\n",
               dev->name, priv->realirq, dev->base_addr,
               dev->mem_start, dev->mem_end - 1,
-              print_mac(mac, dev->dev_addr));
+              dev->dev_addr);
        printk(KERN_INFO "%s: %s medium\n", dev->name, MediaNames[priv->medium]);
 
        /* reset board */
index c2d57f8..9dc4958 100644 (file)
@@ -1371,13 +1371,12 @@ static int ibmveth_show(struct seq_file *seq, void *v)
        struct ibmveth_adapter *adapter = seq->private;
        char *current_mac = ((char*) &adapter->netdev->dev_addr);
        char *firmware_mac = ((char*) &adapter->mac_addr) ;
-       DECLARE_MAC_BUF(mac);
 
        seq_printf(seq, "%s %s\n\n", ibmveth_driver_string, ibmveth_driver_version);
 
        seq_printf(seq, "Unit Address:    0x%x\n", adapter->vdev->unit_address);
-       seq_printf(seq, "Current MAC:     %s\n", print_mac(mac, current_mac));
-       seq_printf(seq, "Firmware MAC:    %s\n", print_mac(mac, firmware_mac));
+       seq_printf(seq, "Current MAC:     %pM\n", current_mac);
+       seq_printf(seq, "Firmware MAC:    %pM\n", firmware_mac);
 
        seq_printf(seq, "\nAdapter Statistics:\n");
        seq_printf(seq, "  TX:  vio_map_single failres:      %ld\n", adapter->tx_map_failed);
index 1f397cd..3b42665 100644 (file)
@@ -1275,16 +1275,14 @@ static int __devinit igb_probe(struct pci_dev *pdev,
 
        dev_info(&pdev->dev, "Intel(R) Gigabit Ethernet Network Connection\n");
        /* print bus type/speed/width info */
-       dev_info(&pdev->dev,
-                "%s: (PCIe:%s:%s) %02x:%02x:%02x:%02x:%02x:%02x\n",
+       dev_info(&pdev->dev, "%s: (PCIe:%s:%s) %pM\n",
                 netdev->name,
                 ((hw->bus.speed == e1000_bus_speed_2500)
                  ? "2.5Gb/s" : "unknown"),
                 ((hw->bus.width == e1000_bus_width_pcie_x4)
                  ? "Width x4" : (hw->bus.width == e1000_bus_width_pcie_x1)
                  ? "Width x1" : "unknown"),
-                netdev->dev_addr[0], netdev->dev_addr[1], netdev->dev_addr[2],
-                netdev->dev_addr[3], netdev->dev_addr[4], netdev->dev_addr[5]);
+                netdev->dev_addr);
 
        igb_read_part_num(hw, &part_num);
        dev_info(&pdev->dev, "%s: PBA No: %06x-%03x\n", netdev->name,
index 1f25263..afac65e 100644 (file)
@@ -390,11 +390,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);
-       }
+       if (type != unknown)
+               printk (" registration number %pM, CRC %02x", serial, crc);
        printk(".\n");
 
        return 0;
@@ -443,12 +440,9 @@ static void ioc3_get_eaddr_nic(struct ioc3_private *ip)
  */
 static void ioc3_get_eaddr(struct ioc3_private *ip)
 {
-       DECLARE_MAC_BUF(mac);
-
        ioc3_get_eaddr_nic(ip);
 
-       printk("Ethernet address is %s.\n",
-              print_mac(mac, priv_netdev(ip)->dev_addr));
+       printk("Ethernet address is %pM.\n", priv_netdev(ip)->dev_addr);
 }
 
 static void __ioc3_set_mac_address(struct net_device *dev)
index d6ff26a..1c8d72b 100644 (file)
@@ -192,7 +192,6 @@ static int __init netcard_probe1(struct net_device *dev, int ioaddr)
        static unsigned version_printed;
        int i;
        int err = -ENODEV;
-       DECLARE_MAC_BUF(mac);
 
        /* Grab the region so that no one else tries to probe our ioports. */
        if (!request_region(ioaddr, NETCARD_IO_EXTENT, cardname))
@@ -220,7 +219,7 @@ static int __init netcard_probe1(struct net_device *dev, int ioaddr)
        for (i = 0; i < 6; i++)
                dev->dev_addr[i] = inb(ioaddr + i);
 
-       printk("%s", print_mac(mac, dev->dev_addr));
+       printk("%pM", dev->dev_addr);
 
        err = -EAGAIN;
 #ifdef jumpered_interrupts
index be3c7dc..21995df 100644 (file)
@@ -381,8 +381,7 @@ ixgb_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        adapter->hw.back = adapter;
        adapter->msg_enable = netif_msg_init(debug, DEFAULT_DEBUG_LEVEL_SHIFT);
 
-       adapter->hw.hw_addr = ioremap(pci_resource_start(pdev, BAR_0),
-                                     pci_resource_len(pdev, BAR_0));
+       adapter->hw.hw_addr = pci_ioremap_bar(pdev, BAR_0);
        if (!adapter->hw.hw_addr) {
                err = -EIO;
                goto err_ioremap;
index 7548fb7..028bfb2 100644 (file)
@@ -3877,8 +3877,7 @@ static int __devinit ixgbe_probe(struct pci_dev *pdev,
        pci_read_config_word(pdev, IXGBE_PCI_LINK_STATUS, &link_status);
        link_speed = link_status & IXGBE_PCI_LINK_SPEED;
        link_width = link_status & IXGBE_PCI_LINK_WIDTH;
-       dev_info(&pdev->dev, "(PCI Express:%s:%s) "
-                "%02x:%02x:%02x:%02x:%02x:%02x\n",
+       dev_info(&pdev->dev, "(PCI Express:%s:%s) %pM\n",
                ((link_speed == IXGBE_PCI_LINK_SPEED_5000) ? "5.0Gb/s" :
                 (link_speed == IXGBE_PCI_LINK_SPEED_2500) ? "2.5Gb/s" :
                 "Unknown"),
@@ -3887,8 +3886,7 @@ static int __devinit ixgbe_probe(struct pci_dev *pdev,
                 (link_width == IXGBE_PCI_LINK_WIDTH_2) ? "Width x2" :
                 (link_width == IXGBE_PCI_LINK_WIDTH_1) ? "Width x1" :
                 "Unknown"),
-               netdev->dev_addr[0], netdev->dev_addr[1], netdev->dev_addr[2],
-               netdev->dev_addr[3], netdev->dev_addr[4], netdev->dev_addr[5]);
+               netdev->dev_addr);
        ixgbe_read_pba_num_generic(hw, &part_num);
        dev_info(&pdev->dev, "MAC: %d, PHY: %d, PBA No: %06x-%03x\n",
                 hw->mac.type, hw->phy.type,
index 0794482..334ff9e 100644 (file)
@@ -208,7 +208,6 @@ static int __init jazz_sonic_probe(struct platform_device *pdev)
        struct sonic_local *lp;
        struct resource *res;
        int err = 0;
-       DECLARE_MAC_BUF(mac);
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
        if (!res)
@@ -233,8 +232,7 @@ static int __init jazz_sonic_probe(struct platform_device *pdev)
        if (err)
                goto out1;
 
-       printk("%s: MAC %s IRQ %d\n",
-              dev->name, print_mac(mac, dev->dev_addr), dev->irq);
+       printk("%s: MAC %pM IRQ %d\n", dev->name, dev->dev_addr, dev->irq);
 
        return 0;
 
index 81c6cdc..a10c687 100644 (file)
@@ -2862,18 +2862,10 @@ jme_init_one(struct pci_dev *pdev,
                goto err_out_free_shadow;
        }
 
-       msg_probe(jme,
-               "JMC250 gigabit%s ver:%x rev:%x "
-               "macaddr:%02x:%02x:%02x:%02x:%02x:%02x\n",
+       msg_probe(jme, "JMC250 gigabit%s ver:%x rev:%x macaddr:%pM\n",
                (jme->fpgaver != 0) ? " (FPGA)" : "",
                (jme->fpgaver != 0) ? jme->fpgaver : jme->chiprev,
-               jme->rev,
-               netdev->dev_addr[0],
-               netdev->dev_addr[1],
-               netdev->dev_addr[2],
-               netdev->dev_addr[3],
-               netdev->dev_addr[4],
-               netdev->dev_addr[5]);
+               jme->rev, netdev->dev_addr);
 
        return 0;
 
index 977ed34..4ab536d 100644 (file)
@@ -466,7 +466,6 @@ static int __init lance_probe1(struct net_device *dev, int ioaddr, int irq, int
        unsigned long flags;
        int err = -ENOMEM;
        void __iomem *bios;
-       DECLARE_MAC_BUF(mac);
 
        /* First we look for special cases.
           Check for HP's on-board ethernet by looking for 'HP' in the BIOS.
@@ -529,7 +528,7 @@ static int __init lance_probe1(struct net_device *dev, int ioaddr, int irq, int
           The first six bytes are the station address. */
        for (i = 0; i < 6; i++)
                dev->dev_addr[i] = inb(ioaddr + i);
-       printk("%s", print_mac(mac, dev->dev_addr));
+       printk("%pM", dev->dev_addr);
 
        dev->base_addr = ioaddr;
        /* Make certain the data structures used by the LANCE are aligned and DMAble. */
index b59f442..cc8f641 100644 (file)
@@ -1034,12 +1034,8 @@ static int i596_start_xmit(struct sk_buff *skb, struct net_device *dev)
 
 static void print_eth(unsigned char *add, char *str)
 {
-       DECLARE_MAC_BUF(mac);
-       DECLARE_MAC_BUF(mac2);
-
-       printk(KERN_DEBUG "i596 0x%p, %s --> %s %02X%02X, %s\n",
-              add, print_mac(mac, add + 6), print_mac(mac2, add),
-              add[12], add[13], str);
+       printk(KERN_DEBUG "i596 0x%p, %pM --> %pM %02X%02X, %s\n",
+              add, add + 6, add, add[12], add[13], str);
 }
 
 static int __devinit i82596_probe(struct net_device *dev)
@@ -1343,7 +1339,6 @@ static void set_multicast_list(struct net_device *dev)
        struct i596_private *lp = netdev_priv(dev);
        struct i596_dma *dma = lp->dma;
        int config = 0, cnt;
-       DECLARE_MAC_BUF(mac);
 
        DEB(DEB_MULTI,
            printk(KERN_DEBUG
@@ -1407,8 +1402,8 @@ static void set_multicast_list(struct net_device *dev)
                        if (i596_debug > 1)
                                DEB(DEB_MULTI,
                                    printk(KERN_DEBUG
-                                          "%s: Adding address %s\n",
-                                          dev->name, print_mac(mac, cp)));
+                                          "%s: Adding address %pM\n",
+                                          dev->name, cp));
                }
                DMA_WBACK_INV(dev, &dma->mc_cmd, sizeof(struct mc_cmd));
                i596_add_cmd(dev, &cmd->cmd);
index b369890..bc70d5e 100644 (file)
@@ -169,7 +169,6 @@ static int __init lne390_probe1(struct net_device *dev, int ioaddr)
 {
        int i, revision, ret;
        unsigned long eisa_id;
-       DECLARE_MAC_BUF(mac);
 
        if (inb_p(ioaddr + LNE390_ID_PORT) == 0xff) return -ENODEV;
 
@@ -203,8 +202,8 @@ static int __init lne390_probe1(struct net_device *dev, int ioaddr)
 
        for(i = 0; i < ETHER_ADDR_LEN; i++)
                dev->dev_addr[i] = inb(ioaddr + LNE390_SA_PROM + i);
-       printk("lne390.c: LNE390%X in EISA slot %d, address %s.\n",
-              0xa+revision, ioaddr/0x1000, print_mac(mac, dev->dev_addr));
+       printk("lne390.c: LNE390%X in EISA slot %d, address %pM.\n",
+              0xa+revision, ioaddr/0x1000, dev->dev_addr);
 
        printk("lne390.c: ");
 
index 4ce8afd..ca9c5a8 100644 (file)
@@ -181,7 +181,6 @@ struct net_device * __init mac89x0_probe(int unit)
        unsigned long ioaddr;
        unsigned short sig;
        int err = -ENODEV;
-       DECLARE_MAC_BUF(mac);
 
        if (!MACH_IS_MAC)
                return ERR_PTR(-ENODEV);
@@ -279,8 +278,7 @@ struct net_device * __init mac89x0_probe(int unit)
 
        /* print the IRQ and ethernet address. */
 
-       printk(" IRQ %d ADDR %s\n",
-              dev->irq, print_mac(mac, dev->dev_addr));
+       printk(" IRQ %d ADDR %pM\n", dev->irq, dev->dev_addr);
 
        dev->open               = net_open;
        dev->stop               = net_close;
index 01f7a31..e00c896 100644 (file)
@@ -1104,7 +1104,6 @@ static int __init macb_probe(struct platform_device *pdev)
        unsigned long pclk_hz;
        u32 config;
        int err = -ENXIO;
-       DECLARE_MAC_BUF(mac);
 
        regs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
        if (!regs) {
@@ -1223,10 +1222,8 @@ static int __init macb_probe(struct platform_device *pdev)
 
        platform_set_drvdata(pdev, dev);
 
-       printk(KERN_INFO "%s: Atmel MACB at 0x%08lx irq %d "
-              "(%s)\n",
-              dev->name, dev->base_addr, dev->irq,
-              print_mac(mac, dev->dev_addr));
+       printk(KERN_INFO "%s: Atmel MACB at 0x%08lx irq %d (%pM)\n",
+              dev->name, dev->base_addr, dev->irq, dev->dev_addr);
 
        phydev = bp->phy_dev;
        printk(KERN_INFO "%s: attached PHY driver [%s] "
index 451acdc..a2021c0 100644 (file)
@@ -101,7 +101,6 @@ static int __devinit mace_probe(struct macio_dev *mdev, const struct of_device_i
        struct mace_data *mp;
        const unsigned char *addr;
        int j, rev, rc = -EBUSY;
-       DECLARE_MAC_BUF(mac);
 
        if (macio_resource_count(mdev) != 3 || macio_irq_count(mdev) != 3) {
                printk(KERN_ERR "can't use MACE %s: need 3 addrs and 3 irqs\n",
@@ -241,8 +240,8 @@ 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 %s, chip revision %d.%d\n",
-              dev->name, print_mac(mac, dev->dev_addr),
+       printk(KERN_INFO "%s: MACE at %pM, chip revision %d.%d\n",
+              dev->name, dev->dev_addr,
               mp->chipid >> 8, mp->chipid & 0xff);
 
        return 0;
index 85587a6..0b28318 100644 (file)
@@ -194,7 +194,6 @@ static int __devinit mace_probe(struct platform_device *pdev)
        unsigned char checksum = 0;
        static int found = 0;
        int err;
-       DECLARE_MAC_BUF(mac);
 
        if (found || macintosh_config->ether_type != MAC_ETHER_MACE)
                return -ENODEV;
@@ -249,8 +248,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 %s\n",
-              dev->name, print_mac(mac, dev->dev_addr));
+       printk(KERN_INFO "%s: 68K MACE, hardware address %pM\n",
+              dev->name, dev->dev_addr);
 
        err = register_netdev(dev);
        if (!err)
index e64c208..205bb05 100644 (file)
@@ -220,7 +220,6 @@ static int __init mac_onboard_sonic_ethernet_addr(struct net_device *dev)
        struct sonic_local *lp = netdev_priv(dev);
        const int prom_addr = ONBOARD_SONIC_PROM_BASE;
        int i;
-       DECLARE_MAC_BUF(mac);
 
        /* On NuBus boards we can sometimes look in the ROM resources.
           No such luck for comm-slot/onboard. */
@@ -264,8 +263,8 @@ static int __init mac_onboard_sonic_ethernet_addr(struct net_device *dev)
                dev->dev_addr[1] = val >> 8;
                dev->dev_addr[0] = val & 0xff;
 
-               printk(KERN_INFO "HW Address from CAM 15: %s\n",
-                      print_mac(mac, dev->dev_addr));
+               printk(KERN_INFO "HW Address from CAM 15: %pM\n",
+                      dev->dev_addr);
        } else return 0;
 
        if (memcmp(dev->dev_addr, "\x08\x00\x07", 3) &&
@@ -560,7 +559,6 @@ static int __init mac_sonic_probe(struct platform_device *pdev)
        struct net_device *dev;
        struct sonic_local *lp;
        int err;
-       DECLARE_MAC_BUF(mac);
 
        dev = alloc_etherdev(sizeof(struct sonic_local));
        if (!dev)
@@ -584,8 +582,7 @@ found:
        if (err)
                goto out;
 
-       printk("%s: MAC %s IRQ %d\n",
-              dev->name, print_mac(mac, dev->dev_addr), dev->irq);
+       printk("%s: MAC %pM IRQ %d\n", dev->name, dev->dev_addr, dev->irq);
 
        return 0;
 
index 4239450..1d2de0b 100644 (file)
@@ -333,10 +333,34 @@ static u32 macvlan_ethtool_get_rx_csum(struct net_device *dev)
        return lowerdev->ethtool_ops->get_rx_csum(lowerdev);
 }
 
+static int macvlan_ethtool_get_settings(struct net_device *dev,
+                                       struct ethtool_cmd *cmd)
+{
+       const struct macvlan_dev *vlan = netdev_priv(dev);
+       struct net_device *lowerdev = vlan->lowerdev;
+
+       if (!lowerdev->ethtool_ops->get_settings)
+               return -EOPNOTSUPP;
+
+       return lowerdev->ethtool_ops->get_settings(lowerdev, cmd);
+}
+
+static u32 macvlan_ethtool_get_flags(struct net_device *dev)
+{
+       const struct macvlan_dev *vlan = netdev_priv(dev);
+       struct net_device *lowerdev = vlan->lowerdev;
+
+       if (!lowerdev->ethtool_ops->get_flags)
+               return 0;
+       return lowerdev->ethtool_ops->get_flags(lowerdev);
+}
+
 static const struct ethtool_ops macvlan_ethtool_ops = {
        .get_link               = ethtool_op_get_link,
+       .get_settings           = macvlan_ethtool_get_settings,
        .get_rx_csum            = macvlan_ethtool_get_rx_csum,
        .get_drvinfo            = macvlan_ethtool_get_drvinfo,
+       .get_flags              = macvlan_ethtool_get_flags,
 };
 
 static void macvlan_setup(struct net_device *dev)
index a1e22ed..621133b 100644 (file)
@@ -94,10 +94,9 @@ char o2meth_eaddr[8]={0,0,0,0,0,0,0,0};
 static inline void load_eaddr(struct net_device *dev)
 {
        int i;
-       DECLARE_MAC_BUF(mac);
        u64 macaddr;
 
-       DPRINTK("Loading MAC Address: %s\n", print_mac(mac, dev->dev_addr));
+       DPRINTK("Loading MAC Address: %pM\n", dev->dev_addr);
        macaddr = 0;
        for (i = 0; i < 6; i++)
                macaddr |= (u64)dev->dev_addr[i] << ((5 - i) * 8);
index 592c01a..b162206 100644 (file)
@@ -118,17 +118,7 @@ static int find_mgm(struct mlx4_dev *dev,
                return err;
 
        if (0)
-               mlx4_dbg(dev, "Hash for %04x:%04x:%04x:%04x:"
-                         "%04x:%04x:%04x:%04x is %04x\n",
-                         be16_to_cpu(((__be16 *) gid)[0]),
-                         be16_to_cpu(((__be16 *) gid)[1]),
-                         be16_to_cpu(((__be16 *) gid)[2]),
-                         be16_to_cpu(((__be16 *) gid)[3]),
-                         be16_to_cpu(((__be16 *) gid)[4]),
-                         be16_to_cpu(((__be16 *) gid)[5]),
-                         be16_to_cpu(((__be16 *) gid)[6]),
-                         be16_to_cpu(((__be16 *) gid)[7]),
-                         *hash);
+               mlx4_dbg(dev, "Hash for %pI6 is %04x\n", gid, *hash);
 
        *index = *hash;
        *prev  = -1;
@@ -277,16 +267,7 @@ int mlx4_multicast_detach(struct mlx4_dev *dev, struct mlx4_qp *qp, u8 gid[16])
                goto out;
 
        if (index == -1) {
-               mlx4_err(dev, "MGID %04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x "
-                         "not found\n",
-                         be16_to_cpu(((__be16 *) gid)[0]),
-                         be16_to_cpu(((__be16 *) gid)[1]),
-                         be16_to_cpu(((__be16 *) gid)[2]),
-                         be16_to_cpu(((__be16 *) gid)[3]),
-                         be16_to_cpu(((__be16 *) gid)[4]),
-                         be16_to_cpu(((__be16 *) gid)[5]),
-                         be16_to_cpu(((__be16 *) gid)[6]),
-                         be16_to_cpu(((__be16 *) gid)[7]));
+               mlx4_err(dev, "MGID %pI6 not found\n", gid);
                err = -EINVAL;
                goto out;
        }
index a9c8c08..3a759d0 100644 (file)
@@ -2589,7 +2589,6 @@ static int mv643xx_eth_probe(struct platform_device *pdev)
        struct mv643xx_eth_private *mp;
        struct net_device *dev;
        struct resource *res;
-       DECLARE_MAC_BUF(mac);
        int err;
 
        pd = pdev->dev.platform_data;
@@ -2683,8 +2682,8 @@ static int mv643xx_eth_probe(struct platform_device *pdev)
        if (err)
                goto out;
 
-       dev_printk(KERN_NOTICE, &dev->dev, "port %d with MAC address %s\n",
-                  mp->port_num, print_mac(mac, dev->dev_addr));
+       dev_printk(KERN_NOTICE, &dev->dev, "port %d with MAC address %pM\n",
+                  mp->port_num, dev->dev_addr);
 
        if (mp->tx_desc_sram_size > 0)
                dev_printk(KERN_NOTICE, &dev->dev, "configured with sram\n");
index 06ca425..d30b0d0 100644 (file)
@@ -67,7 +67,6 @@ struct net_device * __init mvme147lance_probe(int unit)
        u_long *addr;
        u_long address;
        int err;
-       DECLARE_MAC_BUF(mac);
 
        if (!MACH_IS_MVME147 || called)
                return ERR_PTR(-ENODEV);
@@ -102,9 +101,9 @@ struct net_device * __init mvme147lance_probe(int unit)
        dev->dev_addr[3]=address&0xff;
 
        printk("%s: MVME147 at 0x%08lx, irq %d, "
-              "Hardware Address %s\n",
+              "Hardware Address %pM\n",
               dev->name, dev->base_addr, MVME147_LANCE_IRQ,
-              print_mac(mac, dev->dev_addr));
+              dev->dev_addr);
 
        lp = (struct m147lance_private *)dev->priv;
        lp->ram = __get_dma_pages(GFP_ATOMIC, 3);       /* 16K */
index a5f428b..d2cbc7d 100644 (file)
@@ -2983,7 +2983,6 @@ static void myri10ge_set_multicast_list(struct net_device *dev)
        struct dev_mc_list *mc_list;
        __be32 data[2] = { 0, 0 };
        int err;
-       DECLARE_MAC_BUF(mac);
 
        /* can be called from atomic contexts,
         * pass 1 to force atomicity in myri10ge_send_cmd() */
@@ -3030,8 +3029,7 @@ static void myri10ge_set_multicast_list(struct net_device *dev)
                        printk(KERN_ERR "myri10ge: %s: Failed "
                               "MXGEFW_JOIN_MULTICAST_GROUP, error status:"
                               "%d\t", dev->name, err);
-                       printk(KERN_ERR "MAC %s\n",
-                              print_mac(mac, mc_list->dmi_addr));
+                       printk(KERN_ERR "MAC %pM\n", mc_list->dmi_addr);
                        goto abort;
                }
        }
index 3ad7589..1bbdde1 100644 (file)
@@ -318,13 +318,10 @@ static void myri_is_not_so_happy(struct myri_eth *mp)
 #ifdef DEBUG_HEADER
 static void dump_ehdr(struct ethhdr *ehdr)
 {
-       DECLARE_MAC_BUF(mac);
-       DECLARE_MAC_BUF(mac2);
-       printk("ehdr[h_dst(%s)"
-              "h_source(%s)"
+       printk("ehdr[h_dst(%pM)"
+              "h_source(%pM)"
               "h_proto(%04x)]\n",
-              print_mac(mac, ehdr->h_dest), print_mac(mac2, ehdr->h_source),
-              ehdr->h_proto);
+              ehdr->h_dest, ehdr->h_source, ehdr->h_proto);
 }
 
 static void dump_ehdr_and_myripad(unsigned char *stuff)
@@ -905,7 +902,6 @@ static int __devinit myri_sbus_probe(struct of_device *op, const struct of_devic
        struct device_node *dp = op->node;
        static unsigned version_printed;
        struct net_device *dev;
-       DECLARE_MAC_BUF(mac);
        struct myri_eth *mp;
        const void *prop;
        static int num;
@@ -1088,8 +1084,8 @@ static int __devinit myri_sbus_probe(struct of_device *op, const struct of_devic
 
        num++;
 
-       printk("%s: MyriCOM MyriNET Ethernet %s\n",
-              dev->name, print_mac(mac, dev->dev_addr));
+       printk("%s: MyriCOM MyriNET Ethernet %pM\n",
+              dev->name, dev->dev_addr);
 
        return 0;
 
index f7fa394..5f1de80 100644 (file)
@@ -792,7 +792,6 @@ static int __devinit natsemi_probe1 (struct pci_dev *pdev,
        const int pcibar = 1; /* PCI base address register */
        int prev_eedata;
        u32 tmp;
-       DECLARE_MAC_BUF(mac);
 
 /* when built into the kernel, we only print version if device is found */
 #ifndef MODULE
@@ -948,10 +947,10 @@ static int __devinit natsemi_probe1 (struct pci_dev *pdev,
 
        if (netif_msg_drv(np)) {
                printk(KERN_INFO "natsemi %s: %s at %#08llx "
-                      "(%s), %s, IRQ %d",
+                      "(%s), %pM, IRQ %d",
                       dev->name, natsemi_pci_info[chip_idx].name,
                       (unsigned long long)iostart, pci_name(np->pci_dev),
-                      print_mac(mac, dev->dev_addr), irq);
+                      dev->dev_addr, irq);
                if (dev->if_port == PORT_TP)
                        printk(", port TP.\n");
                else if (np->ignore_phy)
index fbc7531..aa99f5e 100644 (file)
@@ -204,7 +204,6 @@ static int __init ne_probe1(struct net_device *dev, int ioaddr)
        static unsigned version_printed;
        struct ei_device *ei_local = (struct ei_device *) netdev_priv(dev);
        unsigned char bus_width;
-       DECLARE_MAC_BUF(mac);
 
        if (!request_region(ioaddr, NE_IO_EXTENT, DRV_NAME))
                return -EBUSY;
@@ -299,7 +298,7 @@ static int __init ne_probe1(struct net_device *dev, int ioaddr)
 
        for(i = 0; i < ETHER_ADDR_LEN; i++)
                dev->dev_addr[i] = SA_prom[i];
-       printk(" %s\n", print_mac(mac, dev->dev_addr));
+       printk(" %pM\n", dev->dev_addr);
 
        printk("%s: %s found at %#x, using IRQ %d.\n",
                dev->name, name, ioaddr, dev->irq);
index eb681c0..f708712 100644 (file)
@@ -297,7 +297,6 @@ static int __init ne_probe1(struct net_device *dev, unsigned long ioaddr)
        int neX000, ctron, copam, bad_card;
        int reg0, ret;
        static unsigned version_printed;
-       DECLARE_MAC_BUF(mac);
 
        if (!request_region(ioaddr, NE_IO_EXTENT, DRV_NAME))
                return -EBUSY;
@@ -517,7 +516,7 @@ static int __init ne_probe1(struct net_device *dev, unsigned long ioaddr)
        }
 #endif
 
-       printk("%s\n", print_mac(mac, dev->dev_addr));
+       printk("%pM\n", dev->dev_addr);
 
        ei_status.name = name;
        ei_status.tx_start_page = start_page;
index 332df75..6f8f326 100644 (file)
@@ -302,7 +302,6 @@ out:
 static int ne2_procinfo(char *buf, int slot, struct net_device *dev)
 {
        int len=0;
-       DECLARE_MAC_BUF(mac);
 
        len += sprintf(buf+len, "The NE/2 Ethernet Adapter\n" );
        len += sprintf(buf+len, "Driver written by Wim Dumon ");
@@ -313,7 +312,7 @@ static int ne2_procinfo(char *buf, int slot, struct net_device *dev)
        len += sprintf(buf+len, "Based on the original NE2000 drivers\n" );
        len += sprintf(buf+len, "Base IO: %#x\n", (unsigned int)dev->base_addr);
        len += sprintf(buf+len, "IRQ    : %d\n", dev->irq);
-       len += sprintf(buf+len, "HW addr : %s\n", print_mac(mac, dev->dev_addr));
+       len += sprintf(buf+len, "HW addr : %pM\n", dev->dev_addr);
 
        return len;
 }
@@ -326,7 +325,6 @@ static int __init ne2_probe1(struct net_device *dev, int slot)
        const char *name = "NE/2";
        int start_page, stop_page;
        static unsigned version_printed;
-       DECLARE_MAC_BUF(mac);
 
        if (ei_debug && version_printed++ == 0)
                printk(version);
@@ -469,7 +467,7 @@ static int __init ne2_probe1(struct net_device *dev, int slot)
        for(i = 0; i < ETHER_ADDR_LEN; i++)
                dev->dev_addr[i] = SA_prom[i];
 
-       printk(" %s\n", print_mac(mac, dev->dev_addr));
+       printk(" %pM\n", dev->dev_addr);
 
        printk("%s: %s found at %#x, using IRQ %d.\n",
                        dev->name, name, base_addr, dev->irq);
index de0de74..12a7d6d 100644 (file)
@@ -212,7 +212,6 @@ static int __devinit ne2k_pci_init_one (struct pci_dev *pdev,
        static unsigned int fnd_cnt;
        long ioaddr;
        int flags = pci_clone_list[chip_idx].flags;
-       DECLARE_MAC_BUF(mac);
 
 /* when built into the kernel, we only print version if device is found */
 #ifndef MODULE
@@ -368,9 +367,9 @@ static int __devinit ne2k_pci_init_one (struct pci_dev *pdev,
 
        for(i = 0; i < 6; i++)
                dev->dev_addr[i] = SA_prom[i];
-       printk("%s: %s found at %#lx, IRQ %d, %s.\n",
+       printk("%s: %s found at %#lx, IRQ %d, %pM.\n",
               dev->name, pci_clone_list[chip_idx].name, ioaddr, dev->irq,
-              print_mac(mac, dev->dev_addr));
+              dev->dev_addr);
 
        memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);
 
index 425043a..6681ca7 100644 (file)
@@ -99,7 +99,6 @@ static int __init ne3210_eisa_probe (struct device *device)
        int i, retval, port_index;
        struct eisa_device *edev = to_eisa_device (device);
        struct net_device *dev;
-       DECLARE_MAC_BUF(mac);
 
        /* Allocate dev->priv and fill in 8390 specific dev fields. */
        if (!(dev = alloc_ei_netdev ())) {
@@ -131,8 +130,8 @@ static int __init ne3210_eisa_probe (struct device *device)
        port_index = inb(ioaddr + NE3210_CFG2) >> 6;
        for(i = 0; i < ETHER_ADDR_LEN; i++)
                dev->dev_addr[i] = inb(ioaddr + NE3210_SA_PROM + i);
-       printk("ne3210.c: NE3210 in EISA slot %d, media: %s, addr: %s.\n",
-               edev->slot, ifmap[port_index], print_mac(mac, dev->dev_addr));
+       printk("ne3210.c: NE3210 in EISA slot %d, media: %s, addr: %pM.\n",
+               edev->slot, ifmap[port_index], dev->dev_addr);
 
        /* Snarf the interrupt now. CFG file has them all listed as `edge' with share=NO */
        dev->irq = irq_map[(inb(ioaddr + NE3210_CFG2) >> 3) & 0x07];
index 9681618..d304d38 100644 (file)
@@ -307,17 +307,14 @@ static ssize_t show_remote_ip(struct netconsole_target *nt, char *buf)
 static ssize_t show_local_mac(struct netconsole_target *nt, char *buf)
 {
        struct net_device *dev = nt->np.dev;
+       static const u8 bcast[ETH_ALEN] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
 
-       DECLARE_MAC_BUF(mac);
-       return snprintf(buf, PAGE_SIZE, "%s\n", dev ?
-                       print_mac(mac, dev->dev_addr) : "ff:ff:ff:ff:ff:ff");
+       return snprintf(buf, PAGE_SIZE, "%pM\n", dev ? dev->dev_addr : bcast);
 }
 
 static ssize_t show_remote_mac(struct netconsole_target *nt, char *buf)
 {
-       DECLARE_MAC_BUF(mac);
-       return snprintf(buf, PAGE_SIZE, "%s\n",
-                       print_mac(mac, nt->np.remote_mac));
+       return snprintf(buf, PAGE_SIZE, "%pM\n", nt->np.remote_mac);
 }
 
 /*
index 6ef3f0d..33caca9 100644 (file)
@@ -439,7 +439,6 @@ netxen_read_mac_addr(struct netxen_adapter *adapter)
        int i;
        unsigned char *p;
        __le64 mac_addr;
-       DECLARE_MAC_BUF(mac);
        struct net_device *netdev = adapter->netdev;
        struct pci_dev *pdev = adapter->pdev;
 
@@ -462,10 +461,9 @@ netxen_read_mac_addr(struct netxen_adapter *adapter)
 
        /* set station address */
 
-       if (!is_valid_ether_addr(netdev->perm_addr)) {
-               dev_warn(&pdev->dev, "Bad MAC address %s.\n",
-                               print_mac(mac, netdev->dev_addr));
-       } else
+       if (!is_valid_ether_addr(netdev->perm_addr))
+               dev_warn(&pdev->dev, "Bad MAC address %pM.\n", netdev->dev_addr);
+       else
                adapter->macaddr_set(adapter, netdev->dev_addr);
 
        return 0;
index 27f07f6..c3b9c83 100644 (file)
@@ -608,7 +608,6 @@ int netxen_niu_macaddr_set(struct netxen_adapter *adapter,
        int phy = adapter->physical_port;
        unsigned char mac_addr[6];
        int i;
-       DECLARE_MAC_BUF(mac);
 
        if (NX_IS_REVISION_P3(adapter->ahw.revision_id))
                return 0;
@@ -636,10 +635,8 @@ int netxen_niu_macaddr_set(struct netxen_adapter *adapter,
        if (i == 10) {
                printk(KERN_ERR "%s: cannot set Mac addr for %s\n",
                       netxen_nic_driver_name, adapter->netdev->name);
-               printk(KERN_ERR "MAC address set: %s.\n",
-                      print_mac(mac, addr));
-               printk(KERN_ERR "MAC address get: %s.\n",
-                      print_mac(mac, mac_addr));
+               printk(KERN_ERR "MAC address set: %pM.\n", addr);
+               printk(KERN_ERR "MAC address get: %pM.\n", mac_addr);
        }
        return 0;
 }
index 8e0ca9f..e88ec8a 100644 (file)
@@ -203,7 +203,6 @@ static int __init ni5010_probe1(struct net_device *dev, int ioaddr)
        unsigned int data = 0;
        int boguscount = 40;
        int err = -ENODEV;
-       DECLARE_MAC_BUF(mac);
 
        dev->base_addr = ioaddr;
        dev->irq = irq;
@@ -271,7 +270,7 @@ static int __init ni5010_probe1(struct net_device *dev, int ioaddr)
                outw(i, IE_GP);
                dev->dev_addr[i] = inb(IE_SAPROM);
        }
-       printk("%s ", print_mac(mac, dev->dev_addr));
+       printk("%pM ", dev->dev_addr);
 
        PRINTK2((KERN_DEBUG "%s: I/O #4 passed!\n", dev->name));
 
index ebc8127..f927bc0 100644 (file)
@@ -8638,10 +8638,8 @@ static void __devinit niu_assign_netdev_ops(struct net_device *dev)
 static void __devinit niu_device_announce(struct niu *np)
 {
        struct net_device *dev = np->dev;
-       DECLARE_MAC_BUF(mac);
 
-       pr_info("%s: NIU Ethernet %s\n",
-               dev->name, print_mac(mac, dev->dev_addr));
+       pr_info("%s: NIU Ethernet %pM\n", dev->name, dev->dev_addr);
 
        if (np->parent->plat_type == PLAT_TYPE_ATCA_CP3220) {
                pr_info("%s: Port type[%s] mode[%s:%s] XCVR[%s] phy[%s]\n",
index ff44961..4bb6441 100644 (file)
@@ -1955,7 +1955,6 @@ static int __devinit ns83820_init_one(struct pci_dev *pci_dev, const struct pci_
        long addr;
        int err;
        int using_dac = 0;
-       DECLARE_MAC_BUF(mac);
 
        /* See if we can set the dma mask early on; failure is fatal. */
        if (sizeof(dma_addr_t) == 8 &&
@@ -2220,12 +2219,11 @@ static int __devinit ns83820_init_one(struct pci_dev *pci_dev, const struct pci_
                ndev->features |= NETIF_F_HIGHDMA;
        }
 
-       printk(KERN_INFO "%s: ns83820 v" VERSION ": DP83820 v%u.%u: %s io=0x%08lx irq=%d f=%s\n",
+       printk(KERN_INFO "%s: ns83820 v" VERSION ": DP83820 v%u.%u: %pM io=0x%08lx irq=%d f=%s\n",
                ndev->name,
                (unsigned)readl(dev->base + SRR) >> 8,
                (unsigned)readl(dev->base + SRR) & 0xff,
-               print_mac(mac, ndev->dev_addr),
-               addr, pci_dev->irq,
+               ndev->dev_addr, addr, pci_dev->irq,
                (ndev->features & NETIF_F_HIGHDMA) ? "h,sg" : "sg"
                );
 
index edc0fd5..b027005 100644 (file)
@@ -1742,7 +1742,6 @@ pasemi_mac_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        struct net_device *dev;
        struct pasemi_mac *mac;
        int err;
-       DECLARE_MAC_BUF(mac_buf);
 
        err = pci_enable_device(pdev);
        if (err)
@@ -1849,9 +1848,9 @@ pasemi_mac_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
                        err);
                goto out;
        } else if netif_msg_probe(mac)
-               printk(KERN_INFO "%s: PA Semi %s: intf %d, hw addr %s\n",
+               printk(KERN_INFO "%s: PA Semi %s: intf %d, hw addr %pM\n",
                       dev->name, mac->type == MAC_TYPE_GMAC ? "GMAC" : "XAUI",
-                      mac->dma_if, print_mac(mac_buf, dev->dev_addr));
+                      mac->dma_if, dev->dev_addr);
 
        return err;
 
index 0a575fe..bf952ac 100644 (file)
@@ -737,7 +737,6 @@ static int __devinit netdrv_init_one (struct pci_dev *pdev,
        int i, addr_len, option;
        void *ioaddr = NULL;
        static int board_idx = -1;
-       DECLARE_MAC_BUF(mac);
 
 /* when built into the kernel, we only print version if device is found */
 #ifndef MODULE
@@ -797,11 +796,11 @@ static int __devinit netdrv_init_one (struct pci_dev *pdev,
 
        tp->phys[0] = 32;
 
-       printk (KERN_INFO "%s: %s at 0x%lx, %sIRQ %d\n",
+       printk (KERN_INFO "%s: %s at 0x%lx, %pM IRQ %d\n",
                dev->name,
                board_info[ent->driver_data].name,
                dev->base_addr,
-               print_mac(mac, dev->dev_addr),
+               dev->dev_addr,
                dev->irq);
 
        printk (KERN_DEBUG "%s:  Identified 8139 chip type '%s'\n",
index 08c4dd8..dcbb11a 100644 (file)
@@ -345,7 +345,6 @@ static int tc574_config(struct pcmcia_device *link)
        __be16 *phys_addr;
        char *cardname;
        __u32 config;
-       DECLARE_MAC_BUF(mac);
 
        phys_addr = (__be16 *)dev->dev_addr;
 
@@ -463,9 +462,9 @@ 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 %s.\n",
+              "hw_addr %pM.\n",
               dev->name, cardname, dev->base_addr, dev->irq,
-              print_mac(mac, dev->dev_addr));
+              dev->dev_addr);
        printk(" %dK FIFO split %s Rx:Tx, %sMII interface.\n",
                   8 << config & Ram_size,
                   ram_split[(config & Ram_split) >> Ram_split_shift],
index c235cdb..5882109 100644 (file)
@@ -255,7 +255,6 @@ static int tc589_config(struct pcmcia_device *link)
     int last_fn, last_ret, i, j, multi = 0, fifo;
     unsigned int ioaddr;
     char *ram_split[] = {"5:3", "3:1", "1:1", "3:5"};
-    DECLARE_MAC_BUF(mac);
     
     DEBUG(0, "3c589_config(0x%p)\n", link);
 
@@ -333,9 +332,9 @@ 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 %s\n",
+          "hw_addr %pM\n",
           dev->name, (multi ? "562" : "589"), dev->base_addr, dev->irq,
-          print_mac(mac, dev->dev_addr));
+          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]);
index b37a498..889f1bd 100644 (file)
@@ -321,7 +321,6 @@ static int axnet_config(struct pcmcia_device *link)
     struct net_device *dev = link->priv;
     axnet_dev_t *info = PRIV(dev);
     int i, j, last_ret, last_fn;
-    DECLARE_MAC_BUF(mac);
 
     DEBUG(0, "axnet_config(0x%p)\n", link);
 
@@ -397,10 +396,10 @@ 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 %s\n",
+          "hw_addr %pM\n",
           dev->name, ((info->flags & IS_AX88790) ? 7 : 1),
           dev->base_addr, dev->irq,
-          print_mac(mac, dev->dev_addr));
+          dev->dev_addr);
     if (info->phy_id != -1) {
        DEBUG(0, "  MII transceiver at index %d, status %x.\n", info->phy_id, j);
     } else {
index 69d916d..465e4ad 100644 (file)
@@ -348,7 +348,6 @@ static int fmvj18x_config(struct pcmcia_device *link)
     cardtype_t cardtype;
     char *card_name = "unknown";
     u_char *node_id;
-    DECLARE_MAC_BUF(mac);
 
     DEBUG(0, "fmvj18x_config(0x%p)\n", link);
 
@@ -539,9 +538,9 @@ static int fmvj18x_config(struct pcmcia_device *link)
 
     /* print current configuration */
     printk(KERN_INFO "%s: %s, sram %s, port %#3lx, irq %d, "
-          "hw_addr %s\n",
+          "hw_addr %pM\n",
           dev->name, card_name, sram_config == 0 ? "4K TX*2" : "8K TX*2", 
-          dev->base_addr, dev->irq, print_mac(mac, dev->dev_addr));
+          dev->base_addr, dev->irq, dev->dev_addr);
 
     return 0;
     
index 448cd40..35a1d10 100644 (file)
@@ -659,7 +659,6 @@ static int nmclan_config(struct pcmcia_device *link)
   u_char buf[64];
   int i, last_ret, last_fn;
   unsigned int ioaddr;
-  DECLARE_MAC_BUF(mac);
 
   DEBUG(0, "nmclan_config(0x%p)\n", link);
 
@@ -719,9 +718,9 @@ static int nmclan_config(struct pcmcia_device *link)
   strcpy(lp->node.dev_name, dev->name);
 
   printk(KERN_INFO "%s: nmclan: port %#3lx, irq %d, %s port,"
-        " hw_addr %s\n",
+        " hw_addr %pM\n",
         dev->name, dev->base_addr, dev->irq, if_names[dev->if_port],
-        print_mac(mac, dev->dev_addr));
+        dev->dev_addr);
   return 0;
 
 cs_failed:
index e40d630..6962537 100644 (file)
@@ -554,7 +554,6 @@ static int pcnet_config(struct pcmcia_device *link)
     int last_ret, last_fn, start_pg, stop_pg, cm_offset;
     int has_shmem = 0;
     hw_info_t *local_hw_info;
-    DECLARE_MAC_BUF(mac);
 
     DEBUG(0, "pcnet_config(0x%p)\n", link);
 
@@ -675,7 +674,7 @@ static int pcnet_config(struct pcmcia_device *link)
        printk (" mem %#5lx,", dev->mem_start);
     if (info->flags & HAS_MISC_REG)
        printk(" %s xcvr,", if_names[dev->if_port]);
-    printk(" hw_addr %s\n", print_mac(mac, dev->dev_addr));
+    printk(" hw_addr %pM\n", dev->dev_addr);
     return 0;
 
 cs_failed:
index c74d665..fccd53e 100644 (file)
@@ -949,7 +949,6 @@ static int smc91c92_config(struct pcmcia_device *link)
     int i, j, rev;
     unsigned int ioaddr;
     u_long mir;
-    DECLARE_MAC_BUF(mac);
 
     DEBUG(0, "smc91c92_config(0x%p)\n", link);
 
@@ -1062,9 +1061,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 %s\n",
+          "hw_addr %pM\n",
           dev->name, name, (rev & 0x0f), dev->base_addr, dev->irq,
-          print_mac(mac, dev->dev_addr));
+          dev->dev_addr);
 
     if (rev > 0) {
        if (mir & 0x3ff)
index e1fd585..c45c306 100644 (file)
@@ -772,7 +772,6 @@ xirc2ps_config(struct pcmcia_device * link)
     int err, i;
     u_char buf[64];
     cistpl_lan_node_id_t *node_id = (cistpl_lan_node_id_t*)parse.funce.data;
-    DECLARE_MAC_BUF(mac);
 
     local->dingo_ccr = NULL;
 
@@ -1051,9 +1050,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 %s\n",
+    printk(KERN_INFO "%s: %s: port %#3lx, irq %d, hwaddr %pM\n",
           dev->name, local->manf_str,(u_long)dev->base_addr, (int)dev->irq,
-          print_mac(mac, dev->dev_addr));
+          dev->dev_addr);
 
     return 0;
 
index ca8c0e0..15bf6fe 100644 (file)
@@ -1747,8 +1747,7 @@ pcnet32_probe1(unsigned long ioaddr, int shared, struct pci_dev *pdev)
                memset(dev->dev_addr, 0, sizeof(dev->dev_addr));
 
        if (pcnet32_debug & NETIF_MSG_PROBE) {
-               DECLARE_MAC_BUF(mac);
-               printk(" %s", print_mac(mac, dev->dev_addr));
+               printk(" %pM", dev->dev_addr);
 
                /* Version 0x2623 and 0x2624 */
                if (((chip_version + 1) & 0xfffe) == 0x2624) {
index b646e92..c22b305 100644 (file)
@@ -958,7 +958,6 @@ static int pppoe_seq_show(struct seq_file *seq, void *v)
 {
        struct pppox_sock *po;
        char *dev_name;
-       DECLARE_MAC_BUF(mac);
 
        if (v == SEQ_START_TOKEN) {
                seq_puts(seq, "Id       Address              Device\n");
@@ -968,8 +967,8 @@ static int pppoe_seq_show(struct seq_file *seq, void *v)
        po = v;
        dev_name = po->pppoe_pa.dev;
 
-       seq_printf(seq, "%08X %s %8s\n",
-                  po->pppoe_pa.sid, print_mac(mac, po->pppoe_pa.remote), dev_name);
+       seq_printf(seq, "%08X %pM %8s\n",
+                  po->pppoe_pa.sid, po->pppoe_pa.remote, dev_name);
 out:
        return 0;
 }
index 2eb54fd..4b564ed 100644 (file)
@@ -1443,7 +1443,6 @@ int gelic_net_setup_netdev(struct net_device *netdev, struct gelic_card *card)
 {
        int status;
        u64 v1, v2;
-       DECLARE_MAC_BUF(mac);
 
        netdev->features = NETIF_F_IP_CSUM;
 
@@ -1474,9 +1473,8 @@ int gelic_net_setup_netdev(struct net_device *netdev, struct gelic_card *card)
                        __func__, netdev->name, status);
                return status;
        }
-       dev_info(ctodev(card), "%s: MAC addr %s\n",
-                netdev->name,
-                print_mac(mac, netdev->dev_addr));
+       dev_info(ctodev(card), "%s: MAC addr %pM\n",
+                netdev->name, netdev->dev_addr);
 
        return 0;
 }
index a834b52..d10dc3e 100644 (file)
@@ -763,7 +763,6 @@ static void scan_list_dump(struct gelic_wl_info *wl)
 {
        struct gelic_wl_scan_info *scan_info;
        int i;
-       DECLARE_MAC_BUF(mac);
 
        i = 0;
        list_for_each_entry(scan_info, &wl->network_list, list) {
@@ -775,8 +774,7 @@ static void scan_list_dump(struct gelic_wl_info *wl)
                         scan_info->rate_len, scan_info->rate_ext_len,
                         scan_info->essid_len);
                /* -- */
-               pr_debug("bssid=%s\n",
-                        print_mac(mac, &scan_info->hwinfo->bssid[2]));
+               pr_debug("bssid=%pM\n", &scan_info->hwinfo->bssid[2]);
                pr_debug("essid=%s\n", scan_info->hwinfo->essid);
        }
 }
@@ -1167,11 +1165,7 @@ static int gelic_wl_set_ap(struct net_device *netdev,
                       ETH_ALEN);
                set_bit(GELIC_WL_STAT_BSSID_SET, &wl->stat);
                set_bit(GELIC_WL_STAT_CONFIGURED, &wl->stat);
-               pr_debug("%s: bss=%02x:%02x:%02x:%02x:%02x:%02x\n",
-                        __func__,
-                        wl->bssid[0], wl->bssid[1],
-                        wl->bssid[2], wl->bssid[3],
-                        wl->bssid[4], wl->bssid[5]);
+               pr_debug("%s: bss=%pM\n", __func__, wl->bssid);
        } else {
                pr_debug("%s: clear bssid\n", __func__);
                clear_bit(GELIC_WL_STAT_BSSID_SET, &wl->stat);
@@ -1632,7 +1626,6 @@ static void gelic_wl_scan_complete_event(struct gelic_wl_info *wl)
        unsigned long this_time = jiffies;
        unsigned int data_len, i, found, r;
        void *buf;
-       DECLARE_MAC_BUF(mac);
 
        pr_debug("%s:start\n", __func__);
        mutex_lock(&wl->scan_lock);
@@ -1684,9 +1677,9 @@ static void gelic_wl_scan_complete_event(struct gelic_wl_info *wl)
             scan_info_size < data_len;
             i++, scan_info_size += be16_to_cpu(scan_info->size),
             scan_info = (void *)scan_info + be16_to_cpu(scan_info->size)) {
-               pr_debug("%s:size=%d bssid=%s scan_info=%p\n", __func__,
+               pr_debug("%s:size=%d bssid=%pM scan_info=%p\n", __func__,
                         be16_to_cpu(scan_info->size),
-                        print_mac(mac, &scan_info->bssid[2]), scan_info);
+                        &scan_info->bssid[2], scan_info);
 
                /*
                 * The wireless firmware may return invalid channel 0 and/or
@@ -1787,7 +1780,6 @@ struct gelic_wl_scan_info *gelic_wl_find_best_bss(struct gelic_wl_info *wl)
        struct gelic_wl_scan_info *best_bss;
        int weight, best_weight;
        u16 security;
-       DECLARE_MAC_BUF(mac);
 
        pr_debug("%s: <-\n", __func__);
 
@@ -1857,8 +1849,8 @@ struct gelic_wl_scan_info *gelic_wl_find_best_bss(struct gelic_wl_info *wl)
 #ifdef DEBUG
        pr_debug("%s: -> bss=%p\n", __func__, best_bss);
        if (best_bss) {
-               pr_debug("%s:addr=%s\n", __func__,
-                        print_mac(mac, &best_bss->hwinfo->bssid[2]));
+               pr_debug("%s:addr=%pM\n", __func__,
+                        &best_bss->hwinfo->bssid[2]);
        }
 #endif
        return best_bss;
index 3cdd07c..acf8dc5 100644 (file)
@@ -3529,7 +3529,6 @@ static void ql_display_dev_info(struct net_device *ndev)
 {
        struct ql3_adapter *qdev = (struct ql3_adapter *)netdev_priv(ndev);
        struct pci_dev *pdev = qdev->pdev;
-       DECLARE_MAC_BUF(mac);
 
        printk(KERN_INFO PFX
               "\n%s Adapter %d RevisionID %d found %s on PCI slot %d.\n",
@@ -3555,8 +3554,8 @@ static void ql_display_dev_info(struct net_device *ndev)
 
        if (netif_msg_probe(qdev))
                printk(KERN_INFO PFX
-                      "%s: MAC address %s\n",
-                      ndev->name, print_mac(mac, ndev->dev_addr));
+                      "%s: MAC address %pM\n",
+                      ndev->name, ndev->dev_addr);
 }
 
 static int ql_adapter_down(struct ql3_adapter *qdev, int do_reset)
@@ -3978,9 +3977,7 @@ static int __devinit ql3xxx_probe(struct pci_dev *pdev,
        if (qdev->device_id == QL3032_DEVICE_ID)
                ndev->features |= NETIF_F_IP_CSUM | NETIF_F_SG;
 
-       qdev->mem_map_registers =
-           ioremap_nocache(pci_resource_start(pdev, 1),
-                           pci_resource_len(qdev->pdev, 1));
+       qdev->mem_map_registers = pci_ioremap_bar(pdev, 1);
        if (!qdev->mem_map_registers) {
                printk(KERN_ERR PFX "%s: cannot map device registers\n",
                       pci_name(pdev));
index b83a9c9..6445d2c 100644 (file)
@@ -336,12 +336,11 @@ static int ql_set_mac_addr_reg(struct ql_adapter *qdev, u8 *addr, u32 type,
                            (addr[5]);
 
                        QPRINTK(qdev, IFUP, INFO,
-                               "Adding %s address %02x:%02x:%02x:%02x:%02x:%02x"
+                               "Adding %s address %pM"
                                " at index %d in the CAM.\n",
                                ((type ==
                                  MAC_ADDR_TYPE_MULTI_MAC) ? "MULTICAST" :
-                                "UNICAST"), addr[0], addr[1], addr[2], addr[3],
-                               addr[4], addr[5], index);
+                                "UNICAST"), addr, index);
 
                        status =
                            ql_wait_reg_rdy(qdev,
@@ -3127,11 +3126,7 @@ static void ql_display_dev_info(struct net_device *ndev)
                qdev->chip_rev_id >> 4 & 0x0000000f,
                qdev->chip_rev_id >> 8 & 0x0000000f,
                qdev->chip_rev_id >> 12 & 0x0000000f);
-       QPRINTK(qdev, PROBE, INFO,
-               "MAC address %02x:%02x:%02x:%02x:%02x:%02x\n",
-               ndev->dev_addr[0], ndev->dev_addr[1],
-               ndev->dev_addr[2], ndev->dev_addr[3], ndev->dev_addr[4],
-               ndev->dev_addr[5]);
+       QPRINTK(qdev, PROBE, INFO, "MAC address %pM\n", ndev->dev_addr);
 }
 
 static int ql_adapter_down(struct ql_adapter *qdev)
index 2b8fd68..bd4f4ad 100644 (file)
@@ -435,7 +435,6 @@ static int rionet_setup_netdev(struct rio_mport *mport)
        struct net_device *ndev = NULL;
        struct rionet_private *rnet;
        u16 device_id;
-       DECLARE_MAC_BUF(mac);
 
        /* Allocate our net_device structure */
        ndev = alloc_etherdev(sizeof(struct rionet_private));
@@ -485,12 +484,12 @@ static int rionet_setup_netdev(struct rio_mport *mport)
        if (rc != 0)
                goto out;
 
-       printk("%s: %s %s Version %s, MAC %s\n",
+       printk("%s: %s %s Version %s, MAC %pM\n",
               ndev->name,
               DRV_NAME,
               DRV_DESC,
               DRV_VERSION,
-              print_mac(mac, ndev->dev_addr));
+              ndev->dev_addr);
 
       out:
        return rc;
index 3dd8f13..7343291 100644 (file)
@@ -511,7 +511,6 @@ static int __devinit rr_init(struct net_device *dev)
        struct rr_private *rrpriv;
        struct rr_regs __iomem *regs;
        u32 sram_size, rev;
-       DECLARE_MAC_BUF(mac);
 
        rrpriv = netdev_priv(dev);
        regs = rrpriv->regs;
@@ -549,7 +548,7 @@ static int __devinit rr_init(struct net_device *dev)
        *(__be32 *)(dev->dev_addr+2) =
          htonl(rr_read_eeprom_word(rrpriv, offsetof(struct eeprom, manf.BoardULA[4])));
 
-       printk("  MAC: %s\n", print_mac(mac, dev->dev_addr));
+       printk("  MAC: %pM\n", dev->dev_addr);
 
        sram_size = rr_read_eeprom_word(rrpriv, 8);
        printk("  SRAM size 0x%06x\n", sram_size);
index 6a1375f..5663fa7 100644 (file)
@@ -7748,7 +7748,6 @@ s2io_init_nic(struct pci_dev *pdev, const struct pci_device_id *pre)
        int mode;
        u8 dev_intr_type = intr_type;
        u8 dev_multiq = 0;
-       DECLARE_MAC_BUF(mac);
 
        ret = s2io_verify_parm(pdev, &dev_intr_type, &dev_multiq);
        if (ret)
@@ -7918,8 +7917,7 @@ s2io_init_nic(struct pci_dev *pdev, const struct pci_device_id *pre)
                goto mem_alloc_failed;
        }
 
-       sp->bar0 = ioremap(pci_resource_start(pdev, 0),
-                                    pci_resource_len(pdev, 0));
+       sp->bar0 = pci_ioremap_bar(pdev, 0);
        if (!sp->bar0) {
                DBG_PRINT(ERR_DBG, "%s: Neterion: cannot remap io mem1\n",
                          dev->name);
@@ -7927,8 +7925,7 @@ s2io_init_nic(struct pci_dev *pdev, const struct pci_device_id *pre)
                goto bar0_remap_failed;
        }
 
-       sp->bar1 = ioremap(pci_resource_start(pdev, 2),
-                                    pci_resource_len(pdev, 2));
+       sp->bar1 = pci_ioremap_bar(pdev, 2);
        if (!sp->bar1) {
                DBG_PRINT(ERR_DBG, "%s: Neterion: cannot remap io mem2\n",
                          dev->name);
@@ -8125,8 +8122,7 @@ s2io_init_nic(struct pci_dev *pdev, const struct pci_device_id *pre)
                  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: %s\n",
-                 dev->name, print_mac(mac, dev->dev_addr));
+       DBG_PRINT(ERR_DBG, "%s: MAC ADDR: %pM\n", dev->name, dev->dev_addr);
        DBG_PRINT(ERR_DBG, "SERIAL NUMBER: %s\n", sp->serial_num);
        if (sp->device_type & XFRAME_II_DEVICE) {
                mode = s2io_print_pci_mode(sp);
index 2615d46..480caec 100644 (file)
@@ -2292,7 +2292,6 @@ static int sbmac_init(struct platform_device *pldev, long long base)
        uint64_t ea_reg;
        int i;
        int err;
-       DECLARE_MAC_BUF(mac);
 
        sc->sbm_dev = dev;
        sc->sbe_idx = idx;
@@ -2373,8 +2372,8 @@ static int sbmac_init(struct platform_device *pldev, long long base)
         * process so we need to finish off the config message that
         * was being displayed)
         */
-       pr_info("%s: SiByte Ethernet at 0x%08Lx, address: %s\n",
-              dev->name, base, print_mac(mac, eaddr));
+       pr_info("%s: SiByte Ethernet at 0x%08Lx, address: %pM\n",
+              dev->name, base, eaddr);
 
        sc->mii_bus->name = sbmac_mdio_string;
        snprintf(sc->mii_bus->id, MII_BUS_ID_SIZE, "%x", idx);
index 48c64fb..ad12e7f 100644 (file)
@@ -158,7 +158,6 @@ static int __init seeq8005_probe1(struct net_device *dev, int ioaddr)
        int old_dmaar;
        int old_rear;
        int retval;
-       DECLARE_MAC_BUF(mac);
 
        if (!request_region(ioaddr, SEEQ8005_IO_EXTENT, "seeq8005"))
                return -ENODEV;
@@ -303,7 +302,7 @@ static int __init seeq8005_probe1(struct net_device *dev, int ioaddr)
        /* Retrieve and print the ethernet address. */
        for (i = 0; i < 6; i++)
                dev->dev_addr[i] = SA_prom[i+6];
-       printk("%s", print_mac(mac, dev->dev_addr));
+       printk("%pM", dev->dev_addr);
 
        if (dev->irq == 0xff)
                ;                       /* Do nothing: a user-level program will set it. */
index 06ea71c..5b05789 100644 (file)
@@ -612,17 +612,15 @@ static int efx_probe_port(struct efx_nic *efx)
        if (is_valid_ether_addr(efx->mac_address)) {
                memcpy(efx->net_dev->dev_addr, efx->mac_address, ETH_ALEN);
        } else {
-               DECLARE_MAC_BUF(mac);
-
-               EFX_ERR(efx, "invalid MAC address %s\n",
-                       print_mac(mac, efx->mac_address));
+               EFX_ERR(efx, "invalid MAC address %pM\n",
+                       efx->mac_address);
                if (!allow_bad_hwaddr) {
                        rc = -EINVAL;
                        goto err;
                }
                random_ether_addr(efx->net_dev->dev_addr);
-               EFX_INFO(efx, "using locally-generated MAC %s\n",
-                        print_mac(mac, efx->net_dev->dev_addr));
+               EFX_INFO(efx, "using locally-generated MAC %pM\n",
+                        efx->net_dev->dev_addr);
        }
 
        return 0;
@@ -1401,9 +1399,8 @@ static int efx_set_mac_address(struct net_device *net_dev, void *data)
        EFX_ASSERT_RESET_SERIALISED(efx);
 
        if (!is_valid_ether_addr(new_addr)) {
-               DECLARE_MAC_BUF(mac);
-               EFX_ERR(efx, "invalid ethernet MAC address requested: %s\n",
-                       print_mac(mac, new_addr));
+               EFX_ERR(efx, "invalid ethernet MAC address requested: %pM\n",
+                       new_addr);
                return -EINVAL;
        }
 
index 6261201..ffc700e 100644 (file)
@@ -719,7 +719,6 @@ static int __init sgiseeq_probe(struct platform_device *pdev)
        struct sgiseeq_private *sp;
        struct net_device *dev;
        int err;
-       DECLARE_MAC_BUF(mac);
 
        dev = alloc_etherdev(sizeof (struct sgiseeq_private));
        if (!dev) {
@@ -793,8 +792,7 @@ static int __init sgiseeq_probe(struct platform_device *pdev)
                goto err_out_free_page;
        }
 
-       printk(KERN_INFO "%s: %s %s\n",
-              dev->name, sgiseeqstr, print_mac(mac, dev->dev_addr));
+       printk(KERN_INFO "%s: %s %pM\n", dev->name, sgiseeqstr, dev->dev_addr);
 
        return 0;
 
index e6e3bf5..f6c8f70 100644 (file)
@@ -1791,7 +1791,6 @@ static int __devinit sis190_init_one(struct pci_dev *pdev,
        struct net_device *dev;
        void __iomem *ioaddr;
        int rc;
-       DECLARE_MAC_BUF(mac);
 
        if (!printed_version) {
                net_drv(&debug, KERN_INFO SIS190_DRIVER_NAME " loaded.\n");
@@ -1841,10 +1840,9 @@ static int __devinit sis190_init_one(struct pci_dev *pdev,
        if (rc < 0)
                goto err_remove_mii;
 
-       net_probe(tp, KERN_INFO "%s: %s at %p (IRQ: %d), "
-                 "%s\n",
+       net_probe(tp, KERN_INFO "%s: %s at %p (IRQ: %d), %pM\n",
                  pci_name(pdev), sis_chip_info[ent->driver_data].name,
-                 ioaddr, dev->irq, print_mac(mac, dev->dev_addr));
+                 ioaddr, dev->irq, dev->dev_addr);
 
        net_probe(tp, KERN_INFO "%s: %s mode.\n", dev->name,
                  (tp->features & F_HAS_RGMII) ? "RGMII" : "GMII");
index fa3a460..bb7056a 100644 (file)
@@ -404,7 +404,6 @@ static int __devinit sis900_probe(struct pci_dev *pci_dev,
        int i, ret;
        const char *card_name = card_names[pci_id->driver_data];
        const char *dev_name = pci_name(pci_dev);
-       DECLARE_MAC_BUF(mac);
 
 /* when built into the kernel, we only print version if device is found */
 #ifndef MODULE
@@ -534,9 +533,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, %s\n",
+       printk(KERN_INFO "%s: %s at %#lx, IRQ %d, %pM\n",
               net_dev->name, card_name, ioaddr, net_dev->irq,
-              print_mac(mac, net_dev->dev_addr));
+              net_dev->dev_addr);
 
        /* Detect Wake on Lan support */
        ret = (inl(net_dev->base_addr + CFGPMC) & PMESP) >> 27;
index 43f4c73..7911839 100644 (file)
@@ -149,24 +149,6 @@ static u32 wol_supported(const struct skge_hw *hw)
        return WAKE_MAGIC | WAKE_PHY;
 }
 
-static u32 pci_wake_enabled(struct pci_dev *dev)
-{
-       int pm = pci_find_capability(dev, PCI_CAP_ID_PM);
-       u16 value;
-
-       /* If device doesn't support PM Capabilities, but request is to disable
-        * wake events, it's a nop; otherwise fail */
-       if (!pm)
-               return 0;
-
-       pci_read_config_word(dev, pm + PCI_PM_PMC, &value);
-
-       value &= PCI_PM_CAP_PME_MASK;
-       value >>= ffs(PCI_PM_CAP_PME_MASK) - 1;   /* First bit of mask */
-
-       return value != 0;
-}
-
 static void skge_wol_init(struct skge_port *skge)
 {
        struct skge_hw *hw = skge->hw;
@@ -254,10 +236,14 @@ static int skge_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
        struct skge_port *skge = netdev_priv(dev);
        struct skge_hw *hw = skge->hw;
 
-       if (wol->wolopts & ~wol_supported(hw))
+       if ((wol->wolopts & ~wol_supported(hw))
+           || !device_can_wakeup(&hw->pdev->dev))
                return -EOPNOTSUPP;
 
        skge->wol = wol->wolopts;
+
+       device_set_wakeup_enable(&hw->pdev->dev, skge->wol);
+
        return 0;
 }
 
@@ -3856,7 +3842,7 @@ static struct net_device *skge_devinit(struct skge_hw *hw, int port,
        skge->speed = -1;
        skge->advertising = skge_supported_modes(hw);
 
-       if (pci_wake_enabled(hw->pdev))
+       if (device_may_wakeup(&hw->pdev->dev))
                skge->wol = wol_supported(hw) & WAKE_MAGIC;
 
        hw->dev[port] = dev;
@@ -3885,11 +3871,10 @@ static struct net_device *skge_devinit(struct skge_hw *hw, int port,
 static void __devinit skge_show_addr(struct net_device *dev)
 {
        const struct skge_port *skge = netdev_priv(dev);
-       DECLARE_MAC_BUF(mac);
 
        if (netif_msg_probe(skge))
-               printk(KERN_INFO PFX "%s: addr %s\n",
-                      dev->name, print_mac(mac, dev->dev_addr));
+               printk(KERN_INFO PFX "%s: addr %pM\n",
+                      dev->name, dev->dev_addr);
 }
 
 static int __devinit skge_probe(struct pci_dev *pdev,
@@ -4082,8 +4067,8 @@ static int skge_suspend(struct pci_dev *pdev, pm_message_t state)
        }
 
        skge_write32(hw, B0_IMSK, 0);
-       pci_enable_wake(pdev, pci_choose_state(pdev, state), wol);
-       pci_set_power_state(pdev, pci_choose_state(pdev, state));
+
+       pci_prepare_to_sleep(pdev);
 
        return 0;
 }
@@ -4096,7 +4081,7 @@ static int skge_resume(struct pci_dev *pdev)
        if (!hw)
                return 0;
 
-       err = pci_set_power_state(pdev, PCI_D0);
+       err = pci_back_from_sleep(pdev);
        if (err)
                goto out;
 
@@ -4104,8 +4089,6 @@ static int skge_resume(struct pci_dev *pdev)
        if (err)
                goto out;
 
-       pci_enable_wake(pdev, PCI_D0, 0);
-
        err = skge_reset(hw);
        if (err)
                goto out;
@@ -4146,8 +4129,8 @@ static void skge_shutdown(struct pci_dev *pdev)
                wol |= skge->wol;
        }
 
-       pci_enable_wake(pdev, PCI_D3hot, wol);
-       pci_enable_wake(pdev, PCI_D3cold, wol);
+       if (pci_enable_wake(pdev, PCI_D3cold, wol))
+               pci_enable_wake(pdev, PCI_D3hot, wol);
 
        pci_disable_device(pdev);
        pci_set_power_state(pdev, PCI_D3hot);
index 3813d15..4dcd1a6 100644 (file)
@@ -4118,11 +4118,10 @@ static __devinit struct net_device *sky2_init_netdev(struct sky2_hw *hw,
 static void __devinit sky2_show_addr(struct net_device *dev)
 {
        const struct sky2_port *sky2 = netdev_priv(dev);
-       DECLARE_MAC_BUF(mac);
 
        if (netif_msg_probe(sky2))
-               printk(KERN_INFO PFX "%s: addr %s\n",
-                      dev->name, print_mac(mac, dev->dev_addr));
+               printk(KERN_INFO PFX "%s: addr %pM\n",
+                      dev->name, dev->dev_addr);
 }
 
 /* Handle software interrupt used during MSI test */
index d6abb68..58a0e0a 100644 (file)
@@ -196,7 +196,6 @@ static int __init ultramca_probe(struct device *gen_dev)
        int tirq = 0;
        int base_addr = ultra_io[ultra_found];
        int irq = ultra_irq[ultra_found];
-       DECLARE_MAC_BUF(mac);
 
        if (base_addr || irq) {
                printk(KERN_INFO "Probing for SMC MCA adapter");
@@ -334,8 +333,8 @@ static int __init ultramca_probe(struct device *gen_dev)
        for (i = 0; i < 6; i++)
                dev->dev_addr[i] = inb(ioaddr + 8 + i);
 
-       printk(KERN_INFO "smc_mca[%d]: Parameters: %#3x, %s",
-              slot + 1, ioaddr, print_mac(mac, dev->dev_addr));
+       printk(KERN_INFO "smc_mca[%d]: Parameters: %#3x, %pM",
+              slot + 1, ioaddr, dev->dev_addr);
 
        /* Switch from the station address to the alternate register set
         * and read the useful registers there.
index 00d6cf1..0fe0251 100644 (file)
@@ -198,7 +198,6 @@ static int __init ultra_probe1(struct net_device *dev, int ioaddr)
        unsigned char num_pages, irqreg, addr, piomode;
        unsigned char idreg = inb(ioaddr + 7);
        unsigned char reg4 = inb(ioaddr + 4) & 0x7f;
-       DECLARE_MAC_BUF(mac);
 
        if (!request_region(ioaddr, ULTRA_IO_EXTENT, DRV_NAME))
                return -EBUSY;
@@ -228,8 +227,8 @@ static int __init ultra_probe1(struct net_device *dev, int ioaddr)
        for (i = 0; i < 6; i++)
                dev->dev_addr[i] = inb(ioaddr + 8 + i);
 
-       printk("%s: %s at %#3x, %s", dev->name, model_name,
-              ioaddr, print_mac(mac, dev->dev_addr));
+       printk("%s: %s at %#3x, %pM", dev->name, model_name,
+              ioaddr, dev->dev_addr);
 
        /* Switch from the station address to the alternate register set and
           read the useful registers there. */
index a5a91ac..cb6c097 100644 (file)
@@ -163,7 +163,6 @@ static int __init ultra32_probe1(struct net_device *dev, int ioaddr)
        unsigned char idreg;
        unsigned char reg4;
        const char *ifmap[] = {"UTP No Link", "", "UTP/AUI", "UTP/BNC"};
-       DECLARE_MAC_BUF(mac);
 
        if (!request_region(ioaddr, ULTRA32_IO_EXTENT, DRV_NAME))
                return -EBUSY;
@@ -207,8 +206,8 @@ static int __init ultra32_probe1(struct net_device *dev, int ioaddr)
        for (i = 0; i < 6; i++)
                dev->dev_addr[i] = inb(ioaddr + 8 + i);
 
-       printk("%s: %s at 0x%X, %s",
-              dev->name, model_name, ioaddr, print_mac(mac, dev->dev_addr));
+       printk("%s: %s at 0x%X, %pM",
+              dev->name, model_name, ioaddr, dev->dev_addr);
 
        /* Switch from the station address to the alternate register set and
           read the useful registers there. */
index de67744..3bc7336 100644 (file)
@@ -876,8 +876,6 @@ static int __init smc_probe(struct net_device *dev, int ioaddr)
        word memory_info_register;
        word memory_cfg_register;
 
-       DECLARE_MAC_BUF(mac);
-
        /* Grab the region so that no one else tries to probe our ioports. */
        if (!request_region(ioaddr, SMC_IO_EXTENT, DRV_NAME))
                return -EBUSY;
@@ -1033,7 +1031,7 @@ static int __init smc_probe(struct net_device *dev, int ioaddr)
        /*
         . Print the Ethernet address
        */
-       printk("ADDR: %s\n", print_mac(mac, dev->dev_addr));
+       printk("ADDR: %pM\n", dev->dev_addr);
 
        /* set the private data to zero by default */
        memset(dev->priv, 0, sizeof(struct smc_local));
index 6f9895d..2d8bfa7 100644 (file)
@@ -1778,7 +1778,6 @@ static int __init smc_probe(struct net_device *dev, void __iomem *ioaddr,
        int retval;
        unsigned int val, revision_register;
        const char *version_string;
-       DECLARE_MAC_BUF(mac);
 
        DBG(2, "%s: %s\n", CARDNAME, __func__);
 
@@ -1972,8 +1971,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: %s\n",
-                              dev->name, print_mac(mac, dev->dev_addr));
+                       printk("%s: Ethernet addr: %pM\n",
+                              dev->name, dev->dev_addr);
                }
 
                if (lp->phy_type == 0) {
index 1d2ef8f..3281418 100644 (file)
@@ -653,7 +653,6 @@ static int __devinit starfire_init_one(struct pci_dev *pdev,
        void __iomem *base;
        int drv_flags, io_size;
        int boguscnt;
-       DECLARE_MAC_BUF(mac);
 
 /* when built into the kernel, we only print version if device is found */
 #ifndef MODULE
@@ -823,9 +822,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, %s, IRQ %d.\n",
+       printk(KERN_INFO "%s: %s at %p, %pM, IRQ %d.\n",
               dev->name, netdrv_tbl[chip_idx].name, base,
-              print_mac(mac, dev->dev_addr), irq);
+              dev->dev_addr, irq);
 
        if (drv_flags & CanHaveMII) {
                int phy, phy_idx = 0;
@@ -1452,12 +1451,8 @@ 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 " MAC_FMT " " MAC_FMT
-                              " %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],
+                       printk(KERN_DEBUG "  Rx data %pM %pM %2.2x%2.2x.\n",
+                              skb->data, skb->data + 6,
                               skb->data[12], skb->data[13]);
                }
 #endif
index 359452a..608aa2f 100644 (file)
@@ -303,7 +303,6 @@ static int __init lance_probe( struct net_device *dev)
        static int              did_version;
        volatile unsigned short *ioaddr_probe;
        unsigned short tmp1, tmp2;
-       DECLARE_MAC_BUF(mac);
 
 #ifdef CONFIG_SUN3
        ioaddr = (unsigned long)ioremap(LANCE_OBIO, PAGE_SIZE);
@@ -379,7 +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];
 
-       printk("%s\n", print_mac(mac, dev->dev_addr));
+       printk("%pM\n", dev->dev_addr);
 
        MEM->init.mode = 0x0000;
        MEM->init.filter[0] = 0x00000000;
@@ -824,12 +823,10 @@ static int lance_rx( struct net_device *dev )
 #if 0
                                if (lance_debug >= 3) {
                                        u_char *data = PKTBUF_ADDR(head);
-                                       DECLARE_MAC_BUF(mac);
-                                       DECLARE_MAC_BUF(mac2)
                                        printk("%s: RX pkt %d type 0x%04x"
-                                              " from %s to %s",
+                                              " from %pM to %pM",
                                               dev->name, lp->new_tx, ((u_short *)data)[6],
-                                              print_mac(mac, &data[6]), print_mac(mac2, data));
+                                              &data[6], data);
 
                                        printk(" data %02x %02x %02x %02x %02x %02x %02x %02x "
                                               "len %d at %08x\n",
index 018d0fc..e964395 100644 (file)
@@ -1081,7 +1081,6 @@ static int __devinit bigmac_ether_init(struct of_device *op,
        static int version_printed;
        struct net_device *dev;
        u8 bsizes, bsizes_more;
-       DECLARE_MAC_BUF(mac);
        struct bigmac *bp;
        int i;
 
@@ -1212,8 +1211,8 @@ static int __devinit bigmac_ether_init(struct of_device *op,
 
        dev_set_drvdata(&bp->bigmac_op->dev, bp);
 
-       printk(KERN_INFO "%s: BigMAC 100baseT Ethernet %s\n",
-              dev->name, print_mac(mac, dev->dev_addr));
+       printk(KERN_INFO "%s: BigMAC 100baseT Ethernet %pM\n",
+              dev->name, dev->dev_addr);
 
        return 0;
 
index f860ea1..8c6a894 100644 (file)
@@ -468,7 +468,6 @@ static int __devinit sundance_probe1 (struct pci_dev *pdev,
        int bar = 1;
 #endif
        int phy, phy_end, phy_idx = 0;
-       DECLARE_MAC_BUF(mac);
 
 /* when built into the kernel, we only print version if device is found */
 #ifndef MODULE
@@ -547,9 +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, %s, IRQ %d.\n",
+       printk(KERN_INFO "%s: %s at %p, %pM, IRQ %d.\n",
               dev->name, pci_id_tbl[chip_idx].name, ioaddr,
-              print_mac(mac, dev->dev_addr), irq);
+              dev->dev_addr, irq);
 
        np->phys[0] = 1;                /* Default setting */
        np->mii_preamble_required++;
index 4291458..250f086 100644 (file)
@@ -2966,7 +2966,6 @@ static int __devinit gem_init_one(struct pci_dev *pdev,
        struct net_device *dev;
        struct gem *gp;
        int err, pci_using_dac;
-       DECLARE_MAC_BUF(mac);
 
        if (gem_version_printed++ == 0)
                printk(KERN_INFO "%s", version);
@@ -3150,9 +3149,8 @@ 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 "
-              "%s\n",
-              dev->name, print_mac(mac, dev->dev_addr));
+       printk(KERN_INFO "%s: Sun GEM (PCI) 10/100/1000BaseT Ethernet %pM\n",
+              dev->name, dev->dev_addr);
 
        if (gp->phy_type == phy_mii_mdio0 ||
            gp->phy_type == phy_mii_mdio1)
index f1ebeb5..b55f7a4 100644 (file)
@@ -2617,7 +2617,6 @@ static int __devinit happy_meal_sbus_probe_one(struct of_device *op, int is_qfe)
        struct net_device *dev;
        int i, qfe_slot = -1;
        int err = -ENODEV;
-       DECLARE_MAC_BUF(mac);
 
        if (is_qfe) {
                qp = quattro_sbus_find(op);
@@ -2797,7 +2796,7 @@ static int __devinit happy_meal_sbus_probe_one(struct of_device *op, int is_qfe)
                printk(KERN_INFO "%s: HAPPY MEAL (SBUS) 10/100baseT Ethernet ",
                       dev->name);
 
-       printk("%s\n", print_mac(mac, dev->dev_addr));
+       printk("%pM\n", dev->dev_addr);
 
        return 0;
 
@@ -2932,7 +2931,6 @@ static int __devinit happy_meal_pci_probe(struct pci_dev *pdev,
        int i, qfe_slot = -1;
        char prom_name[64];
        int err;
-       DECLARE_MAC_BUF(mac);
 
        /* Now make sure pci_dev cookie is there. */
 #ifdef CONFIG_SPARC
@@ -3141,7 +3139,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);
 
-       printk("%s\n", print_mac(mac, dev->dev_addr));
+       printk("%pM\n", dev->dev_addr);
 
        return 0;
 
index 704301a..c67cf94 100644 (file)
@@ -1321,7 +1321,6 @@ static int __devinit sparc_lance_probe_one(struct of_device *op,
        static unsigned version_printed;
        struct lance_private *lp;
        struct net_device *dev;
-       DECLARE_MAC_BUF(mac);
        int    i;
 
        dev = alloc_etherdev(sizeof(struct lance_private) + 8);
@@ -1491,8 +1490,8 @@ no_link_test:
 
        dev_set_drvdata(&op->dev, lp);
 
-       printk(KERN_INFO "%s: LANCE %s\n",
-              dev->name, print_mac(mac, dev->dev_addr));
+       printk(KERN_INFO "%s: LANCE %pM\n",
+              dev->name, dev->dev_addr);
 
        return 0;
 
index a720065..233f1cd 100644 (file)
@@ -1149,7 +1149,6 @@ static int __devinit vnet_port_probe(struct vio_dev *vdev,
        struct vnet *vp;
        const u64 *rmac;
        int len, i, err, switch_port;
-       DECLARE_MAC_BUF(mac);
 
        print_version();
 
@@ -1214,8 +1213,8 @@ static int __devinit vnet_port_probe(struct vio_dev *vdev,
 
        dev_set_drvdata(&vdev->dev, port);
 
-       printk(KERN_INFO "%s: PORT ( remote-mac %s%s )\n",
-              vp->dev->name, print_mac(mac, port->raddr),
+       printk(KERN_INFO "%s: PORT ( remote-mac %pM%s )\n",
+              vp->dev->name, port->raddr,
               switch_port ? " switch-port" : "");
 
        vio_port_up(&port->vio);
index df20caf..51de139 100644 (file)
@@ -236,7 +236,7 @@ struct tc35815_regs {
 #define Rx_Halted             0x00008000 /* Rx Halted                       */
 #define Rx_Good                       0x00004000 /* Rx Good                         */
 #define Rx_RxPar              0x00002000 /* Rx Parity Error                 */
-                           /* 0x00001000    not use                         */
+#define Rx_TypePkt            0x00001000 /* Rx Type Packet                  */
 #define Rx_LongErr            0x00000800 /* Rx Long Error                   */
 #define Rx_Over                       0x00000400 /* Rx Overflow                     */
 #define Rx_CRCErr             0x00000200 /* Rx CRC Error                    */
@@ -244,8 +244,9 @@ struct tc35815_regs {
 #define Rx_10Stat             0x00000080 /* Rx 10Mbps Status                */
 #define Rx_IntRx              0x00000040 /* Rx Interrupt                    */
 #define Rx_CtlRecd            0x00000020 /* Rx Control Receive              */
+#define Rx_InLenErr           0x00000010 /* Rx In Range Frame Length Error  */
 
-#define Rx_Stat_Mask          0x0000EFC0 /* Rx All Status Mask              */
+#define Rx_Stat_Mask          0x0000FFF0 /* Rx All Status Mask              */
 
 /* Int_En bit asign -------------------------------------------------------- */
 #define Int_NRAbtEn           0x00000800 /* 1:Non-recoverable Abort Enable  */
@@ -865,7 +866,6 @@ static int __devinit tc35815_init_one(struct pci_dev *pdev,
        struct net_device *dev;
        struct tc35815_local *lp;
        int rc;
-       DECLARE_MAC_BUF(mac);
 
        static int printed_version;
        if (!printed_version++) {
@@ -942,11 +942,11 @@ static int __devinit tc35815_init_one(struct pci_dev *pdev,
                goto err_out;
 
        memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);
-       printk(KERN_INFO "%s: %s at 0x%lx, %s, IRQ %d\n",
+       printk(KERN_INFO "%s: %s at 0x%lx, %pM, IRQ %d\n",
                dev->name,
                chip_info[ent->driver_data].name,
                dev->base_addr,
-               print_mac(mac, dev->dev_addr),
+               dev->dev_addr,
                dev->irq);
 
        rc = tc_mii_init(dev);
@@ -1288,12 +1288,9 @@ panic_queues(struct net_device *dev)
 
 static void print_eth(const u8 *add)
 {
-       DECLARE_MAC_BUF(mac);
-
        printk(KERN_DEBUG "print_eth(%p)\n", add);
-       printk(KERN_DEBUG " %s =>", print_mac(mac, add + 6));
-       printk(KERN_CONT " %s : %02x%02x\n",
-               print_mac(mac, add), add[12], add[13]);
+       printk(KERN_DEBUG " %pM => %pM : %02x%02x\n",
+               add + 6, add, add[12], add[13]);
 }
 
 static int tc35815_tx_full(struct net_device *dev)
@@ -2153,13 +2150,12 @@ static void tc35815_set_cam_entry(struct net_device *dev, int index, unsigned ch
        int cam_index = index * 6;
        u32 cam_data;
        u32 saved_addr;
-       DECLARE_MAC_BUF(mac);
 
        saved_addr = tc_readl(&tr->CAM_Adr);
 
        if (netif_msg_hw(lp))
-               printk(KERN_DEBUG "%s: CAM %d: %s\n",
-                       dev->name, index, print_mac(mac, addr));
+               printk(KERN_DEBUG "%s: CAM %d: %pM\n",
+                       dev->name, index, addr);
        if (index & 1) {
                /* read modify write */
                tc_writel(cam_index - 2, &tr->CAM_Adr);
index eb9f8f3..d0500db 100644 (file)
@@ -13252,7 +13252,6 @@ static int __devinit tg3_init_one(struct pci_dev *pdev,
        int err, pm_cap;
        char str[40];
        u64 dma_mask, persist_dma_mask;
-       DECLARE_MAC_BUF(mac);
 
        if (tg3_version_printed++ == 0)
                printk(KERN_INFO "%s", version);
@@ -13536,7 +13535,7 @@ static int __devinit tg3_init_one(struct pci_dev *pdev,
        }
 
        printk(KERN_INFO "%s: Tigon3 [partno(%s) rev %04x PHY(%s)] "
-              "(%s) %s Ethernet %s\n",
+              "(%s) %s Ethernet %pM\n",
               dev->name,
               tp->board_part_number,
               tp->pci_chip_rev_id,
@@ -13545,7 +13544,7 @@ static int __devinit tg3_init_one(struct pci_dev *pdev,
               ((tp->tg3_flags & TG3_FLAG_10_100_ONLY) ? "10/100Base-TX" :
                ((tp->tg3_flags2 & TG3_FLG2_ANY_SERDES) ? "1000Base-SX" :
                 "10/100/1000Base-T")),
-              print_mac(mac, dev->dev_addr));
+              dev->dev_addr);
 
        printk(KERN_INFO "%s: RXcsums[%d] LinkChgREG[%d] "
               "MIirq[%d] ASF[%d] WireSpeed[%d] TSOcap[%d]\n",
index 7a7de04..b566d6d 100644 (file)
@@ -99,7 +99,6 @@ static int __devinit abyss_attach(struct pci_dev *pdev, const struct pci_device_
        struct net_local *tp;
        int ret, pci_irq_line;
        unsigned long pci_ioaddr;
-       DECLARE_MAC_BUF(mac);
        
        if (versionprinted++ == 0)
                printk("%s", version);
@@ -147,8 +146,7 @@ static int __devinit abyss_attach(struct pci_dev *pdev, const struct pci_device_
 
        abyss_read_eeprom(dev);
 
-       printk("%s:    Ring Station Address: %s\n",
-              dev->name, print_mac(mac, dev->dev_addr));
+       printk("%s:    Ring Station Address: %pM\n", dev->name, dev->dev_addr);
 
        tp = netdev_priv(dev);
        tp->setnselout = abyss_setnselout_pins;
index e494c63..ad97898 100644 (file)
@@ -389,7 +389,6 @@ static int __devinit ibmtr_probe1(struct net_device *dev, int PIOaddr)
         unsigned long timeout;
        static int version_printed;
 #endif
-       DECLARE_MAC_BUF(mac);
 
        /*    Query the adapter PIO base port which will return
         *    indication of where MMIO was placed. We also have a
@@ -703,8 +702,7 @@ 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 : %s\n",
-               print_mac(mac, dev->dev_addr));
+       DPRINTK("Hardware address : %pM\n", dev->dev_addr);
        if (ti->page_mask)
                DPRINTK("Shared RAM paging enabled. "
                        "Page size: %uK Shared Ram size %dK\n",
@@ -1741,8 +1739,6 @@ static void tr_rx(struct net_device *dev)
                void __iomem *trhhdr = rbuf + offsetof(struct rec_buf, data);
                u8 saddr[6];
                u8 daddr[6];
-               DECLARE_MAC_BUF(mac);
-               DECLARE_MAC_BUF(mac2);
                int i;
                for (i = 0 ; i < 6 ; i++)
                        saddr[i] = readb(trhhdr + SADDR_OFST + i);
@@ -1750,9 +1746,9 @@ static void tr_rx(struct net_device *dev)
                        daddr[i] = readb(trhhdr + DADDR_OFST + i);
                DPRINTK("Probably non-IP frame received.\n");
                DPRINTK("ssap: %02X dsap: %02X "
-                       "saddr: %s daddr: %$s\n",
+                       "saddr: %pM daddr: %pM\n",
                        readb(llc + SSAP_OFST), readb(llc + DSAP_OFST),
-                       print_mac(mac, saddr), print_mac(mac2, daddr));
+                       saddr, daddr);
        }
 #endif
 
index 59d1673..bd70e81 100644 (file)
@@ -446,9 +446,6 @@ static int streamer_reset(struct net_device *dev)
        unsigned int uaa_addr;
        struct sk_buff *skb = NULL;
        __u16 misr;
-#if STREAMER_DEBUG
-       DECLARE_MAC_BUF(mac);
-#endif
 
        streamer_priv = netdev_priv(dev);
        streamer_mmio = streamer_priv->streamer_mmio;
@@ -577,8 +574,7 @@ static int streamer_reset(struct net_device *dev)
                        dev->dev_addr[i+1]= addr & 0xff;
                }
 #if STREAMER_DEBUG
-               printk("Adapter address: %s\n",
-                      print_mac(mac, dev->dev_addr));
+               printk("Adapter address: %pM\n", dev->dev_addr);
 #endif
        }
        return 0;
@@ -1538,7 +1534,6 @@ static void streamer_arb_cmd(struct net_device *dev)
 
 #if STREAMER_NETWORK_MONITOR
        struct trh_hdr *mac_hdr;
-       DECLARE_MAC_BUF(mac);
 #endif
 
        writew(streamer_priv->arb, streamer_mmio + LAPA);
@@ -1611,11 +1606,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: %s\n",
-                      dev->name, print_mac(mac, mac_hdr->daddr));
+                      "%s: MAC Frame Dest. Addr: %pM\n",
+                      dev->name, mac_hdr->daddr);
                printk(KERN_WARNING
-                      "%s: MAC Frame Srce. Addr: %s\n",
-                      dev->name, DEV->ADDR6(mac_hdr->saddr));
+                      "%s: MAC Frame Srce. Addr: %pM\n",
+                      dev->name, mac_hdr->saddr);
 #endif
                netif_rx(mac_frame);
 
@@ -1850,8 +1845,6 @@ static int sprintf_info(char *buffer, struct net_device *dev)
        struct streamer_parameters_table spt;
        int size = 0;
        int i;
-       DECLARE_MAC_BUF(mac);
-       DECLARE_MAC_BUF(mac2);
 
        writew(streamer_priv->streamer_addr_table_addr, streamer_mmio + LAPA);
        for (i = 0; i < 14; i += 2) {
@@ -1873,9 +1866,8 @@ 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: %s : %s : %02x:%02x:%02x:%02x\n",
-                       dev->name, print_mac(mac, dev->dev_addr),
-                       print_mac(mac2, sat.node_addr),
+                       "%6s: %pM : %pM : %02x:%02x:%02x:%02x\n",
+                       dev->name, dev->dev_addr, sat.node_addr,
                        sat.func_addr[0], sat.func_addr[1],
                        sat.func_addr[2], sat.func_addr[3]);
 
@@ -1884,19 +1876,18 @@ static int sprintf_info(char *buffer, struct net_device *dev)
        size += sprintf(buffer + size, "%6s: Physical Addr : Up Node Address   : Poll Address      : AccPri : Auth Src : Att Code :\n", dev->name);
 
        size += sprintf(buffer + size,
-                   "%6s: %02x:%02x:%02x:%02x   : %s : %s : %04x   : %04x     :  %04x    :\n",
+                   "%6s: %02x:%02x:%02x:%02x   : %pM : %pM : %04x   : %04x     :  %04x    :\n",
                    dev->name, spt.phys_addr[0], spt.phys_addr[1],
                    spt.phys_addr[2], spt.phys_addr[3],
-                   print_mac(mac, spt.up_node_addr),
-                   print_mac(mac2, spt.poll_addr),
+                   spt.up_node_addr, spt.poll_addr,
                    ntohs(spt.acc_priority), ntohs(spt.auth_source_class),
                    ntohs(spt.att_code));
 
        size += sprintf(buffer + size, "%6s: Source Address    : Bcn T : Maj. V : Lan St : Lcl Rg : Mon Err : Frame Correl : \n", dev->name);
 
        size += sprintf(buffer + size,
-                   "%6s: %s : %04x  : %04x   : %04x   : %04x   : %04x    :     %04x     : \n",
-                   dev->name, print_mac(mac, spt.source_addr),
+                   "%6s: %pM : %04x  : %04x   : %04x   : %04x   : %04x    :     %04x     : \n",
+                   dev->name, spt.source_addr,
                    ntohs(spt.beacon_type), ntohs(spt.major_vector),
                    ntohs(spt.lan_status), ntohs(spt.local_ring),
                    ntohs(spt.mon_error), ntohs(spt.frame_correl));
@@ -1905,10 +1896,10 @@ static int sprintf_info(char *buffer, struct net_device *dev)
                    dev->name);
 
        size += sprintf(buffer + size,
-                   "%6s:                :  %02x  :  %02x  : %s : %02x:%02x:%02x:%02x    : \n",
+                   "%6s:                :  %02x  :  %02x  : %pM : %02x:%02x:%02x:%02x    : \n",
                    dev->name, ntohs(spt.beacon_transmit),
                    ntohs(spt.beacon_receive),
-                   print_mac(mac, spt.beacon_naun),
+                   spt.beacon_naun,
                    spt.beacon_phys[0], spt.beacon_phys[1],
                    spt.beacon_phys[2], spt.beacon_phys[3]);
        return size;
index c9c5a2b..0ba6f0b 100644 (file)
@@ -152,7 +152,6 @@ static int __devinit madgemc_probe(struct device *device)
        struct card_info *card;
        struct mca_device *mdev = to_mca_device(device);
        int ret = 0;
-       DECLARE_MAC_BUF(mac);
 
        if (versionprinted++ == 0)
                printk("%s", version);
@@ -323,8 +322,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: %s\n",
-              dev->name, print_mac(mac, dev->dev_addr));
+       printk("%s:     Ring Station Address: %pM\n",
+              dev->name, dev->dev_addr);
 
        if (tmsdev_init(dev, device)) {
                printk("%s: unable to get memory for dev->priv.\n", 
@@ -690,7 +689,6 @@ static int madgemc_mcaproc(char *buf, int slot, void *d)
        struct net_local *tp = netdev_priv(dev);
        struct card_info *curcard = tp->tmspriv;
        int len = 0;
-       DECLARE_MAC_BUF(mac);
        
        len += sprintf(buf+len, "-------\n");
        if (curcard) {
@@ -714,8 +712,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: %s\n",
-                              print_mac(mac, dev->dev_addr));
+               len += sprintf(buf+len, "Ring Station Address: %pM\n",
+                              dev->dev_addr);
        } else 
                len += sprintf(buf+len, "Card not configured\n");
 
index 0ab51a0..f78bc5d 100644 (file)
@@ -421,10 +421,7 @@ static int olympic_init(struct net_device *dev)
        memcpy_fromio(&dev->dev_addr[0], adapter_addr,6);
 
 #if OLYMPIC_DEBUG
- {
-       DECLARE_MAC_BUF(mac);
-       printk("adapter address: %s\n", print_mac(mac, dev->dev_addr));
- }
+       printk("adapter address: %pM\n", dev->dev_addr);
 #endif
 
        olympic_priv->olympic_addr_table_addr = swab16(readw(init_srb + 12)); 
@@ -441,7 +438,6 @@ static int olympic_open(struct net_device *dev)
        unsigned long flags, t;
        int i, open_finished = 1 ;
        u8 resp, err;
-       DECLARE_MAC_BUF(mac);
 
        DECLARE_WAITQUEUE(wait,current) ; 
 
@@ -569,8 +565,8 @@ static int olympic_open(struct net_device *dev)
                        goto out;
 
                case 0x32:
-                       printk(KERN_WARNING "%s: Invalid LAA: %s\n",
-                              dev->name, print_mac(mac, olympic_priv->olympic_laa));
+                       printk(KERN_WARNING "%s: Invalid LAA: %pM\n",
+                              dev->name, olympic_priv->olympic_laa);
                        goto out;
 
                default:
@@ -704,13 +700,12 @@ static int olympic_open(struct net_device *dev)
                u8 __iomem *opt;
                int i;
                u8 addr[6];
-               DECLARE_MAC_BUF(mac);
                oat = (olympic_priv->olympic_lap + olympic_priv->olympic_addr_table_addr);
                opt = (olympic_priv->olympic_lap + olympic_priv->olympic_parms_addr);
 
                for (i = 0; i < 6; i++)
                        addr[i] = readb(oat+offsetof(struct olympic_adapter_addr_table,node_addr)+i);
-               printk("%s: Node Address: %s\n",dev->name, print_mac(mac, addr));
+               printk("%s: Node Address: %pM\n", dev->name, addr);
                printk("%s: Functional Address: %02x:%02x:%02x:%02x\n",dev->name, 
                        readb(oat+offsetof(struct olympic_adapter_addr_table,func_addr)), 
                        readb(oat+offsetof(struct olympic_adapter_addr_table,func_addr)+1),
@@ -719,7 +714,7 @@ static int olympic_open(struct net_device *dev)
 
                for (i = 0; i < 6; i++)
                        addr[i] = readb(opt+offsetof(struct olympic_parameters_table, up_node_addr)+i);
-               printk("%s: NAUN Address: %s\n",dev->name, print_mac(mac, addr));
+               printk("%s: NAUN Address: %pM\n", dev->name, addr);
        }
        
        netif_start_queue(dev);
@@ -1440,16 +1435,10 @@ static void olympic_arb_cmd(struct net_device *dev)
                        struct trh_hdr *mac_hdr;
                        printk(KERN_WARNING "%s: Received MAC Frame, details: \n",dev->name);
                        mac_hdr = tr_hdr(mac_frame);
-                       printk(KERN_WARNING "%s: MAC Frame Dest. Addr: "
-                              MAC_FMT " \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]);
-                       printk(KERN_WARNING "%s: MAC Frame Srce. Addr: "
-                              MAC_FMT " \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]);
+                       printk(KERN_WARNING "%s: MAC Frame Dest. Addr: %pM\n",
+                              dev->name, mac_hdr->daddr);
+                       printk(KERN_WARNING "%s: MAC Frame Srce. Addr: %pM\n",
+                              dev->name, mac_hdr->saddr);
                }
                netif_rx(mac_frame);
                dev->last_rx = jiffies;
@@ -1647,8 +1636,6 @@ static int olympic_proc_info(char *buffer, char **start, off_t offset, int lengt
        u8 addr[6];
        u8 addr2[6];
        int i;
-       DECLARE_MAC_BUF(mac);
-       DECLARE_MAC_BUF(mac2);
 
        size = sprintf(buffer, 
                "IBM Pit/Pit-Phy/Olympic Chipset Token Ring Adapter %s\n",dev->name);
@@ -1658,10 +1645,9 @@ static int olympic_proc_info(char *buffer, char **start, off_t offset, int lengt
        for (i = 0 ; i < 6 ; i++)
                addr[i] = readb(oat+offsetof(struct olympic_adapter_addr_table,node_addr) + i);
 
-       size += sprintf(buffer+size, "%6s: %s : %s : %02x:%02x:%02x:%02x\n",
+       size += sprintf(buffer+size, "%6s: %pM : %pM : %02x:%02x:%02x:%02x\n",
           dev->name,
-          print_mac(mac, dev->dev_addr),
-          print_mac(mac2, addr),
+          dev->dev_addr, addr,
           readb(oat+offsetof(struct olympic_adapter_addr_table,func_addr)), 
           readb(oat+offsetof(struct olympic_adapter_addr_table,func_addr)+1),
           readb(oat+offsetof(struct olympic_adapter_addr_table,func_addr)+2),
@@ -1677,14 +1663,13 @@ static int olympic_proc_info(char *buffer, char **start, off_t offset, int lengt
        for (i = 0 ; i < 6 ; i++)
                addr2[i] =  readb(opt+offsetof(struct olympic_parameters_table, poll_addr) + i);
 
-       size += sprintf(buffer+size, "%6s: %02x:%02x:%02x:%02x   : %s : %s : %04x   : %04x     :  %04x    :\n",
+       size += sprintf(buffer+size, "%6s: %02x:%02x:%02x:%02x   : %pM : %pM : %04x   : %04x     :  %04x    :\n",
          dev->name,
          readb(opt+offsetof(struct olympic_parameters_table, phys_addr)),
          readb(opt+offsetof(struct olympic_parameters_table, phys_addr)+1),
          readb(opt+offsetof(struct olympic_parameters_table, phys_addr)+2),
          readb(opt+offsetof(struct olympic_parameters_table, phys_addr)+3),
-         print_mac(mac, addr),
-         print_mac(mac2, addr2),
+         addr, addr2,
          swab16(readw(opt+offsetof(struct olympic_parameters_table, acc_priority))),
          swab16(readw(opt+offsetof(struct olympic_parameters_table, auth_source_class))),
          swab16(readw(opt+offsetof(struct olympic_parameters_table, att_code))));
@@ -1694,9 +1679,8 @@ static int olympic_proc_info(char *buffer, char **start, off_t offset, int lengt
        
        for (i = 0 ; i < 6 ; i++)
                addr[i] = readb(opt+offsetof(struct olympic_parameters_table, source_addr) + i);
-       size += sprintf(buffer+size, "%6s: %s : %04x  : %04x   : %04x   : %04x   : %04x    :     %04x     : \n",
-         dev->name,
-         print_mac(mac, addr),
+       size += sprintf(buffer+size, "%6s: %pM : %04x  : %04x   : %04x   : %04x   : %04x    :     %04x     : \n",
+         dev->name, addr,
          swab16(readw(opt+offsetof(struct olympic_parameters_table, beacon_type))),
          swab16(readw(opt+offsetof(struct olympic_parameters_table, major_vector))),
          swab16(readw(opt+offsetof(struct olympic_parameters_table, lan_status))),
@@ -1709,11 +1693,11 @@ static int olympic_proc_info(char *buffer, char **start, off_t offset, int lengt
 
        for (i = 0 ; i < 6 ; i++)
                addr[i] = readb(opt+offsetof(struct olympic_parameters_table, beacon_naun) + i);
-       size += sprintf(buffer+size, "%6s:                :  %02x  :  %02x  : %s : %02x:%02x:%02x:%02x    : \n",
+       size += sprintf(buffer+size, "%6s:                :  %02x  :  %02x  : %pM : %02x:%02x:%02x:%02x    : \n",
          dev->name,
          swab16(readw(opt+offsetof(struct olympic_parameters_table, beacon_transmit))),
          swab16(readw(opt+offsetof(struct olympic_parameters_table, beacon_receive))),
-         print_mac(mac, addr),
+         addr,
          readb(opt+offsetof(struct olympic_parameters_table, beacon_phys)),
          readb(opt+offsetof(struct olympic_parameters_table, beacon_phys)+1),
          readb(opt+offsetof(struct olympic_parameters_table, beacon_phys)+2),
index 00ea945..cd2d62f 100644 (file)
@@ -122,7 +122,6 @@ static int __init setup_card(struct net_device *dev, struct device *pdev)
         static int versionprinted;
        const unsigned *port;
        int j,err = 0;
-       DECLARE_MAC_BUF(mac);
 
        if (!dev)
                return -ENOMEM;
@@ -153,8 +152,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: %s\n",
-              print_mac(mac, dev->dev_addr));
+       printk(KERN_DEBUG "proteon.c:    Ring Station Address: %pM\n",
+              dev->dev_addr);
                
        tp = netdev_priv(dev);
        tp->setnselout = proteon_setnselout_pins;
index 41b6999..b578744 100644 (file)
@@ -139,7 +139,6 @@ static int __init setup_card(struct net_device *dev, struct device *pdev)
         static int versionprinted;
        const unsigned *port;
        int j, err = 0;
-       DECLARE_MAC_BUF(mac);
 
        if (!dev)
                return -ENOMEM;
@@ -170,8 +169,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: %s\n",
-              print_mac(mac, dev->dev_addr));
+       printk(KERN_DEBUG "skisa.c:    Ring Station Address: %pM\n",
+              dev->dev_addr);
                
        tp = netdev_priv(dev);
        tp->setnselout = sk_isa_setnselout_pins;
index 5f0ee88..5f60177 100644 (file)
@@ -100,7 +100,6 @@ static int __devinit tms_pci_attach(struct pci_dev *pdev, const struct pci_devic
        unsigned int pci_irq_line;
        unsigned long pci_ioaddr;
        struct card_info *cardinfo = &card_info_table[ent->driver_data];
-       DECLARE_MAC_BUF(mac);
 
        if (versionprinted++ == 0)
                printk("%s", version);
@@ -137,8 +136,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: %s\n",
-              dev->name, print_mac(mac, dev->dev_addr));
+       printk("%s:    Ring Station Address: %pM\n",
+              dev->name, dev->dev_addr);
                
        ret = tmsdev_init(dev, &pdev->dev);
        if (ret) {
index eb1da6f..6924805 100644 (file)
@@ -1569,7 +1569,6 @@ tsi108_init_one(struct platform_device *pdev)
        struct tsi108_prv_data *data = NULL;
        hw_info *einfo;
        int err = 0;
-       DECLARE_MAC_BUF(mac);
 
        einfo = pdev->dev.platform_data;
 
@@ -1659,8 +1658,8 @@ tsi108_init_one(struct platform_device *pdev)
        }
 
        platform_set_drvdata(pdev, dev);
-       printk(KERN_INFO "%s: Tsi108 Gigabit Ethernet, MAC: %s\n",
-              dev->name, print_mac(mac, dev->dev_addr));
+       printk(KERN_INFO "%s: Tsi108 Gigabit Ethernet, MAC: %pM\n",
+              dev->name, dev->dev_addr);
 #ifdef DEBUG
        data->msg_enable = DEBUG;
        dump_eth_one(dev);
index 124d5d6..0807618 100644 (file)
@@ -1932,7 +1932,6 @@ static int __devinit de_init_one (struct pci_dev *pdev,
        void __iomem *regs;
        unsigned long pciaddr;
        static int board_idx = -1;
-       DECLARE_MAC_BUF(mac);
 
        board_idx++;
 
@@ -2046,11 +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, %s, IRQ %d\n",
+       printk (KERN_INFO "%s: %s at 0x%lx, %pM, IRQ %d\n",
                dev->name,
                de->de21040 ? "21040" : "21041",
                dev->base_addr,
-               print_mac(mac, dev->dev_addr),
+               dev->dev_addr,
                dev->irq);
 
        pci_set_drvdata(pdev, dev);
index 6444cbe..1e7d5e2 100644 (file)
@@ -1085,7 +1085,6 @@ de4x5_hw_init(struct net_device *dev, u_long iobase, struct device *gendev)
     struct de4x5_private *lp = netdev_priv(dev);
     struct pci_dev *pdev = NULL;
     int i, status=0;
-    DECLARE_MAC_BUF(mac);
 
     gendev->driver_data = dev;
 
@@ -1122,7 +1121,7 @@ de4x5_hw_init(struct net_device *dev, u_long iobase, struct device *gendev)
     printk ("%s: %s at 0x%04lx", gendev->bus_id, name, iobase);
 
     status = get_hw_addr(dev);
-    printk(", h/w address %s\n", print_mac(mac, dev->dev_addr));
+    printk(", h/w address %pM\n", dev->dev_addr);
 
     if (status != 0) {
        printk("      which has an Ethernet PROM CRC error.\n");
@@ -5401,7 +5400,6 @@ static void
 de4x5_dbg_srom(struct de4x5_srom *p)
 {
     int i;
-    DECLARE_MAC_BUF(mac);
 
     if (de4x5_debug & DEBUG_SROM) {
        printk("Sub-system Vendor ID: %04x\n", *((u_short *)p->sub_vendor_id));
@@ -5410,7 +5408,7 @@ de4x5_dbg_srom(struct de4x5_srom *p)
        printk("SROM version:         %02x\n", (u_char)(p->version));
        printk("# controllers:        %02x\n", (u_char)(p->num_controllers));
 
-       printk("Hardware Address:     %s\n", print_mac(mac, p->ieee_addr));
+       printk("Hardware Address:     %pM\n", 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));
@@ -5424,12 +5422,10 @@ static void
 de4x5_dbg_rx(struct sk_buff *skb, int len)
 {
     int i, j;
-    DECLARE_MAC_BUF(mac);
-    DECLARE_MAC_BUF(mac2);
 
     if (de4x5_debug & DEBUG_RX) {
-       printk("R: %s <- %s len/SAP:%02x%02x [%d]\n",
-              print_mac(mac, skb->data), print_mac(mac2, &skb->data[6]),
+       printk("R: %pM <- %pM len/SAP:%02x%02x [%d]\n",
+              skb->data, &skb->data[6],
               (u_char)skb->data[12],
               (u_char)skb->data[13],
               len);
index c91852f..0ec3281 100644 (file)
@@ -362,7 +362,6 @@ static int __devinit dmfe_init_one (struct pci_dev *pdev,
        struct net_device *dev;
        u32 pci_pmr;
        int i, err;
-       DECLARE_MAC_BUF(mac);
 
        DMFE_DBUG(0, "dmfe_init_one()", 0);
 
@@ -475,12 +474,11 @@ static int __devinit dmfe_init_one (struct pci_dev *pdev,
        if (err)
                goto err_out_free_buf;
 
-       printk(KERN_INFO "%s: Davicom DM%04lx at pci%s, "
-              "%s, irq %d.\n",
+       printk(KERN_INFO "%s: Davicom DM%04lx at pci%s, %pM, irq %d.\n",
               dev->name,
               ent->driver_data >> 16,
               pci_name(pdev),
-              print_mac(mac, dev->dev_addr),
+              dev->dev_addr,
               dev->irq);
 
        pci_set_master(pdev);
index cafa89e..1c5ef23 100644 (file)
@@ -1050,13 +1050,11 @@ static void set_rx_mode(struct net_device *dev)
                                        filterbit = ether_crc(ETH_ALEN, mclist->dmi_addr) >> 26;
                                filterbit &= 0x3f;
                                mc_filter[filterbit >> 5] |= 1 << (filterbit & 31);
-                               if (tulip_debug > 2) {
-                                       DECLARE_MAC_BUF(mac);
-                                       printk(KERN_INFO "%s: Added filter for %s"
+                               if (tulip_debug > 2)
+                                       printk(KERN_INFO "%s: Added filter for %pM"
                                               "  %8.8x bit %d.\n",
-                                              dev->name, print_mac(mac, mclist->dmi_addr),
+                                              dev->name, mclist->dmi_addr,
                                               ether_crc(ETH_ALEN, mclist->dmi_addr), filterbit);
-                               }
                        }
                        if (mc_filter[0] == tp->mc_filter[0]  &&
                                mc_filter[1] == tp->mc_filter[1])
@@ -1250,7 +1248,6 @@ static int __devinit tulip_init_one (struct pci_dev *pdev,
        const char *chip_name = tulip_tbl[chip_idx].chip_name;
        unsigned int eeprom_missing = 0;
        unsigned int force_csr0 = 0;
-       DECLARE_MAC_BUF(mac);
 
 #ifndef MODULE
        static int did_version;         /* Already printed version info. */
@@ -1635,7 +1632,7 @@ static int __devinit tulip_init_one (struct pci_dev *pdev,
 
        if (eeprom_missing)
                printk(" EEPROM not present,");
-       printk(" %s", print_mac(mac, dev->dev_addr));
+       printk(" %pM", dev->dev_addr);
        printk(", IRQ %d.\n", irq);
 
         if (tp->chip_id == PNIC2)
index e9e6286..298649a 100644 (file)
@@ -261,7 +261,6 @@ static int __devinit uli526x_init_one (struct pci_dev *pdev,
        struct uli526x_board_info *db;  /* board information structure */
        struct net_device *dev;
        int i, err;
-       DECLARE_MAC_BUF(mac);
 
        ULI526X_DBUG(0, "uli526x_init_one()", 0);
 
@@ -379,9 +378,9 @@ static int __devinit uli526x_init_one (struct pci_dev *pdev,
        if (err)
                goto err_out_res;
 
-       printk(KERN_INFO "%s: ULi M%04lx at pci%s, %s, irq %d.\n",
+       printk(KERN_INFO "%s: ULi M%04lx at pci%s, %pM, irq %d.\n",
               dev->name,ent->driver_data >> 16,pci_name(pdev),
-              print_mac(mac, dev->dev_addr), dev->irq);
+              dev->dev_addr, dev->irq);
 
        pci_set_master(pdev);
 
index 5006819..e4cb408 100644 (file)
@@ -355,7 +355,6 @@ static int __devinit w840_probe1 (struct pci_dev *pdev,
        int irq;
        int i, option = find_cnt < MAX_UNITS ? options[find_cnt] : 0;
        void __iomem *ioaddr;
-       DECLARE_MAC_BUF(mac);
 
        i = pci_enable_device(pdev);
        if (i) return i;
@@ -435,9 +434,9 @@ static int __devinit w840_probe1 (struct pci_dev *pdev,
        if (i)
                goto err_out_cleardev;
 
-       printk(KERN_INFO "%s: %s at %p, %s, IRQ %d.\n",
+       printk(KERN_INFO "%s: %s at %p, %pM, IRQ %d.\n",
               dev->name, pci_id_tbl[chip_idx].name, ioaddr,
-              print_mac(mac, dev->dev_addr), irq);
+              dev->dev_addr, irq);
 
        if (np->drv_flags & CanHaveMII) {
                int phy, phy_idx = 0;
@@ -1245,16 +1244,12 @@ 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) {
-                               DECLARE_MAC_BUF(mac);
-                               DECLARE_MAC_BUF(mac2);
-
-                               printk(KERN_DEBUG "  Rx data %s %s"
+                       if (debug > 5)
+                               printk(KERN_DEBUG "  Rx data %pM %pM"
                                       " %2.2x%2.2x %d.%d.%d.%d.\n",
-                                      print_mac(mac, &skb->data[0]), print_mac(mac2, &skb->data[6]),
+                                      &skb->data[0], &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);
index 6b93d01..3c0b96b 100644 (file)
@@ -1072,7 +1072,6 @@ static void read_mac_address(struct xircom_private *card)
        unsigned char j, tuple, link, data_id, data_count;
        unsigned long flags;
        int i;
-       DECLARE_MAC_BUF(mac);
 
        enter("read_mac_address");
 
@@ -1102,7 +1101,7 @@ static void read_mac_address(struct xircom_private *card)
                }
        }
        spin_unlock_irqrestore(&card->lock, flags);
-       pr_debug(" %s\n", print_mac(mac, card->dev->dev_addr));
+       pr_debug(" %pM\n", card->dev->dev_addr);
        leave("read_mac_address");
 }
 
index 6daea0c..64c7fc7 100644 (file)
@@ -883,7 +883,6 @@ static int tun_chr_ioctl(struct inode *inode, struct file *file,
        void __user* argp = (void __user*)arg;
        struct ifreq ifr;
        int ret;
-       DECLARE_MAC_BUF(mac);
 
        if (cmd == TUNSETIFF || _IOC_TYPE(cmd) == 0x89)
                if (copy_from_user(&ifr, argp, sizeof ifr))
@@ -1011,8 +1010,8 @@ static int tun_chr_ioctl(struct inode *inode, struct file *file,
 
        case SIOCSIFHWADDR:
                /* Set hw address */
-               DBG(KERN_DEBUG "%s: set hw address: %s\n",
-                       tun->dev->name, print_mac(mac, ifr.ifr_hwaddr.sa_data));
+               DBG(KERN_DEBUG "%s: set hw address: %pM\n",
+                       tun->dev->name, ifr.ifr_hwaddr.sa_data);
 
                rtnl_lock();
                ret = dev_set_mac_address(tun->dev, &ifr.ifr_hwaddr);
index 734ce09..6f191e9 100644 (file)
@@ -2311,7 +2311,6 @@ typhoon_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
        struct cmd_desc xp_cmd;
        struct resp_desc xp_resp[3];
        int err = 0;
-       DECLARE_MAC_BUF(mac);
 
        if(!did_version++)
                printk(KERN_INFO "%s", version);
@@ -2526,11 +2525,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, %s\n",
+       printk(KERN_INFO "%s: %s at %s 0x%llx, %pM\n",
               dev->name, typhoon_card_info[card_id].name,
               use_mmio ? "MMIO" : "IO",
               (unsigned long long)pci_resource_start(pdev, use_mmio),
-              print_mac(mac, dev->dev_addr));
+              dev->dev_addr);
 
        /* xp_resp still contains the response to the READ_VERSIONS command.
         * For debugging, let the user know what version he has.
index 7914867..c073929 100644 (file)
@@ -1309,7 +1309,6 @@ static int pegasus_probe(struct usb_interface *intf,
        pegasus_t *pegasus;
        int dev_index = id - pegasus_ids;
        int res = -ENOMEM;
-       DECLARE_MAC_BUF(mac);
 
        usb_get_dev(dev);
 
@@ -1386,10 +1385,10 @@ static int pegasus_probe(struct usb_interface *intf,
        queue_delayed_work(pegasus_workqueue, &pegasus->carrier_check,
                                CARRIER_CHECK_DELAY);
 
-       dev_info(&intf->dev, "%s, %s, %s\n",
+       dev_info(&intf->dev, "%s, %s, %pM\n",
                 net->name,
                 usb_dev_id[dev_index].name,
-                print_mac(mac, net->dev_addr));
+                net->dev_addr);
        return 0;
 
 out3:
index 51e2f5d..e0d349f 100644 (file)
@@ -759,7 +759,6 @@ static int smsc95xx_reset(struct usbnet *dev)
        struct smsc95xx_priv *pdata = (struct smsc95xx_priv *)(dev->data[0]);
        u32 read_buf, write_buf, burst_cap;
        int ret = 0, timeout;
-       DECLARE_MAC_BUF(mac);
 
        if (netif_msg_ifup(dev))
                devdbg(dev, "entering smsc95xx_reset");
@@ -818,8 +817,7 @@ static int smsc95xx_reset(struct usbnet *dev)
                return ret;
 
        if (netif_msg_ifup(dev))
-               devdbg(dev, "MAC Address: %s",
-                       print_mac(mac, dev->net->dev_addr));
+               devdbg(dev, "MAC Address: %pM", dev->net->dev_addr);
 
        ret = smsc95xx_read_reg(dev, HW_CFG, &read_buf);
        if (ret < 0) {
index 02d25c7..aa31490 100644 (file)
@@ -1125,7 +1125,6 @@ usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod)
        struct usb_device               *xdev;
        int                             status;
        const char                      *name;
-       DECLARE_MAC_BUF(mac);
 
        name = udev->dev.driver->name;
        info = (struct driver_info *) prod->driver_info;
@@ -1236,11 +1235,11 @@ usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod)
        if (status)
                goto out3;
        if (netif_msg_probe (dev))
-               devinfo (dev, "register '%s' at usb-%s-%s, %s, %s",
+               devinfo (dev, "register '%s' at usb-%s-%s, %s, %pM",
                        udev->dev.driver->name,
                        xdev->bus->bus_name, xdev->devpath,
                        dev->driver_info->description,
-                       print_mac(mac, net->dev_addr));
+                       net->dev_addr);
 
        // ok, it's ready to go.
        usb_set_intfdata (udev, dev);
index 31cd817..75b40fe 100644 (file)
@@ -8,7 +8,6 @@
  *
  */
 
-#include <linux/list.h>
 #include <linux/netdevice.h>
 #include <linux/ethtool.h>
 #include <linux/etherdevice.h>
@@ -30,14 +29,10 @@ struct veth_net_stats {
 
 struct veth_priv {
        struct net_device *peer;
-       struct net_device *dev;
-       struct list_head list;
        struct veth_net_stats *stats;
        unsigned ip_summed;
 };
 
-static LIST_HEAD(veth_list);
-
 /*
  * ethtool interface
  */
@@ -420,14 +415,10 @@ static int veth_newlink(struct net_device *dev,
         */
 
        priv = netdev_priv(dev);
-       priv->dev = dev;
        priv->peer = peer;
-       list_add(&priv->list, &veth_list);
 
        priv = netdev_priv(peer);
-       priv->dev = peer;
        priv->peer = dev;
-       INIT_LIST_HEAD(&priv->list);
        return 0;
 
 err_register_dev:
@@ -449,13 +440,6 @@ static void veth_dellink(struct net_device *dev)
        priv = netdev_priv(dev);
        peer = priv->peer;
 
-       if (!list_empty(&priv->list))
-               list_del(&priv->list);
-
-       priv = netdev_priv(peer);
-       if (!list_empty(&priv->list))
-               list_del(&priv->list);
-
        unregister_netdevice(dev);
        unregister_netdevice(peer);
 }
index 5b78700..bb54a93 100644 (file)
@@ -631,7 +631,6 @@ static int __devinit rhine_init_one(struct pci_dev *pdev,
 #else
        int bar = 0;
 #endif
-       DECLARE_MAC_BUF(mac);
 
 /* when built into the kernel, we only print version if device is found */
 #ifndef MODULE
@@ -787,14 +786,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, %s, IRQ %d.\n",
+       printk(KERN_INFO "%s: VIA %s at 0x%lx, %pM, IRQ %d.\n",
               dev->name, name,
 #ifdef USE_MMIO
               memaddr,
 #else
               (long)ioaddr,
 #endif
-              print_mac(mac, dev->dev_addr), pdev->irq);
+              dev->dev_addr, pdev->irq);
 
        pci_set_drvdata(pdev, dev);
 
index 0196a0d..68f908a 100644 (file)
@@ -325,9 +325,7 @@ static int xmit_skb(struct virtnet_info *vi, struct sk_buff *skb)
 
        sg_init_table(sg, 2+MAX_SKB_FRAGS);
 
-       pr_debug("%s: xmit %p " MAC_FMT "\n", vi->dev->name, skb,
-                dest[0], dest[1], dest[2],
-                dest[3], dest[4], dest[5]);
+       pr_debug("%s: xmit %p %pM\n", vi->dev->name, skb, dest);
 
        /* Encode metadata header at front. */
        hdr = skb_vnet_hdr(skb);
index 5f1ccb2..7d16ca3 100644 (file)
@@ -730,8 +730,7 @@ static int __devinit dscc4_init_one(struct pci_dev *pdev,
                goto err_free_mmio_region_1;
        }
 
-       ioaddr = ioremap(pci_resource_start(pdev, 0),
-                                       pci_resource_len(pdev, 0));
+       ioaddr = pci_ioremap_bar(pdev, 0);
        if (!ioaddr) {
                printk(KERN_ERR "%s: cannot remap MMIO region %llx @ %llx\n",
                        DRV_NAME, (unsigned long long)pci_resource_len(pdev, 0),
index bf1b015..2226711 100644 (file)
@@ -379,7 +379,7 @@ static int __devinit pc300_pci_init_one(struct pci_dev *pdev,
        card->scabase = ioremap(scaphys, PC300_SCA_SIZE);
 
        ramphys = pci_resource_start(pdev,3) & PCI_BASE_ADDRESS_MEM_MASK;
-       card->rambase = ioremap(ramphys, pci_resource_len(pdev,3));
+       card->rambase = pci_ioremap_bar(pdev, 3);
 
        if (card->plxbase == NULL ||
            card->scabase == NULL ||
index b595b64..bba111c 100644 (file)
@@ -343,7 +343,7 @@ static int __devinit pci200_pci_init_one(struct pci_dev *pdev,
        card->scabase = ioremap(scaphys, PCI200SYN_SCA_SIZE);
 
        ramphys = pci_resource_start(pdev,3) & PCI_BASE_ADDRESS_MEM_MASK;
-       card->rambase = ioremap(ramphys, pci_resource_len(pdev,3));
+       card->rambase = pci_ioremap_bar(pdev, 3);
 
        if (card->plxbase == NULL ||
            card->scabase == NULL ||
index fa14255..6d96ed4 100644 (file)
@@ -156,7 +156,6 @@ static int __init wd_probe1(struct net_device *dev, int ioaddr)
        int word16 = 0;                         /* 0 = 8 bit, 1 = 16 bit */
        const char *model_name;
        static unsigned version_printed;
-       DECLARE_MAC_BUF(mac);
 
        for (i = 0; i < 8; i++)
                checksum += inb(ioaddr + 8 + i);
@@ -178,8 +177,8 @@ static int __init wd_probe1(struct net_device *dev, int ioaddr)
        for (i = 0; i < 6; i++)
                dev->dev_addr[i] = inb(ioaddr + 8 + i);
 
-       printk("%s: WD80x3 at %#3x, %s",
-              dev->name, ioaddr, print_mac(mac, dev->dev_addr));
+       printk("%s: WD80x3 at %#3x, %pM",
+              dev->name, ioaddr, dev->dev_addr);
 
        /* The following PureData probe code was contributed by
           Mike Jagdis <jaggy@purplet.demon.co.uk>. Puredata does software
index b2c050b..6e18c9d 100644 (file)
@@ -1791,7 +1791,6 @@ static int __devinit adm8211_probe(struct pci_dev *pdev,
        int err;
        u32 reg;
        u8 perm_addr[ETH_ALEN];
-       DECLARE_MAC_BUF(mac);
 
        err = pci_enable_device(pdev);
        if (err) {
@@ -1925,8 +1924,8 @@ static int __devinit adm8211_probe(struct pci_dev *pdev,
                goto err_free_desc;
        }
 
-       printk(KERN_INFO "%s: hwaddr %s, Rev 0x%02x\n",
-              wiphy_name(dev->wiphy), print_mac(mac, dev->wiphy->perm_addr),
+       printk(KERN_INFO "%s: hwaddr %pM, Rev 0x%02x\n",
+              wiphy_name(dev->wiphy), dev->wiphy->perm_addr,
               pdev->revision);
 
        return 0;
index 370133e..7c99f5a 100644 (file)
@@ -2757,7 +2757,6 @@ static struct net_device *_init_airo_card( unsigned short irq, int port,
        struct net_device *dev;
        struct airo_info *ai;
        int i, rc;
-       DECLARE_MAC_BUF(mac);
 
        /* Create the network device object. */
        dev = alloc_netdev(sizeof(*ai), "", ether_setup);
@@ -2860,8 +2859,7 @@ static struct net_device *_init_airo_card( unsigned short irq, int port,
                goto err_out_reg;
 
        set_bit(FLAG_REGISTERED,&ai->flags);
-       airo_print_info(dev->name, "MAC enabled %s",
-                       print_mac(mac, dev->dev_addr));
+       airo_print_info(dev->name, "MAC enabled %pM", dev->dev_addr);
 
        /* Allocate the transmit buffers */
        if (probe && !test_bit(FLAG_MPI,&ai->flags))
@@ -2918,7 +2916,6 @@ int reset_airo_card( struct net_device *dev )
 {
        int i;
        struct airo_info *ai = dev->priv;
-       DECLARE_MAC_BUF(mac);
 
        if (reset_card (dev, 1))
                return -1;
@@ -2927,8 +2924,7 @@ int reset_airo_card( struct net_device *dev )
                airo_print_err(dev->name, "MAC could not be enabled");
                return -1;
        }
-       airo_print_info(dev->name, "MAC enabled %s",
-                       print_mac(mac, dev->dev_addr));
+       airo_print_info(dev->name, "MAC enabled %pM", dev->dev_addr);
        /* Allocate the transmit buffers if needed */
        if (!test_bit(FLAG_MPI,&ai->flags))
                for( i = 0; i < MAX_FIDS; i++ )
@@ -5330,7 +5326,6 @@ static int proc_APList_open( struct inode *inode, struct file *file ) {
        int i;
        char *ptr;
        APListRid APList_rid;
-       DECLARE_MAC_BUF(mac);
 
        if ((file->private_data = kzalloc(sizeof(struct proc_data ), GFP_KERNEL)) == NULL)
                return -ENOMEM;
@@ -5354,8 +5349,7 @@ static int proc_APList_open( struct inode *inode, struct file *file ) {
 // We end when we find a zero MAC
                if ( !*(int*)APList_rid.ap[i] &&
                     !*(int*)&APList_rid.ap[i][2]) break;
-               ptr += sprintf(ptr, "%s\n",
-                              print_mac(mac, APList_rid.ap[i]));
+               ptr += sprintf(ptr, "%pM\n", APList_rid.ap[i]);
        }
        if (i==0) ptr += sprintf(ptr, "Not using specific APs\n");
 
@@ -5374,7 +5368,6 @@ static int proc_BSSList_open( struct inode *inode, struct file *file ) {
        int rc;
        /* If doLoseSync is not 1, we won't do a Lose Sync */
        int doLoseSync = -1;
-       DECLARE_MAC_BUF(mac);
 
        if ((file->private_data = kzalloc(sizeof(struct proc_data ), GFP_KERNEL)) == NULL)
                return -ENOMEM;
@@ -5411,8 +5404,8 @@ static int proc_BSSList_open( struct inode *inode, struct file *file ) {
            we have to add a spin lock... */
        rc = readBSSListRid(ai, doLoseSync, &BSSList_rid);
        while(rc == 0 && BSSList_rid.index != cpu_to_le16(0xffff)) {
-               ptr += sprintf(ptr, "%s %*s rssi = %d",
-                              print_mac(mac, BSSList_rid.bssid),
+               ptr += sprintf(ptr, "%pM %*s rssi = %d",
+                              BSSList_rid.bssid,
                                (int)BSSList_rid.ssidLen,
                                BSSList_rid.ssid,
                                le16_to_cpu(BSSList_rid.dBm));
index dec5e87..b608643 100644 (file)
@@ -1467,19 +1467,17 @@ static void arlan_rx_interrupt(struct net_device *dev, u_char rxStatus, u_short
                                                else if (hw_dst_addr[1] == 0x40)
                                                        printk(KERN_ERR "%s m/bcast 0x0140 \n", dev->name);
                                        while (dmi)
-                                       {                                                       if (dmi->dmi_addrlen == 6)
-                                               {
-                                                       DECLARE_MAC_BUF(mac);
+                                       {
+                                               if (dmi->dmi_addrlen == 6) {
                                                        if (arlan_debug & ARLAN_DEBUG_HEADER_DUMP)
-                                                               printk(KERN_ERR "%s mcl %s\n",
-                                                                      dev->name, print_mac(mac, dmi->dmi_addr));
+                                                               printk(KERN_ERR "%s mcl %pM\n",
+                                                                      dev->name, dmi->dmi_addr);
                                                        for (i = 0; i < 6; i++)
                                                                if (dmi->dmi_addr[i] != hw_dst_addr[i])
                                                                        break;
                                                        if (i == 6)
                                                                break;
-                                               }
-                                               else
+                                               } else
                                                        printk(KERN_ERR "%s: invalid multicast address length given.\n", dev->name);
                                                dmi = dmi->next;
                                        }
@@ -1512,18 +1510,14 @@ static void arlan_rx_interrupt(struct net_device *dev, u_char rxStatus, u_short
                        {
                                char immedDestAddress[6];
                                char immedSrcAddress[6];
-                               DECLARE_MAC_BUF(mac);
-                               DECLARE_MAC_BUF(mac2);
-                               DECLARE_MAC_BUF(mac3);
-                               DECLARE_MAC_BUF(mac4);
                                memcpy_fromio(immedDestAddress, arlan->immedDestAddress, 6);
                                memcpy_fromio(immedSrcAddress, arlan->immedSrcAddress, 6);
 
-                               printk(KERN_WARNING "%s t %s f %s imd %s ims %s\n",
-                                      dev->name, print_mac(mac, skbtmp),
-                                      print_mac(mac2, &skbtmp[6]),
-                                      print_mac(mac3, immedDestAddress),
-                                      print_mac(mac4, immedSrcAddress));
+                               printk(KERN_WARNING "%s t %pM f %pM imd %pM ims %pM\n",
+                                      dev->name, skbtmp,
+                                      &skbtmp[6],
+                                      immedDestAddress,
+                                      immedSrcAddress);
                        }
                        skb->protocol = eth_type_trans(skb, dev);
                        IFDEBUG(ARLAN_DEBUG_HEADER_DUMP)
index c5033f6..0089e02 100644 (file)
@@ -1325,7 +1325,6 @@ struct ath_node *ath_node_attach(struct ath_softc *sc, u8 *addr, int if_id)
 {
        struct ath_vap *avp;
        struct ath_node *an;
-       DECLARE_MAC_BUF(mac);
 
        avp = sc->sc_vaps[if_id];
        ASSERT(avp != NULL);
@@ -1355,8 +1354,6 @@ void ath_node_detach(struct ath_softc *sc, struct ath_node *an, bool bh_flag)
 {
        unsigned long flags;
 
-       DECLARE_MAC_BUF(mac);
-
        ath_chainmask_sel_timerstop(&an->an_chainmask_sel);
        an->an_flags |= ATH_NODE_CLEAN;
        ath_tx_node_cleanup(sc, an, bh_flag);
index 98bc25c..d5b513e 100644 (file)
@@ -1291,7 +1291,6 @@ static int ath9k_hw_init_macaddr(struct ath_hal *ah)
        int i;
        u16 eeval;
        struct ath_hal_5416 *ahp = AH5416(ah);
-       DECLARE_MAC_BUF(mac);
 
        sum = 0;
        for (i = 0; i < 3; i++) {
@@ -1302,8 +1301,8 @@ static int ath9k_hw_init_macaddr(struct ath_hal *ah)
        }
        if (sum == 0 || sum == 0xffff * 3) {
                DPRINTF(ah->ah_sc, ATH_DBG_EEPROM,
-                        "%s: mac address read failed: %s\n", __func__,
-                        print_mac(mac, ahp->ah_macaddr));
+                        "%s: mac address read failed: %pM\n", __func__,
+                        ahp->ah_macaddr);
                return -EADDRNOTAVAIL;
        }
 
index f05f584..186d75a 100644 (file)
@@ -362,7 +362,6 @@ static void ath9k_bss_assoc_info(struct ath_softc *sc,
        struct ieee80211_channel *curchan = hw->conf.channel;
        struct ath_vap *avp;
        int pos;
-       DECLARE_MAC_BUF(mac);
 
        if (bss_conf->assoc) {
                DPRINTF(sc, ATH_DBG_CONFIG, "%s: Bss Info ASSOC %d\n",
@@ -397,9 +396,9 @@ static void ath9k_bss_assoc_info(struct ath_softc *sc,
                ath_update_chainmask(sc, bss_conf->assoc_ht);
 
                DPRINTF(sc, ATH_DBG_CONFIG,
-                       "%s: bssid %s aid 0x%x\n",
+                       "%s: bssid %pM aid 0x%x\n",
                        __func__,
-                       print_mac(mac, sc->sc_curbssid), sc->sc_curaid);
+                       sc->sc_curbssid, sc->sc_curaid);
 
                DPRINTF(sc, ATH_DBG_CONFIG, "%s: Set channel: %d MHz\n",
                        __func__,
@@ -1278,7 +1277,6 @@ static int ath9k_config_interface(struct ieee80211_hw *hw,
        struct ath_vap *avp;
        u32 rfilt = 0;
        int error, i;
-       DECLARE_MAC_BUF(mac);
 
        avp = sc->sc_vaps[0];
        if (avp == NULL) {
@@ -1333,9 +1331,9 @@ static int ath9k_config_interface(struct ieee80211_hw *hw,
                        sc->sc_imask &= ~(ATH9K_INT_SWBA | ATH9K_INT_BMISS);
 
                        DPRINTF(sc, ATH_DBG_CONFIG,
-                               "%s: RX filter 0x%x bssid %s aid 0x%x\n",
+                               "%s: RX filter 0x%x bssid %pM aid 0x%x\n",
                                __func__, rfilt,
-                               print_mac(mac, sc->sc_curbssid), sc->sc_curaid);
+                               sc->sc_curbssid, sc->sc_curaid);
 
                        /* need to reconfigure the beacon */
                        sc->sc_flags &= ~SC_OP_BEACONS ;
@@ -1424,7 +1422,6 @@ static void ath9k_sta_notify(struct ieee80211_hw *hw,
        struct ath_softc *sc = hw->priv;
        struct ath_node *an;
        unsigned long flags;
-       DECLARE_MAC_BUF(mac);
 
        spin_lock_irqsave(&sc->node_lock, flags);
        an = ath_node_find(sc, sta->addr);
@@ -1435,8 +1432,8 @@ static void ath9k_sta_notify(struct ieee80211_hw *hw,
                spin_lock_irqsave(&sc->node_lock, flags);
                if (!an) {
                        ath_node_attach(sc, sta->addr, 0);
-                       DPRINTF(sc, ATH_DBG_CONFIG, "%s: Attach a node: %s\n",
-                               __func__, print_mac(mac, sta->addr));
+                       DPRINTF(sc, ATH_DBG_CONFIG, "%s: Attach a node: %pM\n",
+                               __func__, sta->addr);
                } else {
                        ath_node_get(sc, sta->addr);
                }
@@ -1449,9 +1446,9 @@ static void ath9k_sta_notify(struct ieee80211_hw *hw,
                                __func__);
                else {
                        ath_node_put(sc, an, ATH9K_BH_STATUS_INTACT);
-                       DPRINTF(sc, ATH_DBG_CONFIG, "%s: Put a node: %s\n",
+                       DPRINTF(sc, ATH_DBG_CONFIG, "%s: Put a node: %pM\n",
                                __func__,
-                               print_mac(mac, sta->addr));
+                               sta->addr);
                }
                break;
        default:
index cca2fc5..b1e535b 100644 (file)
@@ -1942,7 +1942,6 @@ static void ath_get_rate(void *priv, struct ieee80211_supported_band *sband,
        s8 lowest_idx;
        __le16 fc = hdr->frame_control;
        u8 *qc, tid;
-       DECLARE_MAC_BUF(mac);
 
        DPRINTF(sc, ATH_DBG_RATE, "%s\n", __func__);
 
@@ -2003,14 +2002,14 @@ static void ath_get_rate(void *priv, struct ieee80211_supported_band *sband,
                                if (ret)
                                        DPRINTF(sc, ATH_DBG_AGGR,
                                                "%s: Unable to start tx "
-                                               "aggr for: %s\n",
+                                               "aggr for: %pM\n",
                                                __func__,
-                                               print_mac(mac, hdr->addr1));
+                                               hdr->addr1);
                                else
                                        DPRINTF(sc, ATH_DBG_AGGR,
-                                               "%s: Started tx aggr for: %s\n",
+                                               "%s: Started tx aggr for: %pM\n",
                                                __func__,
-                                               print_mac(mac, hdr->addr1));
+                                               hdr->addr1);
                        } else if (chk == AGGR_EXCHANGE_PROGRESS)
                                ath_tx_aggr_resp(sc, sband, sta, an, tid);
                }
index 3a47579..1386604 100644 (file)
@@ -2416,7 +2416,6 @@ enum ATH_AGGR_CHECK ath_tx_aggr_check(struct ath_softc *sc,
                                      u8 tidno)
 {
        struct ath_atx_tid *txtid;
-       DECLARE_MAC_BUF(mac);
 
        if (!(sc->sc_flags & SC_OP_TXAGGR))
                return AGGR_NOT_REQUIRED;
index ecb02bd..6e20552 100644 (file)
@@ -1479,7 +1479,6 @@ struct net_device *init_atmel_card(unsigned short irq, unsigned long port,
        struct net_device *dev;
        struct atmel_private *priv;
        int rc;
-       DECLARE_MAC_BUF(mac);
 
        /* Create the network device object. */
         dev = alloc_etherdev(sizeof(*priv));
@@ -1591,8 +1590,8 @@ struct net_device *init_atmel_card(unsigned short irq, unsigned long port,
        if (!ent)
                printk(KERN_WARNING "atmel: unable to create /proc entry.\n");
 
-       printk(KERN_INFO "%s: Atmel at76c50x. Version %d.%d. MAC %s\n",
-              dev->name, DRIVER_MAJOR, DRIVER_MINOR, print_mac(mac, dev->dev_addr));
+       printk(KERN_INFO "%s: Atmel at76c50x. Version %d.%d. MAC %pM\n",
+              dev->name, DRIVER_MAJOR, DRIVER_MINOR, dev->dev_addr);
 
        return dev;
 
index 14c44df..6e77301 100644 (file)
@@ -3445,7 +3445,6 @@ static int b43_op_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
        u8 algorithm;
        u8 index;
        int err;
-       DECLARE_MAC_BUF(mac);
 
        if (modparam_nohwcrypt)
                return -ENOSPC; /* User disabled HW-crypto */
@@ -3533,9 +3532,9 @@ out_unlock:
        mutex_unlock(&wl->mutex);
        if (!err) {
                b43dbg(wl, "%s hardware based encryption for keyidx: %d, "
-                      "mac: %s\n",
+                      "mac: %pM\n",
                       cmd == SET_KEY ? "Using" : "Disabling", key->keyidx,
-                      print_mac(mac, addr));
+                      addr);
        }
        return err;
 }
index f106bc1..bbb8ec6 100644 (file)
@@ -19,7 +19,6 @@ void hostap_dump_rx_80211(const char *name, struct sk_buff *skb,
 {
        struct ieee80211_hdr_4addr *hdr;
        u16 fc;
-       DECLARE_MAC_BUF(mac);
 
        hdr = (struct ieee80211_hdr_4addr *) skb->data;
 
@@ -45,11 +44,11 @@ void hostap_dump_rx_80211(const char *name, struct sk_buff *skb,
        printk(" dur=0x%04x seq=0x%04x\n", le16_to_cpu(hdr->duration_id),
               le16_to_cpu(hdr->seq_ctl));
 
-       printk(KERN_DEBUG "   A1=%s", print_mac(mac, hdr->addr1));
-       printk(" A2=%s", print_mac(mac, hdr->addr2));
-       printk(" A3=%s", print_mac(mac, hdr->addr3));
+       printk(KERN_DEBUG "   A1=%pM", hdr->addr1);
+       printk(" A2=%pM", hdr->addr2);
+       printk(" A3=%pM", hdr->addr3);
        if (skb->len >= 30)
-               printk(" A4=%s", print_mac(mac, hdr->addr4));
+               printk(" A4=%pM", hdr->addr4);
        printk("\n");
 }
 
@@ -557,7 +556,6 @@ static int
 hostap_rx_frame_wds(local_info_t *local, struct ieee80211_hdr_4addr *hdr,
                    u16 fc, struct net_device **wds)
 {
-       DECLARE_MAC_BUF(mac);
        /* FIX: is this really supposed to accept WDS frames only in Master
         * mode? What about Repeater or Managed with WDS frames? */
        if ((fc & (IEEE80211_FCTL_TODS | IEEE80211_FCTL_FROMDS)) !=
@@ -573,10 +571,10 @@ hostap_rx_frame_wds(local_info_t *local, struct ieee80211_hdr_4addr *hdr,
             hdr->addr1[4] != 0xff || hdr->addr1[5] != 0xff)) {
                /* RA (or BSSID) is not ours - drop */
                PDEBUG(DEBUG_EXTRA2, "%s: received WDS frame with "
-                      "not own or broadcast %s=%s\n",
+                      "not own or broadcast %s=%pM\n",
                       local->dev->name,
                       fc & IEEE80211_FCTL_FROMDS ? "RA" : "BSSID",
-                      print_mac(mac, hdr->addr1));
+                      hdr->addr1);
                return -1;
        }
 
@@ -589,8 +587,8 @@ hostap_rx_frame_wds(local_info_t *local, struct ieee80211_hdr_4addr *hdr,
                /* require that WDS link has been registered with TA or the
                 * frame is from current AP when using 'AP client mode' */
                PDEBUG(DEBUG_EXTRA, "%s: received WDS[4 addr] frame "
-                      "from unknown TA=%s\n",
-                      local->dev->name, print_mac(mac, hdr->addr2));
+                      "from unknown TA=%pM\n",
+                      local->dev->name, hdr->addr2);
                if (local->ap && local->ap->autom_ap_wds)
                        hostap_wds_link_oper(local, hdr->addr2, WDS_ADD);
                return -1;
@@ -667,10 +665,8 @@ hostap_rx_frame_decrypt(local_info_t *local, struct sk_buff *skb,
            strcmp(crypt->ops->name, "TKIP") == 0) {
                if (net_ratelimit()) {
                        printk(KERN_DEBUG "%s: TKIP countermeasures: dropped "
-                              "received packet from " MAC_FMT "\n",
-                              local->dev->name,
-                              hdr->addr2[0], hdr->addr2[1], hdr->addr2[2],
-                              hdr->addr2[3], hdr->addr2[4], hdr->addr2[5]);
+                              "received packet from %pM\n",
+                              local->dev->name, hdr->addr2);
                }
                return -1;
        }
@@ -679,12 +675,8 @@ hostap_rx_frame_decrypt(local_info_t *local, struct sk_buff *skb,
        res = crypt->ops->decrypt_mpdu(skb, hdrlen, crypt->priv);
        atomic_dec(&crypt->refcnt);
        if (res < 0) {
-               printk(KERN_DEBUG "%s: decryption failed (SA=" MAC_FMT
-                      ") res=%d\n",
-                      local->dev->name,
-                      hdr->addr2[0], hdr->addr2[1], hdr->addr2[2],
-                      hdr->addr2[3], hdr->addr2[4], hdr->addr2[5],
-                      res);
+               printk(KERN_DEBUG "%s: decryption failed (SA=%pM) res=%d\n",
+                      local->dev->name, hdr->addr2, res);
                local->comm_tallies.rx_discards_wep_undecryptable++;
                return -1;
        }
@@ -700,7 +692,6 @@ hostap_rx_frame_decrypt_msdu(local_info_t *local, struct sk_buff *skb,
 {
        struct ieee80211_hdr_4addr *hdr;
        int res, hdrlen;
-       DECLARE_MAC_BUF(mac);
 
        if (crypt == NULL || crypt->ops->decrypt_msdu == NULL)
                return 0;
@@ -713,8 +704,8 @@ hostap_rx_frame_decrypt_msdu(local_info_t *local, struct sk_buff *skb,
        atomic_dec(&crypt->refcnt);
        if (res < 0) {
                printk(KERN_DEBUG "%s: MSDU decryption/MIC verification failed"
-                      " (SA=%s keyidx=%d)\n",
-                      local->dev->name, print_mac(mac, hdr->addr2), keyidx);
+                      " (SA=%pM keyidx=%d)\n",
+                      local->dev->name, hdr->addr2, keyidx);
                return -1;
        }
 
@@ -822,10 +813,8 @@ void hostap_80211_rx(struct net_device *dev, struct sk_buff *skb,
                         * frames silently instead of filling system log with
                         * these reports. */
                        printk(KERN_DEBUG "%s: WEP decryption failed (not set)"
-                              " (SA=" MAC_FMT ")\n",
-                              local->dev->name,
-                              hdr->addr2[0], hdr->addr2[1], hdr->addr2[2],
-                              hdr->addr2[3], hdr->addr2[4], hdr->addr2[5]);
+                              " (SA=%pM)\n",
+                              local->dev->name, hdr->addr2);
 #endif
                        local->comm_tallies.rx_discards_wep_undecryptable++;
                        goto rx_dropped;
@@ -839,9 +828,7 @@ void hostap_80211_rx(struct net_device *dev, struct sk_buff *skb,
                    (keyidx = hostap_rx_frame_decrypt(local, skb, crypt)) < 0)
                {
                        printk(KERN_DEBUG "%s: failed to decrypt mgmt::auth "
-                              "from " MAC_FMT "\n", dev->name,
-                              hdr->addr2[0], hdr->addr2[1], hdr->addr2[2],
-                              hdr->addr2[3], hdr->addr2[4], hdr->addr2[5]);
+                              "from %pM\n", dev->name, hdr->addr2);
                        /* TODO: could inform hostapd about this so that it
                         * could send auth failure report */
                        goto rx_dropped;
@@ -1009,10 +996,8 @@ void hostap_80211_rx(struct net_device *dev, struct sk_buff *skb,
                               "unencrypted EAPOL frame\n", local->dev->name);
                } else {
                        printk(KERN_DEBUG "%s: encryption configured, but RX "
-                              "frame not encrypted (SA=" MAC_FMT ")\n",
-                              local->dev->name,
-                              hdr->addr2[0], hdr->addr2[1], hdr->addr2[2],
-                              hdr->addr2[3], hdr->addr2[4], hdr->addr2[5]);
+                              "frame not encrypted (SA=%pM)\n",
+                              local->dev->name, hdr->addr2);
                        goto rx_dropped;
                }
        }
@@ -1021,10 +1006,8 @@ void hostap_80211_rx(struct net_device *dev, struct sk_buff *skb,
            !hostap_is_eapol_frame(local, skb)) {
                if (net_ratelimit()) {
                        printk(KERN_DEBUG "%s: dropped unencrypted RX data "
-                              "frame from " MAC_FMT " (drop_unencrypted=1)\n",
-                              dev->name,
-                              hdr->addr2[0], hdr->addr2[1], hdr->addr2[2],
-                              hdr->addr2[3], hdr->addr2[4], hdr->addr2[5]);
+                              "frame from %pM (drop_unencrypted=1)\n",
+                              dev->name, hdr->addr2);
                }
                goto rx_dropped;
        }
index 921c984..0752471 100644 (file)
@@ -17,7 +17,6 @@ void hostap_dump_tx_80211(const char *name, struct sk_buff *skb)
 {
        struct ieee80211_hdr_4addr *hdr;
        u16 fc;
-       DECLARE_MAC_BUF(mac);
 
        hdr = (struct ieee80211_hdr_4addr *) skb->data;
 
@@ -41,11 +40,11 @@ void hostap_dump_tx_80211(const char *name, struct sk_buff *skb)
        printk(" dur=0x%04x seq=0x%04x\n", le16_to_cpu(hdr->duration_id),
               le16_to_cpu(hdr->seq_ctl));
 
-       printk(KERN_DEBUG "   A1=%s", print_mac(mac, hdr->addr1));
-       printk(" A2=%s", print_mac(mac, hdr->addr2));
-       printk(" A3=%s", print_mac(mac, hdr->addr3));
+       printk(KERN_DEBUG "   A1=%pM", hdr->addr1);
+       printk(" A2=%pM", hdr->addr2);
+       printk(" A3=%pM", hdr->addr3);
        if (skb->len >= 30)
-               printk(" A4=%s", print_mac(mac, hdr->addr4));
+               printk(" A4=%pM", hdr->addr4);
        printk("\n");
 }
 
@@ -328,10 +327,8 @@ static struct sk_buff * hostap_tx_encrypt(struct sk_buff *skb,
                hdr = (struct ieee80211_hdr_4addr *) skb->data;
                if (net_ratelimit()) {
                        printk(KERN_DEBUG "%s: TKIP countermeasures: dropped "
-                              "TX packet to " MAC_FMT "\n",
-                              local->dev->name,
-                              hdr->addr1[0], hdr->addr1[1], hdr->addr1[2],
-                              hdr->addr1[3], hdr->addr1[4], hdr->addr1[5]);
+                              "TX packet to %pM\n",
+                              local->dev->name, hdr->addr1);
                }
                kfree_skb(skb);
                return NULL;
index af3d4ef..dec3dbe 100644 (file)
@@ -94,7 +94,6 @@ static void ap_sta_hash_add(struct ap_data *ap, struct sta_info *sta)
 static void ap_sta_hash_del(struct ap_data *ap, struct sta_info *sta)
 {
        struct sta_info *s;
-       DECLARE_MAC_BUF(mac);
 
        s = ap->sta_hash[STA_HASH(sta->addr)];
        if (s == NULL) return;
@@ -109,20 +108,18 @@ static void ap_sta_hash_del(struct ap_data *ap, struct sta_info *sta)
        if (s->hnext != NULL)
                s->hnext = s->hnext->hnext;
        else
-               printk("AP: could not remove STA %s"
-                      " from hash table\n",
-                      print_mac(mac, sta->addr));
+               printk("AP: could not remove STA %pM from hash table\n",
+                      sta->addr);
 }
 
 static void ap_free_sta(struct ap_data *ap, struct sta_info *sta)
 {
-       DECLARE_MAC_BUF(mac);
        if (sta->ap && sta->local)
                hostap_event_expired_sta(sta->local->dev, sta);
 
        if (ap->proc != NULL) {
                char name[20];
-               sprintf(name, "%s", print_mac(mac, sta->addr));
+               sprintf(name, "%pM", sta->addr);
                remove_proc_entry(name, ap->proc);
        }
 
@@ -185,7 +182,6 @@ static void ap_handle_timer(unsigned long data)
        struct ap_data *ap;
        unsigned long next_time = 0;
        int was_assoc;
-       DECLARE_MAC_BUF(mac);
 
        if (sta == NULL || sta->local == NULL || sta->local->ap == NULL) {
                PDEBUG(DEBUG_AP, "ap_handle_timer() called with NULL data\n");
@@ -242,8 +238,8 @@ static void ap_handle_timer(unsigned long data)
        if (sta->ap) {
                if (ap->autom_ap_wds) {
                        PDEBUG(DEBUG_AP, "%s: removing automatic WDS "
-                              "connection to AP %s\n",
-                              local->dev->name, print_mac(mac, sta->addr));
+                              "connection to AP %pM\n",
+                              local->dev->name, sta->addr);
                        hostap_wds_link_oper(local, sta->addr, WDS_DEL);
                }
        } else if (sta->timeout_next == STA_NULLFUNC) {
@@ -259,11 +255,11 @@ static void ap_handle_timer(unsigned long data)
        } else {
                int deauth = sta->timeout_next == STA_DEAUTH;
                __le16 resp;
-               PDEBUG(DEBUG_AP, "%s: sending %s info to STA %s"
+               PDEBUG(DEBUG_AP, "%s: sending %s info to STA %pM"
                       "(last=%lu, jiffies=%lu)\n",
                       local->dev->name,
                       deauth ? "deauthentication" : "disassociation",
-                      print_mac(mac, sta->addr), sta->last_rx, jiffies);
+                      sta->addr, sta->last_rx, jiffies);
 
                resp = cpu_to_le16(deauth ? WLAN_REASON_PREV_AUTH_NOT_VALID :
                                   WLAN_REASON_DISASSOC_DUE_TO_INACTIVITY);
@@ -275,10 +271,10 @@ static void ap_handle_timer(unsigned long data)
 
        if (sta->timeout_next == STA_DEAUTH) {
                if (sta->flags & WLAN_STA_PERM) {
-                       PDEBUG(DEBUG_AP, "%s: STA %s"
+                       PDEBUG(DEBUG_AP, "%s: STA %pM"
                               " would have been removed, "
                               "but it has 'perm' flag\n",
-                              local->dev->name, print_mac(mac, sta->addr));
+                              local->dev->name, sta->addr);
                } else
                        ap_free_sta(ap, sta);
                return;
@@ -332,7 +328,6 @@ static int ap_control_proc_read(char *page, char **start, off_t off,
        struct ap_data *ap = (struct ap_data *) data;
        char *policy_txt;
        struct mac_entry *entry;
-       DECLARE_MAC_BUF(mac);
 
        if (off != 0) {
                *eof = 1;
@@ -363,7 +358,7 @@ static int ap_control_proc_read(char *page, char **start, off_t off,
                        break;
                }
 
-               p += sprintf(p, "%s\n", print_mac(mac, entry->addr));
+               p += sprintf(p, "%pM\n", entry->addr);
        }
        spin_unlock_bh(&ap->mac_restrictions.lock);
 
@@ -520,7 +515,6 @@ static int prism2_ap_proc_read(char *page, char **start, off_t off,
        struct ap_data *ap = (struct ap_data *) data;
        struct sta_info *sta;
        int i;
-       DECLARE_MAC_BUF(mac);
 
        if (off > PROC_LIMIT) {
                *eof = 1;
@@ -533,8 +527,8 @@ static int prism2_ap_proc_read(char *page, char **start, off_t off,
                if (!sta->ap)
                        continue;
 
-               p += sprintf(p, "%s %d %d %d %d '",
-                            print_mac(mac, sta->addr),
+               p += sprintf(p, "%pM %d %d %d %d '",
+                            sta->addr,
                             sta->u.ap.channel, sta->last_rx_signal,
                             sta->last_rx_silence, sta->last_rx_rate);
                for (i = 0; i < sta->u.ap.ssid_len; i++)
@@ -683,11 +677,9 @@ static void hostap_ap_tx_cb_auth(struct sk_buff *skb, int ok, void *data)
        if (sta)
                atomic_dec(&sta->users);
        if (txt) {
-               PDEBUG(DEBUG_AP, "%s: " MAC_FMT " auth_cb - alg=%d "
+               PDEBUG(DEBUG_AP, "%s: %pM auth_cb - alg=%d "
                       "trans#=%d status=%d - %s\n",
-                      dev->name,
-                      hdr->addr1[0], hdr->addr1[1], hdr->addr1[2],
-                      hdr->addr1[3], hdr->addr1[4], hdr->addr1[5],
+                      dev->name, hdr->addr1,
                       auth_alg, auth_transaction, status, txt);
        }
        dev_kfree_skb(skb);
@@ -754,11 +746,8 @@ static void hostap_ap_tx_cb_assoc(struct sk_buff *skb, int ok, void *data)
        if (sta)
                atomic_dec(&sta->users);
        if (txt) {
-               PDEBUG(DEBUG_AP, "%s: " MAC_FMT " assoc_cb - %s\n",
-                      dev->name,
-                      hdr->addr1[0], hdr->addr1[1], hdr->addr1[2],
-                      hdr->addr1[3], hdr->addr1[4], hdr->addr1[5],
-                      txt);
+               PDEBUG(DEBUG_AP, "%s: %pM assoc_cb - %s\n",
+                      dev->name, hdr->addr1, txt);
        }
        dev_kfree_skb(skb);
 }
@@ -781,11 +770,9 @@ static void hostap_ap_tx_cb_poll(struct sk_buff *skb, int ok, void *data)
                        sta->flags &= ~WLAN_STA_PENDING_POLL;
                spin_unlock(&ap->sta_table_lock);
        } else {
-               PDEBUG(DEBUG_AP, "%s: STA " MAC_FMT
-                      " did not ACK activity poll frame\n",
-                      ap->local->dev->name,
-                      hdr->addr1[0], hdr->addr1[1], hdr->addr1[2],
-                      hdr->addr1[3], hdr->addr1[4], hdr->addr1[5]);
+               PDEBUG(DEBUG_AP,
+                      "%s: STA %pM did not ACK activity poll frame\n",
+                      ap->local->dev->name, hdr->addr1);
        }
 
  fail:
@@ -1002,7 +989,6 @@ static int prism2_sta_proc_read(char *page, char **start, off_t off,
        char *p = page;
        struct sta_info *sta = (struct sta_info *) data;
        int i;
-       DECLARE_MAC_BUF(mac);
 
        /* FIX: possible race condition.. the STA data could have just expired,
         * but proc entry was still here so that the read could have started;
@@ -1013,11 +999,11 @@ static int prism2_sta_proc_read(char *page, char **start, off_t off,
                return 0;
        }
 
-       p += sprintf(p, "%s=%s\nusers=%d\naid=%d\n"
+       p += sprintf(p, "%s=%pM\nusers=%d\naid=%d\n"
                     "flags=0x%04x%s%s%s%s%s%s%s\n"
                     "capability=0x%02x\nlisten_interval=%d\nsupported_rates=",
                     sta->ap ? "AP" : "STA",
-                    print_mac(mac, sta->addr), atomic_read(&sta->users), sta->aid,
+                    sta->addr, atomic_read(&sta->users), sta->aid,
                     sta->flags,
                     sta->flags & WLAN_STA_AUTH ? " AUTH" : "",
                     sta->flags & WLAN_STA_ASSOC ? " ASSOC" : "",
@@ -1078,7 +1064,6 @@ static void handle_add_proc_queue(struct work_struct *work)
        struct sta_info *sta;
        char name[20];
        struct add_sta_proc_data *entry, *prev;
-       DECLARE_MAC_BUF(mac);
 
        entry = ap->add_sta_proc_entries;
        ap->add_sta_proc_entries = NULL;
@@ -1091,7 +1076,7 @@ static void handle_add_proc_queue(struct work_struct *work)
                spin_unlock_bh(&ap->sta_table_lock);
 
                if (sta) {
-                       sprintf(name, "%s", print_mac(mac, sta->addr));
+                       sprintf(name, "%pM", sta->addr);
                        sta->proc = create_proc_read_entry(
                                name, 0, ap->proc,
                                prism2_sta_proc_read, sta);
@@ -1318,9 +1303,7 @@ static void handle_authen(local_info_t *local, struct sk_buff *skb,
 
        if (len < 6) {
                PDEBUG(DEBUG_AP, "%s: handle_authen - too short payload "
-                      "(len=%d) from " MAC_FMT "\n", dev->name, len,
-                      hdr->addr2[0], hdr->addr2[1], hdr->addr2[2],
-                      hdr->addr2[3], hdr->addr2[4], hdr->addr2[5]);
+                      "(len=%d) from %pM\n", dev->name, len, hdr->addr2);
                return;
        }
 
@@ -1385,10 +1368,8 @@ static void handle_authen(local_info_t *local, struct sk_buff *skb,
                if (time_after(jiffies, sta->u.ap.last_beacon +
                               (10 * sta->listen_interval * HZ) / 1024)) {
                        PDEBUG(DEBUG_AP, "%s: no beacons received for a while,"
-                              " assuming AP " MAC_FMT " is now STA\n",
-                              dev->name,
-                              sta->addr[0], sta->addr[1], sta->addr[2],
-                              sta->addr[3], sta->addr[4], sta->addr[5]);
+                              " assuming AP %pM is now STA\n",
+                              dev->name, sta->addr);
                        sta->ap = 0;
                        sta->flags = 0;
                        sta->u.sta.challenge = NULL;
@@ -1503,11 +1484,9 @@ static void handle_authen(local_info_t *local, struct sk_buff *skb,
        }
 
        if (resp) {
-               PDEBUG(DEBUG_AP, "%s: " MAC_FMT " auth (alg=%d "
+               PDEBUG(DEBUG_AP, "%s: %pM auth (alg=%d "
                       "trans#=%d stat=%d len=%d fc=%04x) ==> %d (%s)\n",
-                      dev->name,
-                      hdr->addr2[0], hdr->addr2[1], hdr->addr2[2],
-                      hdr->addr2[3], hdr->addr2[4], hdr->addr2[5],
+                      dev->name, hdr->addr2,
                       auth_alg, auth_transaction, status_code, len,
                       fc, resp, txt);
        }
@@ -1533,10 +1512,8 @@ static void handle_assoc(local_info_t *local, struct sk_buff *skb,
 
        if (len < (reassoc ? 10 : 4)) {
                PDEBUG(DEBUG_AP, "%s: handle_assoc - too short payload "
-                      "(len=%d, reassoc=%d) from " MAC_FMT "\n",
-                      dev->name, len, reassoc,
-                      hdr->addr2[0], hdr->addr2[1], hdr->addr2[2],
-                      hdr->addr2[3], hdr->addr2[4], hdr->addr2[5]);
+                      "(len=%d, reassoc=%d) from %pM\n",
+                      dev->name, len, reassoc, hdr->addr2);
                return;
        }
 
@@ -1613,12 +1590,9 @@ static void handle_assoc(local_info_t *local, struct sk_buff *skb,
                }
 
                if (left > 0) {
-                       PDEBUG(DEBUG_AP, "%s: assoc from " MAC_FMT
+                       PDEBUG(DEBUG_AP, "%s: assoc from %pM"
                               " with extra data (%d bytes) [",
-                              dev->name,
-                              hdr->addr2[0], hdr->addr2[1], hdr->addr2[2],
-                              hdr->addr2[3], hdr->addr2[4], hdr->addr2[5],
-                              left);
+                              dev->name, hdr->addr2, left);
                        while (left > 0) {
                                PDEBUG2(DEBUG_AP, "<%02x>", *u);
                                u++; left--;
@@ -1717,14 +1691,12 @@ static void handle_assoc(local_info_t *local, struct sk_buff *skb,
        }
 
 #if 0
-       PDEBUG(DEBUG_AP, "%s: " MAC_FMT" %sassoc (len=%d "
-              "prev_ap=" MAC_FMT") => %d(%d) (%s)\n",
+       PDEBUG(DEBUG_AP, "%s: %pM %sassoc (len=%d "
+              "prev_ap=%pM) => %d(%d) (%s)\n",
               dev->name,
-              hdr->addr2[0], hdr->addr2[1], hdr->addr2[2],
-              hdr->addr2[3], hdr->addr2[4], hdr->addr2[5],
+              hdr->addr2,
               reassoc ? "re" : "", len,
-              prev_ap[0], prev_ap[1], prev_ap[2],
-              prev_ap[3], prev_ap[4], prev_ap[5],
+              prev_ap,
               resp, send_deauth, txt);
 #endif
 }
@@ -1741,7 +1713,6 @@ static void handle_deauth(local_info_t *local, struct sk_buff *skb,
        u16 reason_code;
        __le16 *pos;
        struct sta_info *sta = NULL;
-       DECLARE_MAC_BUF(mac);
 
        len = skb->len - IEEE80211_MGMT_HDR_LEN;
 
@@ -1753,10 +1724,8 @@ static void handle_deauth(local_info_t *local, struct sk_buff *skb,
        pos = (__le16 *) body;
        reason_code = le16_to_cpu(*pos);
 
-       PDEBUG(DEBUG_AP, "%s: deauthentication: " MAC_FMT " len=%d, "
-              "reason_code=%d\n", dev->name,
-              hdr->addr2[0], hdr->addr2[1], hdr->addr2[2],
-              hdr->addr2[3], hdr->addr2[4], hdr->addr2[5],
+       PDEBUG(DEBUG_AP, "%s: deauthentication: %pM len=%d, "
+              "reason_code=%d\n", dev->name, hdr->addr2,
               len, reason_code);
 
        spin_lock_bh(&local->ap->sta_table_lock);
@@ -1768,11 +1737,9 @@ static void handle_deauth(local_info_t *local, struct sk_buff *skb,
        }
        spin_unlock_bh(&local->ap->sta_table_lock);
        if (sta == NULL) {
-               printk("%s: deauthentication from " MAC_FMT ", "
+               printk("%s: deauthentication from %pM, "
               "reason_code=%d, but STA not authenticated\n", dev->name,
-                      hdr->addr2[0], hdr->addr2[1], hdr->addr2[2],
-                      hdr->addr2[3], hdr->addr2[4], hdr->addr2[5],
-                      reason_code);
+                      hdr->addr2, reason_code);
        }
 }
 
@@ -1799,10 +1766,8 @@ static void handle_disassoc(local_info_t *local, struct sk_buff *skb,
        pos = (__le16 *) body;
        reason_code = le16_to_cpu(*pos);
 
-       PDEBUG(DEBUG_AP, "%s: disassociation: " MAC_FMT " len=%d, "
-              "reason_code=%d\n", dev->name,
-              hdr->addr2[0], hdr->addr2[1], hdr->addr2[2],
-              hdr->addr2[3], hdr->addr2[4], hdr->addr2[5],
+       PDEBUG(DEBUG_AP, "%s: disassociation: %pM len=%d, "
+              "reason_code=%d\n", dev->name, hdr->addr2,
               len, reason_code);
 
        spin_lock_bh(&local->ap->sta_table_lock);
@@ -1814,12 +1779,9 @@ static void handle_disassoc(local_info_t *local, struct sk_buff *skb,
        }
        spin_unlock_bh(&local->ap->sta_table_lock);
        if (sta == NULL) {
-               printk("%s: disassociation from " MAC_FMT ", "
+               printk("%s: disassociation from %pM, "
                       "reason_code=%d, but STA not authenticated\n",
-                      dev->name,
-                      hdr->addr2[0], hdr->addr2[1], hdr->addr2[2],
-                      hdr->addr2[3], hdr->addr2[4], hdr->addr2[5],
-                      reason_code);
+                      dev->name, hdr->addr2, reason_code);
        }
 }
 
@@ -1909,19 +1871,14 @@ static void handle_pspoll(local_info_t *local,
        u16 aid;
        struct sk_buff *skb;
 
-       PDEBUG(DEBUG_PS2, "handle_pspoll: BSSID=" MAC_FMT
-              ", TA=" MAC_FMT " PWRMGT=%d\n",
-              hdr->addr1[0], hdr->addr1[1], hdr->addr1[2],
-              hdr->addr1[3], hdr->addr1[4], hdr->addr1[5],
-              hdr->addr2[0], hdr->addr2[1], hdr->addr2[2],
-              hdr->addr2[3], hdr->addr2[4], hdr->addr2[5],
+       PDEBUG(DEBUG_PS2, "handle_pspoll: BSSID=%pM, TA=%pM PWRMGT=%d\n",
+              hdr->addr1, hdr->addr2,
               !!(le16_to_cpu(hdr->frame_ctl) & IEEE80211_FCTL_PM));
 
        if (memcmp(hdr->addr1, dev->dev_addr, ETH_ALEN)) {
-               PDEBUG(DEBUG_AP, "handle_pspoll - addr1(BSSID)=" MAC_FMT
-                      " not own MAC\n",
-                      hdr->addr1[0], hdr->addr1[1], hdr->addr1[2],
-                      hdr->addr1[3], hdr->addr1[4], hdr->addr1[5]);
+               PDEBUG(DEBUG_AP,
+                      "handle_pspoll - addr1(BSSID)=%pM not own MAC\n",
+                      hdr->addr1);
                return;
        }
 
@@ -2007,11 +1964,10 @@ static void handle_wds_oper_queue(struct work_struct *work)
 
        while (entry) {
                PDEBUG(DEBUG_AP, "%s: %s automatic WDS connection "
-                      "to AP " MAC_FMT "\n",
+                      "to AP %pM\n",
                       local->dev->name,
                       entry->type == WDS_ADD ? "adding" : "removing",
-                      entry->addr[0], entry->addr[1], entry->addr[2],
-                      entry->addr[3], entry->addr[4], entry->addr[5]);
+                      entry->addr);
                if (entry->type == WDS_ADD)
                        prism2_wds_add(local, entry->addr, 0);
                else if (entry->type == WDS_DEL)
@@ -2215,10 +2171,8 @@ static void handle_ap_item(local_info_t *local, struct sk_buff *skb,
                }
 
                if (memcmp(hdr->addr1, dev->dev_addr, ETH_ALEN)) {
-                       PDEBUG(DEBUG_AP, "handle_ap_item - addr1(BSSID)="
-                              MAC_FMT " not own MAC\n",
-                              hdr->addr1[0], hdr->addr1[1], hdr->addr1[2],
-                              hdr->addr1[3], hdr->addr1[4], hdr->addr1[5]);
+                       PDEBUG(DEBUG_AP, "handle_ap_item - addr1(BSSID)=%pM"
+                              " not own MAC\n", hdr->addr1);
                        goto done;
                }
 
@@ -2254,18 +2208,14 @@ static void handle_ap_item(local_info_t *local, struct sk_buff *skb,
        }
 
        if (memcmp(hdr->addr1, dev->dev_addr, ETH_ALEN)) {
-               PDEBUG(DEBUG_AP, "handle_ap_item - addr1(DA)=" MAC_FMT
-                      " not own MAC\n",
-                      hdr->addr1[0], hdr->addr1[1], hdr->addr1[2],
-                      hdr->addr1[3], hdr->addr1[4], hdr->addr1[5]);
+               PDEBUG(DEBUG_AP, "handle_ap_item - addr1(DA)=%pM"
+                      " not own MAC\n", hdr->addr1);
                goto done;
        }
 
        if (memcmp(hdr->addr3, dev->dev_addr, ETH_ALEN)) {
-               PDEBUG(DEBUG_AP, "handle_ap_item - addr3(BSSID)=" MAC_FMT
-                      " not own MAC\n",
-                      hdr->addr3[0], hdr->addr3[1], hdr->addr3[2],
-                      hdr->addr3[3], hdr->addr3[4], hdr->addr3[5]);
+               PDEBUG(DEBUG_AP, "handle_ap_item - addr3(BSSID)=%pM"
+                      " not own MAC\n", hdr->addr3);
                goto done;
        }
 
@@ -2366,10 +2316,9 @@ static void schedule_packet_send(local_info_t *local, struct sta_info *sta)
        memcpy(hdr->addr2, sta->addr, ETH_ALEN);
        hdr->duration_id = cpu_to_le16(sta->aid | BIT(15) | BIT(14));
 
-       PDEBUG(DEBUG_PS2, "%s: Scheduling buffered packet delivery for STA "
-              MAC_FMT "\n", local->dev->name,
-              sta->addr[0], sta->addr[1], sta->addr[2],
-              sta->addr[3], sta->addr[4], sta->addr[5]);
+       PDEBUG(DEBUG_PS2,
+              "%s: Scheduling buffered packet delivery for STA %pM\n",
+              local->dev->name, sta->addr);
 
        skb->dev = local->dev;
 
@@ -2723,12 +2672,8 @@ static int ap_update_sta_tx_rate(struct sta_info *sta, struct net_device *dev)
                        case 3: sta->tx_rate = 110; break;
                        default: sta->tx_rate = 0; break;
                        }
-                       PDEBUG(DEBUG_AP, "%s: STA " MAC_FMT
-                              " TX rate raised to %d\n",
-                              dev->name,
-                              sta->addr[0], sta->addr[1], sta->addr[2],
-                              sta->addr[3], sta->addr[4], sta->addr[5],
-                              sta->tx_rate);
+                       PDEBUG(DEBUG_AP, "%s: STA %pM TX rate raised to %d\n",
+                              dev->name, sta->addr, sta->tx_rate);
                }
                sta->tx_since_last_failure = 0;
        }
@@ -2781,9 +2726,7 @@ ap_tx_ret hostap_handle_sta_tx(local_info_t *local, struct hostap_tx_data *tx)
                 * print out any errors here. */
                if (net_ratelimit()) {
                        printk(KERN_DEBUG "AP: drop packet to non-associated "
-                              "STA " MAC_FMT "\n",
-                              hdr->addr1[0], hdr->addr1[1], hdr->addr1[2],
-                              hdr->addr1[3], hdr->addr1[4], hdr->addr1[5]);
+                              "STA %pM\n", hdr->addr1);
                }
 #endif
                local->ap->tx_drop_nonassoc++;
@@ -2821,11 +2764,9 @@ ap_tx_ret hostap_handle_sta_tx(local_info_t *local, struct hostap_tx_data *tx)
        }
 
        if (skb_queue_len(&sta->tx_buf) >= STA_MAX_TX_BUFFER) {
-               PDEBUG(DEBUG_PS, "%s: No more space in STA (" MAC_FMT
-                      ")'s PS mode buffer\n",
-                      local->dev->name,
-                      sta->addr[0], sta->addr[1], sta->addr[2],
-                      sta->addr[3], sta->addr[4], sta->addr[5]);
+               PDEBUG(DEBUG_PS, "%s: No more space in STA (%pM)'s"
+                      "PS mode buffer\n",
+                      local->dev->name, sta->addr);
                /* Make sure that TIM is set for the station (it might not be
                 * after AP wlan hw reset). */
                /* FIX: should fix hw reset to restore bits based on STA
@@ -2897,12 +2838,9 @@ void hostap_handle_sta_tx_exc(local_info_t *local, struct sk_buff *skb)
        sta = ap_get_sta(local->ap, hdr->addr1);
        if (!sta) {
                spin_unlock(&local->ap->sta_table_lock);
-               PDEBUG(DEBUG_AP, "%s: Could not find STA " MAC_FMT
+               PDEBUG(DEBUG_AP, "%s: Could not find STA %pM"
                       " for this TX error (@%lu)\n",
-                      local->dev->name,
-                      hdr->addr1[0], hdr->addr1[1], hdr->addr1[2],
-                      hdr->addr1[3], hdr->addr1[4], hdr->addr1[5],
-                      jiffies);
+                      local->dev->name, hdr->addr1, jiffies);
                return;
        }
 
@@ -2929,12 +2867,9 @@ void hostap_handle_sta_tx_exc(local_info_t *local, struct sk_buff *skb)
                        case 3: sta->tx_rate = 110; break;
                        default: sta->tx_rate = 0; break;
                        }
-                       PDEBUG(DEBUG_AP, "%s: STA " MAC_FMT
-                              " TX rate lowered to %d\n",
-                              local->dev->name,
-                              sta->addr[0], sta->addr[1], sta->addr[2],
-                              sta->addr[3], sta->addr[4], sta->addr[5],
-                              sta->tx_rate);
+                       PDEBUG(DEBUG_AP,
+                              "%s: STA %pM TX rate lowered to %d\n",
+                              local->dev->name, sta->addr, sta->tx_rate);
                }
                sta->tx_consecutive_exc = 0;
        }
@@ -2945,17 +2880,16 @@ void hostap_handle_sta_tx_exc(local_info_t *local, struct sk_buff *skb)
 static void hostap_update_sta_ps2(local_info_t *local, struct sta_info *sta,
                                  int pwrmgt, int type, int stype)
 {
-       DECLARE_MAC_BUF(mac);
        if (pwrmgt && !(sta->flags & WLAN_STA_PS)) {
                sta->flags |= WLAN_STA_PS;
-               PDEBUG(DEBUG_PS2, "STA %s changed to use PS "
+               PDEBUG(DEBUG_PS2, "STA %pM changed to use PS "
                       "mode (type=0x%02X, stype=0x%02X)\n",
-                      print_mac(mac, sta->addr), type >> 2, stype >> 4);
+                      sta->addr, type >> 2, stype >> 4);
        } else if (!pwrmgt && (sta->flags & WLAN_STA_PS)) {
                sta->flags &= ~WLAN_STA_PS;
-               PDEBUG(DEBUG_PS2, "STA %s changed to not use "
+               PDEBUG(DEBUG_PS2, "STA %pM changed to not use "
                       "PS mode (type=0x%02X, stype=0x%02X)\n",
-                      print_mac(mac, sta->addr), type >> 2, stype >> 4);
+                      sta->addr, type >> 2, stype >> 4);
                if (type != IEEE80211_FTYPE_CTL ||
                    stype != IEEE80211_STYPE_PSPOLL)
                        schedule_packet_send(local, sta);
@@ -3029,13 +2963,9 @@ ap_rx_ret hostap_handle_sta_rx(local_info_t *local, struct net_device *dev,
 #ifndef PRISM2_NO_KERNEL_IEEE80211_MGMT
                        } else {
                                printk(KERN_DEBUG "%s: dropped received packet"
-                                      " from non-associated STA "
-                                      MAC_FMT
+                                      " from non-associated STA %pM"
                                       " (type=0x%02x, subtype=0x%02x)\n",
-                                      dev->name,
-                                      hdr->addr2[0], hdr->addr2[1],
-                                      hdr->addr2[2], hdr->addr2[3],
-                                      hdr->addr2[4], hdr->addr2[5],
+                                      dev->name, hdr->addr2,
                                       type >> 2, stype >> 4);
                                hostap_rx(dev, skb, rx_stats);
 #endif /* PRISM2_NO_KERNEL_IEEE80211_MGMT */
@@ -3068,13 +2998,9 @@ ap_rx_ret hostap_handle_sta_rx(local_info_t *local, struct net_device *dev,
                         * after being unavailable for some time. Speed up
                         * re-association by informing the station about it not
                         * being associated. */
-                       printk(KERN_DEBUG "%s: rejected received nullfunc "
-                              "frame without ToDS from not associated STA "
-                              MAC_FMT "\n",
-                              dev->name,
-                              hdr->addr2[0], hdr->addr2[1],
-                              hdr->addr2[2], hdr->addr2[3],
-                              hdr->addr2[4], hdr->addr2[5]);
+                       printk(KERN_DEBUG "%s: rejected received nullfunc frame"
+                              " without ToDS from not associated STA %pM\n",
+                              dev->name, hdr->addr2);
                        hostap_rx(dev, skb, rx_stats);
 #endif /* PRISM2_NO_KERNEL_IEEE80211_MGMT */
                }
@@ -3090,13 +3016,10 @@ ap_rx_ret hostap_handle_sta_rx(local_info_t *local, struct net_device *dev,
                 * broadcast frame from an IBSS network. Drop it silently.
                 * If BSSID is own, report the dropping of this frame. */
                if (memcmp(hdr->addr3, dev->dev_addr, ETH_ALEN) == 0) {
-                       printk(KERN_DEBUG "%s: dropped received packet from "
-                              MAC_FMT " with no ToDS flag "
+                       printk(KERN_DEBUG "%s: dropped received packet from %pM"
+                              " with no ToDS flag "
                               "(type=0x%02x, subtype=0x%02x)\n", dev->name,
-                              hdr->addr2[0], hdr->addr2[1],
-                              hdr->addr2[2], hdr->addr2[3],
-                              hdr->addr2[4], hdr->addr2[5],
-                              type >> 2, stype >> 4);
+                              hdr->addr2, type >> 2, stype >> 4);
                        hostap_dump_rx_80211(dev->name, skb, rx_stats);
                }
                ret = AP_RX_DROP;
index 3153fe9..fd7f7ce 100644 (file)
@@ -2335,10 +2335,6 @@ static void prism2_txexc(local_info_t *local)
        int show_dump, res;
        char *payload = NULL;
        struct hfa384x_tx_frame txdesc;
-       DECLARE_MAC_BUF(mac);
-       DECLARE_MAC_BUF(mac2);
-       DECLARE_MAC_BUF(mac3);
-       DECLARE_MAC_BUF(mac4);
 
        show_dump = local->frame_dump & PRISM2_DUMP_TXEXC_HDR;
        local->stats.tx_errors++;
@@ -2404,9 +2400,9 @@ static void prism2_txexc(local_info_t *local)
               WLAN_FC_GET_STYPE(fc) >> 4,
               fc & IEEE80211_FCTL_TODS ? " ToDS" : "",
               fc & IEEE80211_FCTL_FROMDS ? " FromDS" : "");
-       PDEBUG(DEBUG_EXTRA, "   A1=%s A2=%s A3=%s A4=%s\n",
-              print_mac(mac, txdesc.addr1), print_mac(mac2, txdesc.addr2),
-              print_mac(mac3, txdesc.addr3), print_mac(mac4, txdesc.addr4));
+       PDEBUG(DEBUG_EXTRA, "   A1=%pM A2=%pM A3=%pM A4=%pM\n",
+              txdesc.addr1, txdesc.addr2,
+              txdesc.addr3, txdesc.addr4);
 }
 
 
index 7cd3fb7..99b4cf4 100644 (file)
@@ -166,7 +166,6 @@ static void prism2_host_roaming(local_info_t *local)
        struct hfa384x_hostscan_result *selected, *entry;
        int i;
        unsigned long flags;
-       DECLARE_MAC_BUF(mac);
 
        if (local->last_join_time &&
            time_before(jiffies, local->last_join_time + 10 * HZ)) {
@@ -199,9 +198,8 @@ static void prism2_host_roaming(local_info_t *local)
            local->preferred_ap[2] || local->preferred_ap[3] ||
            local->preferred_ap[4] || local->preferred_ap[5]) {
                /* Try to find preferred AP */
-               PDEBUG(DEBUG_EXTRA, "%s: Preferred AP BSSID "
-                      "%s\n",
-                      dev->name, print_mac(mac, local->preferred_ap));
+               PDEBUG(DEBUG_EXTRA, "%s: Preferred AP BSSID %pM\n",
+                      dev->name, local->preferred_ap);
                for (i = 0; i < local->last_scan_results_count; i++) {
                        entry = &local->last_scan_results[i];
                        if (memcmp(local->preferred_ap, entry->bssid, 6) == 0)
@@ -218,9 +216,9 @@ static void prism2_host_roaming(local_info_t *local)
        req.channel = selected->chid;
        spin_unlock_irqrestore(&local->lock, flags);
 
-       PDEBUG(DEBUG_EXTRA, "%s: JoinRequest: BSSID=%s"
+       PDEBUG(DEBUG_EXTRA, "%s: JoinRequest: BSSID=%pM"
               " channel=%d\n",
-              dev->name, print_mac(mac, req.bssid), le16_to_cpu(req.channel));
+              dev->name, req.bssid, le16_to_cpu(req.channel));
        if (local->func->set_rid(dev, HFA384X_RID_JOINREQUEST, &req,
                                 sizeof(req))) {
                printk(KERN_DEBUG "%s: JoinRequest failed\n", dev->name);
@@ -413,7 +411,6 @@ static void handle_info_queue_linkstatus(local_info_t *local)
        int val = local->prev_link_status;
        int connected;
        union iwreq_data wrqu;
-       DECLARE_MAC_BUF(mac);
 
        connected =
                val == HFA384X_LINKSTATUS_CONNECTED ||
@@ -425,10 +422,9 @@ static void handle_info_queue_linkstatus(local_info_t *local)
                printk(KERN_DEBUG "%s: could not read CURRENTBSSID after "
                       "LinkStatus event\n", local->dev->name);
        } else {
-               PDEBUG(DEBUG_EXTRA, "%s: LinkStatus: BSSID="
-                      "%s\n",
+               PDEBUG(DEBUG_EXTRA, "%s: LinkStatus: BSSID=%pM\n",
                       local->dev->name,
-                      print_mac(mac, (unsigned char *) local->bssid));
+                      (unsigned char *) local->bssid);
                if (local->wds_type & HOSTAP_WDS_AP_CLIENT)
                        hostap_add_sta(local->ap, local->bssid);
        }
index 3f8b1d7..2318c5d 100644 (file)
@@ -664,7 +664,6 @@ static int hostap_join_ap(struct net_device *dev)
        unsigned long flags;
        int i;
        struct hfa384x_hostscan_result *entry;
-       DECLARE_MAC_BUF(mac);
 
        iface = netdev_priv(dev);
        local = iface->local;
@@ -686,14 +685,13 @@ static int hostap_join_ap(struct net_device *dev)
 
        if (local->func->set_rid(dev, HFA384X_RID_JOINREQUEST, &req,
                                 sizeof(req))) {
-               printk(KERN_DEBUG "%s: JoinRequest %s"
-                      " failed\n",
-                      dev->name, print_mac(mac, local->preferred_ap));
+               printk(KERN_DEBUG "%s: JoinRequest %pM failed\n",
+                      dev->name, local->preferred_ap);
                return -1;
        }
 
-       printk(KERN_DEBUG "%s: Trying to join BSSID %s\n",
-              dev->name, print_mac(mac, local->preferred_ap));
+       printk(KERN_DEBUG "%s: Trying to join BSSID %pM\n",
+              dev->name, local->preferred_ap);
 
        return 0;
 }
@@ -3701,10 +3699,8 @@ static int prism2_ioctl_set_assoc_ap_addr(local_info_t *local,
                                          struct prism2_hostapd_param *param,
                                          int param_len)
 {
-       DECLARE_MAC_BUF(mac);
-       printk(KERN_DEBUG "%ssta: associated as client with AP "
-              "%s\n",
-              local->dev->name, print_mac(mac, param->sta_addr));
+       printk(KERN_DEBUG "%ssta: associated as client with AP %pM\n",
+              local->dev->name, param->sta_addr);
        memcpy(local->assoc_ap_addr, param->sta_addr, ETH_ALEN);
        return 0;
 }
index 756ab56..4c36eb2 100644 (file)
@@ -530,10 +530,6 @@ int hostap_set_auth_algs(local_info_t *local)
 void hostap_dump_rx_header(const char *name, const struct hfa384x_rx_frame *rx)
 {
        u16 status, fc;
-       DECLARE_MAC_BUF(mac);
-       DECLARE_MAC_BUF(mac2);
-       DECLARE_MAC_BUF(mac3);
-       DECLARE_MAC_BUF(mac4);
 
        status = __le16_to_cpu(rx->status);
 
@@ -552,12 +548,11 @@ void hostap_dump_rx_header(const char *name, const struct hfa384x_rx_frame *rx)
               fc & IEEE80211_FCTL_TODS ? " [ToDS]" : "",
               fc & IEEE80211_FCTL_FROMDS ? " [FromDS]" : "");
 
-       printk(KERN_DEBUG "   A1=%s A2=%s A3=%s A4=%s\n",
-              print_mac(mac, rx->addr1), print_mac(mac2, rx->addr2),
-              print_mac(mac3, rx->addr3), print_mac(mac4, rx->addr4));
+       printk(KERN_DEBUG "   A1=%pM A2=%pM A3=%pM A4=%pM\n",
+              rx->addr1, rx->addr2, rx->addr3, rx->addr4);
 
-       printk(KERN_DEBUG "   dst=%s src=%s len=%d\n",
-              print_mac(mac, rx->dst_addr), print_mac(mac2, rx->src_addr),
+       printk(KERN_DEBUG "   dst=%pM src=%pM len=%d\n",
+              rx->dst_addr, rx->src_addr,
               __be16_to_cpu(rx->len));
 }
 
@@ -565,10 +560,6 @@ void hostap_dump_rx_header(const char *name, const struct hfa384x_rx_frame *rx)
 void hostap_dump_tx_header(const char *name, const struct hfa384x_tx_frame *tx)
 {
        u16 fc;
-       DECLARE_MAC_BUF(mac);
-       DECLARE_MAC_BUF(mac2);
-       DECLARE_MAC_BUF(mac3);
-       DECLARE_MAC_BUF(mac4);
 
        printk(KERN_DEBUG "%s: TX status=0x%04x retry_count=%d tx_rate=%d "
               "tx_control=0x%04x; jiffies=%ld\n",
@@ -584,12 +575,11 @@ void hostap_dump_tx_header(const char *name, const struct hfa384x_tx_frame *tx)
               fc & IEEE80211_FCTL_TODS ? " [ToDS]" : "",
               fc & IEEE80211_FCTL_FROMDS ? " [FromDS]" : "");
 
-       printk(KERN_DEBUG "   A1=%s A2=%s A3=%s A4=%s\n",
-              print_mac(mac, tx->addr1), print_mac(mac2, tx->addr2),
-              print_mac(mac3, tx->addr3), print_mac(mac4, tx->addr4));
+       printk(KERN_DEBUG "   A1=%pM A2=%pM A3=%pM A4=%pM\n",
+              tx->addr1, tx->addr2, tx->addr3, tx->addr4);
 
-       printk(KERN_DEBUG "   dst=%s src=%s len=%d\n",
-              print_mac(mac, tx->dst_addr), print_mac(mac2, tx->src_addr),
+       printk(KERN_DEBUG "   dst=%pM src=%pM len=%d\n",
+              tx->dst_addr, tx->src_addr,
               __be16_to_cpu(tx->len));
 }
 
index 3a874fc..8fdd41f 100644 (file)
@@ -312,7 +312,7 @@ static int prism2_pci_probe(struct pci_dev *pdev,
                goto err_out_disable;
        }
 
-       mem = ioremap(phymem, pci_resource_len(pdev, 0));
+       mem = pci_ioremap_bar(pdev, 0);
        if (mem == NULL) {
                printk(KERN_ERR "prism2: Cannot remap PCI memory region\n") ;
                goto fail;
index b035360..ae7d3ca 100644 (file)
@@ -106,7 +106,6 @@ static int prism2_wds_proc_read(char *page, char **start, off_t off,
        local_info_t *local = (local_info_t *) data;
        struct list_head *ptr;
        struct hostap_interface *iface;
-       DECLARE_MAC_BUF(mac);
 
        if (off > PROC_LIMIT) {
                *eof = 1;
@@ -118,9 +117,9 @@ static int prism2_wds_proc_read(char *page, char **start, off_t off,
                iface = list_entry(ptr, struct hostap_interface, list);
                if (iface->type != HOSTAP_INTERFACE_WDS)
                        continue;
-               p += sprintf(p, "%s\t%s\n",
+               p += sprintf(p, "%s\t%pM\n",
                             iface->dev->name,
-                            print_mac(mac, iface->u.wds.remote_addr));
+                            iface->u.wds.remote_addr);
                if ((p - page) > PROC_LIMIT) {
                        printk(KERN_DEBUG "%s: wds proc did not fit\n",
                               local->dev->name);
@@ -148,7 +147,6 @@ static int prism2_bss_list_proc_read(char *page, char **start, off_t off,
        struct list_head *ptr;
        struct hostap_bss_info *bss;
        int i;
-       DECLARE_MAC_BUF(mac);
 
        if (off > PROC_LIMIT) {
                *eof = 1;
@@ -160,8 +158,8 @@ static int prism2_bss_list_proc_read(char *page, char **start, off_t off,
        spin_lock_bh(&local->lock);
        list_for_each(ptr, &local->bss_list) {
                bss = list_entry(ptr, struct hostap_bss_info, list);
-               p += sprintf(p, "%s\t%lu\t%u\t0x%x\t",
-                            print_mac(mac, bss->bssid), bss->last_update,
+               p += sprintf(p, "%pM\t%lu\t%u\t0x%x\t",
+                            bss->bssid, bss->last_update,
                             bss->count, bss->capab_info);
                for (i = 0; i < bss->ssid_len; i++) {
                        p += sprintf(p, "%c",
@@ -314,7 +312,6 @@ static int prism2_scan_results_proc_read(char *page, char **start, off_t off,
        int entry, i, len, total = 0;
        struct hfa384x_hostscan_result *scanres;
        u8 *pos;
-       DECLARE_MAC_BUF(mac);
 
        p += sprintf(p, "CHID ANL SL BcnInt Capab Rate BSSID ATIM SupRates "
                     "SSID\n");
@@ -332,14 +329,14 @@ static int prism2_scan_results_proc_read(char *page, char **start, off_t off,
                if ((p - page) > (PAGE_SIZE - 200))
                        break;
 
-               p += sprintf(p, "%d %d %d %d 0x%02x %d %s %d ",
+               p += sprintf(p, "%d %d %d %d 0x%02x %d %pM %d ",
                             le16_to_cpu(scanres->chid),
                             (s16) le16_to_cpu(scanres->anl),
                             (s16) le16_to_cpu(scanres->sl),
                             le16_to_cpu(scanres->beacon_interval),
                             le16_to_cpu(scanres->capability),
                             le16_to_cpu(scanres->rate),
-                            print_mac(mac, scanres->bssid),
+                            scanres->bssid,
                             le16_to_cpu(scanres->atim));
 
                pos = scanres->sup_rates;
index bca7481..6e988d2 100644 (file)
@@ -1914,7 +1914,6 @@ static void isr_indicate_associated(struct ipw2100_priv *priv, u32 status)
        u32 chan;
        char *txratename;
        u8 bssid[ETH_ALEN];
-       DECLARE_MAC_BUF(mac);
 
        /*
         * TBD: BSSID is usually 00:00:00:00:00:00 here and not
@@ -1975,10 +1974,9 @@ static void isr_indicate_associated(struct ipw2100_priv *priv, u32 status)
                break;
        }
 
-       IPW_DEBUG_INFO("%s: Associated with '%s' at %s, channel %d (BSSID="
-                      "%s)\n",
+       IPW_DEBUG_INFO("%s: Associated with '%s' at %s, channel %d (BSSID=%pM)\n",
                       priv->net_dev->name, escape_essid(essid, essid_len),
-                      txratename, chan, print_mac(mac, bssid));
+                      txratename, chan, bssid);
 
        /* now we copy read ssid into dev */
        if (!(priv->config & CFG_STATIC_ESSID)) {
@@ -2046,12 +2044,10 @@ static int ipw2100_set_essid(struct ipw2100_priv *priv, char *essid,
 
 static void isr_indicate_association_lost(struct ipw2100_priv *priv, u32 status)
 {
-       DECLARE_MAC_BUF(mac);
-
        IPW_DEBUG(IPW_DL_NOTIF | IPW_DL_STATE | IPW_DL_ASSOC,
-                 "disassociated: '%s' %s \n",
+                 "disassociated: '%s' %pM \n",
                  escape_essid(priv->essid, priv->essid_len),
-                 print_mac(mac, priv->bssid));
+                 priv->bssid);
 
        priv->status &= ~(STATUS_ASSOCIATED | STATUS_ASSOCIATING);
 
@@ -4058,7 +4054,6 @@ static ssize_t show_bssinfo(struct device *d, struct device_attribute *attr,
        char *out = buf;
        int length;
        int ret;
-       DECLARE_MAC_BUF(mac);
 
        if (priv->status & STATUS_RF_KILL_MASK)
                return 0;
@@ -4086,7 +4081,7 @@ static ssize_t show_bssinfo(struct device *d, struct device_attribute *attr,
                               __LINE__);
 
        out += sprintf(out, "ESSID: %s\n", essid);
-       out += sprintf(out, "BSSID:   %s\n", print_mac(mac, bssid));
+       out += sprintf(out, "BSSID:   %pM\n", bssid);
        out += sprintf(out, "Channel: %d\n", chan);
 
        return out - buf;
@@ -4662,7 +4657,6 @@ static int ipw2100_read_mac_address(struct ipw2100_priv *priv)
 {
        u32 length = ETH_ALEN;
        u8 addr[ETH_ALEN];
-       DECLARE_MAC_BUF(mac);
 
        int err;
 
@@ -4673,8 +4667,7 @@ static int ipw2100_read_mac_address(struct ipw2100_priv *priv)
        }
 
        memcpy(priv->net_dev->dev_addr, addr, ETH_ALEN);
-       IPW_DEBUG_INFO("card MAC is %s\n",
-                      print_mac(mac, priv->net_dev->dev_addr));
+       IPW_DEBUG_INFO("card MAC is %pM\n", priv->net_dev->dev_addr);
 
        return 0;
 }
@@ -5053,10 +5046,8 @@ static int ipw2100_set_mandatory_bssid(struct ipw2100_priv *priv, u8 * bssid,
        int err;
 
 #ifdef CONFIG_IPW2100_DEBUG
-       DECLARE_MAC_BUF(mac);
        if (bssid != NULL)
-               IPW_DEBUG_HC("MANDATORY_BSSID: %s\n",
-                            print_mac(mac, bssid));
+               IPW_DEBUG_HC("MANDATORY_BSSID: %pM\n", bssid);
        else
                IPW_DEBUG_HC("MANDATORY_BSSID: <clear>\n");
 #endif
@@ -6905,7 +6896,6 @@ static int ipw2100_wx_set_wap(struct net_device *dev,
        static const unsigned char off[] = {
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00
        };
-       DECLARE_MAC_BUF(mac);
 
        // sanity checks
        if (wrqu->ap_addr.sa_family != ARPHRD_ETHER)
@@ -6931,8 +6921,7 @@ static int ipw2100_wx_set_wap(struct net_device *dev,
 
        err = ipw2100_set_mandatory_bssid(priv, wrqu->ap_addr.sa_data, 0);
 
-       IPW_DEBUG_WX("SET BSSID -> %s\n",
-                    print_mac(mac, wrqu->ap_addr.sa_data));
+       IPW_DEBUG_WX("SET BSSID -> %pM\n", wrqu->ap_addr.sa_data);
 
       done:
        mutex_unlock(&priv->action_mutex);
@@ -6948,7 +6937,6 @@ static int ipw2100_wx_get_wap(struct net_device *dev,
         */
 
        struct ipw2100_priv *priv = ieee80211_priv(dev);
-       DECLARE_MAC_BUF(mac);
 
        /* If we are associated, trying to associate, or have a statically
         * configured BSSID then return that; otherwise return ANY */
@@ -6958,8 +6946,7 @@ static int ipw2100_wx_get_wap(struct net_device *dev,
        } else
                memset(wrqu->ap_addr.sa_data, 0, ETH_ALEN);
 
-       IPW_DEBUG_WX("Getting WAP BSSID: %s\n",
-                    print_mac(mac, wrqu->ap_addr.sa_data));
+       IPW_DEBUG_WX("Getting WAP BSSID: %pM\n", wrqu->ap_addr.sa_data);
        return 0;
 }
 
index dcce354..13633d8 100644 (file)
@@ -2265,8 +2265,8 @@ static int ipw_send_adapter_address(struct ipw_priv *priv, u8 * mac)
                return -1;
        }
 
-       IPW_DEBUG_INFO("%s: Setting MAC to %s\n",
-                      priv->net_dev->name, print_mac(mac, mac));
+       IPW_DEBUG_INFO("%s: Setting MAC to %pM\n",
+                      priv->net_dev->name, mac);
 
        return ipw_send_cmd_pdu(priv, IPW_CMD_ADAPTER_ADDRESS, ETH_ALEN, mac);
 }
@@ -3812,7 +3812,6 @@ static u8 ipw_add_station(struct ipw_priv *priv, u8 * bssid)
 {
        struct ipw_station_entry entry;
        int i;
-       DECLARE_MAC_BUF(mac);
 
        for (i = 0; i < priv->num_stations; i++) {
                if (!memcmp(priv->stations[i], bssid, ETH_ALEN)) {
@@ -3829,7 +3828,7 @@ static u8 ipw_add_station(struct ipw_priv *priv, u8 * bssid)
        if (i == MAX_STATIONS)
                return IPW_INVALID_STATION;
 
-       IPW_DEBUG_SCAN("Adding AdHoc station: %s\n", print_mac(mac, bssid));
+       IPW_DEBUG_SCAN("Adding AdHoc station: %pM\n", bssid);
 
        entry.reserved = 0;
        entry.support_mode = 0;
@@ -3856,7 +3855,6 @@ static u8 ipw_find_station(struct ipw_priv *priv, u8 * bssid)
 static void ipw_send_disassociate(struct ipw_priv *priv, int quiet)
 {
        int err;
-       DECLARE_MAC_BUF(mac);
 
        if (priv->status & STATUS_ASSOCIATING) {
                IPW_DEBUG_ASSOC("Disassociating while associating.\n");
@@ -3869,9 +3867,9 @@ static void ipw_send_disassociate(struct ipw_priv *priv, int quiet)
                return;
        }
 
-       IPW_DEBUG_ASSOC("Disassocation attempt from %s "
+       IPW_DEBUG_ASSOC("Disassocation attempt from %pM "
                        "on channel %d.\n",
-                       print_mac(mac, priv->assoc_request.bssid),
+                       priv->assoc_request.bssid,
                        priv->assoc_request.channel);
 
        priv->status &= ~(STATUS_ASSOCIATING | STATUS_ASSOCIATED);
@@ -4397,7 +4395,6 @@ static void handle_scan_event(struct ipw_priv *priv)
 static void ipw_rx_notification(struct ipw_priv *priv,
                                       struct ipw_rx_notification *notif)
 {
-       DECLARE_MAC_BUF(mac);
        u16 size = le16_to_cpu(notif->size);
        notif->size = le16_to_cpu(notif->size);
 
@@ -4411,11 +4408,10 @@ static void ipw_rx_notification(struct ipw_priv *priv,
                        case CMAS_ASSOCIATED:{
                                        IPW_DEBUG(IPW_DL_NOTIF | IPW_DL_STATE |
                                                  IPW_DL_ASSOC,
-                                                 "associated: '%s' %s"
-                                                 " \n",
+                                                 "associated: '%s' %pM \n",
                                                  escape_essid(priv->essid,
                                                               priv->essid_len),
-                                                 print_mac(mac, priv->bssid));
+                                                 priv->bssid);
 
                                        switch (priv->ieee->iw_mode) {
                                        case IW_MODE_INFRA:
@@ -4492,13 +4488,13 @@ static void ipw_rx_notification(struct ipw_priv *priv,
                                                          IPW_DL_STATE |
                                                          IPW_DL_ASSOC,
                                                          "deauthenticated: '%s' "
-                                                         "%s"
+                                                         "%pM"
                                                          ": (0x%04X) - %s \n",
                                                          escape_essid(priv->
                                                                       essid,
                                                                       priv->
                                                                       essid_len),
-                                                         print_mac(mac, priv->bssid),
+                                                         priv->bssid,
                                                          le16_to_cpu(auth->status),
                                                          ipw_get_status_code
                                                          (le16_to_cpu
@@ -4515,11 +4511,10 @@ static void ipw_rx_notification(struct ipw_priv *priv,
 
                                        IPW_DEBUG(IPW_DL_NOTIF | IPW_DL_STATE |
                                                  IPW_DL_ASSOC,
-                                                 "authenticated: '%s' %s"
-                                                 "\n",
+                                                 "authenticated: '%s' %pM\n",
                                                  escape_essid(priv->essid,
                                                               priv->essid_len),
-                                                 print_mac(mac, priv->bssid));
+                                                 priv->bssid);
                                        break;
                                }
 
@@ -4544,11 +4539,10 @@ static void ipw_rx_notification(struct ipw_priv *priv,
 
                                        IPW_DEBUG(IPW_DL_NOTIF | IPW_DL_STATE |
                                                  IPW_DL_ASSOC,
-                                                 "disassociated: '%s' %s"
-                                                 " \n",
+                                                 "disassociated: '%s' %pM \n",
                                                  escape_essid(priv->essid,
                                                               priv->essid_len),
-                                                 print_mac(mac, priv->bssid));
+                                                 priv->bssid);
 
                                        priv->status &=
                                            ~(STATUS_DISASSOCIATING |
@@ -4583,10 +4577,10 @@ static void ipw_rx_notification(struct ipw_priv *priv,
                        switch (auth->state) {
                        case CMAS_AUTHENTICATED:
                                IPW_DEBUG(IPW_DL_NOTIF | IPW_DL_STATE,
-                                         "authenticated: '%s' %s \n",
+                                         "authenticated: '%s' %pM \n",
                                          escape_essid(priv->essid,
                                                       priv->essid_len),
-                                         print_mac(mac, priv->bssid));
+                                         priv->bssid);
                                priv->status |= STATUS_AUTH;
                                break;
 
@@ -4602,10 +4596,10 @@ static void ipw_rx_notification(struct ipw_priv *priv,
                                }
                                IPW_DEBUG(IPW_DL_NOTIF | IPW_DL_STATE |
                                          IPW_DL_ASSOC,
-                                         "deauthenticated: '%s' %s\n",
+                                         "deauthenticated: '%s' %pM\n",
                                          escape_essid(priv->essid,
                                                       priv->essid_len),
-                                         print_mac(mac, priv->bssid));
+                                         priv->bssid);
 
                                priv->status &= ~(STATUS_ASSOCIATING |
                                                  STATUS_AUTH |
@@ -5429,27 +5423,25 @@ static int ipw_find_adhoc_network(struct ipw_priv *priv,
                                  int roaming)
 {
        struct ipw_supported_rates rates;
-       DECLARE_MAC_BUF(mac);
-       DECLARE_MAC_BUF(mac2);
 
        /* Verify that this network's capability is compatible with the
         * current mode (AdHoc or Infrastructure) */
        if ((priv->ieee->iw_mode == IW_MODE_ADHOC &&
             !(network->capability & WLAN_CAPABILITY_IBSS))) {
-               IPW_DEBUG_MERGE("Network '%s (%s)' excluded due to "
+               IPW_DEBUG_MERGE("Network '%s (%pM)' excluded due to "
                                "capability mismatch.\n",
                                escape_essid(network->ssid, network->ssid_len),
-                               print_mac(mac, network->bssid));
+                               network->bssid);
                return 0;
        }
 
        /* If we do not have an ESSID for this AP, we can not associate with
         * it */
        if (network->flags & NETWORK_EMPTY_ESSID) {
-               IPW_DEBUG_MERGE("Network '%s (%s)' excluded "
+               IPW_DEBUG_MERGE("Network '%s (%pM)' excluded "
                                "because of hidden ESSID.\n",
                                escape_essid(network->ssid, network->ssid_len),
-                               print_mac(mac, network->bssid));
+                               network->bssid);
                return 0;
        }
 
@@ -5459,11 +5451,11 @@ static int ipw_find_adhoc_network(struct ipw_priv *priv,
                if ((network->ssid_len != match->network->ssid_len) ||
                    memcmp(network->ssid, match->network->ssid,
                           network->ssid_len)) {
-                       IPW_DEBUG_MERGE("Network '%s (%s)' excluded "
+                       IPW_DEBUG_MERGE("Network '%s (%pM)' excluded "
                                        "because of non-network ESSID.\n",
                                        escape_essid(network->ssid,
                                                     network->ssid_len),
-                                       print_mac(mac, network->bssid));
+                                       network->bssid);
                        return 0;
                }
        } else {
@@ -5478,9 +5470,9 @@ static int ipw_find_adhoc_network(struct ipw_priv *priv,
                        strncpy(escaped,
                                escape_essid(network->ssid, network->ssid_len),
                                sizeof(escaped));
-                       IPW_DEBUG_MERGE("Network '%s (%s)' excluded "
+                       IPW_DEBUG_MERGE("Network '%s (%pM)' excluded "
                                        "because of ESSID mismatch: '%s'.\n",
-                                       escaped, print_mac(mac, network->bssid),
+                                       escaped, network->bssid,
                                        escape_essid(priv->essid,
                                                     priv->essid_len));
                        return 0;
@@ -5507,10 +5499,10 @@ static int ipw_find_adhoc_network(struct ipw_priv *priv,
        /* Now go through and see if the requested network is valid... */
        if (priv->ieee->scan_age != 0 &&
            time_after(jiffies, network->last_scanned + priv->ieee->scan_age)) {
-               IPW_DEBUG_MERGE("Network '%s (%s)' excluded "
+               IPW_DEBUG_MERGE("Network '%s (%pM)' excluded "
                                "because of age: %ums.\n",
                                escape_essid(network->ssid, network->ssid_len),
-                               print_mac(mac, network->bssid),
+                               network->bssid,
                                jiffies_to_msecs(jiffies -
                                                 network->last_scanned));
                return 0;
@@ -5518,10 +5510,10 @@ static int ipw_find_adhoc_network(struct ipw_priv *priv,
 
        if ((priv->config & CFG_STATIC_CHANNEL) &&
            (network->channel != priv->channel)) {
-               IPW_DEBUG_MERGE("Network '%s (%s)' excluded "
+               IPW_DEBUG_MERGE("Network '%s (%pM)' excluded "
                                "because of channel mismatch: %d != %d.\n",
                                escape_essid(network->ssid, network->ssid_len),
-                               print_mac(mac, network->bssid),
+                               network->bssid,
                                network->channel, priv->channel);
                return 0;
        }
@@ -5529,10 +5521,10 @@ static int ipw_find_adhoc_network(struct ipw_priv *priv,
        /* Verify privacy compatability */
        if (((priv->capability & CAP_PRIVACY_ON) ? 1 : 0) !=
            ((network->capability & WLAN_CAPABILITY_PRIVACY) ? 1 : 0)) {
-               IPW_DEBUG_MERGE("Network '%s (%s)' excluded "
+               IPW_DEBUG_MERGE("Network '%s (%pM)' excluded "
                                "because of privacy mismatch: %s != %s.\n",
                                escape_essid(network->ssid, network->ssid_len),
-                               print_mac(mac, network->bssid),
+                               network->bssid,
                                priv->
                                capability & CAP_PRIVACY_ON ? "on" : "off",
                                network->
@@ -5542,41 +5534,41 @@ static int ipw_find_adhoc_network(struct ipw_priv *priv,
        }
 
        if (!memcmp(network->bssid, priv->bssid, ETH_ALEN)) {
-               IPW_DEBUG_MERGE("Network '%s (%s)' excluded "
-                               "because of the same BSSID match: %s"
+               IPW_DEBUG_MERGE("Network '%s (%pM)' excluded "
+                               "because of the same BSSID match: %pM"
                                ".\n", escape_essid(network->ssid,
                                                    network->ssid_len),
-                               print_mac(mac, network->bssid),
-                               print_mac(mac2, priv->bssid));
+                               network->bssid,
+                               priv->bssid);
                return 0;
        }
 
        /* Filter out any incompatible freq / mode combinations */
        if (!ieee80211_is_valid_mode(priv->ieee, network->mode)) {
-               IPW_DEBUG_MERGE("Network '%s (%s)' excluded "
+               IPW_DEBUG_MERGE("Network '%s (%pM)' excluded "
                                "because of invalid frequency/mode "
                                "combination.\n",
                                escape_essid(network->ssid, network->ssid_len),
-                               print_mac(mac, network->bssid));
+                               network->bssid);
                return 0;
        }
 
        /* Ensure that the rates supported by the driver are compatible with
         * this AP, including verification of basic rates (mandatory) */
        if (!ipw_compatible_rates(priv, network, &rates)) {
-               IPW_DEBUG_MERGE("Network '%s (%s)' excluded "
+               IPW_DEBUG_MERGE("Network '%s (%pM)' excluded "
                                "because configured rate mask excludes "
                                "AP mandatory rate.\n",
                                escape_essid(network->ssid, network->ssid_len),
-                               print_mac(mac, network->bssid));
+                               network->bssid);
                return 0;
        }
 
        if (rates.num_rates == 0) {
-               IPW_DEBUG_MERGE("Network '%s (%s)' excluded "
+               IPW_DEBUG_MERGE("Network '%s (%pM)' excluded "
                                "because of no compatible rates.\n",
                                escape_essid(network->ssid, network->ssid_len),
-                               print_mac(mac, network->bssid));
+                               network->bssid);
                return 0;
        }
 
@@ -5587,9 +5579,9 @@ static int ipw_find_adhoc_network(struct ipw_priv *priv,
        /* Set up 'new' AP to this network */
        ipw_copy_rates(&match->rates, &rates);
        match->network = network;
-       IPW_DEBUG_MERGE("Network '%s (%s)' is a viable match.\n",
+       IPW_DEBUG_MERGE("Network '%s (%pM)' is a viable match.\n",
                        escape_essid(network->ssid, network->ssid_len),
-                       print_mac(mac, network->bssid));
+                       network->bssid);
 
        return 1;
 }
@@ -5643,7 +5635,6 @@ static int ipw_best_network(struct ipw_priv *priv,
                            struct ieee80211_network *network, int roaming)
 {
        struct ipw_supported_rates rates;
-       DECLARE_MAC_BUF(mac);
 
        /* Verify that this network's capability is compatible with the
         * current mode (AdHoc or Infrastructure) */
@@ -5651,20 +5642,20 @@ static int ipw_best_network(struct ipw_priv *priv,
             !(network->capability & WLAN_CAPABILITY_ESS)) ||
            (priv->ieee->iw_mode == IW_MODE_ADHOC &&
             !(network->capability & WLAN_CAPABILITY_IBSS))) {
-               IPW_DEBUG_ASSOC("Network '%s (%s)' excluded due to "
+               IPW_DEBUG_ASSOC("Network '%s (%pM)' excluded due to "
                                "capability mismatch.\n",
                                escape_essid(network->ssid, network->ssid_len),
-                               print_mac(mac, network->bssid));
+                               network->bssid);
                return 0;
        }
 
        /* If we do not have an ESSID for this AP, we can not associate with
         * it */
        if (network->flags & NETWORK_EMPTY_ESSID) {
-               IPW_DEBUG_ASSOC("Network '%s (%s)' excluded "
+               IPW_DEBUG_ASSOC("Network '%s (%pM)' excluded "
                                "because of hidden ESSID.\n",
                                escape_essid(network->ssid, network->ssid_len),
-                               print_mac(mac, network->bssid));
+                               network->bssid);
                return 0;
        }
 
@@ -5674,11 +5665,11 @@ static int ipw_best_network(struct ipw_priv *priv,
                if ((network->ssid_len != match->network->ssid_len) ||
                    memcmp(network->ssid, match->network->ssid,
                           network->ssid_len)) {
-                       IPW_DEBUG_ASSOC("Network '%s (%s)' excluded "
+                       IPW_DEBUG_ASSOC("Network '%s (%pM)' excluded "
                                        "because of non-network ESSID.\n",
                                        escape_essid(network->ssid,
                                                     network->ssid_len),
-                                       print_mac(mac, network->bssid));
+                                       network->bssid);
                        return 0;
                }
        } else {
@@ -5692,9 +5683,9 @@ static int ipw_best_network(struct ipw_priv *priv,
                        strncpy(escaped,
                                escape_essid(network->ssid, network->ssid_len),
                                sizeof(escaped));
-                       IPW_DEBUG_ASSOC("Network '%s (%s)' excluded "
+                       IPW_DEBUG_ASSOC("Network '%s (%pM)' excluded "
                                        "because of ESSID mismatch: '%s'.\n",
-                                       escaped, print_mac(mac, network->bssid),
+                                       escaped, network->bssid,
                                        escape_essid(priv->essid,
                                                     priv->essid_len));
                        return 0;
@@ -5708,12 +5699,12 @@ static int ipw_best_network(struct ipw_priv *priv,
                strncpy(escaped,
                        escape_essid(network->ssid, network->ssid_len),
                        sizeof(escaped));
-               IPW_DEBUG_ASSOC("Network '%s (%s)' excluded because "
-                               "'%s (%s)' has a stronger signal.\n",
-                               escaped, print_mac(mac, network->bssid),
+               IPW_DEBUG_ASSOC("Network '%s (%pM)' excluded because "
+                               "'%s (%pM)' has a stronger signal.\n",
+                               escaped, network->bssid,
                                escape_essid(match->network->ssid,
                                             match->network->ssid_len),
-                               print_mac(mac, match->network->bssid));
+                               match->network->bssid);
                return 0;
        }
 
@@ -5721,11 +5712,11 @@ static int ipw_best_network(struct ipw_priv *priv,
         * last 3 seconds, do not try and associate again... */
        if (network->last_associate &&
            time_after(network->last_associate + (HZ * 3UL), jiffies)) {
-               IPW_DEBUG_ASSOC("Network '%s (%s)' excluded "
+               IPW_DEBUG_ASSOC("Network '%s (%pM)' excluded "
                                "because of storming (%ums since last "
                                "assoc attempt).\n",
                                escape_essid(network->ssid, network->ssid_len),
-                               print_mac(mac, network->bssid),
+                               network->bssid,
                                jiffies_to_msecs(jiffies -
                                                 network->last_associate));
                return 0;
@@ -5734,10 +5725,10 @@ static int ipw_best_network(struct ipw_priv *priv,
        /* Now go through and see if the requested network is valid... */
        if (priv->ieee->scan_age != 0 &&
            time_after(jiffies, network->last_scanned + priv->ieee->scan_age)) {
-               IPW_DEBUG_ASSOC("Network '%s (%s)' excluded "
+               IPW_DEBUG_ASSOC("Network '%s (%pM)' excluded "
                                "because of age: %ums.\n",
                                escape_essid(network->ssid, network->ssid_len),
-                               print_mac(mac, network->bssid),
+                               network->bssid,
                                jiffies_to_msecs(jiffies -
                                                 network->last_scanned));
                return 0;
@@ -5745,10 +5736,10 @@ static int ipw_best_network(struct ipw_priv *priv,
 
        if ((priv->config & CFG_STATIC_CHANNEL) &&
            (network->channel != priv->channel)) {
-               IPW_DEBUG_ASSOC("Network '%s (%s)' excluded "
+               IPW_DEBUG_ASSOC("Network '%s (%pM)' excluded "
                                "because of channel mismatch: %d != %d.\n",
                                escape_essid(network->ssid, network->ssid_len),
-                               print_mac(mac, network->bssid),
+                               network->bssid,
                                network->channel, priv->channel);
                return 0;
        }
@@ -5756,10 +5747,10 @@ static int ipw_best_network(struct ipw_priv *priv,
        /* Verify privacy compatability */
        if (((priv->capability & CAP_PRIVACY_ON) ? 1 : 0) !=
            ((network->capability & WLAN_CAPABILITY_PRIVACY) ? 1 : 0)) {
-               IPW_DEBUG_ASSOC("Network '%s (%s)' excluded "
+               IPW_DEBUG_ASSOC("Network '%s (%pM)' excluded "
                                "because of privacy mismatch: %s != %s.\n",
                                escape_essid(network->ssid, network->ssid_len),
-                               print_mac(mac, network->bssid),
+                               network->bssid,
                                priv->capability & CAP_PRIVACY_ON ? "on" :
                                "off",
                                network->capability &
@@ -5769,48 +5760,48 @@ static int ipw_best_network(struct ipw_priv *priv,
 
        if ((priv->config & CFG_STATIC_BSSID) &&
            memcmp(network->bssid, priv->bssid, ETH_ALEN)) {
-               IPW_DEBUG_ASSOC("Network '%s (%s)' excluded "
-                               "because of BSSID mismatch: %s.\n",
+               IPW_DEBUG_ASSOC("Network '%s (%pM)' excluded "
+                               "because of BSSID mismatch: %pM.\n",
                                escape_essid(network->ssid, network->ssid_len),
-                               print_mac(mac, network->bssid), print_mac(mac, priv->bssid));
+                               network->bssid, priv->bssid);
                return 0;
        }
 
        /* Filter out any incompatible freq / mode combinations */
        if (!ieee80211_is_valid_mode(priv->ieee, network->mode)) {
-               IPW_DEBUG_ASSOC("Network '%s (%s)' excluded "
+               IPW_DEBUG_ASSOC("Network '%s (%pM)' excluded "
                                "because of invalid frequency/mode "
                                "combination.\n",
                                escape_essid(network->ssid, network->ssid_len),
-                               print_mac(mac, network->bssid));
+                               network->bssid);
                return 0;
        }
 
        /* Filter out invalid channel in current GEO */
        if (!ieee80211_is_valid_channel(priv->ieee, network->channel)) {
-               IPW_DEBUG_ASSOC("Network '%s (%s)' excluded "
+               IPW_DEBUG_ASSOC("Network '%s (%pM)' excluded "
                                "because of invalid channel in current GEO\n",
                                escape_essid(network->ssid, network->ssid_len),
-                               print_mac(mac, network->bssid));
+                               network->bssid);
                return 0;
        }
 
        /* Ensure that the rates supported by the driver are compatible with
         * this AP, including verification of basic rates (mandatory) */
        if (!ipw_compatible_rates(priv, network, &rates)) {
-               IPW_DEBUG_ASSOC("Network '%s (%s)' excluded "
+               IPW_DEBUG_ASSOC("Network '%s (%pM)' excluded "
                                "because configured rate mask excludes "
                                "AP mandatory rate.\n",
                                escape_essid(network->ssid, network->ssid_len),
-                               print_mac(mac, network->bssid));
+                               network->bssid);
                return 0;
        }
 
        if (rates.num_rates == 0) {
-               IPW_DEBUG_ASSOC("Network '%s (%s)' excluded "
+               IPW_DEBUG_ASSOC("Network '%s (%pM)' excluded "
                                "because of no compatible rates.\n",
                                escape_essid(network->ssid, network->ssid_len),
-                               print_mac(mac, network->bssid));
+                               network->bssid);
                return 0;
        }
 
@@ -5822,9 +5813,9 @@ static int ipw_best_network(struct ipw_priv *priv,
        ipw_copy_rates(&match->rates, &rates);
        match->network = network;
 
-       IPW_DEBUG_ASSOC("Network '%s (%s)' is a viable match.\n",
+       IPW_DEBUG_ASSOC("Network '%s (%pM)' is a viable match.\n",
                        escape_essid(network->ssid, network->ssid_len),
-                       print_mac(mac, network->bssid));
+                       network->bssid);
 
        return 1;
 }
@@ -6066,7 +6057,6 @@ static void ipw_bg_adhoc_check(struct work_struct *work)
 
 static void ipw_debug_config(struct ipw_priv *priv)
 {
-       DECLARE_MAC_BUF(mac);
        IPW_DEBUG_INFO("Scan completed, no valid APs matched "
                       "[CFG 0x%08X]\n", priv->config);
        if (priv->config & CFG_STATIC_CHANNEL)
@@ -6079,8 +6069,7 @@ static void ipw_debug_config(struct ipw_priv *priv)
        else
                IPW_DEBUG_INFO("ESSID unlocked.\n");
        if (priv->config & CFG_STATIC_BSSID)
-               IPW_DEBUG_INFO("BSSID locked to %s\n",
-                              print_mac(mac, priv->bssid));
+               IPW_DEBUG_INFO("BSSID locked to %pM\n", priv->bssid);
        else
                IPW_DEBUG_INFO("BSSID unlocked.\n");
        if (priv->capability & CAP_PRIVACY_ON)
@@ -7295,7 +7284,6 @@ static int ipw_associate_network(struct ipw_priv *priv,
                                 struct ipw_supported_rates *rates, int roaming)
 {
        int err;
-       DECLARE_MAC_BUF(mac);
 
        if (priv->config & CFG_FIXED_RATE)
                ipw_set_fixed_rate(priv, network->mode);
@@ -7463,9 +7451,9 @@ static int ipw_associate_network(struct ipw_priv *priv,
                return err;
        }
 
-       IPW_DEBUG(IPW_DL_STATE, "associating: '%s' %s \n",
+       IPW_DEBUG(IPW_DL_STATE, "associating: '%s' %pM \n",
                  escape_essid(priv->essid, priv->essid_len),
-                 print_mac(mac, priv->bssid));
+                 priv->bssid);
 
        return 0;
 }
@@ -7604,7 +7592,6 @@ static int ipw_associate(void *data)
                if (list_empty(&priv->ieee->network_free_list)) {
                        struct ieee80211_network *oldest = NULL;
                        struct ieee80211_network *target;
-                       DECLARE_MAC_BUF(mac);
 
                        list_for_each_entry(target, &priv->ieee->network_list, list) {
                                if ((oldest == NULL) ||
@@ -7615,11 +7602,11 @@ static int ipw_associate(void *data)
                        /* If there are no more slots, expire the oldest */
                        list_del(&oldest->list);
                        target = oldest;
-                       IPW_DEBUG_ASSOC("Expired '%s' (%s) from "
+                       IPW_DEBUG_ASSOC("Expired '%s' (%pM) from "
                                        "network list.\n",
                                        escape_essid(target->ssid,
                                                     target->ssid_len),
-                                       print_mac(mac, target->bssid));
+                                       target->bssid);
                        list_add_tail(&target->list,
                                      &priv->ieee->network_free_list);
                }
@@ -8301,9 +8288,6 @@ static void ipw_rx(struct ipw_priv *priv)
        u32 r, w, i;
        u8 network_packet;
        u8 fill_rx = 0;
-       DECLARE_MAC_BUF(mac);
-       DECLARE_MAC_BUF(mac2);
-       DECLARE_MAC_BUF(mac3);
 
        r = ipw_read32(priv, IPW_RX_READ_INDEX);
        w = ipw_read32(priv, IPW_RX_WRITE_INDEX);
@@ -8433,18 +8417,12 @@ static void ipw_rx(struct ipw_priv *priv)
                                                                         header)))
                                        {
                                                IPW_DEBUG_DROP("Dropping: "
-                                                              "%s, "
-                                                              "%s, "
-                                                              "%s\n",
-                                                              print_mac(mac,
-                                                                        header->
-                                                                      addr1),
-                                                              print_mac(mac2,
-                                                                        header->
-                                                                      addr2),
-                                                              print_mac(mac3,
-                                                                        header->
-                                                                      addr3));
+                                                              "%pM, "
+                                                              "%pM, "
+                                                              "%pM\n",
+                                                              header->addr1,
+                                                              header->addr2,
+                                                              header->addr3);
                                                break;
                                        }
 
@@ -8983,7 +8961,6 @@ static int ipw_wx_set_wap(struct net_device *dev,
                          union iwreq_data *wrqu, char *extra)
 {
        struct ipw_priv *priv = ieee80211_priv(dev);
-       DECLARE_MAC_BUF(mac);
 
        static const unsigned char any[] = {
                0xff, 0xff, 0xff, 0xff, 0xff, 0xff
@@ -9014,8 +8991,8 @@ static int ipw_wx_set_wap(struct net_device *dev,
                return 0;
        }
 
-       IPW_DEBUG_WX("Setting mandatory BSSID to %s\n",
-                    print_mac(mac, wrqu->ap_addr.sa_data));
+       IPW_DEBUG_WX("Setting mandatory BSSID to %pM\n",
+                    wrqu->ap_addr.sa_data);
 
        memcpy(priv->bssid, wrqu->ap_addr.sa_data, ETH_ALEN);
 
@@ -9033,7 +9010,6 @@ static int ipw_wx_get_wap(struct net_device *dev,
                          union iwreq_data *wrqu, char *extra)
 {
        struct ipw_priv *priv = ieee80211_priv(dev);
-       DECLARE_MAC_BUF(mac);
 
        /* If we are associated, trying to associate, or have a statically
         * configured BSSID then return that; otherwise return ANY */
@@ -9045,8 +9021,8 @@ static int ipw_wx_get_wap(struct net_device *dev,
        } else
                memset(wrqu->ap_addr.sa_data, 0, ETH_ALEN);
 
-       IPW_DEBUG_WX("Getting WAP BSSID: %s\n",
-                    print_mac(mac, wrqu->ap_addr.sa_data));
+       IPW_DEBUG_WX("Getting WAP BSSID: %pM\n",
+                    wrqu->ap_addr.sa_data);
        mutex_unlock(&priv->mutex);
        return 0;
 }
@@ -10199,10 +10175,8 @@ static int ipw_tx_skb(struct ipw_priv *priv, struct ieee80211_txb *txb,
                        id = ipw_add_station(priv, hdr->addr1);
                        if (id == IPW_INVALID_STATION) {
                                IPW_WARNING("Attempt to send data to "
-                                           "invalid cell: " MAC_FMT "\n",
-                                           hdr->addr1[0], hdr->addr1[1],
-                                           hdr->addr1[2], hdr->addr1[3],
-                                           hdr->addr1[4], hdr->addr1[5]);
+                                           "invalid cell: %pM\n",
+                                           hdr->addr1);
                                goto drop;
                        }
                }
@@ -10505,15 +10479,14 @@ static int ipw_net_set_mac_address(struct net_device *dev, void *p)
 {
        struct ipw_priv *priv = ieee80211_priv(dev);
        struct sockaddr *addr = p;
-       DECLARE_MAC_BUF(mac);
 
        if (!is_valid_ether_addr(addr->sa_data))
                return -EADDRNOTAVAIL;
        mutex_lock(&priv->mutex);
        priv->config |= CFG_CUSTOM_MAC;
        memcpy(priv->mac_addr, addr->sa_data, ETH_ALEN);
-       printk(KERN_INFO "%s: Setting MAC to %s\n",
-              priv->net_dev->name, print_mac(mac, priv->mac_addr));
+       printk(KERN_INFO "%s: Setting MAC to %pM\n",
+              priv->net_dev->name, priv->mac_addr);
        queue_work(priv->workqueue, &priv->adapter_restart);
        mutex_unlock(&priv->mutex);
        return 0;
@@ -11648,7 +11621,7 @@ static int __devinit ipw_pci_probe(struct pci_dev *pdev,
        length = pci_resource_len(pdev, 0);
        priv->hw_len = length;
 
-       base = ioremap_nocache(pci_resource_start(pdev, 0), length);
+       base = pci_ioremap_bar(pdev, 0);
        if (!base) {
                err = -ENODEV;
                goto out_pci_release_regions;
index 6fc5e73..bb91353 100644 (file)
@@ -649,7 +649,6 @@ static void rs_get_rate(void *priv_r, struct ieee80211_supported_band *sband,
        struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
        u16 fc, rate_mask;
        struct iwl3945_priv *priv = (struct iwl3945_priv *)priv_r;
-       DECLARE_MAC_BUF(mac);
 
        IWL_DEBUG_RATE("enter\n");
 
@@ -675,8 +674,8 @@ static void rs_get_rate(void *priv_r, struct ieee80211_supported_band *sband,
                u8 sta_id = iwl3945_hw_find_station(priv, hdr->addr1);
 
                if (sta_id == IWL_INVALID_STATION) {
-                       IWL_DEBUG_RATE("LQ: ADD station %s\n",
-                                      print_mac(mac, hdr->addr1));
+                       IWL_DEBUG_RATE("LQ: ADD station %pm\n",
+                                      hdr->addr1);
                        sta_id = iwl3945_add_station(priv,
                                    hdr->addr1, 0, CMD_ASYNC);
                }
index 7ca5627..8a00245 100644 (file)
@@ -759,7 +759,6 @@ u8 iwl3945_hw_find_station(struct iwl3945_priv *priv, const u8 *addr)
        int i;
        int ret = IWL_INVALID_STATION;
        unsigned long flags;
-       DECLARE_MAC_BUF(mac);
 
        spin_lock_irqsave(&priv->sta_lock, flags);
        for (i = IWL_STA_ID; i < priv->hw_setting.max_stations; i++)
@@ -770,8 +769,8 @@ u8 iwl3945_hw_find_station(struct iwl3945_priv *priv, const u8 *addr)
                        goto out;
                }
 
-       IWL_DEBUG_INFO("can not find STA %s (total %d)\n",
-                      print_mac(mac, addr), priv->num_stations);
+       IWL_DEBUG_INFO("can not find STA %pM (total %d)\n",
+                      addr, priv->num_stations);
  out:
        spin_unlock_irqrestore(&priv->sta_lock, flags);
        return ret;
index e2a58e4..b497d40 100644 (file)
@@ -357,11 +357,9 @@ static void rs_tl_turn_on_agg_for_tid(struct iwl_priv *priv,
                                      struct iwl_lq_sta *lq_data, u8 tid,
                                      struct ieee80211_sta *sta)
 {
-       DECLARE_MAC_BUF(mac);
-
        if (rs_tl_get_load(lq_data, tid) > IWL_AGG_LOAD_THRESHOLD) {
-               IWL_DEBUG_HT("Starting Tx agg: STA: %s tid: %d\n",
-                               print_mac(mac, sta->addr), tid);
+               IWL_DEBUG_HT("Starting Tx agg: STA: %pM tid: %d\n",
+                               sta->addr, tid);
                ieee80211_start_tx_ba_session(priv->hw, sta->addr, tid);
        }
 }
@@ -2132,11 +2130,10 @@ static void rs_get_rate(void *priv_r, struct ieee80211_supported_band *sband,
        if ((priv->iw_mode == NL80211_IFTYPE_ADHOC) &&
            !lq_sta->ibss_sta_added) {
                u8 sta_id = iwl_find_station(priv, hdr->addr1);
-               DECLARE_MAC_BUF(mac);
 
                if (sta_id == IWL_INVALID_STATION) {
-                       IWL_DEBUG_RATE("LQ: ADD station %s\n",
-                                      print_mac(mac, hdr->addr1));
+                       IWL_DEBUG_RATE("LQ: ADD station %pM\n",
+                                      hdr->addr1);
                        sta_id = iwl_add_station_flags(priv, hdr->addr1,
                                                        0, CMD_ASYNC, NULL);
                }
@@ -2205,15 +2202,12 @@ static void rs_rate_init(void *priv_r, struct ieee80211_supported_band *sband,
        lq_sta->ibss_sta_added = 0;
        if (priv->iw_mode == NL80211_IFTYPE_AP) {
                u8 sta_id = iwl_find_station(priv, sta->addr);
-               DECLARE_MAC_BUF(mac);
 
                /* for IBSS the call are from tasklet */
-               IWL_DEBUG_RATE("LQ: ADD station %s\n",
-                            print_mac(mac, sta->addr));
+               IWL_DEBUG_RATE("LQ: ADD station %pM\n", sta->addr);
 
                if (sta_id == IWL_INVALID_STATION) {
-                       IWL_DEBUG_RATE("LQ: ADD station %s\n",
-                                      print_mac(mac, sta->addr));
+                       IWL_DEBUG_RATE("LQ: ADD station %pM\n", sta->addr);
                        sta_id = iwl_add_station_flags(priv, sta->addr,
                                                        0, CMD_ASYNC, NULL);
                }
index 321dbc8..fe93074 100644 (file)
@@ -239,7 +239,6 @@ static int iwl4965_commit_rxon(struct iwl_priv *priv)
 {
        /* cast away the const for active_rxon in this function */
        struct iwl_rxon_cmd *active_rxon = (void *)&priv->active_rxon;
-       DECLARE_MAC_BUF(mac);
        int ret;
        bool new_assoc =
                !!(priv->staging_rxon.filter_flags & RXON_FILTER_ASSOC_MSK);
@@ -300,10 +299,10 @@ static int iwl4965_commit_rxon(struct iwl_priv *priv)
        IWL_DEBUG_INFO("Sending RXON\n"
                       "* with%s RXON_FILTER_ASSOC_MSK\n"
                       "* channel = %d\n"
-                      "* bssid = %s\n",
+                      "* bssid = %pM\n",
                       (new_assoc ? "" : "out"),
                       le16_to_cpu(priv->staging_rxon.channel),
-                      print_mac(mac, priv->staging_rxon.bssid_addr));
+                      priv->staging_rxon.bssid_addr);
 
        iwl4965_set_rxon_hwcrypto(priv, !priv->hw_params.sw_crypto);
 
@@ -1464,7 +1463,6 @@ void iwl_rx_handle(struct iwl_priv *priv)
 static void iwl4965_print_rx_config_cmd(struct iwl_priv *priv)
 {
        struct iwl_rxon_cmd *rxon = &priv->staging_rxon;
-       DECLARE_MAC_BUF(mac);
 
        IWL_DEBUG_RADIO("RX CONFIG:\n");
        iwl_print_hex_dump(priv, IWL_DL_RADIO, (u8 *) rxon, sizeof(*rxon));
@@ -1476,10 +1474,8 @@ static void iwl4965_print_rx_config_cmd(struct iwl_priv *priv)
        IWL_DEBUG_RADIO("u8 ofdm_basic_rates: 0x%02x\n",
                        rxon->ofdm_basic_rates);
        IWL_DEBUG_RADIO("u8 cck_basic_rates: 0x%02x\n", rxon->cck_basic_rates);
-       IWL_DEBUG_RADIO("u8[6] node_addr: %s\n",
-                       print_mac(mac, rxon->node_addr));
-       IWL_DEBUG_RADIO("u8[6] bssid_addr: %s\n",
-                       print_mac(mac, rxon->bssid_addr));
+       IWL_DEBUG_RADIO("u8[6] node_addr: %pM\n", rxon->node_addr);
+       IWL_DEBUG_RADIO("u8[6] bssid_addr: %pM\n", rxon->bssid_addr);
        IWL_DEBUG_RADIO("u16 assoc_id: 0x%x\n", le16_to_cpu(rxon->assoc_id));
 }
 #endif
@@ -2466,7 +2462,6 @@ static void iwl4965_post_associate(struct iwl_priv *priv)
 {
        struct ieee80211_conf *conf = NULL;
        int ret = 0;
-       DECLARE_MAC_BUF(mac);
        unsigned long flags;
 
        if (priv->iw_mode == NL80211_IFTYPE_AP) {
@@ -2474,9 +2469,8 @@ static void iwl4965_post_associate(struct iwl_priv *priv)
                return;
        }
 
-       IWL_DEBUG_ASSOC("Associated as %d to: %s\n",
-                       priv->assoc_id,
-                       print_mac(mac, priv->active_rxon.bssid_addr));
+       IWL_DEBUG_ASSOC("Associated as %d to: %pM\n",
+                       priv->assoc_id, priv->active_rxon.bssid_addr);
 
 
        if (test_bit(STATUS_EXIT_PENDING, &priv->status))
@@ -2722,7 +2716,6 @@ static int iwl4965_mac_add_interface(struct ieee80211_hw *hw,
 {
        struct iwl_priv *priv = hw->priv;
        unsigned long flags;
-       DECLARE_MAC_BUF(mac);
 
        IWL_DEBUG_MAC80211("enter: type %d\n", conf->type);
 
@@ -2739,7 +2732,7 @@ static int iwl4965_mac_add_interface(struct ieee80211_hw *hw,
        mutex_lock(&priv->mutex);
 
        if (conf->mac_addr) {
-               IWL_DEBUG_MAC80211("Set %s\n", print_mac(mac, conf->mac_addr));
+               IWL_DEBUG_MAC80211("Set %pM\n", conf->mac_addr);
                memcpy(priv->mac_addr, conf->mac_addr, ETH_ALEN);
        }
 
@@ -2948,7 +2941,6 @@ static int iwl4965_mac_config_interface(struct ieee80211_hw *hw,
                                    struct ieee80211_if_conf *conf)
 {
        struct iwl_priv *priv = hw->priv;
-       DECLARE_MAC_BUF(mac);
        unsigned long flags;
        int rc;
 
@@ -2983,8 +2975,7 @@ static int iwl4965_mac_config_interface(struct ieee80211_hw *hw,
        mutex_lock(&priv->mutex);
 
        if (conf->bssid)
-               IWL_DEBUG_MAC80211("bssid: %s\n",
-                                  print_mac(mac, conf->bssid));
+               IWL_DEBUG_MAC80211("bssid: %pM\n", conf->bssid);
 
 /*
  * very dubious code was here; the probe filtering flag is never set:
@@ -2997,8 +2988,8 @@ static int iwl4965_mac_config_interface(struct ieee80211_hw *hw,
                if (!conf->bssid) {
                        conf->bssid = priv->mac_addr;
                        memcpy(priv->bssid, priv->mac_addr, ETH_ALEN);
-                       IWL_DEBUG_MAC80211("bssid was set to: %s\n",
-                                          print_mac(mac, conf->bssid));
+                       IWL_DEBUG_MAC80211("bssid was set to: %pM\n",
+                                          conf->bssid);
                }
                if (priv->ibss_beacon)
                        dev_kfree_skb(priv->ibss_beacon);
@@ -3241,14 +3232,13 @@ static void iwl4965_mac_update_tkip_key(struct ieee80211_hw *hw,
        unsigned long flags;
        __le16 key_flags = 0;
        int i;
-       DECLARE_MAC_BUF(mac);
 
        IWL_DEBUG_MAC80211("enter\n");
 
        sta_id = iwl_find_station(priv, addr);
        if (sta_id == IWL_INVALID_STATION) {
-               IWL_DEBUG_MAC80211("leave - %s not in station map.\n",
-                                  print_mac(mac, addr));
+               IWL_DEBUG_MAC80211("leave - %pM not in station map.\n",
+                                  addr);
                return;
        }
 
@@ -3285,7 +3275,6 @@ static int iwl4965_mac_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
                           struct ieee80211_key_conf *key)
 {
        struct iwl_priv *priv = hw->priv;
-       DECLARE_MAC_BUF(mac);
        int ret = 0;
        u8 sta_id = IWL_INVALID_STATION;
        u8 is_default_wep_key = 0;
@@ -3303,8 +3292,8 @@ static int iwl4965_mac_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
 
        sta_id = iwl_find_station(priv, addr);
        if (sta_id == IWL_INVALID_STATION) {
-               IWL_DEBUG_MAC80211("leave - %s not in station map.\n",
-                                  print_mac(mac, addr));
+               IWL_DEBUG_MAC80211("leave - %pM not in station map.\n",
+                                  addr);
                return -EINVAL;
 
        }
@@ -3405,10 +3394,9 @@ static int iwl4965_mac_ampdu_action(struct ieee80211_hw *hw,
                             struct ieee80211_sta *sta, u16 tid, u16 *ssn)
 {
        struct iwl_priv *priv = hw->priv;
-       DECLARE_MAC_BUF(mac);
 
-       IWL_DEBUG_HT("A-MPDU action on addr %s tid %d\n",
-                    print_mac(mac, sta->addr), tid);
+       IWL_DEBUG_HT("A-MPDU action on addr %pM tid %d\n",
+                    sta->addr, tid);
 
        if (!(priv->cfg->sku & IWL_SKU_N))
                return -EACCES;
@@ -4171,7 +4159,6 @@ static int iwl4965_pci_probe(struct pci_dev *pdev, const struct pci_device_id *e
        struct ieee80211_hw *hw;
        struct iwl_cfg *cfg = (struct iwl_cfg *)(ent->driver_data);
        unsigned long flags;
-       DECLARE_MAC_BUF(mac);
 
        /************************
         * 1. Allocating HW data
@@ -4280,7 +4267,7 @@ static int iwl4965_pci_probe(struct pci_dev *pdev, const struct pci_device_id *e
 
        /* extract MAC Address */
        iwl_eeprom_get_mac(priv, priv->mac_addr);
-       IWL_DEBUG_INFO("MAC address: %s\n", print_mac(mac, priv->mac_addr));
+       IWL_DEBUG_INFO("MAC address: %pM\n", priv->mac_addr);
        SET_IEEE80211_PERM_ADDR(priv->hw, priv->mac_addr);
 
        /************************
index 20db0eb..753f938 100644 (file)
@@ -228,7 +228,6 @@ static ssize_t iwl_dbgfs_stations_read(struct file *file, char __user *user_buf,
        ssize_t ret;
        /* Add 30 for initial string */
        const size_t bufsz = 30 + sizeof(char) * 500 * (priv->num_stations);
-       DECLARE_MAC_BUF(mac);
 
        buf = kmalloc(bufsz, GFP_KERNEL);
        if (!buf)
@@ -242,7 +241,6 @@ static ssize_t iwl_dbgfs_stations_read(struct file *file, char __user *user_buf,
                if (station->used) {
                        pos += scnprintf(buf + pos, bufsz - pos,
                                        "station %d:\ngeneral data:\n", i+1);
-                       print_mac(mac, station->sta.sta.addr);
                        pos += scnprintf(buf + pos, bufsz - pos, "id: %u\n",
                                        station->sta.sta.sta_id);
                        pos += scnprintf(buf + pos, bufsz - pos, "mode: %u\n",
index 61797f3..e02c471 100644 (file)
@@ -45,7 +45,6 @@ u8 iwl_find_station(struct iwl_priv *priv, const u8 *addr)
        int start = 0;
        int ret = IWL_INVALID_STATION;
        unsigned long flags;
-       DECLARE_MAC_BUF(mac);
 
        if ((priv->iw_mode == NL80211_IFTYPE_ADHOC) ||
            (priv->iw_mode == NL80211_IFTYPE_AP))
@@ -63,8 +62,8 @@ u8 iwl_find_station(struct iwl_priv *priv, const u8 *addr)
                        goto out;
                }
 
-       IWL_DEBUG_ASSOC_LIMIT("can not find STA %s total %d\n",
-                             print_mac(mac, addr), priv->num_stations);
+       IWL_DEBUG_ASSOC_LIMIT("can not find STA %pM total %d\n",
+                             addr, priv->num_stations);
 
  out:
        spin_unlock_irqrestore(&priv->sta_lock, flags);
@@ -86,7 +85,6 @@ EXPORT_SYMBOL(iwl_get_ra_sta_id);
 static void iwl_sta_ucode_activate(struct iwl_priv *priv, u8 sta_id)
 {
        unsigned long flags;
-       DECLARE_MAC_BUF(mac);
 
        spin_lock_irqsave(&priv->sta_lock, flags);
 
@@ -94,8 +92,8 @@ static void iwl_sta_ucode_activate(struct iwl_priv *priv, u8 sta_id)
                IWL_ERROR("ACTIVATE a non DRIVER active station %d\n", sta_id);
 
        priv->stations[sta_id].used |= IWL_STA_UCODE_ACTIVE;
-       IWL_DEBUG_ASSOC("Added STA to Ucode: %s\n",
-                       print_mac(mac, priv->stations[sta_id].sta.sta.addr));
+       IWL_DEBUG_ASSOC("Added STA to Ucode: %pM\n",
+                       priv->stations[sta_id].sta.sta.addr);
 
        spin_unlock_irqrestore(&priv->sta_lock, flags);
 }
@@ -237,7 +235,6 @@ u8 iwl_add_station_flags(struct iwl_priv *priv, const u8 *addr, int is_ap,
        int sta_id = IWL_INVALID_STATION;
        struct iwl_station_entry *station;
        unsigned long flags_spin;
-       DECLARE_MAC_BUF(mac);
 
        spin_lock_irqsave(&priv->sta_lock, flags_spin);
        if (is_ap)
@@ -273,8 +270,8 @@ u8 iwl_add_station_flags(struct iwl_priv *priv, const u8 *addr, int is_ap,
 
        station = &priv->stations[sta_id];
        station->used = IWL_STA_DRIVER_ACTIVE;
-       IWL_DEBUG_ASSOC("Add STA to driver ID %d: %s\n",
-                       sta_id, print_mac(mac, addr));
+       IWL_DEBUG_ASSOC("Add STA to driver ID %d: %pM\n",
+                       sta_id, addr);
        priv->num_stations++;
 
        /* Set up the REPLY_ADD_STA command to send to device */
@@ -301,14 +298,11 @@ EXPORT_SYMBOL(iwl_add_station_flags);
 static void iwl_sta_ucode_deactivate(struct iwl_priv *priv, const char *addr)
 {
        unsigned long flags;
-       DECLARE_MAC_BUF(mac);
-
        u8 sta_id = iwl_find_station(priv, addr);
 
        BUG_ON(sta_id == IWL_INVALID_STATION);
 
-       IWL_DEBUG_ASSOC("Removed STA from Ucode: %s\n",
-                       print_mac(mac, addr));
+       IWL_DEBUG_ASSOC("Removed STA from Ucode: %pM\n", addr);
 
        spin_lock_irqsave(&priv->sta_lock, flags);
 
@@ -415,7 +409,6 @@ int iwl_remove_station(struct iwl_priv *priv, const u8 *addr, int is_ap)
        int sta_id = IWL_INVALID_STATION;
        int i, ret = -EINVAL;
        unsigned long flags;
-       DECLARE_MAC_BUF(mac);
 
        spin_lock_irqsave(&priv->sta_lock, flags);
 
@@ -435,18 +428,18 @@ int iwl_remove_station(struct iwl_priv *priv, const u8 *addr, int is_ap)
        if (unlikely(sta_id == IWL_INVALID_STATION))
                goto out;
 
-       IWL_DEBUG_ASSOC("Removing STA from driver:%d  %s\n",
-               sta_id, print_mac(mac, addr));
+       IWL_DEBUG_ASSOC("Removing STA from driver:%d  %pM\n",
+               sta_id, addr);
 
        if (!(priv->stations[sta_id].used & IWL_STA_DRIVER_ACTIVE)) {
-               IWL_ERROR("Removing %s but non DRIVER active\n",
-                               print_mac(mac, addr));
+               IWL_ERROR("Removing %pM but non DRIVER active\n",
+                               addr);
                goto out;
        }
 
        if (!(priv->stations[sta_id].used & IWL_STA_UCODE_ACTIVE)) {
-               IWL_ERROR("Removing %s but non UCODE active\n",
-                               print_mac(mac, addr));
+               IWL_ERROR("Removing %pM but non UCODE active\n",
+                               addr);
                goto out;
        }
 
@@ -927,7 +920,6 @@ int iwl_get_sta_id(struct iwl_priv *priv, struct ieee80211_hdr *hdr)
 {
        int sta_id;
        u16 fc = le16_to_cpu(hdr->frame_control);
-       DECLARE_MAC_BUF(mac);
 
        /* If this frame is broadcast or management, use broadcast station id */
        if (((fc & IEEE80211_FCTL_FTYPE) != IEEE80211_FTYPE_DATA) ||
@@ -962,9 +954,9 @@ int iwl_get_sta_id(struct iwl_priv *priv, struct ieee80211_hdr *hdr)
                if (sta_id != IWL_INVALID_STATION)
                        return sta_id;
 
-               IWL_DEBUG_DROP("Station %s not in station map. "
+               IWL_DEBUG_DROP("Station %pM not in station map. "
                               "Defaulting to broadcast...\n",
-                              print_mac(mac, hdr->addr1));
+                              hdr->addr1);
                iwl_print_hex_dump(priv, IWL_DL_DROP, (u8 *) hdr, sizeof(*hdr));
                return priv->hw_params.bcast_sta_id;
 
index 907a53e..37ebcff 100644 (file)
@@ -830,10 +830,8 @@ int iwl_tx_skb(struct iwl_priv *priv, struct sk_buff *skb)
        /* Find (or create) index into station table for destination station */
        sta_id = iwl_get_sta_id(priv, hdr);
        if (sta_id == IWL_INVALID_STATION) {
-               DECLARE_MAC_BUF(mac);
-
-               IWL_DEBUG_DROP("Dropping - INVALID STATION: %s\n",
-                              print_mac(mac, hdr->addr1));
+               IWL_DEBUG_DROP("Dropping - INVALID STATION: %pM\n",
+                              hdr->addr1);
                goto drop;
        }
 
@@ -1248,15 +1246,14 @@ int iwl_tx_agg_start(struct iwl_priv *priv, const u8 *ra, u16 tid, u16 *ssn)
        int ret;
        unsigned long flags;
        struct iwl_tid_data *tid_data;
-       DECLARE_MAC_BUF(mac);
 
        if (likely(tid < ARRAY_SIZE(default_tid_to_tx_fifo)))
                tx_fifo = default_tid_to_tx_fifo[tid];
        else
                return -EINVAL;
 
-       IWL_WARNING("%s on ra = %s tid = %d\n",
-                       __func__, print_mac(mac, ra), tid);
+       IWL_WARNING("%s on ra = %pM tid = %d\n",
+                       __func__, ra, tid);
 
        sta_id = iwl_find_station(priv, ra);
        if (sta_id == IWL_INVALID_STATION)
@@ -1301,7 +1298,6 @@ int iwl_tx_agg_stop(struct iwl_priv *priv , const u8 *ra, u16 tid)
        struct iwl_tid_data *tid_data;
        int ret, write_ptr, read_ptr;
        unsigned long flags;
-       DECLARE_MAC_BUF(mac);
 
        if (!ra) {
                IWL_ERROR("ra = NULL\n");
@@ -1467,7 +1463,6 @@ void iwl_rx_reply_compressed_ba(struct iwl_priv *priv,
        int index;
        struct iwl_tx_queue *txq = NULL;
        struct iwl_ht_agg *agg;
-       DECLARE_MAC_BUF(mac);
 
        /* "flow" corresponds to Tx queue */
        u16 scd_flow = le16_to_cpu(ba_resp->scd_flow);
@@ -1489,10 +1484,10 @@ void iwl_rx_reply_compressed_ba(struct iwl_priv *priv,
 
        /* TODO: Need to get this copy more safely - now good for debug */
 
-       IWL_DEBUG_TX_REPLY("REPLY_COMPRESSED_BA [%d]Received from %s, "
+       IWL_DEBUG_TX_REPLY("REPLY_COMPRESSED_BA [%d]Received from %pM, "
                           "sta_id = %d\n",
                           agg->wait_for_ba,
-                          print_mac(mac, (u8 *) &ba_resp->sta_addr_lo32),
+                          (u8 *) &ba_resp->sta_addr_lo32,
                           ba_resp->sta_id);
        IWL_DEBUG_TX_REPLY("TID = %d, SeqCtl = %d, bitmap = 0x%llx, scd_flow = "
                           "%d, scd_ssn = %d\n",
index d15a2c9..d3a2966 100644 (file)
@@ -446,7 +446,6 @@ u8 iwl3945_add_station(struct iwl3945_priv *priv, const u8 *addr, int is_ap, u8
        int index = IWL_INVALID_STATION;
        struct iwl3945_station_entry *station;
        unsigned long flags_spin;
-       DECLARE_MAC_BUF(mac);
        u8 rate;
 
        spin_lock_irqsave(&priv->sta_lock, flags_spin);
@@ -480,7 +479,7 @@ u8 iwl3945_add_station(struct iwl3945_priv *priv, const u8 *addr, int is_ap, u8
                return index;
        }
 
-       IWL_DEBUG_ASSOC("Add STA ID %d: %s\n", index, print_mac(mac, addr));
+       IWL_DEBUG_ASSOC("Add STA ID %d: %pM\n", index, addr);
        station = &priv->stations[index];
        station->used = 1;
        priv->num_stations++;
@@ -1063,7 +1062,6 @@ static int iwl3945_commit_rxon(struct iwl3945_priv *priv)
        /* cast away the const for active_rxon in this function */
        struct iwl3945_rxon_cmd *active_rxon = (void *)&priv->active_rxon;
        int rc = 0;
-       DECLARE_MAC_BUF(mac);
 
        if (!iwl3945_is_alive(priv))
                return -1;
@@ -1124,11 +1122,11 @@ static int iwl3945_commit_rxon(struct iwl3945_priv *priv)
        IWL_DEBUG_INFO("Sending RXON\n"
                       "* with%s RXON_FILTER_ASSOC_MSK\n"
                       "* channel = %d\n"
-                      "* bssid = %s\n",
+                      "* bssid = %pM\n",
                       ((priv->staging_rxon.filter_flags &
                         RXON_FILTER_ASSOC_MSK) ? "" : "out"),
                       le16_to_cpu(priv->staging_rxon.channel),
-                      print_mac(mac, priv->staging_rxon.bssid_addr));
+                      priv->staging_rxon.bssid_addr);
 
        /* Apply the new configuration */
        rc = iwl3945_send_cmd_pdu(priv, REPLY_RXON,
@@ -2482,8 +2480,6 @@ static int iwl3945_get_sta_id(struct iwl3945_priv *priv, struct ieee80211_hdr *h
        /* If this frame is going out to an IBSS network, find the station,
         * or create a new station table entry */
        case NL80211_IFTYPE_ADHOC: {
-               DECLARE_MAC_BUF(mac);
-
                /* Create new station table entry */
                sta_id = iwl3945_hw_find_station(priv, hdr->addr1);
                if (sta_id != IWL_INVALID_STATION)
@@ -2494,9 +2490,9 @@ static int iwl3945_get_sta_id(struct iwl3945_priv *priv, struct ieee80211_hdr *h
                if (sta_id != IWL_INVALID_STATION)
                        return sta_id;
 
-               IWL_DEBUG_DROP("Station %s not in station map. "
+               IWL_DEBUG_DROP("Station %pM not in station map. "
                               "Defaulting to broadcast...\n",
-                              print_mac(mac, hdr->addr1));
+                              hdr->addr1);
                iwl3945_print_hex_dump(IWL_DL_DROP, (u8 *) hdr, sizeof(*hdr));
                return priv->hw_setting.bcast_sta_id;
        }
@@ -2579,10 +2575,8 @@ static int iwl3945_tx_skb(struct iwl3945_priv *priv, struct sk_buff *skb)
        /* Find (or create) index into station table for destination station */
        sta_id = iwl3945_get_sta_id(priv, hdr);
        if (sta_id == IWL_INVALID_STATION) {
-               DECLARE_MAC_BUF(mac);
-
-               IWL_DEBUG_DROP("Dropping - INVALID STATION: %s\n",
-                              print_mac(mac, hdr->addr1));
+               IWL_DEBUG_DROP("Dropping - INVALID STATION: %pM\n",
+                              hdr->addr1);
                goto drop;
        }
 
@@ -4019,8 +4013,6 @@ static int iwl3945_tx_queue_update_write_ptr(struct iwl3945_priv *priv,
 #ifdef CONFIG_IWL3945_DEBUG
 static void iwl3945_print_rx_config_cmd(struct iwl3945_rxon_cmd *rxon)
 {
-       DECLARE_MAC_BUF(mac);
-
        IWL_DEBUG_RADIO("RX CONFIG:\n");
        iwl3945_print_hex_dump(IWL_DL_RADIO, (u8 *) rxon, sizeof(*rxon));
        IWL_DEBUG_RADIO("u16 channel: 0x%x\n", le16_to_cpu(rxon->channel));
@@ -4031,10 +4023,8 @@ static void iwl3945_print_rx_config_cmd(struct iwl3945_rxon_cmd *rxon)
        IWL_DEBUG_RADIO("u8 ofdm_basic_rates: 0x%02x\n",
                        rxon->ofdm_basic_rates);
        IWL_DEBUG_RADIO("u8 cck_basic_rates: 0x%02x\n", rxon->cck_basic_rates);
-       IWL_DEBUG_RADIO("u8[6] node_addr: %s\n",
-                       print_mac(mac, rxon->node_addr));
-       IWL_DEBUG_RADIO("u8[6] bssid_addr: %s\n",
-                       print_mac(mac, rxon->bssid_addr));
+       IWL_DEBUG_RADIO("u8[6] node_addr: %pM\n", rxon->node_addr);
+       IWL_DEBUG_RADIO("u8[6] bssid_addr: %pM\n", rxon->bssid_addr);
        IWL_DEBUG_RADIO("u16 assoc_id: 0x%x\n", le16_to_cpu(rxon->assoc_id));
 }
 #endif
@@ -6321,7 +6311,6 @@ static void iwl3945_post_associate(struct iwl3945_priv *priv)
 {
        int rc = 0;
        struct ieee80211_conf *conf = NULL;
-       DECLARE_MAC_BUF(mac);
 
        if (priv->iw_mode == NL80211_IFTYPE_AP) {
                IWL_ERROR("%s Should not be called in AP mode\n", __func__);
@@ -6329,9 +6318,8 @@ static void iwl3945_post_associate(struct iwl3945_priv *priv)
        }
 
 
-       IWL_DEBUG_ASSOC("Associated as %d to: %s\n",
-                       priv->assoc_id,
-                       print_mac(mac, priv->active_rxon.bssid_addr));
+       IWL_DEBUG_ASSOC("Associated as %d to: %pM\n",
+                       priv->assoc_id, priv->active_rxon.bssid_addr);
 
        if (test_bit(STATUS_EXIT_PENDING, &priv->status))
                return;
@@ -6592,7 +6580,6 @@ static int iwl3945_mac_add_interface(struct ieee80211_hw *hw,
 {
        struct iwl3945_priv *priv = hw->priv;
        unsigned long flags;
-       DECLARE_MAC_BUF(mac);
 
        IWL_DEBUG_MAC80211("enter: type %d\n", conf->type);
 
@@ -6609,7 +6596,7 @@ static int iwl3945_mac_add_interface(struct ieee80211_hw *hw,
        mutex_lock(&priv->mutex);
 
        if (conf->mac_addr) {
-               IWL_DEBUG_MAC80211("Set: %s\n", print_mac(mac, conf->mac_addr));
+               IWL_DEBUG_MAC80211("Set: %pM\n", conf->mac_addr);
                memcpy(priv->mac_addr, conf->mac_addr, ETH_ALEN);
        }
 
@@ -6778,7 +6765,6 @@ static int iwl3945_mac_config_interface(struct ieee80211_hw *hw,
                                    struct ieee80211_if_conf *conf)
 {
        struct iwl3945_priv *priv = hw->priv;
-       DECLARE_MAC_BUF(mac);
        unsigned long flags;
        int rc;
 
@@ -6816,8 +6802,7 @@ static int iwl3945_mac_config_interface(struct ieee80211_hw *hw,
        mutex_lock(&priv->mutex);
 
        if (conf->bssid)
-               IWL_DEBUG_MAC80211("bssid: %s\n",
-                                  print_mac(mac, conf->bssid));
+               IWL_DEBUG_MAC80211("bssid: %pM\n", conf->bssid);
 
 /*
  * very dubious code was here; the probe filtering flag is never set:
@@ -6830,8 +6815,8 @@ static int iwl3945_mac_config_interface(struct ieee80211_hw *hw,
                if (!conf->bssid) {
                        conf->bssid = priv->mac_addr;
                        memcpy(priv->bssid, priv->mac_addr, ETH_ALEN);
-                       IWL_DEBUG_MAC80211("bssid was set to: %s\n",
-                                          print_mac(mac, conf->bssid));
+                       IWL_DEBUG_MAC80211("bssid was set to: %pM\n",
+                                          conf->bssid);
                }
                if (priv->ibss_beacon)
                        dev_kfree_skb(priv->ibss_beacon);
@@ -7072,10 +7057,8 @@ static int iwl3945_mac_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
 
        sta_id = iwl3945_hw_find_station(priv, addr);
        if (sta_id == IWL_INVALID_STATION) {
-               DECLARE_MAC_BUF(mac);
-
-               IWL_DEBUG_MAC80211("leave - %s not in station map.\n",
-                                  print_mac(mac, addr));
+               IWL_DEBUG_MAC80211("leave - %pM not in station map.\n",
+                                  addr);
                return -EINVAL;
        }
 
@@ -7870,7 +7853,6 @@ static int iwl3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *e
        struct ieee80211_hw *hw;
        struct iwl_3945_cfg *cfg = (struct iwl_3945_cfg *)(ent->driver_data);
        unsigned long flags;
-       DECLARE_MAC_BUF(mac);
 
        /* Disabling hardware scan means that mac80211 will perform scans
         * "the hard way", rather than using device's scan. */
@@ -8045,7 +8027,7 @@ static int iwl3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *e
        }
        /* MAC Address location in EEPROM same for 3945/4965 */
        get_eeprom_mac(priv, priv->mac_addr);
-       IWL_DEBUG_INFO("MAC address: %s\n", print_mac(mac, priv->mac_addr));
+       IWL_DEBUG_INFO("MAC address: %pM\n", priv->mac_addr);
        SET_IEEE80211_PERM_ADDR(priv->hw, priv->mac_addr);
 
        err = iwl3945_init_channel_map(priv);
index 92be604..8b88e95 100644 (file)
@@ -151,7 +151,6 @@ static int lbs_adhoc_join(struct lbs_private *priv,
        struct cmd_ds_802_11_ad_hoc_join cmd;
        struct bss_descriptor *bss = &assoc_req->bss;
        u8 preamble = RADIO_PREAMBLE_LONG;
-       DECLARE_MAC_BUF(mac);
        u16 ratesize = 0;
        int ret = 0;
 
@@ -226,8 +225,8 @@ static int lbs_adhoc_join(struct lbs_private *priv,
               bss->capability, CAPINFO_MASK);
 
        /* information on BSSID descriptor passed to FW */
-       lbs_deb_join("ADHOC_J_CMD: BSSID = %s, SSID = '%s'\n",
-                       print_mac(mac, cmd.bss.bssid), cmd.bss.ssid);
+       lbs_deb_join("ADHOC_J_CMD: BSSID = %pM, SSID = '%s'\n",
+                       cmd.bss.bssid, cmd.bss.ssid);
 
        /* Only v8 and below support setting these */
        if (priv->fwrelease < 0x09000000) {
@@ -752,17 +751,15 @@ static int assoc_helper_bssid(struct lbs_private *priv,
 {
        int ret = 0;
        struct bss_descriptor * bss;
-       DECLARE_MAC_BUF(mac);
 
-       lbs_deb_enter_args(LBS_DEB_ASSOC, "BSSID %s",
-               print_mac(mac, assoc_req->bssid));
+       lbs_deb_enter_args(LBS_DEB_ASSOC, "BSSID %pM", assoc_req->bssid);
 
        /* Search for index position in list for requested MAC */
        bss = lbs_find_bssid_in_list(priv, assoc_req->bssid,
                            assoc_req->mode);
        if (bss == NULL) {
-               lbs_deb_assoc("ASSOC: WAP: BSSID %s not found, "
-                       "cannot associate.\n", print_mac(mac, assoc_req->bssid));
+               lbs_deb_assoc("ASSOC: WAP: BSSID %pM not found, "
+                       "cannot associate.\n", assoc_req->bssid);
                goto out;
        }
 
@@ -1208,7 +1205,6 @@ void lbs_association_worker(struct work_struct *work)
        struct assoc_request * assoc_req = NULL;
        int ret = 0;
        int find_any_ssid = 0;
-       DECLARE_MAC_BUF(mac);
 
        lbs_deb_enter(LBS_DEB_ASSOC);
 
@@ -1228,13 +1224,13 @@ void lbs_association_worker(struct work_struct *work)
                "    chann:     %d\n"
                "    band:      %d\n"
                "    mode:      %d\n"
-               "    BSSID:     %s\n"
+               "    BSSID:     %pM\n"
                "    secinfo:  %s%s%s\n"
                "    auth_mode: %d\n",
                assoc_req->flags,
                escape_essid(assoc_req->ssid, assoc_req->ssid_len),
                assoc_req->channel, assoc_req->band, assoc_req->mode,
-               print_mac(mac, assoc_req->bssid),
+               assoc_req->bssid,
                assoc_req->secinfo.WPAenabled ? " WPA" : "",
                assoc_req->secinfo.WPA2enabled ? " WPA2" : "",
                assoc_req->secinfo.wep_enabled ? " WEP" : "",
@@ -1357,8 +1353,8 @@ void lbs_association_worker(struct work_struct *work)
                }
 
                if (success) {
-                       lbs_deb_assoc("associated to %s\n",
-                               print_mac(mac, priv->curbssparams.bssid));
+                       lbs_deb_assoc("associated to %pM\n",
+                               priv->curbssparams.bssid);
                        lbs_prepare_and_send_command(priv,
                                CMD_802_11_RSSI,
                                0, CMD_OPTION_WAITFORRSP, 0, NULL);
@@ -1478,7 +1474,6 @@ int lbs_cmd_80211_authenticate(struct lbs_private *priv,
        struct cmd_ds_802_11_authenticate *pauthenticate = &cmd->params.auth;
        int ret = -1;
        u8 *bssid = pdata_buf;
-       DECLARE_MAC_BUF(mac);
 
        lbs_deb_enter(LBS_DEB_JOIN);
 
@@ -1505,8 +1500,8 @@ int lbs_cmd_80211_authenticate(struct lbs_private *priv,
 
        memcpy(pauthenticate->macaddr, bssid, ETH_ALEN);
 
-       lbs_deb_join("AUTH_CMD: BSSID %s, auth 0x%x\n",
-               print_mac(mac, bssid), pauthenticate->authtype);
+       lbs_deb_join("AUTH_CMD: BSSID %pM, auth 0x%x\n",
+               bssid, pauthenticate->authtype);
        ret = 0;
 
 out:
@@ -1770,7 +1765,6 @@ static int lbs_adhoc_post(struct lbs_private *priv, struct cmd_header *resp)
        struct cmd_ds_802_11_ad_hoc_result *adhoc_resp;
        union iwreq_data wrqu;
        struct bss_descriptor *bss;
-       DECLARE_MAC_BUF(mac);
 
        lbs_deb_enter(LBS_DEB_JOIN);
 
@@ -1819,9 +1813,9 @@ static int lbs_adhoc_post(struct lbs_private *priv, struct cmd_header *resp)
        wrqu.ap_addr.sa_family = ARPHRD_ETHER;
        wireless_send_event(priv->dev, SIOCGIWAP, &wrqu, NULL);
 
-       lbs_deb_join("ADHOC_RESP: Joined/started '%s', BSSID %s, channel %d\n",
+       lbs_deb_join("ADHOC_RESP: Joined/started '%s', BSSID %pM, channel %d\n",
                     escape_essid(bss->ssid, bss->ssid_len),
-                    print_mac(mac, priv->curbssparams.bssid),
+                    priv->curbssparams.bssid,
                     priv->curbssparams.channel);
 
 done:
index 8265c7d..d45b07c 100644 (file)
@@ -87,7 +87,6 @@ int lbs_update_hw_spec(struct lbs_private *priv)
        struct cmd_ds_get_hw_spec cmd;
        int ret = -1;
        u32 i;
-       DECLARE_MAC_BUF(mac);
 
        lbs_deb_enter(LBS_DEB_CMD);
 
@@ -110,8 +109,8 @@ int lbs_update_hw_spec(struct lbs_private *priv)
         * CF card    firmware 5.0.16p0:   cap 0x00000303
         * USB dongle firmware 5.110.17p2: cap 0x00000303
         */
-       lbs_pr_info("%s, fw %u.%u.%up%u, cap 0x%08x\n",
-               print_mac(mac, cmd.permanentaddr),
+       lbs_pr_info("%pM, fw %u.%u.%up%u, cap 0x%08x\n",
+               cmd.permanentaddr,
                priv->fwrelease >> 24 & 0xff,
                priv->fwrelease >> 16 & 0xff,
                priv->fwrelease >>  8 & 0xff,
index 0aa0ce3..5f6bee4 100644 (file)
@@ -65,7 +65,6 @@ static ssize_t lbs_getscantable(struct file *file, char __user *userbuf,
        int numscansdone = 0, res;
        unsigned long addr = get_zeroed_page(GFP_KERNEL);
        char *buf = (char *)addr;
-       DECLARE_MAC_BUF(mac);
        struct bss_descriptor * iter_bss;
 
        pos += snprintf(buf+pos, len-pos,
@@ -77,10 +76,9 @@ static ssize_t lbs_getscantable(struct file *file, char __user *userbuf,
                u16 privacy = (iter_bss->capability & WLAN_CAPABILITY_PRIVACY);
                u16 spectrum_mgmt = (iter_bss->capability & WLAN_CAPABILITY_SPECTRUM_MGMT);
 
-               pos += snprintf(buf+pos, len-pos,
-                       "%02u| %03d | %04d | %s |",
+               pos += snprintf(buf+pos, len-pos, "%02u| %03d | %04d | %pM |",
                        numscansdone, iter_bss->channel, iter_bss->rssi,
-                       print_mac(mac, iter_bss->bssid));
+                       iter_bss->bssid);
                pos += snprintf(buf+pos, len-pos, " %04x-", iter_bss->capability);
                pos += snprintf(buf+pos, len-pos, "%c%c%c |",
                                ibss ? 'A' : 'I', privacy ? 'P' : ' ',
index 73dc8c7..34a47f6 100644 (file)
@@ -588,7 +588,6 @@ static int lbs_add_mcast_addrs(struct cmd_ds_mac_multicast_adr *cmd,
 {
        int i = nr_addrs;
        struct dev_mc_list *mc_list;
-       DECLARE_MAC_BUF(mac);
 
        if ((dev->flags & (IFF_UP|IFF_MULTICAST)) != (IFF_UP|IFF_MULTICAST))
                return nr_addrs;
@@ -596,16 +595,16 @@ static int lbs_add_mcast_addrs(struct cmd_ds_mac_multicast_adr *cmd,
        netif_addr_lock_bh(dev);
        for (mc_list = dev->mc_list; mc_list; mc_list = mc_list->next) {
                if (mac_in_list(cmd->maclist, nr_addrs, mc_list->dmi_addr)) {
-                       lbs_deb_net("mcast address %s:%s skipped\n", dev->name,
-                                   print_mac(mac, mc_list->dmi_addr));
+                       lbs_deb_net("mcast address %s:%pM skipped\n", dev->name,
+                                   mc_list->dmi_addr);
                        continue;
                }
 
                if (i == MRVDRV_MAX_MULTICAST_LIST_SIZE)
                        break;
                memcpy(&cmd->maclist[6*i], mc_list->dmi_addr, ETH_ALEN);
-               lbs_deb_net("mcast address %s:%s added to filter\n", dev->name,
-                           print_mac(mac, mc_list->dmi_addr));
+               lbs_deb_net("mcast address %s:%pM added to filter\n", dev->name,
+                           mc_list->dmi_addr);
                i++;
        }
        netif_addr_unlock_bh(dev);
index 22c4c61..351b3f6 100644 (file)
@@ -359,7 +359,6 @@ int lbs_scan_networks(struct lbs_private *priv, int full_scan)
 #ifdef CONFIG_LIBERTAS_DEBUG
        struct bss_descriptor *iter;
        int i = 0;
-       DECLARE_MAC_BUF(mac);
 #endif
 
        lbs_deb_enter_args(LBS_DEB_SCAN, "full_scan %d", full_scan);
@@ -451,8 +450,8 @@ int lbs_scan_networks(struct lbs_private *priv, int full_scan)
        mutex_lock(&priv->lock);
        lbs_deb_scan("scan table:\n");
        list_for_each_entry(iter, &priv->network_list, list)
-               lbs_deb_scan("%02d: BSSID %s, RSSI %d, SSID '%s'\n",
-                            i++, print_mac(mac, iter->bssid), iter->rssi,
+               lbs_deb_scan("%02d: BSSID %pM, RSSI %d, SSID '%s'\n",
+                            i++, iter->bssid, iter->rssi,
                             escape_essid(iter->ssid, iter->ssid_len));
        mutex_unlock(&priv->lock);
 #endif
@@ -512,7 +511,6 @@ static int lbs_process_bss(struct bss_descriptor *bss,
        struct ieeetypes_dsparamset *pDS;
        struct ieeetypes_cfparamset *pCF;
        struct ieeetypes_ibssparamset *pibss;
-       DECLARE_MAC_BUF(mac);
        struct ieeetypes_countryinfoset *pcountryinfo;
        uint8_t *pos, *end, *p;
        uint8_t n_ex_rates = 0, got_basic_rates = 0, n_basic_rates = 0;
@@ -544,7 +542,7 @@ static int lbs_process_bss(struct bss_descriptor *bss,
        *bytesleft -= beaconsize;
 
        memcpy(bss->bssid, pos, ETH_ALEN);
-       lbs_deb_scan("process_bss: BSSID %s\n", print_mac(mac, bss->bssid));
+       lbs_deb_scan("process_bss: BSSID %pM\n", bss->bssid);
        pos += ETH_ALEN;
 
        if ((end - pos) < 12) {
@@ -1151,7 +1149,6 @@ static int lbs_ret_80211_scan(struct lbs_private *priv, unsigned long dummy,
                struct bss_descriptor new;
                struct bss_descriptor *found = NULL;
                struct bss_descriptor *oldest = NULL;
-               DECLARE_MAC_BUF(mac);
 
                /* Process the data fields and IEs returned for this BSS */
                memset(&new, 0, sizeof (struct bss_descriptor));
@@ -1190,7 +1187,7 @@ static int lbs_ret_80211_scan(struct lbs_private *priv, unsigned long dummy,
                        continue;
                }
 
-               lbs_deb_scan("SCAN_RESP: BSSID %s\n", print_mac(mac, new.bssid));
+               lbs_deb_scan("SCAN_RESP: BSSID %pM\n", new.bssid);
 
                /* Copy the locally created newbssentry to the scan table */
                memcpy(found, &new, offsetof(struct bss_descriptor, list));
index 82c3e5a..04f0bf2 100644 (file)
@@ -2104,7 +2104,6 @@ static int lbs_set_wap(struct net_device *dev, struct iw_request_info *info,
        struct lbs_private *priv = dev->priv;
        struct assoc_request * assoc_req;
        int ret = 0;
-       DECLARE_MAC_BUF(mac);
 
        lbs_deb_enter(LBS_DEB_WEXT);
 
@@ -2114,7 +2113,7 @@ static int lbs_set_wap(struct net_device *dev, struct iw_request_info *info,
        if (awrq->sa_family != ARPHRD_ETHER)
                return -EINVAL;
 
-       lbs_deb_wext("ASSOC: WAP: sa_data %s\n", print_mac(mac, awrq->sa_data));
+       lbs_deb_wext("ASSOC: WAP: sa_data %pM\n", awrq->sa_data);
 
        mutex_lock(&priv->lock);
 
index fdbcf8b..3d3914c 100644 (file)
@@ -79,7 +79,6 @@ int lbtf_update_hw_spec(struct lbtf_private *priv)
        struct cmd_ds_get_hw_spec cmd;
        int ret = -1;
        u32 i;
-       DECLARE_MAC_BUF(mac);
 
        memset(&cmd, 0, sizeof(cmd));
        cmd.hdr.size = cpu_to_le16(sizeof(cmd));
@@ -96,8 +95,8 @@ int lbtf_update_hw_spec(struct lbtf_private *priv)
        priv->fwrelease = (priv->fwrelease << 8) |
                (priv->fwrelease >> 24 & 0xff);
 
-       printk(KERN_INFO "libertastf: %s, fw %u.%u.%up%u, cap 0x%08x\n",
-               print_mac(mac, cmd.permanentaddr),
+       printk(KERN_INFO "libertastf: %pM, fw %u.%u.%up%u, cap 0x%08x\n",
+               cmd.permanentaddr,
                priv->fwrelease >> 24 & 0xff,
                priv->fwrelease >> 16 & 0xff,
                priv->fwrelease >>  8 & 0xff,
index 1a019e9..88c5eec 100644 (file)
@@ -301,10 +301,9 @@ static void mac80211_hwsim_stop(struct ieee80211_hw *hw)
 static int mac80211_hwsim_add_interface(struct ieee80211_hw *hw,
                                        struct ieee80211_if_init_conf *conf)
 {
-       DECLARE_MAC_BUF(mac);
-       printk(KERN_DEBUG "%s:%s (type=%d mac_addr=%s)\n",
+       printk(KERN_DEBUG "%s:%s (type=%d mac_addr=%pM)\n",
               wiphy_name(hw->wiphy), __func__, conf->type,
-              print_mac(mac, conf->mac_addr));
+              conf->mac_addr);
        hwsim_set_magic(conf->vif);
        return 0;
 }
@@ -313,10 +312,9 @@ static int mac80211_hwsim_add_interface(struct ieee80211_hw *hw,
 static void mac80211_hwsim_remove_interface(
        struct ieee80211_hw *hw, struct ieee80211_if_init_conf *conf)
 {
-       DECLARE_MAC_BUF(mac);
-       printk(KERN_DEBUG "%s:%s (type=%d mac_addr=%s)\n",
+       printk(KERN_DEBUG "%s:%s (type=%d mac_addr=%pM)\n",
               wiphy_name(hw->wiphy), __func__, conf->type,
-              print_mac(mac, conf->mac_addr));
+              conf->mac_addr);
        hwsim_check_magic(conf->vif);
        hwsim_clear_magic(conf->vif);
 }
@@ -505,7 +503,6 @@ static int __init init_mac80211_hwsim(void)
        u8 addr[ETH_ALEN];
        struct mac80211_hwsim_data *data;
        struct ieee80211_hw *hw;
-       DECLARE_MAC_BUF(mac);
 
        if (radios < 1 || radios > 100)
                return -EINVAL;
@@ -588,9 +585,9 @@ static int __init init_mac80211_hwsim(void)
                        goto failed_hw;
                }
 
-               printk(KERN_DEBUG "%s: hwaddr %s registered\n",
+               printk(KERN_DEBUG "%s: hwaddr %pM registered\n",
                       wiphy_name(hw->wiphy),
-                      print_mac(mac, hw->wiphy->perm_addr));
+                      hw->wiphy->perm_addr);
 
                setup_timer(&data->beacon_timer, mac80211_hwsim_beacon,
                            (unsigned long) hw);
index a670f36..be80c00 100644 (file)
@@ -737,7 +737,6 @@ static int netwave_pcmcia_config(struct pcmcia_device *link) {
     win_req_t req;
     memreq_t mem;
     u_char __iomem *ramBase = NULL;
-    DECLARE_MAC_BUF(mac);
 
     DEBUG(0, "netwave_pcmcia_config(0x%p)\n", link);
 
@@ -808,12 +807,12 @@ static int netwave_pcmcia_config(struct pcmcia_device *link) {
        dev->dev_addr[i] = readb(ramBase + NETWAVE_EREG_PA + i);
 
     printk(KERN_INFO "%s: Netwave: port %#3lx, irq %d, mem %lx, "
-          "id %c%c, hw_addr %s\n",
+          "id %c%c, hw_addr %pM\n",
           dev->name, dev->base_addr, dev->irq,
           (u_long) ramBase,
           (int) readb(ramBase+NETWAVE_EREG_NI),
           (int) readb(ramBase+NETWAVE_EREG_NI+1),
-          print_mac(mac, dev->dev_addr));
+          dev->dev_addr);
 
     /* get revision words */
     printk(KERN_DEBUG "Netwave_reset: revision %04x %04x\n", 
index e0512e4..366556f 100644 (file)
@@ -1477,12 +1477,11 @@ static void orinoco_rx(struct net_device *dev,
                           MICHAEL_MIC_LEN)) {
                        union iwreq_data wrqu;
                        struct iw_michaelmicfailure wxmic;
-                       DECLARE_MAC_BUF(mac);
 
                        printk(KERN_WARNING "%s: "
-                              "Invalid Michael MIC in data frame from %s, "
+                              "Invalid Michael MIC in data frame from %pM, "
                               "using key %i\n",
-                              dev->name, print_mac(mac, src), key_id);
+                              dev->name, src, key_id);
 
                        /* TODO: update stats */
 
@@ -3277,7 +3276,6 @@ static int orinoco_init(struct net_device *dev)
        struct hermes_idstring nickbuf;
        u16 reclen;
        int len;
-       DECLARE_MAC_BUF(mac);
 
        /* No need to lock, the hw_unavailable flag is already set in
         * alloc_orinocodev() */
@@ -3348,8 +3346,8 @@ static int orinoco_init(struct net_device *dev)
                goto out;
        }
 
-       printk(KERN_DEBUG "%s: MAC address %s\n",
-              dev->name, print_mac(mac, dev->dev_addr));
+       printk(KERN_DEBUG "%s: MAC address %pM\n",
+              dev->name, dev->dev_addr);
 
        /* Get the station name */
        err = hermes_read_ltv(hw, USER_BAP, HERMES_RID_CNFOWNNAME,
index 827ca03..6370c44 100644 (file)
@@ -320,7 +320,6 @@ static int p54_parse_eeprom(struct ieee80211_hw *dev, void *eeprom, int len)
        int err;
        u8 *end = (u8 *)eeprom + len;
        u16 synth = 0;
-       DECLARE_MAC_BUF(mac);
 
        wrap = (struct eeprom_pda_wrap *) eeprom;
        entry = (void *)wrap->data + le16_to_cpu(wrap->len);
@@ -446,9 +445,9 @@ static int p54_parse_eeprom(struct ieee80211_hw *dev, void *eeprom, int len)
                SET_IEEE80211_PERM_ADDR(dev, perm_addr);
        }
 
-       printk(KERN_INFO "%s: hwaddr %s, MAC:isl38%02x RF:%s\n",
+       printk(KERN_INFO "%s: hwaddr %pM, MAC:isl38%02x RF:%s\n",
                wiphy_name(dev->wiphy),
-               print_mac(mac, dev->wiphy->perm_addr),
+               dev->wiphy->perm_addr,
                priv->version, p54_rf_chips[priv->rxhw]);
 
        return 0;
index 88b3cad..bba2c90 100644 (file)
@@ -481,7 +481,6 @@ static int __devinit p54p_probe(struct pci_dev *pdev,
        struct ieee80211_hw *dev;
        unsigned long mem_addr, mem_len;
        int err;
-       DECLARE_MAC_BUF(mac);
 
        err = pci_enable_device(pdev);
        if (err) {
index 75d749b..68f1b80 100644 (file)
@@ -786,7 +786,6 @@ static int __devinit p54u_probe(struct usb_interface *intf,
        struct p54u_priv *priv;
        int err;
        unsigned int i, recognized_pipes;
-       DECLARE_MAC_BUF(mac);
 
        dev = p54_init_common(sizeof(*priv));
        if (!dev) {
index 16e68f4..57a150a 100644 (file)
@@ -2028,12 +2028,11 @@ static void
 format_event(islpci_private *priv, char *dest, const char *str,
             const struct obj_mlme *mlme, u16 *length, int error)
 {
-       DECLARE_MAC_BUF(mac);
        int n = snprintf(dest, IW_CUSTOM_MAX,
-                        "%s %s %s %s (%2.2X)",
+                        "%s %s %pM %s (%2.2X)",
                         str,
                         ((priv->iw_mode == IW_MODE_MASTER) ? "from" : "to"),
-                        print_mac(mac, mlme->address),
+                        mlme->address,
                         (error ? (mlme->code ? " : REJECTED " : " : ACCEPTED ")
                          : ""), mlme->code);
        BUG_ON(n > IW_CUSTOM_MAX);
@@ -2113,7 +2112,6 @@ prism54_wpa_bss_ie_add(islpci_private *priv, u8 *bssid,
 {
        struct list_head *ptr;
        struct islpci_bss_wpa_ie *bss = NULL;
-       DECLARE_MAC_BUF(mac);
 
        if (wpa_ie_len > MAX_WPA_IE_LEN)
                wpa_ie_len = MAX_WPA_IE_LEN;
@@ -2154,7 +2152,7 @@ prism54_wpa_bss_ie_add(islpci_private *priv, u8 *bssid,
                bss->last_update = jiffies;
        } else {
                printk(KERN_DEBUG "Failed to add BSS WPA entry for "
-                      "%s\n", print_mac(mac, bssid));
+                      "%pM\n", bssid);
        }
 
        /* expire old entries from WPA list */
@@ -2219,7 +2217,6 @@ prism54_process_bss_data(islpci_private *priv, u32 oid, u8 *addr,
 {
        struct ieee80211_beacon_phdr *hdr;
        u8 *pos, *end;
-       DECLARE_MAC_BUF(mac);
 
        if (!priv->wpa)
                return;
@@ -2230,7 +2227,7 @@ prism54_process_bss_data(islpci_private *priv, u32 oid, u8 *addr,
        while (pos < end) {
                if (pos + 2 + pos[1] > end) {
                        printk(KERN_DEBUG "Parsing Beacon/ProbeResp failed "
-                              "for %s\n", print_mac(mac, addr));
+                              "for %pM\n", addr);
                        return;
                }
                if (pos[0] == WLAN_EID_GENERIC && pos[1] >= 4 &&
@@ -2269,7 +2266,6 @@ prism54_process_trap_helper(islpci_private *priv, enum oid_num_t oid,
        size_t len = 0; /* u16, better? */
        u8 *payload = NULL, *pos = NULL;
        int ret;
-       DECLARE_MAC_BUF(mac);
 
        /* I think all trapable objects are listed here.
         * Some oids have a EX version. The difference is that they are emitted
@@ -2358,8 +2354,8 @@ prism54_process_trap_helper(islpci_private *priv, enum oid_num_t oid,
                        break;
 
                memcpy(&confirm->address, mlmeex->address, ETH_ALEN);
-               printk(KERN_DEBUG "Authenticate from: address:\t%s\n",
-                      print_mac(mac, mlmeex->address));
+               printk(KERN_DEBUG "Authenticate from: address:\t%pM\n",
+                      mlmeex->address);
                confirm->id = -1; /* or mlmeex->id ? */
                confirm->state = 0; /* not used */
                confirm->code = 0;
@@ -2404,8 +2400,8 @@ prism54_process_trap_helper(islpci_private *priv, enum oid_num_t oid,
                wpa_ie_len = prism54_wpa_bss_ie_get(priv, mlmeex->address, wpa_ie);
 
                if (!wpa_ie_len) {
-                       printk(KERN_DEBUG "No WPA IE found from address:\t%s\n",
-                              print_mac(mac, mlmeex->address));
+                       printk(KERN_DEBUG "No WPA IE found from address:\t%pM\n",
+                              mlmeex->address);
                        kfree(confirm);
                        break;
                }
@@ -2441,8 +2437,8 @@ prism54_process_trap_helper(islpci_private *priv, enum oid_num_t oid,
                wpa_ie_len = prism54_wpa_bss_ie_get(priv, mlmeex->address, wpa_ie);
 
                if (!wpa_ie_len) {
-                       printk(KERN_DEBUG "No WPA IE found from address:\t%s\n",
-                              print_mac(mac, mlmeex->address));
+                       printk(KERN_DEBUG "No WPA IE found from address:\t%pM\n",
+                              mlmeex->address);
                        kfree(confirm);
                        break;
                }
index 1404a57..bf0b929 100644 (file)
@@ -414,7 +414,6 @@ static int ray_config(struct pcmcia_device *link)
     memreq_t mem;
     struct net_device *dev = (struct net_device *)link->priv;
     ray_dev_t *local = netdev_priv(dev);
-    DECLARE_MAC_BUF(mac);
 
     DEBUG(1, "ray_config(0x%p)\n", link);
 
@@ -485,8 +484,8 @@ static int ray_config(struct pcmcia_device *link)
     strcpy(local->node.dev_name, dev->name);
     link->dev_node = &local->node;
 
-    printk(KERN_INFO "%s: RayLink, irq %d, hw_addr %s\n",
-       dev->name, dev->irq, print_mac(mac, dev->dev_addr));
+    printk(KERN_INFO "%s: RayLink, irq %d, hw_addr %pM\n",
+       dev->name, dev->irq, dev->dev_addr);
 
     return 0;
 
@@ -2595,7 +2594,6 @@ static int ray_cs_proc_show(struct seq_file *m, void *v)
     UCHAR *p;
     struct freq_hop_element *pfh;
     UCHAR c[33];
-    DECLARE_MAC_BUF(mac);
 
     link = this_device;
     if (!link)
@@ -2623,8 +2621,7 @@ static int ray_cs_proc_show(struct seq_file *m, void *v)
                    nettype[local->sparm.b5.a_network_type], c);
 
     p = local->bss_id;
-    seq_printf(m, "BSSID                = %s\n",
-                   print_mac(mac, p));
+    seq_printf(m, "BSSID                = %pM\n", p);
 
     seq_printf(m, "Country code         = %d\n",
                    local->sparm.b5.a_curr_country_code);
index 2b41489..bd059e3 100644 (file)
@@ -1276,12 +1276,11 @@ static int rndis_iw_get_bssid(struct net_device *dev,
        struct usbnet *usbdev = dev->priv;
        unsigned char bssid[ETH_ALEN];
        int ret;
-       DECLARE_MAC_BUF(mac);
 
        ret = get_bssid(usbdev, bssid);
 
        if (ret == 0)
-               devdbg(usbdev, "SIOCGIWAP: %s", print_mac(mac, bssid));
+               devdbg(usbdev, "SIOCGIWAP: %pM", bssid);
        else
                devdbg(usbdev, "SIOCGIWAP: <not associated>");
 
@@ -1297,10 +1296,9 @@ static int rndis_iw_set_bssid(struct net_device *dev,
 {
        struct usbnet *usbdev = dev->priv;
        u8 *bssid = (u8 *)wrqu->ap_addr.sa_data;
-       DECLARE_MAC_BUF(mac);
        int ret;
 
-       devdbg(usbdev, "SIOCSIWAP: %s", print_mac(mac, bssid));
+       devdbg(usbdev, "SIOCSIWAP: %pM", bssid);
 
        ret = rndis_set_oid(usbdev, OID_802_11_BSSID, bssid, ETH_ALEN);
 
@@ -1660,11 +1658,10 @@ static char *rndis_translate_scan(struct net_device *dev,
        u32 beacon, atim;
        struct iw_event iwe;
        unsigned char sbuf[32];
-       DECLARE_MAC_BUF(mac);
 
        bssid_len = le32_to_cpu(bssid->length);
 
-       devdbg(usbdev, "BSSID %s", print_mac(mac, bssid->mac));
+       devdbg(usbdev, "BSSID %pM", bssid->mac);
        iwe.cmd = SIOCGIWAP;
        iwe.u.ap_addr.sa_family = ARPHRD_ETHER;
        memcpy(iwe.u.ap_addr.sa_data, bssid->mac, ETH_ALEN);
index 08cb9ee..96eaf5f 100644 (file)
@@ -1313,10 +1313,8 @@ static int rt2400pci_validate_eeprom(struct rt2x00_dev *rt2x00dev)
         */
        mac = rt2x00_eeprom_addr(rt2x00dev, EEPROM_MAC_ADDR_0);
        if (!is_valid_ether_addr(mac)) {
-               DECLARE_MAC_BUF(macbuf);
-
                random_ether_addr(mac);
-               EEPROM(rt2x00dev, "MAC: %s\n", print_mac(macbuf, mac));
+               EEPROM(rt2x00dev, "MAC: %pM\n", mac);
        }
 
        rt2x00_eeprom_read(rt2x00dev, EEPROM_ANTENNA, &word);
index ef42cc0..8b772ab 100644 (file)
@@ -1451,11 +1451,8 @@ static int rt2500pci_validate_eeprom(struct rt2x00_dev *rt2x00dev)
         */
        mac = rt2x00_eeprom_addr(rt2x00dev, EEPROM_MAC_ADDR_0);
        if (!is_valid_ether_addr(mac)) {
-               DECLARE_MAC_BUF(macbuf);
-
                random_ether_addr(mac);
-               EEPROM(rt2x00dev, "MAC: %s\n",
-                      print_mac(macbuf, mac));
+               EEPROM(rt2x00dev, "MAC: %pM\n", mac);
        }
 
        rt2x00_eeprom_read(rt2x00dev, EEPROM_ANTENNA, &word);
index d3bf7bb..d19bee4 100644 (file)
@@ -1319,10 +1319,8 @@ static int rt2500usb_validate_eeprom(struct rt2x00_dev *rt2x00dev)
         */
        mac = rt2x00_eeprom_addr(rt2x00dev, EEPROM_MAC_ADDR_0);
        if (!is_valid_ether_addr(mac)) {
-               DECLARE_MAC_BUF(macbuf);
-
                random_ether_addr(mac);
-               EEPROM(rt2x00dev, "MAC: %s\n", print_mac(macbuf, mac));
+               EEPROM(rt2x00dev, "MAC: %pM\n", mac);
        }
 
        rt2x00_eeprom_read(rt2x00dev, EEPROM_ANTENNA, &word);
index adf2876..62449da 100644 (file)
@@ -222,8 +222,7 @@ static int rt2x00pci_alloc_reg(struct rt2x00_dev *rt2x00dev)
 {
        struct pci_dev *pci_dev = to_pci_dev(rt2x00dev->dev);
 
-       rt2x00dev->csr.base = ioremap(pci_resource_start(pci_dev, 0),
-                                     pci_resource_len(pci_dev, 0));
+       rt2x00dev->csr.base = pci_ioremap_bar(pci_dev, 0);
        if (!rt2x00dev->csr.base)
                goto exit;
 
index a461620..45f69f8 100644 (file)
@@ -2175,10 +2175,8 @@ static int rt61pci_validate_eeprom(struct rt2x00_dev *rt2x00dev)
         */
        mac = rt2x00_eeprom_addr(rt2x00dev, EEPROM_MAC_ADDR_0);
        if (!is_valid_ether_addr(mac)) {
-               DECLARE_MAC_BUF(macbuf);
-
                random_ether_addr(mac);
-               EEPROM(rt2x00dev, "MAC: %s\n", print_mac(macbuf, mac));
+               EEPROM(rt2x00dev, "MAC: %pM\n", mac);
        }
 
        rt2x00_eeprom_read(rt2x00dev, EEPROM_ANTENNA, &word);
index 934f8e0..336fecb 100644 (file)
@@ -1781,10 +1781,8 @@ static int rt73usb_validate_eeprom(struct rt2x00_dev *rt2x00dev)
         */
        mac = rt2x00_eeprom_addr(rt2x00dev, EEPROM_MAC_ADDR_0);
        if (!is_valid_ether_addr(mac)) {
-               DECLARE_MAC_BUF(macbuf);
-
                random_ether_addr(mac);
-               EEPROM(rt2x00dev, "MAC: %s\n", print_mac(macbuf, mac));
+               EEPROM(rt2x00dev, "MAC: %pM\n", mac);
        }
 
        rt2x00_eeprom_read(rt2x00dev, EEPROM_ANTENNA, &word);
index df7e78e..9de8f57 100644 (file)
@@ -806,7 +806,6 @@ static int __devinit rtl8180_probe(struct pci_dev *pdev,
        const char *chip_name, *rf_name = NULL;
        u32 reg;
        u16 eeprom_val;
-       DECLARE_MAC_BUF(mac);
 
        err = pci_enable_device(pdev);
        if (err) {
@@ -1002,8 +1001,8 @@ static int __devinit rtl8180_probe(struct pci_dev *pdev,
                goto err_iounmap;
        }
 
-       printk(KERN_INFO "%s: hwaddr %s, %s + %s\n",
-              wiphy_name(dev->wiphy), print_mac(mac, dev->wiphy->perm_addr),
+       printk(KERN_INFO "%s: hwaddr %pM, %s + %s\n",
+              wiphy_name(dev->wiphy), dev->wiphy->perm_addr,
               chip_name, priv->rf->name);
 
        return 0;
index 431e3c7..9ceae90 100644 (file)
@@ -1026,7 +1026,6 @@ static int __devinit rtl8187_probe(struct usb_interface *intf,
        const char *chip_name;
        u16 txpwr, reg;
        int err, i;
-       DECLARE_MAC_BUF(mac);
 
        dev = ieee80211_alloc_hw(sizeof(*priv), &rtl8187_ops);
        if (!dev) {
@@ -1209,8 +1208,8 @@ static int __devinit rtl8187_probe(struct usb_interface *intf,
        }
        mutex_init(&priv->conf_mutex);
 
-       printk(KERN_INFO "%s: hwaddr %s, %s V%d + %s\n",
-              wiphy_name(dev->wiphy), print_mac(mac, dev->wiphy->perm_addr),
+       printk(KERN_INFO "%s: hwaddr %pM, %s V%d + %s\n",
+              wiphy_name(dev->wiphy), dev->wiphy->perm_addr,
               chip_name, priv->asic_rev, priv->rf->name);
 
        return 0;
index e939a73..6fa3d79 100644 (file)
@@ -859,8 +859,6 @@ static void wv_82586_reconfig(struct net_device * dev)
  */
 static void wv_psa_show(psa_t * p)
 {
-       DECLARE_MAC_BUF(mac);
-
        printk(KERN_DEBUG "##### WaveLAN PSA contents: #####\n");
        printk(KERN_DEBUG "psa_io_base_addr_1: 0x%02X %02X %02X %02X\n",
               p->psa_io_base_addr_1,
@@ -872,13 +870,10 @@ static void wv_psa_show(psa_t * p)
        printk(KERN_DEBUG "psa_holi_params: 0x%02x, ", p->psa_holi_params);
        printk("psa_int_req_no: %d\n", p->psa_int_req_no);
 #ifdef DEBUG_SHOW_UNUSED
-       printk(KERN_DEBUG "psa_unused0[]: %s\n",
-              print_mac(mac, p->psa_unused0));
+       printk(KERN_DEBUG "psa_unused0[]: %pM\n", p->psa_unused0);
 #endif                         /* DEBUG_SHOW_UNUSED */
-       printk(KERN_DEBUG "psa_univ_mac_addr[]: %s\n",
-              print_mac(mac, p->psa_univ_mac_addr));
-       printk(KERN_DEBUG "psa_local_mac_addr[]: %s\n",
-              print_mac(mac, p->psa_local_mac_addr));
+       printk(KERN_DEBUG "psa_univ_mac_addr[]: %pM\n", p->psa_univ_mac_addr);
+       printk(KERN_DEBUG "psa_local_mac_addr[]: %pM\n", p->psa_local_mac_addr);
        printk(KERN_DEBUG "psa_univ_local_sel: %d, ",
               p->psa_univ_local_sel);
        printk("psa_comp_number: %d, ", p->psa_comp_number);
@@ -1220,14 +1215,13 @@ static inline void wv_packet_info(u8 * p,       /* Packet to dump */
 {                              /* Name of the function */
        int i;
        int maxi;
-       DECLARE_MAC_BUF(mac);
 
        printk(KERN_DEBUG
-              "%s: %s(): dest %s, length %d\n",
-              msg1, msg2, print_mac(mac, p), length);
+              "%s: %s(): dest %pM, length %d\n",
+              msg1, msg2, p, length);
        printk(KERN_DEBUG
-              "%s: %s(): src %s, type 0x%02X%02X\n",
-              msg1, msg2, print_mac(mac, &p[6]), p[12], p[13]);
+              "%s: %s(): src %pM, type 0x%02X%02X\n",
+              msg1, msg2, &p[6], p[12], p[13]);
 
 #ifdef DEBUG_PACKET_DUMP
 
@@ -1258,9 +1252,6 @@ static void wv_init_info(struct net_device * dev)
        short ioaddr = dev->base_addr;
        net_local *lp = (net_local *) dev->priv;
        psa_t psa;
-#ifdef DEBUG_BASIC_SHOW
-       DECLARE_MAC_BUF(mac);
-#endif
 
        /* Read the parameter storage area */
        psa_read(ioaddr, lp->hacr, 0, (unsigned char *) &psa, sizeof(psa));
@@ -1277,8 +1268,8 @@ static void wv_init_info(struct net_device * dev)
 
 #ifdef DEBUG_BASIC_SHOW
        /* Now, let's go for the basic stuff. */
-       printk(KERN_NOTICE "%s: WaveLAN at %#x, %s, IRQ %d",
-              dev->name, ioaddr, print_mac(mac, dev->dev_addr), dev->irq);
+       printk(KERN_NOTICE "%s: WaveLAN at %#x, %pM, IRQ %d",
+              dev->name, ioaddr, dev->dev_addr, dev->irq);
 
        /* Print current network ID. */
        if (psa.psa_nwid_select)
@@ -3565,15 +3556,11 @@ static void wv_82586_config(struct net_device * dev)
                              WAVELAN_ADDR_SIZE >> 1);
 
 #ifdef DEBUG_CONFIG_INFO
- {
-               DECLARE_MAC_BUF(mac);
                printk(KERN_DEBUG
                       "%s: wv_82586_config(): set %d multicast addresses:\n",
                       dev->name, lp->mc_count);
                for (dmi = dev->mc_list; dmi; dmi = dmi->next)
-                       printk(KERN_DEBUG " %s\n",
-                              print_mac(mac, dmi->dmi_addr));
- }
+                       printk(KERN_DEBUG " %pM\n", dmi->dmi_addr);
 #endif
        }
 
index e124b1d..0a3bacc 100644 (file)
@@ -1020,7 +1020,6 @@ wv_82593_reconfig(struct net_device *     dev)
 static void
 wv_psa_show(psa_t *    p)
 {
-  DECLARE_MAC_BUF(mac);
   printk(KERN_DEBUG "##### wavelan psa contents: #####\n");
   printk(KERN_DEBUG "psa_io_base_addr_1: 0x%02X %02X %02X %02X\n",
         p->psa_io_base_addr_1,
@@ -1034,13 +1033,10 @@ wv_psa_show(psa_t *     p)
   printk(KERN_DEBUG "psa_holi_params: 0x%02x, ", p->psa_holi_params);
   printk("psa_int_req_no: %d\n", p->psa_int_req_no);
 #ifdef DEBUG_SHOW_UNUSED
-  printk(KERN_DEBUG "psa_unused0[]: %s\n",
-        print_mac(mac, p->psa_unused0));
+  printk(KERN_DEBUG "psa_unused0[]: %pM\n", p->psa_unused0);
 #endif /* DEBUG_SHOW_UNUSED */
-  printk(KERN_DEBUG "psa_univ_mac_addr[]: %s\n",
-        print_mac(mac, p->psa_univ_mac_addr));
-  printk(KERN_DEBUG "psa_local_mac_addr[]: %s\n",
-        print_mac(mac, p->psa_local_mac_addr));
+  printk(KERN_DEBUG "psa_univ_mac_addr[]: %pM\n", p->psa_univ_mac_addr);
+  printk(KERN_DEBUG "psa_local_mac_addr[]: %pM\n", p->psa_local_mac_addr);
   printk(KERN_DEBUG "psa_univ_local_sel: %d, ", p->psa_univ_local_sel);
   printk("psa_comp_number: %d, ", p->psa_comp_number);
   printk("psa_thr_pre_set: 0x%02x\n", p->psa_thr_pre_set);
@@ -1238,12 +1234,11 @@ wv_packet_info(u_char *         p,              /* Packet to dump */
 {
   int          i;
   int          maxi;
-  DECLARE_MAC_BUF(mac);
 
-  printk(KERN_DEBUG "%s: %s(): dest %s, length %d\n",
-        msg1, msg2, print_mac(mac, p), length);
-  printk(KERN_DEBUG "%s: %s(): src %s, type 0x%02X%02X\n",
-        msg1, msg2, print_mac(mac, &p[6]), p[12], p[13]);
+  printk(KERN_DEBUG "%s: %s(): dest %pM, length %d\n",
+        msg1, msg2, p, length);
+  printk(KERN_DEBUG "%s: %s(): src %pM, type 0x%02X%02X\n",
+        msg1, msg2, &p[6], p[12], p[13]);
 
 #ifdef DEBUG_PACKET_DUMP
 
@@ -1274,7 +1269,6 @@ wv_init_info(struct net_device *  dev)
 {
   unsigned int base = dev->base_addr;
   psa_t                psa;
-  DECLARE_MAC_BUF(mac);
 
   /* Read the parameter storage area */
   psa_read(dev, 0, (unsigned char *) &psa, sizeof(psa));
@@ -1291,10 +1285,8 @@ wv_init_info(struct net_device * dev)
 
 #ifdef DEBUG_BASIC_SHOW
   /* Now, let's go for the basic stuff */
-  printk(KERN_NOTICE "%s: WaveLAN: port %#x, irq %d, "
-        "hw_addr %s",
-        dev->name, base, dev->irq,
-        print_mac(mac, dev->dev_addr));
+  printk(KERN_NOTICE "%s: WaveLAN: port %#x, irq %d, hw_addr %pM",
+        dev->name, base, dev->irq, dev->dev_addr);
 
   /* Print current network id */
   if(psa.psa_nwid_select)
@@ -2243,13 +2235,7 @@ static int wavelan_set_wap(struct net_device *dev,
                           char *extra)
 {
 #ifdef DEBUG_IOCTL_INFO
-       printk(KERN_DEBUG "Set AP to : %02X:%02X:%02X:%02X:%02X:%02X\n",
-              wrqu->ap_addr.sa_data[0],
-              wrqu->ap_addr.sa_data[1],
-              wrqu->ap_addr.sa_data[2],
-              wrqu->ap_addr.sa_data[3],
-              wrqu->ap_addr.sa_data[4],
-              wrqu->ap_addr.sa_data[5]);
+       printk(KERN_DEBUG "Set AP to : %pM\n", wrqu->ap_addr.sa_data);
 #endif /* DEBUG_IOCTL_INFO */
 
        return -EOPNOTSUPP;
@@ -3647,12 +3633,10 @@ wv_82593_config(struct net_device *     dev)
       int                      addrs_len = WAVELAN_ADDR_SIZE * lp->mc_count;
 
 #ifdef DEBUG_CONFIG_INFO
-      DECLARE_MAC_BUF(mac);
       printk(KERN_DEBUG "%s: wv_hw_config(): set %d multicast addresses:\n",
             dev->name, lp->mc_count);
       for(dmi=dev->mc_list; dmi; dmi=dmi->next)
-       printk(KERN_DEBUG " %s\n",
-              print_mac(mac, dmi->dmi_addr));
+       printk(KERN_DEBUG " %pM\n", dmi->dmi_addr);
 #endif
 
       /* Initialize adapter's ethernet multicast addresses */
index 68789c6..8b96f50 100644 (file)
@@ -860,10 +860,9 @@ static int wl3501_esbq_confirm(struct wl3501_card *this)
 static void wl3501_online(struct net_device *dev)
 {
        struct wl3501_card *this = netdev_priv(dev);
-       DECLARE_MAC_BUF(mac);
 
-       printk(KERN_INFO "%s: Wireless LAN online. BSSID: %s\n",
-              dev->name, print_mac(mac, this->bssid));
+       printk(KERN_INFO "%s: Wireless LAN online. BSSID: %pM\n",
+              dev->name, this->bssid);
        netif_wake_queue(dev);
 }
 
@@ -1965,7 +1964,6 @@ static int wl3501_config(struct pcmcia_device *link)
        struct net_device *dev = link->priv;
        int i = 0, j, last_fn, last_ret;
        struct wl3501_card *this;
-       DECLARE_MAC_BUF(mac);
 
        /* Try allocating IO ports.  This tries a few fixed addresses.  If you
         * want, you can also read the card's config table to pick addresses --
@@ -2024,9 +2022,9 @@ static int wl3501_config(struct pcmcia_device *link)
 
        /* print probe information */
        printk(KERN_INFO "%s: wl3501 @ 0x%3.3x, IRQ %d, "
-              "MAC addr in flash ROM:%s\n",
+              "MAC addr in flash ROM:%pM\n",
               dev->name, this->base_addr, (int)dev->irq,
-              print_mac(mac, dev->dev_addr));
+              dev->dev_addr);
        /*
         * Initialize card parameters - added by jss
         */
index e0ac58b..f151914 100644 (file)
@@ -378,7 +378,6 @@ int zd_write_mac_addr(struct zd_chip *chip, const u8 *mac_addr)
                [0] = { .addr = CR_MAC_ADDR_P1 },
                [1] = { .addr = CR_MAC_ADDR_P2 },
        };
-       DECLARE_MAC_BUF(mac);
 
        if (mac_addr) {
                reqs[0].value = (mac_addr[3] << 24)
@@ -387,8 +386,7 @@ int zd_write_mac_addr(struct zd_chip *chip, const u8 *mac_addr)
                              |  mac_addr[0];
                reqs[1].value = (mac_addr[5] <<  8)
                              |  mac_addr[4];
-               dev_dbg_f(zd_chip_dev(chip),
-                       "mac addr %s\n", print_mac(mac, mac_addr));
+               dev_dbg_f(zd_chip_dev(chip), "mac addr %pM\n", mac_addr);
        } else {
                dev_dbg_f(zd_chip_dev(chip), "set NULL mac\n");
        }
index fe1867b..de45509 100644 (file)
@@ -852,14 +852,12 @@ static void zd_op_configure_filter(struct ieee80211_hw *hw,
        if (*new_flags & (FIF_PROMISC_IN_BSS | FIF_ALLMULTI)) {
                zd_mc_add_all(&hash);
        } else {
-               DECLARE_MAC_BUF(macbuf);
-
                zd_mc_clear(&hash);
                for (i = 0; i < mc_count; i++) {
                        if (!mclist)
                                break;
-                       dev_dbg_f(zd_mac_dev(mac), "mc addr %s\n",
-                                 print_mac(macbuf, mclist->dmi_addr));
+                       dev_dbg_f(zd_mac_dev(mac), "mc addr %pM\n",
+                                 mclist->dmi_addr);
                        zd_mc_add_addr(&hash, mclist->dmi_addr);
                        mclist = mclist->next;
                }
index da42aa0..03a3f34 100644 (file)
@@ -239,8 +239,6 @@ int __init xtsonic_probe(struct platform_device *pdev)
        struct resource *resmem, *resirq;
        int err = 0;
 
-       DECLARE_MAC_BUF(mac);
-
        if ((resmem = platform_get_resource(pdev, IORESOURCE_MEM, 0)) == NULL)
                return -ENODEV;
 
@@ -263,8 +261,8 @@ int __init xtsonic_probe(struct platform_device *pdev)
        if ((err = register_netdev(dev)))
                goto out1;
 
-       printk("%s: SONIC ethernet @%08lx, MAC %s, IRQ %d\n", dev->name,
-              dev->base_addr, print_mac(mac, dev->dev_addr), dev->irq);
+       printk("%s: SONIC ethernet @%08lx, MAC %pM, IRQ %d\n", dev->name,
+              dev->base_addr, dev->dev_addr, dev->irq);
 
        return 0;
 
index 57e1f49..5110666 100644 (file)
@@ -374,7 +374,6 @@ static int __devinit yellowfin_init_one(struct pci_dev *pdev,
 #else
        int bar = 1;
 #endif
-       DECLARE_MAC_BUF(mac);
 
 /* when built into the kernel, we only print version if device is found */
 #ifndef MODULE
@@ -481,10 +480,10 @@ static int __devinit yellowfin_init_one(struct pci_dev *pdev,
        if (i)
                goto err_out_unmap_status;
 
-       printk(KERN_INFO "%s: %s type %8x at %p, %s, IRQ %d.\n",
+       printk(KERN_INFO "%s: %s type %8x at %p, %pM, IRQ %d.\n",
                   dev->name, pci_id_tbl[chip_idx].name,
                   ioread32(ioaddr + ChipRev), ioaddr,
-                  print_mac(mac, dev->dev_addr), irq);
+                  dev->dev_addr, irq);
 
        if (np->drv_flags & HasMII) {
                int phy, phy_idx = 0;
@@ -1100,11 +1099,9 @@ static int yellowfin_rx(struct net_device *dev)
                        memcmp(le32_to_cpu(yp->rx_ring_dma +
                                entry*sizeof(struct yellowfin_desc)),
                                "\377\377\377\377\377\377", 6) != 0) {
-                       if (bogus_rx++ == 0) {
-                               DECLARE_MAC_BUF(mac);
-                               printk(KERN_WARNING "%s: Bad frame to %s\n",
-                                          dev->name, print_mac(mac, buf_addr));
-                       }
+                       if (bogus_rx++ == 0)
+                               printk(KERN_WARNING "%s: Bad frame to %pM\n",
+                                          dev->name, buf_addr);
 #endif
                } else {
                        struct sk_buff *skb;
index a86c022..fc7a884 100644 (file)
@@ -370,7 +370,6 @@ static int __init znet_probe (void)
        struct net_device *dev;
        char *p;
        int err = -ENOMEM;
-       DECLARE_MAC_BUF(mac);
 
        /* This code scans the region 0xf0000 to 0xfffff for a "NETIDBLK". */
        for(p = (char *)phys_to_virt(0xf0000); p < (char *)phys_to_virt(0x100000); p++)
@@ -397,9 +396,9 @@ static int __init znet_probe (void)
        for (i = 0; i < 6; i++)
                dev->dev_addr[i] = netinfo->netid[i];
 
-       printk(KERN_INFO "%s: ZNET at %#3lx, %s"
+       printk(KERN_INFO "%s: ZNET at %#3lx, %pM"
               ", using IRQ %d DMA %d and %d.\n",
-              dev->name, dev->base_addr, print_mac(mac, dev->dev_addr),
+              dev->name, dev->base_addr, dev->dev_addr,
               dev->irq, netinfo->dma1, netinfo->dma2);
 
        if (znet_debug > 1) {
index 3926b2a..9c73df4 100644 (file)
@@ -151,7 +151,6 @@ static int __devinit zorro8390_init(struct net_device *dev,
        0x00, 0x02, 0x04, 0x06, 0x08, 0x0a, 0x0c, 0x0e,
        0x10, 0x12, 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e,
     };
-    DECLARE_MAC_BUF(mac);
 
     /* Reset card. Who knows what dain-bramaged state it was left in. */
     {
@@ -216,7 +215,7 @@ static int __devinit zorro8390_init(struct net_device *dev,
        dev->dev_addr[i] = SA_prom[i];
 
 #ifdef DEBUG
-    printk("%s", print_mac(mac, dev->dev_addr));
+    printk("%pM", dev->dev_addr);
 #endif
 
     ei_status.name = name;
@@ -244,8 +243,8 @@ static int __devinit zorro8390_init(struct net_device *dev,
        return err;
     }
 
-    printk(KERN_INFO "%s: %s at 0x%08lx, Ethernet Address %s\n",
-          dev->name, name, board, print_mac(mac, dev->dev_addr));
+    printk(KERN_INFO "%s: %s at 0x%08lx, Ethernet Address %pM\n",
+          dev->name, name, board, dev->dev_addr);
 
     return 0;
 }
index 1b1e803..8a8fad7 100644 (file)
@@ -131,17 +131,13 @@ static int qeth_l2_send_setgroupmac_cb(struct qeth_card *card,
        mac = &cmd->data.setdelmac.mac[0];
        /* MAC already registered, needed in couple/uncouple case */
        if (cmd->hdr.return_code == 0x2005) {
-               QETH_DBF_MESSAGE(2, "Group MAC %02x:%02x:%02x:%02x:%02x:%02x "
-                         "already existing on %s \n",
-                         mac[0], mac[1], mac[2], mac[3], mac[4], mac[5],
-                         QETH_CARD_IFNAME(card));
+               QETH_DBF_MESSAGE(2, "Group MAC %pM already existing on %s \n",
+                         mac, QETH_CARD_IFNAME(card));
                cmd->hdr.return_code = 0;
        }
        if (cmd->hdr.return_code)
-               QETH_DBF_MESSAGE(2, "Could not set group MAC "
-                         "%02x:%02x:%02x:%02x:%02x:%02x on %s: %x\n",
-                         mac[0], mac[1], mac[2], mac[3], mac[4], mac[5],
-                         QETH_CARD_IFNAME(card), cmd->hdr.return_code);
+               QETH_DBF_MESSAGE(2, "Could not set group MAC %pM on %s: %x\n",
+                         mac, QETH_CARD_IFNAME(card), cmd->hdr.return_code);
        return 0;
 }
 
@@ -163,10 +159,8 @@ static int qeth_l2_send_delgroupmac_cb(struct qeth_card *card,
        cmd = (struct qeth_ipa_cmd *) data;
        mac = &cmd->data.setdelmac.mac[0];
        if (cmd->hdr.return_code)
-               QETH_DBF_MESSAGE(2, "Could not delete group MAC "
-                         "%02x:%02x:%02x:%02x:%02x:%02x on %s: %x\n",
-                         mac[0], mac[1], mac[2], mac[3], mac[4], mac[5],
-                         QETH_CARD_IFNAME(card), cmd->hdr.return_code);
+               QETH_DBF_MESSAGE(2, "Could not delete group MAC %pM on %s: %x\n",
+                         mac, QETH_CARD_IFNAME(card), cmd->hdr.return_code);
        return 0;
 }
 
index ed6c54c..24d0902 100644 (file)
@@ -1608,7 +1608,7 @@ static int iscsi_tcp_get_addr(struct iscsi_conn *conn, struct socket *sock,
        case AF_INET6:
                sin6 = (struct sockaddr_in6 *)addr;
                spin_lock_bh(&conn->session->lock);
-               sprintf(buf, NIP6_FMT, NIP6(sin6->sin6_addr));
+               sprintf(buf, "%pI6", &sin6->sin6_addr);
                *port = be16_to_cpu(sin6->sin6_port);
                spin_unlock_bh(&conn->session->lock);
                break;
index 9aea43a..5ed4ae0 100644 (file)
@@ -286,9 +286,7 @@ static ssize_t cxacru_sysfs_show_mac_address(struct device *dev,
        struct usbatm_data *usbatm_instance = usb_get_intfdata(intf);
        struct atm_dev *atm_dev = usbatm_instance->atm_dev;
 
-       return snprintf(buf, PAGE_SIZE, "%02x:%02x:%02x:%02x:%02x:%02x\n",
-                       atm_dev->esi[0], atm_dev->esi[1], atm_dev->esi[2],
-                       atm_dev->esi[3], atm_dev->esi[4], atm_dev->esi[5]);
+       return snprintf(buf, PAGE_SIZE, "%pM\n", atm_dev->esi);
 }
 
 static ssize_t cxacru_sysfs_show_adsl_state(struct device *dev,
index 06dd114..fbea856 100644 (file)
@@ -770,10 +770,7 @@ static int usbatm_atm_proc_read(struct atm_dev *atm_dev, loff_t * pos, char *pag
                return sprintf(page, "%s\n", instance->description);
 
        if (!left--)
-               return sprintf(page, "MAC: %02x:%02x:%02x:%02x:%02x:%02x\n",
-                              atm_dev->esi[0], atm_dev->esi[1],
-                              atm_dev->esi[2], atm_dev->esi[3],
-                              atm_dev->esi[4], atm_dev->esi[5]);
+               return sprintf(page, "MAC: %pM\n", atm_dev->esi);
 
        if (!left--)
                return sprintf(page,
index 66948b7..00fa523 100644 (file)
@@ -787,10 +787,8 @@ int __init gether_setup(struct usb_gadget *g, u8 ethaddr[ETH_ALEN])
                dev_dbg(&g->dev, "register_netdev failed, %d\n", status);
                free_netdev(net);
        } else {
-               DECLARE_MAC_BUF(tmp);
-
-               INFO(dev, "MAC %s\n", print_mac(tmp, net->dev_addr));
-               INFO(dev, "HOST MAC %s\n", print_mac(tmp, dev->host_mac));
+               INFO(dev, "MAC %pM\n", net->dev_addr);
+               INFO(dev, "HOST MAC %pM\n", dev->host_mac);
 
                the_dev = dev;
        }
index cdfe8df..10985fa 100644 (file)
@@ -313,12 +313,9 @@ int wlp_eda_for_virtual(struct wlp_eda *eda,
        list_for_each_entry(itr, &eda->cache, list_node) {
                if (!memcmp(itr->virt_addr, virt_addr,
                           sizeof(itr->virt_addr))) {
-                       d_printf(6, dev, "EDA: looking for "
-                              "%02x:%02x:%02x:%02x:%02x:%02x hit %02x:%02x "
+                       d_printf(6, dev, "EDA: looking for %pM hit %02x:%02x "
                               "wss %p tag 0x%02x state %u\n",
-                              virt_addr[0], virt_addr[1],
-                              virt_addr[2], virt_addr[3],
-                              virt_addr[4], virt_addr[5],
+                              virt_addr,
                               itr->dev_addr.data[1],
                               itr->dev_addr.data[0], itr->wss,
                               itr->tag, itr->state);
@@ -327,24 +324,13 @@ int wlp_eda_for_virtual(struct wlp_eda *eda,
                        found = 1;
                        break;
                } else
-                       d_printf(6, dev, "EDA: looking for "
-                              "%02x:%02x:%02x:%02x:%02x:%02x "
-                              "against "
-                              "%02x:%02x:%02x:%02x:%02x:%02x miss\n",
-                              virt_addr[0], virt_addr[1],
-                              virt_addr[2], virt_addr[3],
-                              virt_addr[4], virt_addr[5],
-                              itr->virt_addr[0], itr->virt_addr[1],
-                              itr->virt_addr[2], itr->virt_addr[3],
-                              itr->virt_addr[4], itr->virt_addr[5]);
+                       d_printf(6, dev, "EDA: looking for %pM against %pM miss\n",
+                                virt_addr, itr->virt_addr);
        }
        if (!found) {
                if (printk_ratelimit())
-                       dev_err(dev, "EDA: Eth addr %02x:%02x:%02x"
-                               ":%02x:%02x:%02x not found.\n",
-                               virt_addr[0], virt_addr[1],
-                               virt_addr[2], virt_addr[3],
-                               virt_addr[4], virt_addr[5]);
+                       dev_err(dev, "EDA: Eth addr %pM not found.\n",
+                               virt_addr);
                result = -ENODEV;
        }
        spin_unlock_irqrestore(&eda->lock, flags);
@@ -380,19 +366,13 @@ ssize_t wlp_eda_show(struct wlp *wlp, char *buf)
                           "tag state virt_addr\n");
        list_for_each_entry(entry, &eda->cache, list_node) {
                result += scnprintf(buf + result, PAGE_SIZE - result,
-                                   "%02x:%02x:%02x:%02x:%02x:%02x %02x:%02x "
-                                   "%p 0x%02x %s "
-                                   "%02x:%02x:%02x:%02x:%02x:%02x\n",
-                                   entry->eth_addr[0], entry->eth_addr[1],
-                                   entry->eth_addr[2], entry->eth_addr[3],
-                                   entry->eth_addr[4], entry->eth_addr[5],
+                                   "%pM %02x:%02x %p 0x%02x %s %pM\n",
+                                   entry->eth_addr,
                                    entry->dev_addr.data[1],
                                    entry->dev_addr.data[0], entry->wss,
                                    entry->tag,
                                    wlp_wss_connect_state_str(entry->state),
-                                   entry->virt_addr[0], entry->virt_addr[1],
-                                   entry->virt_addr[2], entry->virt_addr[3],
-                                   entry->virt_addr[4], entry->virt_addr[5]);
+                                   entry->virt_addr);
                if (result >= PAGE_SIZE)
                        break;
        }
index fcee929..0e186cd 100644 (file)
@@ -124,8 +124,7 @@ cifs_get_spnego_key(struct cifsSesInfo *sesInfo)
                sprintf(dp, "ip4=" NIPQUAD_FMT,
                        NIPQUAD(server->addr.sockAddr.sin_addr));
        else if (server->addr.sockAddr.sin_family == AF_INET6)
-               sprintf(dp, "ip6=" NIP6_SEQFMT,
-                       NIP6(server->addr.sockAddr6.sin6_addr));
+               sprintf(dp, "ip6=%pi6", &server->addr.sockAddr6.sin6_addr);
        else
                goto out;
 
index 9fd8889..c8ab7d7 100644 (file)
@@ -122,7 +122,7 @@ static void nlm_display_address(const struct sockaddr *sap,
                        snprintf(buf, len, NIPQUAD_FMT,
                                 NIPQUAD(sin6->sin6_addr.s6_addr32[3]));
                else
-                       snprintf(buf, len, NIP6_FMT, NIP6(sin6->sin6_addr));
+                       snprintf(buf, len, "%pI6", &sin6->sin6_addr);
                break;
        default:
                snprintf(buf, len, "unsupported address family");
index f48db67..eb391d8 100644 (file)
@@ -468,8 +468,7 @@ static void nfs_show_mountd_options(struct seq_file *m, struct nfs_server *nfss,
        }
        case AF_INET6: {
                struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)sap;
-               seq_printf(m, ",mountaddr=" NIP6_FMT,
-                               NIP6(sin6->sin6_addr));
+               seq_printf(m, ",mountaddr=%pI6", &sin6->sin6_addr);
                break;
        }
        default:
index fba141d..ed60f87 100644 (file)
@@ -357,18 +357,6 @@ static inline char *pack_hex_byte(char *buf, u8 byte)
        ((unsigned char *)&addr)[3]
 #define NIPQUAD_FMT "%u.%u.%u.%u"
 
-#define NIP6(addr) \
-       ntohs((addr).s6_addr16[0]), \
-       ntohs((addr).s6_addr16[1]), \
-       ntohs((addr).s6_addr16[2]), \
-       ntohs((addr).s6_addr16[3]), \
-       ntohs((addr).s6_addr16[4]), \
-       ntohs((addr).s6_addr16[5]), \
-       ntohs((addr).s6_addr16[6]), \
-       ntohs((addr).s6_addr16[7])
-#define NIP6_FMT "%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x"
-#define NIP6_SEQFMT "%04x%04x%04x%04x%04x%04x%04x%04x"
-
 #if defined(__LITTLE_ENDIAN)
 #define HIPQUAD(addr) \
        ((unsigned char *)&addr)[3], \
index e649bd3..3ba2998 100644 (file)
@@ -383,5 +383,22 @@ static inline void hlist_add_after_rcu(struct hlist_node *prev,
                ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1; }); \
                pos = rcu_dereference(pos->next))
 
+/**
+ * hlist_for_each_entry_rcu_safenext - iterate over rcu list of given type
+ * @tpos:      the type * to use as a loop cursor.
+ * @pos:       the &struct hlist_node to use as a loop cursor.
+ * @head:      the head for your list.
+ * @member:    the name of the hlist_node within the struct.
+ * @next:       the &struct hlist_node to use as a next cursor
+ *
+ * Special version of hlist_for_each_entry_rcu that make sure
+ * each next pointer is fetched before each iteration.
+ */
+#define hlist_for_each_entry_rcu_safenext(tpos, pos, head, member, next) \
+       for (pos = rcu_dereference((head)->first);                       \
+               pos && ({ next = pos->next; smp_rmb(); prefetch(next); 1; }) && \
+               ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1; }); \
+               pos = rcu_dereference(next))
+
 #endif /* __KERNEL__ */
 #endif
index 2725f4e..487e345 100644 (file)
@@ -269,8 +269,9 @@ struct sk_buff {
                struct  dst_entry       *dst;
                struct  rtable          *rtable;
        };
+#ifdef CONFIG_XFRM
        struct  sec_path        *sp;
-
+#endif
        /*
         * This is the control buffer. It is free to use for every
         * layer. Please put your private variables there. If you
@@ -1864,6 +1865,18 @@ static inline void skb_copy_queue_mapping(struct sk_buff *to, const struct sk_bu
        to->queue_mapping = from->queue_mapping;
 }
 
+#ifdef CONFIG_XFRM
+static inline struct sec_path *skb_sec_path(struct sk_buff *skb)
+{
+       return skb->sp;
+}
+#else
+static inline struct sec_path *skb_sec_path(struct sk_buff *skb)
+{
+       return NULL;
+}
+#endif
+
 static inline int skb_is_gso(const struct sk_buff *skb)
 {
        return skb_shinfo(skb)->gso_size;
index 6fd7b01..51cb75e 100644 (file)
@@ -145,8 +145,8 @@ static inline char *__svc_print_addr(struct sockaddr *addr,
                break;
 
        case AF_INET6:
-               snprintf(buf, len, "%x:%x:%x:%x:%x:%x:%x:%x, port=%u",
-                       NIP6(((struct sockaddr_in6 *) addr)->sin6_addr),
+               snprintf(buf, len, "%pI6, port=%u",
+                        &((struct sockaddr_in6 *)addr)->sin6_addr,
                        ntohs(((struct sockaddr_in6 *) addr)->sin6_port));
                break;
 
index 4bc1e6b..52f3abd 100644 (file)
@@ -199,6 +199,9 @@ enum {
 #define XFRM_MSG_NEWSPDINFO XFRM_MSG_NEWSPDINFO
        XFRM_MSG_GETSPDINFO,
 #define XFRM_MSG_GETSPDINFO XFRM_MSG_GETSPDINFO
+
+       XFRM_MSG_MAPPING,
+#define XFRM_MSG_MAPPING XFRM_MSG_MAPPING
        __XFRM_MSG_MAX
 };
 #define XFRM_MSG_MAX (__XFRM_MSG_MAX - 1)
@@ -438,6 +441,15 @@ struct xfrm_user_migrate {
        __u16                           new_family;
 };
 
+struct xfrm_user_mapping {
+       struct xfrm_usersa_id           id;
+       __u32                           reqid;
+       xfrm_address_t                  old_saddr;
+       xfrm_address_t                  new_saddr;
+       __be16                          old_sport;
+       __be16                          new_sport;
+};
+
 #ifndef __KERNEL__
 /* backwards compatibility for userspace */
 #define XFRMGRP_ACQUIRE                1
@@ -464,6 +476,8 @@ enum xfrm_nlgroups {
 #define XFRMNLGRP_REPORT       XFRMNLGRP_REPORT
        XFRMNLGRP_MIGRATE,
 #define XFRMNLGRP_MIGRATE      XFRMNLGRP_MIGRATE
+       XFRMNLGRP_MAPPING,
+#define XFRMNLGRP_MAPPING      XFRMNLGRP_MAPPING
        __XFRMNLGRP_MAX
 };
 #define XFRMNLGRP_MAX  (__XFRMNLGRP_MAX - 1)
index 8a8b71e..f96c4ba 100644 (file)
@@ -59,8 +59,9 @@ struct dst_entry
 
        struct neighbour        *neighbour;
        struct hh_cache         *hh;
+#ifdef CONFIG_XFRM
        struct xfrm_state       *xfrm;
-
+#endif
        int                     (*input)(struct sk_buff*);
        int                     (*output)(struct sk_buff*);
 
index fe9fcf7..af48cad 100644 (file)
@@ -87,8 +87,8 @@ static inline const char *ip_vs_dbg_addr(int af, char *buf, size_t buf_len,
        int len;
 #ifdef CONFIG_IP_VS_IPV6
        if (af == AF_INET6)
-               len = snprintf(&buf[*idx], buf_len - *idx, "[" NIP6_FMT "]",
-                              NIP6(addr->in6)) + 1;
+               len = snprintf(&buf[*idx], buf_len - *idx, "[%pI6]",
+                              &addr->in6) + 1;
        else
 #endif
                len = snprintf(&buf[*idx], buf_len - *idx, NIPQUAD_FMT,
index a6874ba..42f1fc9 100644 (file)
@@ -122,10 +122,10 @@ static inline void nf_ct_dump_tuple_ip(const struct nf_conntrack_tuple *t)
 static inline void nf_ct_dump_tuple_ipv6(const struct nf_conntrack_tuple *t)
 {
 #ifdef DEBUG
-       printk("tuple %p: %u " NIP6_FMT " %hu -> " NIP6_FMT " %hu\n",
+       printk("tuple %p: %u %pI6 %hu -> %pI6 %hu\n",
               t, t->dst.protonum,
-              NIP6(*(struct in6_addr *)t->src.u3.all), ntohs(t->src.u.all),
-              NIP6(*(struct in6_addr *)t->dst.u3.all), ntohs(t->dst.u.all));
+              t->src.u3.all, ntohs(t->src.u.all),
+              t->dst.u3.all, ntohs(t->dst.u.all));
 #endif
 }
 
index 3643bbb..46b7764 100644 (file)
@@ -233,7 +233,7 @@ extern int          nla_parse(struct nlattr *tb[], int maxtype,
 extern struct nlattr * nla_find(struct nlattr *head, int len, int attrtype);
 extern size_t          nla_strlcpy(char *dst, const struct nlattr *nla,
                                    size_t dstsize);
-extern int             nla_memcpy(void *dest, struct nlattr *src, int count);
+extern int             nla_memcpy(void *dest, const struct nlattr *src, int count);
 extern int             nla_memcmp(const struct nlattr *nla, const void *data,
                                   size_t size);
 extern int             nla_strcmp(const struct nlattr *nla, const char *str);
@@ -741,7 +741,7 @@ static inline struct nlattr *nla_find_nested(struct nlattr *nla, int attrtype)
  * See nla_parse()
  */
 static inline int nla_parse_nested(struct nlattr *tb[], int maxtype,
-                                  struct nlattr *nla,
+                                  const struct nlattr *nla,
                                   const struct nla_policy *policy)
 {
        return nla_parse(tb, maxtype, nla_data(nla), nla_len(nla), policy);
@@ -875,7 +875,7 @@ static inline int nla_put_msecs(struct sk_buff *skb, int attrtype,
  * nla_get_u32 - return payload of u32 attribute
  * @nla: u32 netlink attribute
  */
-static inline u32 nla_get_u32(struct nlattr *nla)
+static inline u32 nla_get_u32(const struct nlattr *nla)
 {
        return *(u32 *) nla_data(nla);
 }
@@ -884,7 +884,7 @@ static inline u32 nla_get_u32(struct nlattr *nla)
  * nla_get_be32 - return payload of __be32 attribute
  * @nla: __be32 netlink attribute
  */
-static inline __be32 nla_get_be32(struct nlattr *nla)
+static inline __be32 nla_get_be32(const struct nlattr *nla)
 {
        return *(__be32 *) nla_data(nla);
 }
@@ -893,7 +893,7 @@ static inline __be32 nla_get_be32(struct nlattr *nla)
  * nla_get_u16 - return payload of u16 attribute
  * @nla: u16 netlink attribute
  */
-static inline u16 nla_get_u16(struct nlattr *nla)
+static inline u16 nla_get_u16(const struct nlattr *nla)
 {
        return *(u16 *) nla_data(nla);
 }
@@ -902,7 +902,7 @@ static inline u16 nla_get_u16(struct nlattr *nla)
  * nla_get_be16 - return payload of __be16 attribute
  * @nla: __be16 netlink attribute
  */
-static inline __be16 nla_get_be16(struct nlattr *nla)
+static inline __be16 nla_get_be16(const struct nlattr *nla)
 {
        return *(__be16 *) nla_data(nla);
 }
@@ -911,7 +911,7 @@ static inline __be16 nla_get_be16(struct nlattr *nla)
  * nla_get_le16 - return payload of __le16 attribute
  * @nla: __le16 netlink attribute
  */
-static inline __le16 nla_get_le16(struct nlattr *nla)
+static inline __le16 nla_get_le16(const struct nlattr *nla)
 {
        return *(__le16 *) nla_data(nla);
 }
@@ -920,7 +920,7 @@ static inline __le16 nla_get_le16(struct nlattr *nla)
  * nla_get_u8 - return payload of u8 attribute
  * @nla: u8 netlink attribute
  */
-static inline u8 nla_get_u8(struct nlattr *nla)
+static inline u8 nla_get_u8(const struct nlattr *nla)
 {
        return *(u8 *) nla_data(nla);
 }
@@ -929,7 +929,7 @@ static inline u8 nla_get_u8(struct nlattr *nla)
  * nla_get_u64 - return payload of u64 attribute
  * @nla: u64 netlink attribute
  */
-static inline u64 nla_get_u64(struct nlattr *nla)
+static inline u64 nla_get_u64(const struct nlattr *nla)
 {
        u64 tmp;
 
@@ -942,7 +942,7 @@ static inline u64 nla_get_u64(struct nlattr *nla)
  * nla_get_flag - return payload of flag attribute
  * @nla: flag netlink attribute
  */
-static inline int nla_get_flag(struct nlattr *nla)
+static inline int nla_get_flag(const struct nlattr *nla)
 {
        return !!nla;
 }
@@ -953,7 +953,7 @@ static inline int nla_get_flag(struct nlattr *nla)
  *
  * Returns the number of milliseconds in jiffies.
  */
-static inline unsigned long nla_get_msecs(struct nlattr *nla)
+static inline unsigned long nla_get_msecs(const struct nlattr *nla)
 {
        u64 msecs = nla_get_u64(nla);
 
index ece1c92..977f482 100644 (file)
@@ -49,6 +49,8 @@ struct netns_ipv4 {
        int sysctl_icmp_ratelimit;
        int sysctl_icmp_ratemask;
        int sysctl_icmp_errors_use_inbound_ifaddr;
+       int sysctl_rt_cache_rebuild_count;
+       int current_rt_cache_rebuild_count;
 
        struct timer_list rt_secret_timer;
        atomic_t rt_genid;
index ed71b11..e71b0f7 100644 (file)
@@ -285,9 +285,9 @@ extern int sctp_debug_flag;
        if (sctp_debug_flag) { \
                if (saddr->sa.sa_family == AF_INET6) { \
                        printk(KERN_DEBUG \
-                              lead NIP6_FMT trail, \
+                              lead "%pI6" trail, \
                               leadparm, \
-                              NIP6(saddr->v6.sin6_addr), \
+                              &saddr->v6.sin6_addr, \
                               otherparms); \
                } else { \
                        printk(KERN_DEBUG \
index c04f9e1..941ad7c 100644 (file)
@@ -229,7 +229,9 @@ struct sock {
        } sk_backlog;
        wait_queue_head_t       *sk_sleep;
        struct dst_entry        *sk_dst_cache;
+#ifdef CONFIG_XFRM
        struct xfrm_policy      *sk_policy[2];
+#endif
        rwlock_t                sk_dst_lock;
        atomic_t                sk_rmem_alloc;
        atomic_t                sk_wmem_alloc;
@@ -361,6 +363,27 @@ static __inline__ int sk_del_node_init(struct sock *sk)
        return rc;
 }
 
+static __inline__ int __sk_del_node_init_rcu(struct sock *sk)
+{
+       if (sk_hashed(sk)) {
+               hlist_del_init_rcu(&sk->sk_node);
+               return 1;
+       }
+       return 0;
+}
+
+static __inline__ int sk_del_node_init_rcu(struct sock *sk)
+{
+       int rc = __sk_del_node_init_rcu(sk);
+
+       if (rc) {
+               /* paranoid for a while -acme */
+               WARN_ON(atomic_read(&sk->sk_refcnt) == 1);
+               __sock_put(sk);
+       }
+       return rc;
+}
+
 static __inline__ void __sk_add_node(struct sock *sk, struct hlist_head *list)
 {
        hlist_add_head(&sk->sk_node, list);
@@ -372,6 +395,17 @@ static __inline__ void sk_add_node(struct sock *sk, struct hlist_head *list)
        __sk_add_node(sk, list);
 }
 
+static __inline__ void __sk_add_node_rcu(struct sock *sk, struct hlist_head *list)
+{
+       hlist_add_head_rcu(&sk->sk_node, list);
+}
+
+static __inline__ void sk_add_node_rcu(struct sock *sk, struct hlist_head *list)
+{
+       sock_hold(sk);
+       __sk_add_node_rcu(sk, list);
+}
+
 static __inline__ void __sk_del_bind_node(struct sock *sk)
 {
        __hlist_del(&sk->sk_bind_node);
@@ -385,6 +419,8 @@ static __inline__ void sk_add_bind_node(struct sock *sk,
 
 #define sk_for_each(__sk, node, list) \
        hlist_for_each_entry(__sk, node, list, sk_node)
+#define sk_for_each_rcu_safenext(__sk, node, list, next) \
+       hlist_for_each_entry_rcu_safenext(__sk, node, list, sk_node, next)
 #define sk_for_each_from(__sk, node) \
        if (__sk && ({ node = &(__sk)->sk_node; 1; })) \
                hlist_for_each_entry_from(__sk, node, sk_node)
@@ -587,8 +623,9 @@ struct proto {
        int                     *sysctl_rmem;
        int                     max_header;
 
-       struct kmem_cache               *slab;
+       struct kmem_cache       *slab;
        unsigned int            obj_size;
+       int                     slab_flags;
 
        atomic_t                *orphan_count;
 
@@ -597,7 +634,7 @@ struct proto {
 
        union {
                struct inet_hashinfo    *hashinfo;
-               struct hlist_head       *udp_hash;
+               struct udp_table        *udp_table;
                struct raw_hashinfo     *raw_hash;
        } h;
 
index 1e20509..df2bfe5 100644 (file)
@@ -50,8 +50,15 @@ struct udp_skb_cb {
 };
 #define UDP_SKB_CB(__skb)      ((struct udp_skb_cb *)((__skb)->cb))
 
-extern struct hlist_head udp_hash[UDP_HTABLE_SIZE];
-extern rwlock_t udp_hash_lock;
+struct udp_hslot {
+       struct hlist_head       head;
+       spinlock_t              lock;
+} __attribute__((aligned(2 * sizeof(long))));
+struct udp_table {
+       struct udp_hslot        hash[UDP_HTABLE_SIZE];
+};
+extern struct udp_table udp_table;
+extern void udp_table_init(struct udp_table *);
 
 
 /* Note: this must match 'valbool' in sock_setsockopt */
@@ -110,15 +117,7 @@ static inline void udp_lib_hash(struct sock *sk)
        BUG();
 }
 
-static inline void udp_lib_unhash(struct sock *sk)
-{
-       write_lock_bh(&udp_hash_lock);
-       if (sk_del_node_init(sk)) {
-               inet_sk(sk)->num = 0;
-               sock_prot_inuse_add(sock_net(sk), sk->sk_prot, -1);
-       }
-       write_unlock_bh(&udp_hash_lock);
-}
+extern void udp_lib_unhash(struct sock *sk);
 
 static inline void udp_lib_close(struct sock *sk, long timeout)
 {
@@ -187,7 +186,7 @@ extern struct sock *udp4_lib_lookup(struct net *net, __be32 saddr, __be16 sport,
 struct udp_seq_afinfo {
        char                    *name;
        sa_family_t             family;
-       struct hlist_head       *hashtable;
+       struct udp_table        *udp_table;
        struct file_operations  seq_fops;
        struct seq_operations   seq_ops;
 };
@@ -196,7 +195,7 @@ struct udp_iter_state {
        struct seq_net_private  p;
        sa_family_t             family;
        int                     bucket;
-       struct hlist_head       *hashtable;
+       struct udp_table        *udp_table;
 };
 
 #ifdef CONFIG_PROC_FS
index b76b2e3..afdffe6 100644 (file)
@@ -11,7 +11,7 @@
 #define UDPLITE_RECV_CSCOV   11 /* receiver partial coverage (threshold ) */
 
 extern struct proto            udplite_prot;
-extern struct hlist_head       udplite_hash[UDP_HTABLE_SIZE];
+extern struct udp_table                udplite_table;
 
 /*
  *     Checksum computation is all in software, hence simpler getfrag.
index 11c890a..f2c5ba2 100644 (file)
@@ -882,6 +882,7 @@ struct xfrm_dst
        u32 path_cookie;
 };
 
+#ifdef CONFIG_XFRM
 static inline void xfrm_dst_destroy(struct xfrm_dst *xdst)
 {
        dst_release(xdst->route);
@@ -894,6 +895,7 @@ static inline void xfrm_dst_destroy(struct xfrm_dst *xdst)
        xdst->partner = NULL;
 #endif
 }
+#endif
 
 extern void xfrm_dst_ifdown(struct dst_entry *dst, struct net_device *dev);
 
@@ -1536,9 +1538,11 @@ static inline void xfrm_states_delete(struct xfrm_state **states, int n)
 }
 #endif
 
+#ifdef CONFIG_XFRM
 static inline struct xfrm_state *xfrm_input_state(struct sk_buff *skb)
 {
        return skb->sp->xvec[skb->sp->len - 1];
 }
+#endif
 
 #endif /* _NET_XFRM_H */
index a013bbc..dd7cc7f 100644 (file)
@@ -581,6 +581,58 @@ static char *resource_string(char *buf, char *end, struct resource *res, int fie
        return string(buf, end, sym, field_width, precision, flags);
 }
 
+static char *mac_address_string(char *buf, char *end, u8 *addr, int field_width,
+                               int precision, int flags)
+{
+       char mac_addr[6 * 3]; /* (6 * 2 hex digits), 5 colons and trailing zero */
+       char *p = mac_addr;
+       int i;
+
+       for (i = 0; i < 6; i++) {
+               p = pack_hex_byte(p, addr[i]);
+               if (!(flags & SPECIAL) && i != 5)
+                       *p++ = ':';
+       }
+       *p = '\0';
+
+       return string(buf, end, mac_addr, field_width, precision, flags & ~SPECIAL);
+}
+
+static char *ip6_addr_string(char *buf, char *end, u8 *addr, int field_width,
+                        int precision, int flags)
+{
+       char ip6_addr[8 * 5]; /* (8 * 4 hex digits), 7 colons and trailing zero */
+       char *p = ip6_addr;
+       int i;
+
+       for (i = 0; i < 8; i++) {
+               p = pack_hex_byte(p, addr[2 * i]);
+               p = pack_hex_byte(p, addr[2 * i + 1]);
+               if (!(flags & SPECIAL) && i != 7)
+                       *p++ = ':';
+       }
+       *p = '\0';
+
+       return string(buf, end, ip6_addr, field_width, precision, flags & ~SPECIAL);
+}
+
+static char *ip4_addr_string(char *buf, char *end, u8 *addr, int field_width,
+                        int precision, int flags)
+{
+       char ip4_addr[4 * 4]; /* (4 * 3 decimal digits), 3 dots and trailing zero */
+       char *p = ip4_addr;
+       int i;
+
+       for (i = 0; i < 4; i++) {
+               p = put_dec_trunc(p, addr[i]);
+               if (i != 3)
+                       *p++ = '.';
+       }
+       *p = '\0';
+
+       return string(buf, end, ip4_addr, field_width, precision, flags & ~SPECIAL);
+}
+
 /*
  * Show a '%p' thing.  A kernel extension is that the '%p' is followed
  * by an extra set of alphanumeric characters that are extended format
@@ -592,6 +644,12 @@ static char *resource_string(char *buf, char *end, struct resource *res, int fie
  * - 'S' For symbolic direct pointers
  * - 'R' For a struct resource pointer, it prints the range of
  *       addresses (not the name nor the flags)
+ * - 'M' For a 6-byte MAC address, it prints the address in the
+ *       usual colon-separated hex notation
+ * - 'I' [46] for IPv4/IPv6 addresses printed in the usual way (dot-separated
+ *       decimal for v4 and colon separated network-order 16 bit hex for v6)
+ * - 'i' [46] for 'raw' IPv4/IPv6 addresses, IPv6 omits the colons, IPv4 is
+ *       currently the same
  *
  * Note: The difference between 'S' and 'F' is that on ia64 and ppc64
  * function pointers are really function descriptors, which contain a
@@ -607,6 +665,18 @@ static char *pointer(const char *fmt, char *buf, char *end, void *ptr, int field
                return symbol_string(buf, end, ptr, field_width, precision, flags);
        case 'R':
                return resource_string(buf, end, ptr, field_width, precision, flags);
+       case 'M':
+               return mac_address_string(buf, end, ptr, field_width, precision, flags);
+       case 'i':
+               flags |= SPECIAL;
+               /* Fallthrough */
+       case 'I':
+               if (fmt[1] == '6')
+                       return ip6_addr_string(buf, end, ptr, field_width, precision, flags);
+               if (fmt[1] == '4')
+                       return ip4_addr_string(buf, end, ptr, field_width, precision, flags);
+               flags &= ~SPECIAL;
+               break;
        }
        flags |= SMALL;
        if (field_width == -1) {
index 18c6647..38f1f29 100644 (file)
@@ -285,10 +285,7 @@ void tr_source_route(struct sk_buff *skb,struct trh_hdr *trh,
                if(entry)
                {
 #if TR_SR_DEBUG
-{
-DECLARE_MAC_BUF(mac);
-printk("source routing for %s\n",print_mac(mac, trh->daddr));
-}
+printk("source routing for %pM\n", trh->daddr);
 #endif
                        if(!entry->local_ring && (ntohs(entry->rcf) & TR_RCF_LEN_MASK) >> 8)
                        {
@@ -370,9 +367,8 @@ static void tr_add_rif_info(struct trh_hdr *trh, struct net_device *dev)
        if(entry==NULL)
        {
 #if TR_SR_DEBUG
-               DECLARE_MAC_BUF(mac);
-               printk("adding rif_entry: addr:%s rcf:%04X\n",
-                      print_mac(mac, trh->saddr), ntohs(trh->rcf));
+               printk("adding rif_entry: addr:%pM rcf:%04X\n",
+                      trh->saddr, ntohs(trh->rcf));
 #endif
                /*
                 *      Allocate our new entry. A failure to allocate loses
@@ -417,11 +413,8 @@ static void tr_add_rif_info(struct trh_hdr *trh, struct net_device *dev)
                         !(trh->rcf & htons(TR_RCF_BROADCAST_MASK)))
                    {
 #if TR_SR_DEBUG
-{
-DECLARE_MAC_BUF(mac);
-printk("updating rif_entry: addr:%s rcf:%04X\n",
-               print_mac(mac, trh->saddr), ntohs(trh->rcf));
-}
+printk("updating rif_entry: addr:%pM rcf:%04X\n",
+               trh->saddr, ntohs(trh->rcf));
 #endif
                            entry->rcf = trh->rcf & htons((unsigned short)~TR_RCF_BROADCAST_MASK);
                            memcpy(&(entry->rseg[0]),&(trh->rseg[0]),8*sizeof(unsigned short));
@@ -532,7 +525,6 @@ static int rif_seq_show(struct seq_file *seq, void *v)
 {
        int j, rcf_len, segment, brdgnmb;
        struct rif_cache *entry = v;
-       DECLARE_MAC_BUF(mac);
 
        if (v == SEQ_START_TOKEN)
                seq_puts(seq,
@@ -542,9 +534,9 @@ static int rif_seq_show(struct seq_file *seq, void *v)
                long ttl = (long) (entry->last_used + sysctl_tr_rif_timeout)
                                - (long) jiffies;
 
-               seq_printf(seq, "%s %s %7li ",
+               seq_printf(seq, "%s %pM %7li ",
                           dev?dev->name:"?",
-                          print_mac(mac, entry->addr),
+                          entry->addr,
                           ttl/HZ);
 
                        if (entry->local_ring)
index f0e335a..72326b9 100644 (file)
@@ -46,10 +46,10 @@ int vlan_net_id;
 /* Our listing of VLAN group(s) */
 static struct hlist_head vlan_group_hash[VLAN_GRP_HASH_SIZE];
 
-static char vlan_fullname[] = "802.1Q VLAN Support";
-static char vlan_version[] = DRV_VERSION;
-static char vlan_copyright[] = "Ben Greear <greearb@candelatech.com>";
-static char vlan_buggyright[] = "David S. Miller <davem@redhat.com>";
+const char vlan_fullname[] = "802.1Q VLAN Support";
+const char vlan_version[] = DRV_VERSION;
+static const char vlan_copyright[] = "Ben Greear <greearb@candelatech.com>";
+static const char vlan_buggyright[] = "David S. Miller <davem@redhat.com>";
 
 static struct packet_type vlan_packet_type = {
        .type = __constant_htons(ETH_P_8021Q),
index a6603a4..82570bc 100644 (file)
@@ -108,8 +108,10 @@ static inline int vlan_gvrp_init(void) { return 0; }
 static inline void vlan_gvrp_uninit(void) {}
 #endif
 
-int vlan_netlink_init(void);
-void vlan_netlink_fini(void);
+extern const char vlan_fullname[];
+extern const char vlan_version[];
+extern int vlan_netlink_init(void);
+extern void vlan_netlink_fini(void);
 
 extern struct rtnl_link_ops vlan_link_ops;
 
index 8883e9c..c269fcb 100644 (file)
@@ -648,6 +648,26 @@ static void vlan_dev_uninit(struct net_device *dev)
        }
 }
 
+static int vlan_ethtool_get_settings(struct net_device *dev,
+                                    struct ethtool_cmd *cmd)
+{
+       const struct vlan_dev_info *vlan = vlan_dev_info(dev);
+       struct net_device *real_dev = vlan->real_dev;
+
+       if (!real_dev->ethtool_ops->get_settings)
+               return -EOPNOTSUPP;
+
+       return real_dev->ethtool_ops->get_settings(real_dev, cmd);
+}
+
+static void vlan_ethtool_get_drvinfo(struct net_device *dev,
+                                    struct ethtool_drvinfo *info)
+{
+       strcpy(info->driver, vlan_fullname);
+       strcpy(info->version, vlan_version);
+       strcpy(info->fw_version, "N/A");
+}
+
 static u32 vlan_ethtool_get_rx_csum(struct net_device *dev)
 {
        const struct vlan_dev_info *vlan = vlan_dev_info(dev);
@@ -672,6 +692,8 @@ static u32 vlan_ethtool_get_flags(struct net_device *dev)
 }
 
 static const struct ethtool_ops vlan_ethtool_ops = {
+       .get_settings           = vlan_ethtool_get_settings,
+       .get_drvinfo            = vlan_ethtool_get_drvinfo,
        .get_link               = ethtool_op_get_link,
        .get_rx_csum            = vlan_ethtool_get_rx_csum,
        .get_flags              = vlan_ethtool_get_flags,
index d789d79..8c3d97c 100644 (file)
@@ -27,7 +27,7 @@ menu "Networking options"
 config NET_NS
        bool "Network namespace support"
        default n
-       depends on EXPERIMENTAL && !SYSFS && NAMESPACES
+       depends on EXPERIMENTAL && NAMESPACES
        help
          Allow user space to create what appear to be multiple instances
          of the network stack.
index b25c1e9..b03ff58 100644 (file)
@@ -995,7 +995,6 @@ static int aarp_seq_show(struct seq_file *seq, void *v)
        struct aarp_iter_state *iter = seq->private;
        struct aarp_entry *entry = v;
        unsigned long now = jiffies;
-       DECLARE_MAC_BUF(mac);
 
        if (v == SEQ_START_TOKEN)
                seq_puts(seq,
@@ -1006,7 +1005,7 @@ static int aarp_seq_show(struct seq_file *seq, void *v)
                           ntohs(entry->target_addr.s_net),
                           (unsigned int) entry->target_addr.s_node,
                           entry->dev ? entry->dev->name : "????");
-               seq_printf(seq, "%s", print_mac(mac, entry->hwaddr));
+               seq_printf(seq, "%pM", entry->hwaddr);
                seq_printf(seq, " %8s",
                           dt2str((long)entry->expires_at - (long)now));
                if (iter->table == unresolved)
index 280de48..29ef8dc 100644 (file)
@@ -698,12 +698,11 @@ static int br2684_seq_show(struct seq_file *seq, void *v)
                                                    br2684_devs);
        const struct net_device *net_dev = brdev->net_dev;
        const struct br2684_vcc *brvcc;
-       DECLARE_MAC_BUF(mac);
 
-       seq_printf(seq, "dev %.16s: num=%d, mac=%s (%s)\n",
+       seq_printf(seq, "dev %.16s: num=%d, mac=%pM (%s)\n",
                   net_dev->name,
                   brdev->number,
-                  print_mac(mac, net_dev->dev_addr),
+                  net_dev->dev_addr,
                   brdev->mac_was_set ? "set" : "auto");
 
        list_for_each_entry(brvcc, &brdev->brvccs, brvccs) {
index 8f701cd..1def62d 100644 (file)
@@ -373,19 +373,13 @@ static int lec_start_xmit(struct sk_buff *skb, struct net_device *dev)
                if (entry && (entry->tx_wait.qlen < LEC_UNRES_QUE_LEN)) {
                        pr_debug("%s:lec_start_xmit: queuing packet, ",
                                dev->name);
-                       pr_debug("MAC address " MAC_FMT "\n",
-                                lec_h->h_dest[0], lec_h->h_dest[1],
-                                lec_h->h_dest[2], lec_h->h_dest[3],
-                                lec_h->h_dest[4], lec_h->h_dest[5]);
+                       pr_debug("MAC address %pM\n", lec_h->h_dest);
                        skb_queue_tail(&entry->tx_wait, skb);
                } else {
                        pr_debug
                            ("%s:lec_start_xmit: tx queue full or no arp entry, dropping, ",
                             dev->name);
-                       pr_debug("MAC address " MAC_FMT "\n",
-                                lec_h->h_dest[0], lec_h->h_dest[1],
-                                lec_h->h_dest[2], lec_h->h_dest[3],
-                                lec_h->h_dest[4], lec_h->h_dest[5]);
+                       pr_debug("MAC address %pM\n", lec_h->h_dest);
                        priv->stats.tx_dropped++;
                        dev_kfree_skb(skb);
                }
@@ -397,10 +391,7 @@ static int lec_start_xmit(struct sk_buff *skb, struct net_device *dev)
 
        while (entry && (skb2 = skb_dequeue(&entry->tx_wait))) {
                pr_debug("lec.c: emptying tx queue, ");
-               pr_debug("MAC address " MAC_FMT "\n",
-                        lec_h->h_dest[0], lec_h->h_dest[1],
-                        lec_h->h_dest[2], lec_h->h_dest[3],
-                        lec_h->h_dest[4], lec_h->h_dest[5]);
+               pr_debug("MAC address %pM\n", lec_h->h_dest);
                lec_send(vcc, skb2, priv);
        }
 
@@ -539,15 +530,8 @@ static int lec_atm_send(struct atm_vcc *vcc, struct sk_buff *skb)
                {
                        struct net_bridge_fdb_entry *f;
 
-                       pr_debug
-                           ("%s: bridge zeppelin asks about " MAC_FMT "\n",
-                            dev->name,
-                            mesg->content.proxy.mac_addr[0],
-                            mesg->content.proxy.mac_addr[1],
-                            mesg->content.proxy.mac_addr[2],
-                            mesg->content.proxy.mac_addr[3],
-                            mesg->content.proxy.mac_addr[4],
-                            mesg->content.proxy.mac_addr[5]);
+                       pr_debug("%s: bridge zeppelin asks about %pM\n",
+                                dev->name, mesg->content.proxy.mac_addr);
 
                        if (br_fdb_get_hook == NULL || dev->br_port == NULL)
                                break;
index 3d33c60..5e7cff3 100644 (file)
@@ -133,10 +133,8 @@ ebt_log_packet(u_int8_t pf, unsigned int hooknum,
                        printk(" INCOMPLETE IPv6 header");
                        goto out;
                }
-               printk(" IPv6 SRC=%x:%x:%x:%x:%x:%x:%x:%x "
-                      "IPv6 DST=%x:%x:%x:%x:%x:%x:%x:%x, IPv6 "
-                      "priority=0x%01X, Next Header=%d", NIP6(ih->saddr),
-                      NIP6(ih->daddr), ih->priority, ih->nexthdr);
+               printk(" IPv6 SRC=%pI6 IPv6 DST=%pI6, IPv6 priority=0x%01X, Next Header=%d",
+                      &ih->saddr, &ih->daddr, ih->priority, ih->nexthdr);
                nexthdr = ih->nexthdr;
                offset_ph = ipv6_skip_exthdr(skb, sizeof(_iph), &nexthdr);
                if (offset_ph == -1)
index d9038e3..3a2b8be 100644 (file)
@@ -924,10 +924,15 @@ int dev_change_name(struct net_device *dev, const char *newname)
                strlcpy(dev->name, newname, IFNAMSIZ);
 
 rollback:
-       ret = device_rename(&dev->dev, dev->name);
-       if (ret) {
-               memcpy(dev->name, oldname, IFNAMSIZ);
-               return ret;
+       /* For now only devices in the initial network namespace
+        * are in sysfs.
+        */
+       if (net == &init_net) {
+               ret = device_rename(&dev->dev, dev->name);
+               if (ret) {
+                       memcpy(dev->name, oldname, IFNAMSIZ);
+                       return ret;
+               }
        }
 
        write_lock_bh(&dev_base_lock);
@@ -4460,6 +4465,15 @@ int dev_change_net_namespace(struct net_device *dev, struct net *net, const char
        if (dev->features & NETIF_F_NETNS_LOCAL)
                goto out;
 
+#ifdef CONFIG_SYSFS
+       /* Don't allow real devices to be moved when sysfs
+        * is enabled.
+        */
+       err = -EINVAL;
+       if (dev->dev.parent)
+               goto out;
+#endif
+
        /* Ensure the device has been registrered */
        err = -EINVAL;
        if (dev->reg_state != NETREG_REGISTERED)
@@ -4517,6 +4531,8 @@ int dev_change_net_namespace(struct net_device *dev, struct net *net, const char
         */
        dev_addr_discard(dev);
 
+       netdev_unregister_kobject(dev);
+
        /* Actually switch the network namespace */
        dev_net_set(dev, net);
 
@@ -4533,7 +4549,6 @@ int dev_change_net_namespace(struct net_device *dev, struct net *net, const char
        }
 
        /* Fixup kobjects */
-       netdev_unregister_kobject(dev);
        err = netdev_register_kobject(dev);
        WARN_ON(err);
 
index 1dc728b..b337a93 100644 (file)
@@ -1340,7 +1340,6 @@ struct neigh_parms *neigh_parms_alloc(struct net_device *dev,
        if (p) {
                p->tbl            = tbl;
                atomic_set(&p->refcnt, 1);
-               INIT_RCU_HEAD(&p->rcu_head);
                p->reachable_time =
                                neigh_rand_reach_time(p->base_reachable_time);
 
@@ -1412,7 +1411,6 @@ void neigh_table_init_no_netlink(struct neigh_table *tbl)
        tbl->parms.net = &init_net;
 #endif
        atomic_set(&tbl->parms.refcnt, 1);
-       INIT_RCU_HEAD(&tbl->parms.rcu_head);
        tbl->parms.reachable_time =
                          neigh_rand_reach_time(tbl->parms.base_reachable_time);
 
index 92d6b94..85cb8bd 100644 (file)
@@ -476,6 +476,10 @@ void netdev_unregister_kobject(struct net_device * net)
        struct device *dev = &(net->dev);
 
        kobject_get(&dev->kobj);
+
+       if (dev_net(net) != &init_net)
+               return;
+
        device_del(dev);
 }
 
@@ -501,6 +505,9 @@ int netdev_register_kobject(struct net_device *net)
 #endif
 #endif /* CONFIG_SYSFS */
 
+       if (dev_net(net) != &init_net)
+               return 0;
+
        return device_add(dev);
 }
 
index 1895a4c..55cffad 100644 (file)
@@ -47,7 +47,6 @@ static __net_init int setup_net(struct net *net)
                goto out;
 
        ng->len = INITIAL_NET_GEN_PTRS;
-       INIT_RCU_HEAD(&ng->rcu);
        rcu_assign_pointer(net->gen, ng);
 
        error = 0;
@@ -478,7 +477,6 @@ int net_assign_generic(struct net *net, int id, void *data)
         */
 
        ng->len = id;
-       INIT_RCU_HEAD(&ng->rcu);
        memcpy(&ng->ptr, &old_ng->ptr, old_ng->len);
 
        rcu_assign_pointer(net->gen, ng);
index 6c7af39..34f5d07 100644 (file)
@@ -553,7 +553,6 @@ out:
 
 void netpoll_print_options(struct netpoll *np)
 {
-       DECLARE_MAC_BUF(mac);
        printk(KERN_INFO "%s: local port %d\n",
                         np->name, np->local_port);
        printk(KERN_INFO "%s: local IP %d.%d.%d.%d\n",
@@ -564,8 +563,8 @@ void netpoll_print_options(struct netpoll *np)
                         np->name, np->remote_port);
        printk(KERN_INFO "%s: remote IP %d.%d.%d.%d\n",
                         np->name, HIPQUAD(np->remote_ip));
-       printk(KERN_INFO "%s: remote ethernet address %s\n",
-                        np->name, print_mac(mac, np->remote_mac));
+       printk(KERN_INFO "%s: remote ethernet address %pM\n",
+                        np->name, np->remote_mac);
 }
 
 int netpoll_parse_options(struct netpoll *np, char *opt)
index a47f5ba..fa4973b 100644 (file)
@@ -509,7 +509,6 @@ static int pktgen_if_show(struct seq_file *seq, void *v)
        __u64 sa;
        __u64 stopped;
        __u64 now = getCurUs();
-       DECLARE_MAC_BUF(mac);
 
        seq_printf(seq,
                   "Params: count %llu  min_pkt_size: %u  max_pkt_size: %u\n",
@@ -554,12 +553,12 @@ static int pktgen_if_show(struct seq_file *seq, void *v)
 
        seq_puts(seq, "     src_mac: ");
 
-       seq_printf(seq, "%s ",
-                  print_mac(mac, is_zero_ether_addr(pkt_dev->src_mac) ?
-                            pkt_dev->odev->dev_addr : pkt_dev->src_mac));
+       seq_printf(seq, "%pM ",
+                  is_zero_ether_addr(pkt_dev->src_mac) ?
+                            pkt_dev->odev->dev_addr : pkt_dev->src_mac);
 
        seq_printf(seq, "dst_mac: ");
-       seq_printf(seq, "%s\n", print_mac(mac, pkt_dev->dst_mac));
+       seq_printf(seq, "%pM\n", pkt_dev->dst_mac);
 
        seq_printf(seq,
                   "     udp_src_min: %d  udp_src_max: %d  udp_dst_min: %d  udp_dst_max: %d\n",
index 4e22e3a..cdfe473 100644 (file)
@@ -489,7 +489,7 @@ static void __copy_skb_header(struct sk_buff *new, const struct sk_buff *old)
        new->network_header     = old->network_header;
        new->mac_header         = old->mac_header;
        new->dst                = dst_clone(old->dst);
-#ifdef CONFIG_INET
+#ifdef CONFIG_XFRM
        new->sp                 = secpath_get(old->sp);
 #endif
        memcpy(new->cb, old->cb, sizeof(old->cb));
index 5e2a313..ded1eb5 100644 (file)
@@ -2042,7 +2042,8 @@ int proto_register(struct proto *prot, int alloc_slab)
 
        if (alloc_slab) {
                prot->slab = kmem_cache_create(prot->name, prot->obj_size, 0,
-                                              SLAB_HWCACHE_ALIGN, NULL);
+                                       SLAB_HWCACHE_ALIGN | prot->slab_flags,
+                                       NULL);
 
                if (prot->slab == NULL) {
                        printk(KERN_CRIT "%s: Can't create sock SLAB cache!\n",
index 208bf35..bea04af 100644 (file)
@@ -296,7 +296,6 @@ static int ieee80211_ccmp_decrypt(struct sk_buff *skb, int hdr_len, void *priv)
        int i, blocks, last, len;
        size_t data_len = skb->len - hdr_len - CCMP_HDR_LEN - CCMP_MIC_LEN;
        u8 *mic = skb->data + skb->len - CCMP_MIC_LEN;
-       DECLARE_MAC_BUF(mac);
 
        if (skb->len < hdr_len + CCMP_HDR_LEN + CCMP_MIC_LEN) {
                key->dot11RSNAStatsCCMPFormatErrors++;
@@ -309,7 +308,7 @@ static int ieee80211_ccmp_decrypt(struct sk_buff *skb, int hdr_len, void *priv)
        if (!(keyidx & (1 << 5))) {
                if (net_ratelimit()) {
                        printk(KERN_DEBUG "CCMP: received packet without ExtIV"
-                              " flag from %s\n", print_mac(mac, hdr->addr2));
+                              " flag from %pM\n", hdr->addr2);
                }
                key->dot11RSNAStatsCCMPFormatErrors++;
                return -2;
@@ -322,9 +321,9 @@ static int ieee80211_ccmp_decrypt(struct sk_buff *skb, int hdr_len, void *priv)
        }
        if (!key->key_set) {
                if (net_ratelimit()) {
-                       printk(KERN_DEBUG "CCMP: received packet from %s"
+                       printk(KERN_DEBUG "CCMP: received packet from %pM"
                               " with keyid=%d that does not have a configured"
-                              " key\n", print_mac(mac, hdr->addr2), keyidx);
+                              " key\n", hdr->addr2, keyidx);
                }
                return -3;
        }
@@ -339,10 +338,10 @@ static int ieee80211_ccmp_decrypt(struct sk_buff *skb, int hdr_len, void *priv)
 
        if (ccmp_replay_check(pn, key->rx_pn)) {
                if (ieee80211_ratelimit_debug(IEEE80211_DL_DROP)) {
-                       IEEE80211_DEBUG_DROP("CCMP: replay detected: STA=%s "
+                       IEEE80211_DEBUG_DROP("CCMP: replay detected: STA=%pM "
                                 "previous PN %02x%02x%02x%02x%02x%02x "
                                 "received PN %02x%02x%02x%02x%02x%02x\n",
-                                print_mac(mac, hdr->addr2),
+                                hdr->addr2,
                                 key->rx_pn[0], key->rx_pn[1], key->rx_pn[2],
                                 key->rx_pn[3], key->rx_pn[4], key->rx_pn[5],
                                 pn[0], pn[1], pn[2], pn[3], pn[4], pn[5]);
@@ -373,7 +372,7 @@ static int ieee80211_ccmp_decrypt(struct sk_buff *skb, int hdr_len, void *priv)
        if (memcmp(mic, a, CCMP_MIC_LEN) != 0) {
                if (net_ratelimit()) {
                        printk(KERN_DEBUG "CCMP: decrypt failed: STA="
-                              "%s\n", print_mac(mac, hdr->addr2));
+                              "%pM\n", hdr->addr2);
                }
                key->dot11RSNAStatsCCMPDecryptErrors++;
                return -5;
index bba0152..d12da1d 100644 (file)
@@ -359,15 +359,13 @@ static int ieee80211_tkip_encrypt(struct sk_buff *skb, int hdr_len, void *priv)
        u8 rc4key[16], *pos, *icv;
        u32 crc;
        struct scatterlist sg;
-       DECLARE_MAC_BUF(mac);
 
        if (tkey->flags & IEEE80211_CRYPTO_TKIP_COUNTERMEASURES) {
                if (net_ratelimit()) {
                        struct ieee80211_hdr_4addr *hdr =
                            (struct ieee80211_hdr_4addr *)skb->data;
                        printk(KERN_DEBUG ": TKIP countermeasures: dropped "
-                              "TX packet to %s\n",
-                              print_mac(mac, hdr->addr1));
+                              "TX packet to %pM\n", hdr->addr1);
                }
                return -1;
        }
@@ -420,15 +418,13 @@ static int ieee80211_tkip_decrypt(struct sk_buff *skb, int hdr_len, void *priv)
        u32 crc;
        struct scatterlist sg;
        int plen;
-       DECLARE_MAC_BUF(mac);
 
        hdr = (struct ieee80211_hdr_4addr *)skb->data;
 
        if (tkey->flags & IEEE80211_CRYPTO_TKIP_COUNTERMEASURES) {
                if (net_ratelimit()) {
                        printk(KERN_DEBUG ": TKIP countermeasures: dropped "
-                              "received packet from %s\n",
-                              print_mac(mac, hdr->addr2));
+                              "received packet from %pM\n", hdr->addr2);
                }
                return -1;
        }
@@ -441,7 +437,7 @@ static int ieee80211_tkip_decrypt(struct sk_buff *skb, int hdr_len, void *priv)
        if (!(keyidx & (1 << 5))) {
                if (net_ratelimit()) {
                        printk(KERN_DEBUG "TKIP: received packet without ExtIV"
-                              " flag from %s\n", print_mac(mac, hdr->addr2));
+                              " flag from %pM\n", hdr->addr2);
                }
                return -2;
        }
@@ -453,9 +449,9 @@ static int ieee80211_tkip_decrypt(struct sk_buff *skb, int hdr_len, void *priv)
        }
        if (!tkey->key_set) {
                if (net_ratelimit()) {
-                       printk(KERN_DEBUG "TKIP: received packet from %s"
+                       printk(KERN_DEBUG "TKIP: received packet from %pM"
                               " with keyid=%d that does not have a configured"
-                              " key\n", print_mac(mac, hdr->addr2), keyidx);
+                              " key\n", hdr->addr2, keyidx);
                }
                return -3;
        }
@@ -465,9 +461,9 @@ static int ieee80211_tkip_decrypt(struct sk_buff *skb, int hdr_len, void *priv)
 
        if (tkip_replay_check(iv32, iv16, tkey->rx_iv32, tkey->rx_iv16)) {
                if (ieee80211_ratelimit_debug(IEEE80211_DL_DROP)) {
-                       IEEE80211_DEBUG_DROP("TKIP: replay detected: STA=%s"
+                       IEEE80211_DEBUG_DROP("TKIP: replay detected: STA=%pM"
                               " previous TSC %08x%04x received TSC "
-                              "%08x%04x\n", print_mac(mac, hdr->addr2),
+                              "%08x%04x\n", hdr->addr2,
                               tkey->rx_iv32, tkey->rx_iv16, iv32, iv16);
                }
                tkey->dot11RSNAStatsTKIPReplays++;
@@ -487,8 +483,8 @@ static int ieee80211_tkip_decrypt(struct sk_buff *skb, int hdr_len, void *priv)
        if (crypto_blkcipher_decrypt(&desc, &sg, &sg, plen + 4)) {
                if (net_ratelimit()) {
                        printk(KERN_DEBUG ": TKIP: failed to decrypt "
-                              "received packet from %s\n",
-                              print_mac(mac, hdr->addr2));
+                              "received packet from %pM\n",
+                              hdr->addr2);
                }
                return -7;
        }
@@ -506,7 +502,7 @@ static int ieee80211_tkip_decrypt(struct sk_buff *skb, int hdr_len, void *priv)
                }
                if (ieee80211_ratelimit_debug(IEEE80211_DL_DROP)) {
                        IEEE80211_DEBUG_DROP("TKIP: ICV error detected: STA="
-                              "%s\n", print_mac(mac, hdr->addr2));
+                              "%pM\n", hdr->addr2);
                }
                tkey->dot11RSNAStatsTKIPICVErrors++;
                return -5;
@@ -633,7 +629,6 @@ static int ieee80211_michael_mic_verify(struct sk_buff *skb, int keyidx,
 {
        struct ieee80211_tkip_data *tkey = priv;
        u8 mic[8];
-       DECLARE_MAC_BUF(mac);
 
        if (!tkey->key_set)
                return -1;
@@ -646,8 +641,8 @@ static int ieee80211_michael_mic_verify(struct sk_buff *skb, int keyidx,
                struct ieee80211_hdr_4addr *hdr;
                hdr = (struct ieee80211_hdr_4addr *)skb->data;
                printk(KERN_DEBUG "%s: Michael MIC verification failed for "
-                      "MSDU from %s keyidx=%d\n",
-                      skb->dev ? skb->dev->name : "N/A", print_mac(mac, hdr->addr2),
+                      "MSDU from %pM keyidx=%d\n",
+                      skb->dev ? skb->dev->name : "N/A", hdr->addr2,
                       keyidx);
                if (skb->dev)
                        ieee80211_michael_mic_failure(skb->dev, hdr, keyidx);
index 69dbc34..281223e 100644 (file)
@@ -282,12 +282,8 @@ ieee80211_rx_frame_decrypt(struct ieee80211_device *ieee, struct sk_buff *skb,
        res = crypt->ops->decrypt_mpdu(skb, hdrlen, crypt->priv);
        atomic_dec(&crypt->refcnt);
        if (res < 0) {
-               IEEE80211_DEBUG_DROP("decryption failed (SA=" MAC_FMT
-                                    ") res=%d\n",
-                                    hdr->addr2[0], hdr->addr2[1],
-                                    hdr->addr2[2], hdr->addr2[3],
-                                    hdr->addr2[4], hdr->addr2[5],
-                                    res);
+               IEEE80211_DEBUG_DROP("decryption failed (SA=%pM) res=%d\n",
+                                    hdr->addr2, res);
                if (res == -2)
                        IEEE80211_DEBUG_DROP("Decryption failed ICV "
                                             "mismatch (key %d)\n",
@@ -319,11 +315,7 @@ ieee80211_rx_frame_decrypt_msdu(struct ieee80211_device *ieee,
        atomic_dec(&crypt->refcnt);
        if (res < 0) {
                printk(KERN_DEBUG "%s: MSDU decryption/MIC verification failed"
-                      " (SA=" MAC_FMT " keyidx=%d)\n",
-                      ieee->dev->name,
-                      hdr->addr2[0], hdr->addr2[1],
-                      hdr->addr2[2], hdr->addr2[3],
-                      hdr->addr2[4], hdr->addr2[5],
+                      " (SA=%pM keyidx=%d)\n", ieee->dev->name, hdr->addr2,
                       keyidx);
                return -1;
        }
@@ -358,7 +350,6 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
        struct ieee80211_crypt_data *crypt = NULL;
        int keyidx = 0;
        int can_be_decrypted = 0;
-       DECLARE_MAC_BUF(mac);
 
        hdr = (struct ieee80211_hdr_4addr *)skb->data;
        stats = &ieee->stats;
@@ -468,10 +459,7 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
                         * frames silently instead of filling system log with
                         * these reports. */
                        IEEE80211_DEBUG_DROP("Decryption failed (not set)"
-                                            " (SA=" MAC_FMT ")\n",
-                                            hdr->addr2[0], hdr->addr2[1],
-                                            hdr->addr2[2], hdr->addr2[3],
-                                            hdr->addr2[4], hdr->addr2[5]);
+                                            " (SA=%pM)\n", hdr->addr2);
                        ieee->ieee_stats.rx_discards_undecryptable++;
                        goto rx_dropped;
                }
@@ -482,10 +470,7 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
                    fc & IEEE80211_FCTL_PROTECTED && ieee->host_decrypt &&
                    (keyidx = hostap_rx_frame_decrypt(ieee, skb, crypt)) < 0) {
                        printk(KERN_DEBUG "%s: failed to decrypt mgmt::auth "
-                              "from " MAC_FMT "\n", dev->name,
-                              hdr->addr2[0], hdr->addr2[1],
-                              hdr->addr2[2], hdr->addr2[3],
-                              hdr->addr2[4], hdr->addr2[5]);
+                              "from %pM\n", dev->name, hdr->addr2);
                        /* TODO: could inform hostapd about this so that it
                         * could send auth failure report */
                        goto rx_dropped;
@@ -663,11 +648,8 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
                         * configured */
                } else {
                        IEEE80211_DEBUG_DROP("encryption configured, but RX "
-                                            "frame not encrypted (SA="
-                                            MAC_FMT ")\n",
-                                            hdr->addr2[0], hdr->addr2[1],
-                                            hdr->addr2[2], hdr->addr2[3],
-                                            hdr->addr2[4], hdr->addr2[5]);
+                                            "frame not encrypted (SA=%pM)\n",
+                                            hdr->addr2);
                        goto rx_dropped;
                }
        }
@@ -675,11 +657,8 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
        if (crypt && !(fc & IEEE80211_FCTL_PROTECTED) && !ieee->open_wep &&
            !ieee80211_is_eapol_frame(ieee, skb)) {
                IEEE80211_DEBUG_DROP("dropped unencrypted RX data "
-                                    "frame from " MAC_FMT
-                                    " (drop_unencrypted=1)\n",
-                                    hdr->addr2[0], hdr->addr2[1],
-                                    hdr->addr2[2], hdr->addr2[3],
-                                    hdr->addr2[4], hdr->addr2[5]);
+                                    "frame from %pM (drop_unencrypted=1)\n",
+                                    hdr->addr2);
                goto rx_dropped;
        }
 
@@ -1429,8 +1408,6 @@ static int ieee80211_network_init(struct ieee80211_device *ieee, struct ieee8021
                                         struct ieee80211_network *network,
                                         struct ieee80211_rx_stats *stats)
 {
-       DECLARE_MAC_BUF(mac);
-
        network->qos_data.active = 0;
        network->qos_data.supported = 0;
        network->qos_data.param_count = 0;
@@ -1477,11 +1454,11 @@ static int ieee80211_network_init(struct ieee80211_device *ieee, struct ieee8021
        }
 
        if (network->mode == 0) {
-               IEEE80211_DEBUG_SCAN("Filtered out '%s (%s)' "
+               IEEE80211_DEBUG_SCAN("Filtered out '%s (%pM)' "
                                     "network.\n",
                                     escape_essid(network->ssid,
                                                  network->ssid_len),
-                                    print_mac(mac, network->bssid));
+                                    network->bssid);
                return 1;
        }
 
@@ -1510,7 +1487,6 @@ static void update_network(struct ieee80211_network *dst,
 {
        int qos_active;
        u8 old_param;
-       DECLARE_MAC_BUF(mac);
 
        ieee80211_network_reset(dst);
        dst->ibss_dfs = src->ibss_dfs;
@@ -1524,8 +1500,8 @@ static void update_network(struct ieee80211_network *dst,
                memcpy(&dst->stats, &src->stats,
                       sizeof(struct ieee80211_rx_stats));
        else
-               IEEE80211_DEBUG_SCAN("Network %s info received "
-                       "off channel (%d vs. %d)\n", print_mac(mac, src->bssid),
+               IEEE80211_DEBUG_SCAN("Network %pM info received "
+                       "off channel (%d vs. %d)\n", src->bssid,
                        dst->channel, src->stats.received_channel);
 
        dst->capability = src->capability;
@@ -1597,12 +1573,11 @@ static void ieee80211_process_probe_response(struct ieee80211_device
        struct ieee80211_info_element *info_element = beacon->info_element;
 #endif
        unsigned long flags;
-       DECLARE_MAC_BUF(mac);
 
-       IEEE80211_DEBUG_SCAN("'%s' (%s"
+       IEEE80211_DEBUG_SCAN("'%s' (%pM"
                     "): %c%c%c%c %c%c%c%c-%c%c%c%c %c%c%c%c\n",
                     escape_essid(info_element->data, info_element->len),
-                    print_mac(mac, beacon->header.addr3),
+                    beacon->header.addr3,
                     (beacon->capability & cpu_to_le16(1 << 0xf)) ? '1' : '0',
                     (beacon->capability & cpu_to_le16(1 << 0xe)) ? '1' : '0',
                     (beacon->capability & cpu_to_le16(1 << 0xd)) ? '1' : '0',
@@ -1621,10 +1596,10 @@ static void ieee80211_process_probe_response(struct ieee80211_device
                     (beacon->capability & cpu_to_le16(1 << 0x0)) ? '1' : '0');
 
        if (ieee80211_network_init(ieee, beacon, &network, stats)) {
-               IEEE80211_DEBUG_SCAN("Dropped '%s' (%s) via %s.\n",
+               IEEE80211_DEBUG_SCAN("Dropped '%s' (%pM) via %s.\n",
                                     escape_essid(info_element->data,
                                                  info_element->len),
-                                    print_mac(mac, beacon->header.addr3),
+                                    beacon->header.addr3,
                                     is_beacon(beacon->header.frame_ctl) ?
                                     "BEACON" : "PROBE RESPONSE");
                return;
@@ -1658,11 +1633,11 @@ static void ieee80211_process_probe_response(struct ieee80211_device
                        /* If there are no more slots, expire the oldest */
                        list_del(&oldest->list);
                        target = oldest;
-                       IEEE80211_DEBUG_SCAN("Expired '%s' (%s) from "
+                       IEEE80211_DEBUG_SCAN("Expired '%s' (%pM) from "
                                             "network list.\n",
                                             escape_essid(target->ssid,
                                                          target->ssid_len),
-                                            print_mac(mac, target->bssid));
+                                            target->bssid);
                        ieee80211_network_reset(target);
                } else {
                        /* Otherwise just pull from the free list */
@@ -1672,10 +1647,10 @@ static void ieee80211_process_probe_response(struct ieee80211_device
                }
 
 #ifdef CONFIG_IEEE80211_DEBUG
-               IEEE80211_DEBUG_SCAN("Adding '%s' (%s) via %s.\n",
+               IEEE80211_DEBUG_SCAN("Adding '%s' (%pM) via %s.\n",
                                     escape_essid(network.ssid,
                                                  network.ssid_len),
-                                    print_mac(mac, network.bssid),
+                                    network.bssid,
                                     is_beacon(beacon->header.frame_ctl) ?
                                     "BEACON" : "PROBE RESPONSE");
 #endif
@@ -1683,10 +1658,10 @@ static void ieee80211_process_probe_response(struct ieee80211_device
                network.ibss_dfs = NULL;
                list_add_tail(&target->list, &ieee->network_list);
        } else {
-               IEEE80211_DEBUG_SCAN("Updating '%s' (%s) via %s.\n",
+               IEEE80211_DEBUG_SCAN("Updating '%s' (%pM) via %s.\n",
                                     escape_essid(target->ssid,
                                                  target->ssid_len),
-                                    print_mac(mac, target->bssid),
+                                    target->bssid,
                                     is_beacon(beacon->header.frame_ctl) ?
                                     "BEACON" : "PROBE RESPONSE");
                update_network(target, &network);
index 973832d..89a8106 100644 (file)
@@ -264,7 +264,6 @@ int ieee80211_wx_get_scan(struct ieee80211_device *ieee,
        char *ev = extra;
        char *stop = ev + wrqu->data.length;
        int i = 0;
-       DECLARE_MAC_BUF(mac);
 
        IEEE80211_DEBUG_WX("Getting scan\n");
 
@@ -283,10 +282,10 @@ int ieee80211_wx_get_scan(struct ieee80211_device *ieee,
                                                      info);
                else
                        IEEE80211_DEBUG_SCAN("Not showing network '%s ("
-                                            "%s)' due to age (%dms).\n",
+                                            "%pM)' due to age (%dms).\n",
                                             escape_essid(network->ssid,
                                                          network->ssid_len),
-                                            print_mac(mac, network->bssid),
+                                            network->bssid,
                                             jiffies_to_msecs(jiffies -
                                                              network->
                                                              last_scanned));
index 2e78f6b..e527990 100644 (file)
@@ -490,7 +490,6 @@ int cipso_v4_doi_add(struct cipso_v4_doi *doi_def)
        }
 
        atomic_set(&doi_def->refcount, 1);
-       INIT_RCU_HEAD(&doi_def->rcu);
 
        spin_lock(&cipso_v4_doi_list_lock);
        if (cipso_v4_doi_search(doi_def->doi) != NULL)
index 56fce3a..0bff576 100644 (file)
@@ -112,13 +112,7 @@ static inline void devinet_sysctl_unregister(struct in_device *idev)
 
 static struct in_ifaddr *inet_alloc_ifa(void)
 {
-       struct in_ifaddr *ifa = kzalloc(sizeof(*ifa), GFP_KERNEL);
-
-       if (ifa) {
-               INIT_RCU_HEAD(&ifa->rcu_head);
-       }
-
-       return ifa;
+       return kzalloc(sizeof(struct in_ifaddr), GFP_KERNEL);
 }
 
 static void inet_rcu_free_ifa(struct rcu_head *head)
@@ -161,7 +155,6 @@ static struct in_device *inetdev_init(struct net_device *dev)
        in_dev = kzalloc(sizeof(*in_dev), GFP_KERNEL);
        if (!in_dev)
                goto out;
-       INIT_RCU_HEAD(&in_dev->rcu_head);
        memcpy(&in_dev->cnf, dev_net(dev)->ipv4.devconf_dflt,
                        sizeof(in_dev->cnf));
        in_dev->cnf.sysctl = NULL;
index 72b2de7..e9d6ea0 100644 (file)
@@ -976,9 +976,10 @@ int icmp_rcv(struct sk_buff *skb)
        struct net *net = dev_net(rt->u.dst.dev);
 
        if (!xfrm4_policy_check(NULL, XFRM_POLICY_IN, skb)) {
+               struct sec_path *sp = skb_sec_path(skb);
                int nh;
 
-               if (!(skb->sp && skb->sp->xvec[skb->sp->len - 1]->props.flags &
+               if (!(sp && sp->xvec[sp->len - 1]->props.flags &
                                 XFRM_STATE_ICMP))
                        goto drop;
 
index 450016b..df3fe50 100644 (file)
@@ -106,7 +106,7 @@ int ip_forward(struct sk_buff *skb)
         *      We now generate an ICMP HOST REDIRECT giving the route
         *      we calculated.
         */
-       if (rt->rt_flags&RTCF_DOREDIRECT && !opt->srr && !skb->sp)
+       if (rt->rt_flags&RTCF_DOREDIRECT && !opt->srr && !skb_sec_path(skb))
                ip_rt_send_redirect(skb);
 
        skb->priority = rt_tos2priority(iph->tos);
index 2ea6dcc..e59b4dc 100644 (file)
@@ -129,6 +129,7 @@ static int ip_rt_mtu_expires __read_mostly  = 10 * 60 * HZ;
 static int ip_rt_min_pmtu __read_mostly                = 512 + 20 + 20;
 static int ip_rt_min_advmss __read_mostly      = 256;
 static int ip_rt_secret_interval __read_mostly = 10 * 60 * HZ;
+static int rt_chain_length_max __read_mostly   = 20;
 
 static void rt_worker_func(struct work_struct *work);
 static DECLARE_DELAYED_WORK(expires_work, rt_worker_func);
@@ -145,6 +146,7 @@ static struct dst_entry *ipv4_negative_advice(struct dst_entry *dst);
 static void             ipv4_link_failure(struct sk_buff *skb);
 static void             ip_rt_update_pmtu(struct dst_entry *dst, u32 mtu);
 static int rt_garbage_collect(struct dst_ops *ops);
+static void rt_emergency_hash_rebuild(struct net *net);
 
 
 static struct dst_ops ipv4_dst_ops = {
@@ -201,6 +203,7 @@ const __u8 ip_tos2prio[16] = {
 struct rt_hash_bucket {
        struct rtable   *chain;
 };
+
 #if defined(CONFIG_SMP) || defined(CONFIG_DEBUG_SPINLOCK) || \
        defined(CONFIG_PROVE_LOCKING)
 /*
@@ -674,6 +677,20 @@ static inline u32 rt_score(struct rtable *rt)
        return score;
 }
 
+static inline bool rt_caching(const struct net *net)
+{
+       return net->ipv4.current_rt_cache_rebuild_count <=
+               net->ipv4.sysctl_rt_cache_rebuild_count;
+}
+
+static inline bool compare_hash_inputs(const struct flowi *fl1,
+                                       const struct flowi *fl2)
+{
+       return (__force u32)(((fl1->nl_u.ip4_u.daddr ^ fl2->nl_u.ip4_u.daddr) |
+               (fl1->nl_u.ip4_u.saddr ^ fl2->nl_u.ip4_u.saddr) |
+               (fl1->iif ^ fl2->iif)) == 0);
+}
+
 static inline int compare_keys(struct flowi *fl1, struct flowi *fl2)
 {
        return ((__force u32)((fl1->nl_u.ip4_u.daddr ^ fl2->nl_u.ip4_u.daddr) |
@@ -753,11 +770,24 @@ static void rt_do_flush(int process_context)
        }
 }
 
+/*
+ * While freeing expired entries, we compute average chain length
+ * and standard deviation, using fixed-point arithmetic.
+ * This to have an estimation of rt_chain_length_max
+ *  rt_chain_length_max = max(elasticity, AVG + 4*SD)
+ * We use 3 bits for frational part, and 29 (or 61) for magnitude.
+ */
+
+#define FRACT_BITS 3
+#define ONE (1UL << FRACT_BITS)
+
 static void rt_check_expire(void)
 {
        static unsigned int rover;
        unsigned int i = rover, goal;
        struct rtable *rth, **rthp;
+       unsigned long length = 0, samples = 0;
+       unsigned long sum = 0, sum2 = 0;
        u64 mult;
 
        mult = ((u64)ip_rt_gc_interval) << rt_hash_log;
@@ -766,6 +796,7 @@ static void rt_check_expire(void)
        goal = (unsigned int)mult;
        if (goal > rt_hash_mask)
                goal = rt_hash_mask + 1;
+       length = 0;
        for (; goal > 0; goal--) {
                unsigned long tmo = ip_rt_gc_timeout;
 
@@ -775,6 +806,8 @@ static void rt_check_expire(void)
                if (need_resched())
                        cond_resched();
 
+               samples++;
+
                if (*rthp == NULL)
                        continue;
                spin_lock_bh(rt_hash_lock_addr(i));
@@ -789,11 +822,29 @@ static void rt_check_expire(void)
                                if (time_before_eq(jiffies, rth->u.dst.expires)) {
                                        tmo >>= 1;
                                        rthp = &rth->u.dst.rt_next;
+                                       /*
+                                        * Only bump our length if the hash
+                                        * inputs on entries n and n+1 are not
+                                        * the same, we only count entries on
+                                        * a chain with equal hash inputs once
+                                        * so that entries for different QOS
+                                        * levels, and other non-hash input
+                                        * attributes don't unfairly skew
+                                        * the length computation
+                                        */
+                                       if ((*rthp == NULL) ||
+                                           !compare_hash_inputs(&(*rthp)->fl,
+                                                                &rth->fl))
+                                               length += ONE;
                                        continue;
                                }
                        } else if (!rt_may_expire(rth, tmo, ip_rt_gc_timeout)) {
                                tmo >>= 1;
                                rthp = &rth->u.dst.rt_next;
+                               if ((*rthp == NULL) ||
+                                   !compare_hash_inputs(&(*rthp)->fl,
+                                                        &rth->fl))
+                                       length += ONE;
                                continue;
                        }
 
@@ -802,6 +853,15 @@ static void rt_check_expire(void)
                        rt_free(rth);
                }
                spin_unlock_bh(rt_hash_lock_addr(i));
+               sum += length;
+               sum2 += length*length;
+       }
+       if (samples) {
+               unsigned long avg = sum / samples;
+               unsigned long sd = int_sqrt(sum2 / samples - avg*avg);
+               rt_chain_length_max = max_t(unsigned long,
+                                       ip_rt_gc_elasticity,
+                                       (avg + 4*sd) >> FRACT_BITS);
        }
        rover = i;
 }
@@ -851,6 +911,26 @@ static void rt_secret_rebuild(unsigned long __net)
        mod_timer(&net->ipv4.rt_secret_timer, jiffies + ip_rt_secret_interval);
 }
 
+static void rt_secret_rebuild_oneshot(struct net *net)
+{
+       del_timer_sync(&net->ipv4.rt_secret_timer);
+       rt_cache_invalidate(net);
+       if (ip_rt_secret_interval) {
+               net->ipv4.rt_secret_timer.expires += ip_rt_secret_interval;
+               add_timer(&net->ipv4.rt_secret_timer);
+       }
+}
+
+static void rt_emergency_hash_rebuild(struct net *net)
+{
+       if (net_ratelimit()) {
+               printk(KERN_WARNING "Route hash chain too long!\n");
+               printk(KERN_WARNING "Adjust your secret_interval!\n");
+       }
+
+       rt_secret_rebuild_oneshot(net);
+}
+
 /*
    Short description of GC goals.
 
@@ -989,6 +1069,7 @@ out:       return 0;
 static int rt_intern_hash(unsigned hash, struct rtable *rt, struct rtable **rp)
 {
        struct rtable   *rth, **rthp;
+       struct rtable   *rthi;
        unsigned long   now;
        struct rtable *cand, **candp;
        u32             min_score;
@@ -1002,7 +1083,13 @@ restart:
        candp = NULL;
        now = jiffies;
 
+       if (!rt_caching(dev_net(rt->u.dst.dev))) {
+               rt_drop(rt);
+               return 0;
+       }
+
        rthp = &rt_hash_table[hash].chain;
+       rthi = NULL;
 
        spin_lock_bh(rt_hash_lock_addr(hash));
        while ((rth = *rthp) != NULL) {
@@ -1048,6 +1135,17 @@ restart:
                chain_length++;
 
                rthp = &rth->u.dst.rt_next;
+
+               /*
+                * check to see if the next entry in the chain
+                * contains the same hash input values as rt.  If it does
+                * This is where we will insert into the list, instead of
+                * at the head.  This groups entries that differ by aspects not
+                * relvant to the hash function together, which we use to adjust
+                * our chain length
+                */
+               if (*rthp && compare_hash_inputs(&(*rthp)->fl, &rt->fl))
+                       rthi = rth;
        }
 
        if (cand) {
@@ -1061,6 +1159,16 @@ restart:
                        *candp = cand->u.dst.rt_next;
                        rt_free(cand);
                }
+       } else {
+               if (chain_length > rt_chain_length_max) {
+                       struct net *net = dev_net(rt->u.dst.dev);
+                       int num = ++net->ipv4.current_rt_cache_rebuild_count;
+                       if (!rt_caching(dev_net(rt->u.dst.dev))) {
+                               printk(KERN_WARNING "%s: %d rebuilds is over limit, route caching disabled\n",
+                                       rt->u.dst.dev->name, num);
+                       }
+                       rt_emergency_hash_rebuild(dev_net(rt->u.dst.dev));
+               }
        }
 
        /* Try to bind route to arp only if it is output
@@ -1098,7 +1206,11 @@ restart:
                }
        }
 
-       rt->u.dst.rt_next = rt_hash_table[hash].chain;
+       if (rthi)
+               rt->u.dst.rt_next = rthi->u.dst.rt_next;
+       else
+               rt->u.dst.rt_next = rt_hash_table[hash].chain;
+
 #if RT_CACHE_DEBUG >= 2
        if (rt->u.dst.rt_next) {
                struct rtable *trt;
@@ -1114,7 +1226,11 @@ restart:
         * previous writes to rt are comitted to memory
         * before making rt visible to other CPUS.
         */
-       rcu_assign_pointer(rt_hash_table[hash].chain, rt);
+       if (rthi)
+               rcu_assign_pointer(rthi->u.dst.rt_next, rt);
+       else
+               rcu_assign_pointer(rt_hash_table[hash].chain, rt);
+
        spin_unlock_bh(rt_hash_lock_addr(hash));
        *rp = rt;
        return 0;
@@ -1217,6 +1333,9 @@ void ip_rt_redirect(__be32 old_gw, __be32 daddr, __be32 new_gw,
            || ipv4_is_zeronet(new_gw))
                goto reject_redirect;
 
+       if (!rt_caching(net))
+               goto reject_redirect;
+
        if (!IN_DEV_SHARED_MEDIA(in_dev)) {
                if (!inet_addr_onlink(in_dev, new_gw, old_gw))
                        goto reject_redirect;
@@ -1267,7 +1386,6 @@ void ip_rt_redirect(__be32 old_gw, __be32 daddr, __be32 new_gw,
 
                                /* Copy all the information. */
                                *rt = *rth;
-                               INIT_RCU_HEAD(&rt->u.dst.rcu_head);
                                rt->u.dst.__use         = 1;
                                atomic_set(&rt->u.dst.__refcnt, 1);
                                rt->u.dst.child         = NULL;
@@ -1280,7 +1398,9 @@ void ip_rt_redirect(__be32 old_gw, __be32 daddr, __be32 new_gw,
                                rt->u.dst.path          = &rt->u.dst;
                                rt->u.dst.neighbour     = NULL;
                                rt->u.dst.hh            = NULL;
+#ifdef CONFIG_XFRM
                                rt->u.dst.xfrm          = NULL;
+#endif
                                rt->rt_genid            = rt_genid(net);
                                rt->rt_flags            |= RTCF_REDIRECTED;
 
@@ -2130,6 +2250,10 @@ int ip_route_input(struct sk_buff *skb, __be32 daddr, __be32 saddr,
        struct net *net;
 
        net = dev_net(dev);
+
+       if (!rt_caching(net))
+               goto skip_cache;
+
        tos &= IPTOS_RT_MASK;
        hash = rt_hash(daddr, saddr, iif, rt_genid(net));
 
@@ -2154,6 +2278,7 @@ int ip_route_input(struct sk_buff *skb, __be32 daddr, __be32 saddr,
        }
        rcu_read_unlock();
 
+skip_cache:
        /* Multicast recognition logic is moved from route cache to here.
           The problem was that too many Ethernet cards have broken/missing
           hardware multicast filters :-( As result the host on multicasting
@@ -2539,6 +2664,9 @@ int __ip_route_output_key(struct net *net, struct rtable **rp,
        unsigned hash;
        struct rtable *rth;
 
+       if (!rt_caching(net))
+               goto slow_output;
+
        hash = rt_hash(flp->fl4_dst, flp->fl4_src, flp->oif, rt_genid(net));
 
        rcu_read_lock_bh();
@@ -2563,6 +2691,7 @@ int __ip_route_output_key(struct net *net, struct rtable **rp,
        }
        rcu_read_unlock_bh();
 
+slow_output:
        return ip_route_output_slow(net, rp, flp);
 }
 
index 1bb10df..0cc8d31 100644 (file)
@@ -795,6 +795,14 @@ static struct ctl_table ipv4_net_table[] = {
                .mode           = 0644,
                .proc_handler   = &proc_dointvec
        },
+       {
+               .ctl_name       = CTL_UNNUMBERED,
+               .procname       = "rt_cache_rebuild_count",
+               .data           = &init_net.ipv4.sysctl_rt_cache_rebuild_count,
+               .maxlen         = sizeof(int),
+               .mode           = 0644,
+               .proc_handler   = &proc_dointvec
+       },
        { }
 };
 
@@ -827,8 +835,12 @@ static __net_init int ipv4_sysctl_init_net(struct net *net)
                        &net->ipv4.sysctl_icmp_ratelimit;
                table[5].data =
                        &net->ipv4.sysctl_icmp_ratemask;
+               table[6].data =
+                       &net->ipv4.sysctl_rt_cache_rebuild_count;
        }
 
+       net->ipv4.sysctl_rt_cache_rebuild_count = 4;
+
        net->ipv4.ipv4_hdr = register_net_sysctl_table(net,
                        net_ipv4_ctl_path, table);
        if (net->ipv4.ipv4_hdr == NULL)
index d77c0d2..04909e4 100644 (file)
@@ -2346,9 +2346,9 @@ static void DBGUNDO(struct sock *sk, const char *msg)
 #if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
        else if (sk->sk_family == AF_INET6) {
                struct ipv6_pinfo *np = inet6_sk(sk);
-               printk(KERN_DEBUG "Undo %s " NIP6_FMT "/%u c%u l%u ss%u/%u p%u\n",
+               printk(KERN_DEBUG "Undo %s %pI6/%u c%u l%u ss%u/%u p%u\n",
                       msg,
-                      NIP6(np->daddr), ntohs(inet->dport),
+                      &np->daddr, ntohs(inet->dport),
                       tp->snd_cwnd, tcp_left_out(tp),
                       tp->snd_ssthresh, tp->prior_ssthresh,
                       tp->packets_out);
index 6b6dff1..979c9d6 100644 (file)
@@ -306,8 +306,8 @@ static void tcp_retransmit_timer(struct sock *sk)
 #if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
                else if (sk->sk_family == AF_INET6) {
                        struct ipv6_pinfo *np = inet6_sk(sk);
-                       LIMIT_NETDEBUG(KERN_DEBUG "TCP: Treason uncloaked! Peer " NIP6_FMT ":%u/%u shrinks window %u:%u. Repaired.\n",
-                              NIP6(np->daddr), ntohs(inet->dport),
+                       LIMIT_NETDEBUG(KERN_DEBUG "TCP: Treason uncloaked! Peer %pI6:%u/%u shrinks window %u:%u. Repaired.\n",
+                              &np->daddr, ntohs(inet->dport),
                               inet->num, tp->snd_una, tp->snd_nxt);
                }
 #endif
index 2095abc..f760b86 100644 (file)
@@ -81,6 +81,8 @@
 #include <asm/uaccess.h>
 #include <asm/ioctls.h>
 #include <linux/bootmem.h>
+#include <linux/highmem.h>
+#include <linux/swap.h>
 #include <linux/types.h>
 #include <linux/fcntl.h>
 #include <linux/module.h>
 #include <net/xfrm.h>
 #include "udp_impl.h"
 
-/*
- *     Snmp MIB for the UDP layer
- */
-
-struct hlist_head udp_hash[UDP_HTABLE_SIZE];
-DEFINE_RWLOCK(udp_hash_lock);
+struct udp_table udp_table;
+EXPORT_SYMBOL(udp_table);
 
 int sysctl_udp_mem[3] __read_mostly;
 int sysctl_udp_rmem_min __read_mostly;
@@ -123,7 +121,7 @@ atomic_t udp_memory_allocated;
 EXPORT_SYMBOL(udp_memory_allocated);
 
 static int udp_lib_lport_inuse(struct net *net, __u16 num,
-                              const struct hlist_head udptable[],
+                              const struct udp_hslot *hslot,
                               struct sock *sk,
                               int (*saddr_comp)(const struct sock *sk1,
                                                 const struct sock *sk2))
@@ -131,7 +129,7 @@ static int udp_lib_lport_inuse(struct net *net, __u16 num,
        struct sock *sk2;
        struct hlist_node *node;
 
-       sk_for_each(sk2, node, &udptable[udp_hashfn(net, num)])
+       sk_for_each(sk2, node, &hslot->head)
                if (net_eq(sock_net(sk2), net)                  &&
                    sk2 != sk                                   &&
                    sk2->sk_hash == num                         &&
@@ -154,12 +152,11 @@ int udp_lib_get_port(struct sock *sk, unsigned short snum,
                       int (*saddr_comp)(const struct sock *sk1,
                                         const struct sock *sk2 )    )
 {
-       struct hlist_head *udptable = sk->sk_prot->h.udp_hash;
+       struct udp_hslot *hslot;
+       struct udp_table *udptable = sk->sk_prot->h.udp_table;
        int    error = 1;
        struct net *net = sock_net(sk);
 
-       write_lock_bh(&udp_hash_lock);
-
        if (!snum) {
                int low, high, remaining;
                unsigned rand;
@@ -171,26 +168,34 @@ int udp_lib_get_port(struct sock *sk, unsigned short snum,
                rand = net_random();
                snum = first = rand % remaining + low;
                rand |= 1;
-               while (udp_lib_lport_inuse(net, snum, udptable, sk,
-                                          saddr_comp)) {
+               for (;;) {
+                       hslot = &udptable->hash[udp_hashfn(net, snum)];
+                       spin_lock_bh(&hslot->lock);
+                       if (!udp_lib_lport_inuse(net, snum, hslot, sk, saddr_comp))
+                               break;
+                       spin_unlock_bh(&hslot->lock);
                        do {
                                snum = snum + rand;
                        } while (snum < low || snum > high);
                        if (snum == first)
                                goto fail;
                }
-       } else if (udp_lib_lport_inuse(net, snum, udptable, sk, saddr_comp))
-               goto fail;
-
+       } else {
+               hslot = &udptable->hash[udp_hashfn(net, snum)];
+               spin_lock_bh(&hslot->lock);
+               if (udp_lib_lport_inuse(net, snum, hslot, sk, saddr_comp))
+                       goto fail_unlock;
+       }
        inet_sk(sk)->num = snum;
        sk->sk_hash = snum;
        if (sk_unhashed(sk)) {
-               sk_add_node(sk, &udptable[udp_hashfn(net, snum)]);
+               sk_add_node_rcu(sk, &hslot->head);
                sock_prot_inuse_add(sock_net(sk), sk->sk_prot, 1);
        }
        error = 0;
+fail_unlock:
+       spin_unlock_bh(&hslot->lock);
 fail:
-       write_unlock_bh(&udp_hash_lock);
        return error;
 }
 
@@ -208,63 +213,89 @@ int udp_v4_get_port(struct sock *sk, unsigned short snum)
        return udp_lib_get_port(sk, snum, ipv4_rcv_saddr_equal);
 }
 
+static inline int compute_score(struct sock *sk, struct net *net, __be32 saddr,
+                        unsigned short hnum,
+                        __be16 sport, __be32 daddr, __be16 dport, int dif)
+{
+       int score = -1;
+
+       if (net_eq(sock_net(sk), net) && sk->sk_hash == hnum &&
+                       !ipv6_only_sock(sk)) {
+               struct inet_sock *inet = inet_sk(sk);
+
+               score = (sk->sk_family == PF_INET ? 1 : 0);
+               if (inet->rcv_saddr) {
+                       if (inet->rcv_saddr != daddr)
+                               return -1;
+                       score += 2;
+               }
+               if (inet->daddr) {
+                       if (inet->daddr != saddr)
+                               return -1;
+                       score += 2;
+               }
+               if (inet->dport) {
+                       if (inet->dport != sport)
+                               return -1;
+                       score += 2;
+               }
+               if (sk->sk_bound_dev_if) {
+                       if (sk->sk_bound_dev_if != dif)
+                               return -1;
+                       score += 2;
+               }
+       }
+       return score;
+}
+
 /* UDP is nearly always wildcards out the wazoo, it makes no sense to try
  * harder than this. -DaveM
  */
 static struct sock *__udp4_lib_lookup(struct net *net, __be32 saddr,
                __be16 sport, __be32 daddr, __be16 dport,
-               int dif, struct hlist_head udptable[])
+               int dif, struct udp_table *udptable)
 {
-       struct sock *sk, *result = NULL;
-       struct hlist_node *node;
+       struct sock *sk, *result;
+       struct hlist_node *node, *next;
        unsigned short hnum = ntohs(dport);
-       int badness = -1;
-
-       read_lock(&udp_hash_lock);
-       sk_for_each(sk, node, &udptable[udp_hashfn(net, hnum)]) {
-               struct inet_sock *inet = inet_sk(sk);
-
-               if (net_eq(sock_net(sk), net) && sk->sk_hash == hnum &&
-                               !ipv6_only_sock(sk)) {
-                       int score = (sk->sk_family == PF_INET ? 1 : 0);
-                       if (inet->rcv_saddr) {
-                               if (inet->rcv_saddr != daddr)
-                                       continue;
-                               score+=2;
-                       }
-                       if (inet->daddr) {
-                               if (inet->daddr != saddr)
-                                       continue;
-                               score+=2;
-                       }
-                       if (inet->dport) {
-                               if (inet->dport != sport)
-                                       continue;
-                               score+=2;
-                       }
-                       if (sk->sk_bound_dev_if) {
-                               if (sk->sk_bound_dev_if != dif)
-                                       continue;
-                               score+=2;
-                       }
-                       if (score == 9) {
-                               result = sk;
-                               break;
-                       } else if (score > badness) {
-                               result = sk;
-                               badness = score;
-                       }
+       unsigned int hash = udp_hashfn(net, hnum);
+       struct udp_hslot *hslot = &udptable->hash[hash];
+       int score, badness;
+
+       rcu_read_lock();
+begin:
+       result = NULL;
+       badness = -1;
+       sk_for_each_rcu_safenext(sk, node, &hslot->head, next) {
+               /*
+                * lockless reader, and SLAB_DESTROY_BY_RCU items:
+                * We must check this item was not moved to another chain
+                */
+               if (udp_hashfn(net, sk->sk_hash) != hash)
+                       goto begin;
+               score = compute_score(sk, net, saddr, hnum, sport,
+                                     daddr, dport, dif);
+               if (score > badness) {
+                       result = sk;
+                       badness = score;
                }
        }
-       if (result)
-               sock_hold(result);
-       read_unlock(&udp_hash_lock);
+       if (result) {
+               if (unlikely(!atomic_inc_not_zero(&result->sk_refcnt)))
+                       result = NULL;
+               else if (unlikely(compute_score(result, net, saddr, hnum, sport,
+                                 daddr, dport, dif) < badness)) {
+                       sock_put(result);
+                       goto begin;
+               }
+       }
+       rcu_read_unlock();
        return result;
 }
 
 static inline struct sock *__udp4_lib_lookup_skb(struct sk_buff *skb,
                                                 __be16 sport, __be16 dport,
-                                                struct hlist_head udptable[])
+                                                struct udp_table *udptable)
 {
        struct sock *sk;
        const struct iphdr *iph = ip_hdr(skb);
@@ -280,7 +311,7 @@ static inline struct sock *__udp4_lib_lookup_skb(struct sk_buff *skb,
 struct sock *udp4_lib_lookup(struct net *net, __be32 saddr, __be16 sport,
                             __be32 daddr, __be16 dport, int dif)
 {
-       return __udp4_lib_lookup(net, saddr, sport, daddr, dport, dif, udp_hash);
+       return __udp4_lib_lookup(net, saddr, sport, daddr, dport, dif, &udp_table);
 }
 EXPORT_SYMBOL_GPL(udp4_lib_lookup);
 
@@ -323,7 +354,7 @@ found:
  * to find the appropriate port.
  */
 
-void __udp4_lib_err(struct sk_buff *skb, u32 info, struct hlist_head udptable[])
+void __udp4_lib_err(struct sk_buff *skb, u32 info, struct udp_table *udptable)
 {
        struct inet_sock *inet;
        struct iphdr *iph = (struct iphdr*)skb->data;
@@ -392,7 +423,7 @@ out:
 
 void udp_err(struct sk_buff *skb, u32 info)
 {
-       __udp4_lib_err(skb, info, udp_hash);
+       __udp4_lib_err(skb, info, &udp_table);
 }
 
 /*
@@ -933,6 +964,21 @@ int udp_disconnect(struct sock *sk, int flags)
        return 0;
 }
 
+void udp_lib_unhash(struct sock *sk)
+{
+       struct udp_table *udptable = sk->sk_prot->h.udp_table;
+       unsigned int hash = udp_hashfn(sock_net(sk), sk->sk_hash);
+       struct udp_hslot *hslot = &udptable->hash[hash];
+
+       spin_lock_bh(&hslot->lock);
+       if (sk_del_node_init_rcu(sk)) {
+               inet_sk(sk)->num = 0;
+               sock_prot_inuse_add(sock_net(sk), sk->sk_prot, -1);
+       }
+       spin_unlock_bh(&hslot->lock);
+}
+EXPORT_SYMBOL(udp_lib_unhash);
+
 static int __udp_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
 {
        int is_udplite = IS_UDPLITE(sk);
@@ -1071,13 +1117,14 @@ drop:
 static int __udp4_lib_mcast_deliver(struct net *net, struct sk_buff *skb,
                                    struct udphdr  *uh,
                                    __be32 saddr, __be32 daddr,
-                                   struct hlist_head udptable[])
+                                   struct udp_table *udptable)
 {
        struct sock *sk;
+       struct udp_hslot *hslot = &udptable->hash[udp_hashfn(net, ntohs(uh->dest))];
        int dif;
 
-       read_lock(&udp_hash_lock);
-       sk = sk_head(&udptable[udp_hashfn(net, ntohs(uh->dest))]);
+       spin_lock(&hslot->lock);
+       sk = sk_head(&hslot->head);
        dif = skb->dev->ifindex;
        sk = udp_v4_mcast_next(sk, uh->dest, daddr, uh->source, saddr, dif);
        if (sk) {
@@ -1102,7 +1149,7 @@ static int __udp4_lib_mcast_deliver(struct net *net, struct sk_buff *skb,
                } while (sknext);
        } else
                kfree_skb(skb);
-       read_unlock(&udp_hash_lock);
+       spin_unlock(&hslot->lock);
        return 0;
 }
 
@@ -1148,7 +1195,7 @@ static inline int udp4_csum_init(struct sk_buff *skb, struct udphdr *uh,
  *     All we need to do is get the socket, and then do a checksum.
  */
 
-int __udp4_lib_rcv(struct sk_buff *skb, struct hlist_head udptable[],
+int __udp4_lib_rcv(struct sk_buff *skb, struct udp_table *udptable,
                   int proto)
 {
        struct sock *sk;
@@ -1246,7 +1293,7 @@ drop:
 
 int udp_rcv(struct sk_buff *skb)
 {
-       return __udp4_lib_rcv(skb, udp_hash, IPPROTO_UDP);
+       return __udp4_lib_rcv(skb, &udp_table, IPPROTO_UDP);
 }
 
 void udp_destroy_sock(struct sock *sk)
@@ -1488,7 +1535,8 @@ struct proto udp_prot = {
        .sysctl_wmem       = &sysctl_udp_wmem_min,
        .sysctl_rmem       = &sysctl_udp_rmem_min,
        .obj_size          = sizeof(struct udp_sock),
-       .h.udp_hash        = udp_hash,
+       .slab_flags        = SLAB_DESTROY_BY_RCU,
+       .h.udp_table       = &udp_table,
 #ifdef CONFIG_COMPAT
        .compat_setsockopt = compat_udp_setsockopt,
        .compat_getsockopt = compat_udp_getsockopt,
@@ -1498,20 +1546,23 @@ struct proto udp_prot = {
 /* ------------------------------------------------------------------------ */
 #ifdef CONFIG_PROC_FS
 
-static struct sock *udp_get_first(struct seq_file *seq)
+static struct sock *udp_get_first(struct seq_file *seq, int start)
 {
        struct sock *sk;
        struct udp_iter_state *state = seq->private;
        struct net *net = seq_file_net(seq);
 
-       for (state->bucket = 0; state->bucket < UDP_HTABLE_SIZE; ++state->bucket) {
+       for (state->bucket = start; state->bucket < UDP_HTABLE_SIZE; ++state->bucket) {
                struct hlist_node *node;
-               sk_for_each(sk, node, state->hashtable + state->bucket) {
+               struct udp_hslot *hslot = &state->udp_table->hash[state->bucket];
+               spin_lock_bh(&hslot->lock);
+               sk_for_each(sk, node, &hslot->head) {
                        if (!net_eq(sock_net(sk), net))
                                continue;
                        if (sk->sk_family == state->family)
                                goto found;
                }
+               spin_unlock_bh(&hslot->lock);
        }
        sk = NULL;
 found:
@@ -1525,20 +1576,18 @@ static struct sock *udp_get_next(struct seq_file *seq, struct sock *sk)
 
        do {
                sk = sk_next(sk);
-try_again:
-               ;
        } while (sk && (!net_eq(sock_net(sk), net) || sk->sk_family != state->family));
 
-       if (!sk && ++state->bucket < UDP_HTABLE_SIZE) {
-               sk = sk_head(state->hashtable + state->bucket);
-               goto try_again;
+       if (!sk) {
+               spin_unlock_bh(&state->udp_table->hash[state->bucket].lock);
+               return udp_get_first(seq, state->bucket + 1);
        }
        return sk;
 }
 
 static struct sock *udp_get_idx(struct seq_file *seq, loff_t pos)
 {
-       struct sock *sk = udp_get_first(seq);
+       struct sock *sk = udp_get_first(seq, 0);
 
        if (sk)
                while (pos && (sk = udp_get_next(seq, sk)) != NULL)
@@ -1547,9 +1596,7 @@ static struct sock *udp_get_idx(struct seq_file *seq, loff_t pos)
 }
 
 static void *udp_seq_start(struct seq_file *seq, loff_t *pos)
-       __acquires(udp_hash_lock)
 {
-       read_lock(&udp_hash_lock);
        return *pos ? udp_get_idx(seq, *pos-1) : SEQ_START_TOKEN;
 }
 
@@ -1567,9 +1614,11 @@ static void *udp_seq_next(struct seq_file *seq, void *v, loff_t *pos)
 }
 
 static void udp_seq_stop(struct seq_file *seq, void *v)
-       __releases(udp_hash_lock)
 {
-       read_unlock(&udp_hash_lock);
+       struct udp_iter_state *state = seq->private;
+
+       if (state->bucket < UDP_HTABLE_SIZE)
+               spin_unlock_bh(&state->udp_table->hash[state->bucket].lock);
 }
 
 static int udp_seq_open(struct inode *inode, struct file *file)
@@ -1585,7 +1634,7 @@ static int udp_seq_open(struct inode *inode, struct file *file)
 
        s = ((struct seq_file *)file->private_data)->private;
        s->family               = afinfo->family;
-       s->hashtable            = afinfo->hashtable;
+       s->udp_table            = afinfo->udp_table;
        return err;
 }
 
@@ -1657,7 +1706,7 @@ int udp4_seq_show(struct seq_file *seq, void *v)
 static struct udp_seq_afinfo udp4_seq_afinfo = {
        .name           = "udp",
        .family         = AF_INET,
-       .hashtable      = udp_hash,
+       .udp_table      = &udp_table,
        .seq_fops       = {
                .owner  =       THIS_MODULE,
        },
@@ -1692,16 +1741,28 @@ void udp4_proc_exit(void)
 }
 #endif /* CONFIG_PROC_FS */
 
+void __init udp_table_init(struct udp_table *table)
+{
+       int i;
+
+       for (i = 0; i < UDP_HTABLE_SIZE; i++) {
+               INIT_HLIST_HEAD(&table->hash[i].head);
+               spin_lock_init(&table->hash[i].lock);
+       }
+}
+
 void __init udp_init(void)
 {
-       unsigned long limit;
+       unsigned long nr_pages, limit;
 
+       udp_table_init(&udp_table);
        /* Set the pressure threshold up by the same strategy of TCP. It is a
         * fraction of global memory that is up to 1/2 at 256 MB, decreasing
         * toward zero with the amount of memory, with a floor of 128 pages.
         */
-       limit = min(nr_all_pages, 1UL<<(28-PAGE_SHIFT)) >> (20-PAGE_SHIFT);
-       limit = (limit * (nr_all_pages >> (20-PAGE_SHIFT))) >> (PAGE_SHIFT-11);
+       nr_pages = totalram_pages - totalhigh_pages;
+       limit = min(nr_pages, 1UL<<(28-PAGE_SHIFT)) >> (20-PAGE_SHIFT);
+       limit = (limit * (nr_pages >> (20-PAGE_SHIFT))) >> (PAGE_SHIFT-11);
        limit = max(limit, 128UL);
        sysctl_udp_mem[0] = limit / 4 * 3;
        sysctl_udp_mem[1] = limit;
@@ -1712,8 +1773,6 @@ void __init udp_init(void)
 }
 
 EXPORT_SYMBOL(udp_disconnect);
-EXPORT_SYMBOL(udp_hash);
-EXPORT_SYMBOL(udp_hash_lock);
 EXPORT_SYMBOL(udp_ioctl);
 EXPORT_SYMBOL(udp_prot);
 EXPORT_SYMBOL(udp_sendmsg);
index 2e9bad2..9f4a616 100644 (file)
@@ -5,8 +5,8 @@
 #include <net/protocol.h>
 #include <net/inet_common.h>
 
-extern int     __udp4_lib_rcv(struct sk_buff *, struct hlist_head [], int );
-extern void    __udp4_lib_err(struct sk_buff *, u32, struct hlist_head []);
+extern int     __udp4_lib_rcv(struct sk_buff *, struct udp_table *, int );
+extern void    __udp4_lib_err(struct sk_buff *, u32, struct udp_table *);
 
 extern int     udp_v4_get_port(struct sock *sk, unsigned short snum);
 
index 3c80796..c784891 100644 (file)
  */
 #include "udp_impl.h"
 
-struct hlist_head      udplite_hash[UDP_HTABLE_SIZE];
+struct udp_table       udplite_table;
+EXPORT_SYMBOL(udplite_table);
 
 static int udplite_rcv(struct sk_buff *skb)
 {
-       return __udp4_lib_rcv(skb, udplite_hash, IPPROTO_UDPLITE);
+       return __udp4_lib_rcv(skb, &udplite_table, IPPROTO_UDPLITE);
 }
 
 static void udplite_err(struct sk_buff *skb, u32 info)
 {
-       __udp4_lib_err(skb, info, udplite_hash);
+       __udp4_lib_err(skb, info, &udplite_table);
 }
 
 static struct net_protocol udplite_protocol = {
@@ -50,7 +51,8 @@ struct proto  udplite_prot = {
        .unhash            = udp_lib_unhash,
        .get_port          = udp_v4_get_port,
        .obj_size          = sizeof(struct udp_sock),
-       .h.udp_hash        = udplite_hash,
+       .slab_flags        = SLAB_DESTROY_BY_RCU,
+       .h.udp_table       = &udplite_table,
 #ifdef CONFIG_COMPAT
        .compat_setsockopt = compat_udp_setsockopt,
        .compat_getsockopt = compat_udp_getsockopt,
@@ -71,7 +73,7 @@ static struct inet_protosw udplite4_protosw = {
 static struct udp_seq_afinfo udplite4_seq_afinfo = {
        .name           = "udplite",
        .family         = AF_INET,
-       .hashtable      = udplite_hash,
+       .udp_table      = &udplite_table,
        .seq_fops       = {
                .owner  =       THIS_MODULE,
        },
@@ -108,6 +110,7 @@ static inline int udplite4_proc_init(void)
 
 void __init udplite4_register(void)
 {
+       udp_table_init(&udplite_table);
        if (proto_register(&udplite_prot, 1))
                goto out_register_err;
 
@@ -126,5 +129,4 @@ out_register_err:
        printk(KERN_CRIT "%s: Cannot add UDP-Lite protocol.\n", __func__);
 }
 
-EXPORT_SYMBOL(udplite_hash);
 EXPORT_SYMBOL(udplite_prot);
index eea9542..ff7ae05 100644 (file)
@@ -2986,9 +2986,8 @@ static void if6_seq_stop(struct seq_file *seq, void *v)
 static int if6_seq_show(struct seq_file *seq, void *v)
 {
        struct inet6_ifaddr *ifp = (struct inet6_ifaddr *)v;
-       seq_printf(seq,
-                  NIP6_SEQFMT " %02x %02x %02x %02x %8s\n",
-                  NIP6(ifp->addr),
+       seq_printf(seq, "%pi6 %02x %02x %02x %02x %8s\n",
+                  &ifp->addr,
                   ifp->idev->dev->ifindex,
                   ifp->prefix_len,
                   ifp->scope,
index 0890903..6ff73c4 100644 (file)
@@ -186,10 +186,8 @@ u32 ipv6_addr_label(struct net *net,
        label = p ? p->label : IPV6_ADDR_LABEL_DEFAULT;
        rcu_read_unlock();
 
-       ADDRLABEL(KERN_DEBUG "%s(addr=" NIP6_FMT ", type=%d, ifindex=%d) => %08x\n",
-                       __func__,
-                       NIP6(*addr), type, ifindex,
-                       label);
+       ADDRLABEL(KERN_DEBUG "%s(addr=%pI6, type=%d, ifindex=%d) => %08x\n",
+                 __func__, addr, type, ifindex, label);
 
        return label;
 }
@@ -203,11 +201,8 @@ static struct ip6addrlbl_entry *ip6addrlbl_alloc(struct net *net,
        struct ip6addrlbl_entry *newp;
        int addrtype;
 
-       ADDRLABEL(KERN_DEBUG "%s(prefix=" NIP6_FMT ", prefixlen=%d, ifindex=%d, label=%u)\n",
-                       __func__,
-                       NIP6(*prefix), prefixlen,
-                       ifindex,
-                       (unsigned int)label);
+       ADDRLABEL(KERN_DEBUG "%s(prefix=%pI6, prefixlen=%d, ifindex=%d, label=%u)\n",
+                 __func__, prefix, prefixlen, ifindex, (unsigned int)label);
 
        addrtype = ipv6_addr_type(prefix) & (IPV6_ADDR_MAPPED | IPV6_ADDR_COMPATv4 | IPV6_ADDR_LOOPBACK);
 
@@ -294,12 +289,9 @@ static int ip6addrlbl_add(struct net *net,
        struct ip6addrlbl_entry *newp;
        int ret = 0;
 
-       ADDRLABEL(KERN_DEBUG "%s(prefix=" NIP6_FMT ", prefixlen=%d, ifindex=%d, label=%u, replace=%d)\n",
-                       __func__,
-                       NIP6(*prefix), prefixlen,
-                       ifindex,
-                       (unsigned int)label,
-                       replace);
+       ADDRLABEL(KERN_DEBUG "%s(prefix=%pI6, prefixlen=%d, ifindex=%d, label=%u, replace=%d)\n",
+                 __func__, prefix, prefixlen, ifindex, (unsigned int)label,
+                 replace);
 
        newp = ip6addrlbl_alloc(net, prefix, prefixlen, ifindex, label);
        if (IS_ERR(newp))
@@ -321,10 +313,8 @@ static int __ip6addrlbl_del(struct net *net,
        struct hlist_node *pos, *n;
        int ret = -ESRCH;
 
-       ADDRLABEL(KERN_DEBUG "%s(prefix=" NIP6_FMT ", prefixlen=%d, ifindex=%d)\n",
-                       __func__,
-                       NIP6(*prefix), prefixlen,
-                       ifindex);
+       ADDRLABEL(KERN_DEBUG "%s(prefix=%pI6, prefixlen=%d, ifindex=%d)\n",
+                 __func__, prefix, prefixlen, ifindex);
 
        hlist_for_each_entry_safe(p, pos, n, &ip6addrlbl_table.head, list) {
                if (p->prefixlen == prefixlen &&
@@ -347,10 +337,8 @@ static int ip6addrlbl_del(struct net *net,
        struct in6_addr prefix_buf;
        int ret;
 
-       ADDRLABEL(KERN_DEBUG "%s(prefix=" NIP6_FMT ", prefixlen=%d, ifindex=%d)\n",
-                       __func__,
-                       NIP6(*prefix), prefixlen,
-                       ifindex);
+       ADDRLABEL(KERN_DEBUG "%s(prefix=%pI6, prefixlen=%d, ifindex=%d)\n",
+                 __func__, prefix, prefixlen, ifindex);
 
        ipv6_addr_prefix(&prefix_buf, prefix, prefixlen);
        spin_lock(&ip6addrlbl_table.lock);
index 2ff0c82..7a8a013 100644 (file)
@@ -419,8 +419,8 @@ static void ah6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
        if (!x)
                return;
 
-       NETDEBUG(KERN_DEBUG "pmtu discovery on SA AH/%08x/" NIP6_FMT "\n",
-                ntohl(ah->spi), NIP6(iph->daddr));
+       NETDEBUG(KERN_DEBUG "pmtu discovery on SA AH/%08x/%pI6\n",
+                ntohl(ah->spi), &iph->daddr);
 
        xfrm_state_put(x);
 }
index 8336cd8..1ae58be 100644 (file)
@@ -512,11 +512,9 @@ static int ac6_seq_show(struct seq_file *seq, void *v)
        struct ifacaddr6 *im = (struct ifacaddr6 *)v;
        struct ac6_iter_state *state = ac6_seq_private(seq);
 
-       seq_printf(seq,
-                  "%-4d %-15s " NIP6_SEQFMT " %5d\n",
+       seq_printf(seq, "%-4d %-15s %pi6 %5d\n",
                   state->dev->ifindex, state->dev->name,
-                  NIP6(im->aca_addr),
-                  im->aca_users);
+                  &im->aca_addr, im->aca_users);
        return 0;
 }
 
index b181b08..c02a630 100644 (file)
@@ -367,8 +367,8 @@ static void esp6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
        x = xfrm_state_lookup((xfrm_address_t *)&iph->daddr, esph->spi, IPPROTO_ESP, AF_INET6);
        if (!x)
                return;
-       printk(KERN_DEBUG "pmtu discovery on SA ESP/%08x/" NIP6_FMT "\n",
-                       ntohl(esph->spi), NIP6(iph->daddr));
+       printk(KERN_DEBUG "pmtu discovery on SA ESP/%08x/%pI6\n",
+                       ntohl(esph->spi), &iph->daddr);
        xfrm_state_put(x);
 }
 
index 6bfffec..1c7f400 100644 (file)
@@ -219,7 +219,7 @@ static int ipv6_dest_hao(struct sk_buff *skb, int optoff)
 
        if (!(ipv6_addr_type(&hao->addr) & IPV6_ADDR_UNICAST)) {
                LIMIT_NETDEBUG(
-                       KERN_DEBUG "hao is not an unicast addr: " NIP6_FMT "\n", NIP6(hao->addr));
+                       KERN_DEBUG "hao is not an unicast addr: %pI6\n", &hao->addr);
                goto discard;
        }
 
index 9b7d19a..3c2821f 100644 (file)
@@ -646,9 +646,10 @@ static int icmpv6_rcv(struct sk_buff *skb)
        int type;
 
        if (!xfrm6_policy_check(NULL, XFRM_POLICY_IN, skb)) {
+               struct sec_path *sp = skb_sec_path(skb);
                int nh;
 
-               if (!(skb->sp && skb->sp->xvec[skb->sp->len - 1]->props.flags &
+               if (!(sp && sp->xvec[sp->len - 1]->props.flags &
                                 XFRM_STATE_ICMP))
                        goto drop_no_count;
 
@@ -680,8 +681,8 @@ static int icmpv6_rcv(struct sk_buff *skb)
                skb->csum = ~csum_unfold(csum_ipv6_magic(saddr, daddr, skb->len,
                                             IPPROTO_ICMPV6, 0));
                if (__skb_checksum_complete(skb)) {
-                       LIMIT_NETDEBUG(KERN_DEBUG "ICMPv6 checksum failed [" NIP6_FMT " > " NIP6_FMT "]\n",
-                                      NIP6(*saddr), NIP6(*daddr));
+                       LIMIT_NETDEBUG(KERN_DEBUG "ICMPv6 checksum failed [%pI6 > %pI6]\n",
+                                      saddr, daddr);
                        goto discard_it;
                }
        }
index 37a4e77..7927a84 100644 (file)
@@ -696,14 +696,14 @@ static int ip6fl_seq_show(struct seq_file *seq, void *v)
        else {
                struct ip6_flowlabel *fl = v;
                seq_printf(seq,
-                          "%05X %-1d %-6d %-6d %-6ld %-8ld " NIP6_SEQFMT " %-4d\n",
+                          "%05X %-1d %-6d %-6d %-6ld %-8ld %pi6 %-4d\n",
                           (unsigned)ntohl(fl->label),
                           fl->share,
                           (unsigned)fl->owner,
                           atomic_read(&fl->users),
                           fl->linger/HZ,
                           (long)(fl->expires - jiffies)/HZ,
-                          NIP6(fl->dst),
+                          &fl->dst,
                           fl->opt ? fl->opt->opt_nflen : 0);
        }
        return 0;
index c77db0b..7d92fd9 100644 (file)
@@ -490,7 +490,7 @@ int ip6_forward(struct sk_buff *skb)
           We don't send redirects to frames decapsulated from IPsec.
         */
        if (skb->dev == dst->dev && dst->neighbour && opt->srcrt == 0 &&
-           !skb->sp) {
+           !skb_sec_path(skb)) {
                struct in6_addr *target = NULL;
                struct rt6_info *rt;
                struct neighbour *n = dst->neighbour;
index 182f8a1..c491fb9 100644 (file)
@@ -297,9 +297,8 @@ static int ipmr_mfc_seq_show(struct seq_file *seq, void *v)
                const struct mfc6_cache *mfc = v;
                const struct ipmr_mfc_iter *it = seq->private;
 
-               seq_printf(seq,
-                          NIP6_FMT " " NIP6_FMT " %-3d %8ld %8ld %8ld",
-                          NIP6(mfc->mf6c_mcastgrp), NIP6(mfc->mf6c_origin),
+               seq_printf(seq, "%pI6 %pI6 %-3d %8ld %8ld %8ld",
+                          &mfc->mf6c_mcastgrp, &mfc->mf6c_origin,
                           mfc->mf6c_parent,
                           mfc->mfc_un.res.pkt,
                           mfc->mfc_un.res.bytes,
index 4545e43..d4576a9 100644 (file)
@@ -67,8 +67,8 @@ static void ipcomp6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
        if (!x)
                return;
 
-       printk(KERN_DEBUG "pmtu discovery on SA IPCOMP/%08x/" NIP6_FMT "\n",
-                       spi, NIP6(iph->daddr));
+       printk(KERN_DEBUG "pmtu discovery on SA IPCOMP/%08x/%pI6\n",
+                       spi, &iph->daddr);
        xfrm_state_put(x);
 }
 
index d7b3c6d..a76199e 100644 (file)
@@ -2430,9 +2430,9 @@ static int igmp6_mc_seq_show(struct seq_file *seq, void *v)
        struct igmp6_mc_iter_state *state = igmp6_mc_seq_private(seq);
 
        seq_printf(seq,
-                  "%-4d %-15s " NIP6_SEQFMT " %5d %08X %ld\n",
+                  "%-4d %-15s %pi6 %5d %08X %ld\n",
                   state->dev->ifindex, state->dev->name,
-                  NIP6(im->mca_addr),
+                  &im->mca_addr,
                   im->mca_users, im->mca_flags,
                   (im->mca_flags&MAF_TIMER_RUNNING) ?
                   jiffies_to_clock_t(im->mca_timer.expires-jiffies) : 0);
@@ -2591,10 +2591,10 @@ static int igmp6_mcf_seq_show(struct seq_file *seq, void *v)
                           "Source Address", "INC", "EXC");
        } else {
                seq_printf(seq,
-                          "%3d %6.6s " NIP6_SEQFMT " " NIP6_SEQFMT " %6lu %6lu\n",
+                          "%3d %6.6s %pi6 %pi6 %6lu %6lu\n",
                           state->dev->ifindex, state->dev->name,
-                          NIP6(state->im->mca_addr),
-                          NIP6(psf->sf_addr),
+                          &state->im->mca_addr,
+                          &psf->sf_addr,
                           psf->sf_count[MCAST_INCLUDE],
                           psf->sf_count[MCAST_EXCLUDE]);
        }
index 1724383..2a6752d 100644 (file)
@@ -647,11 +647,8 @@ static void ndisc_solicit(struct neighbour *neigh, struct sk_buff *skb)
 
        if ((probes -= neigh->parms->ucast_probes) < 0) {
                if (!(neigh->nud_state & NUD_VALID)) {
-                       ND_PRINTK1(KERN_DEBUG
-                                  "%s(): trying to ucast probe in NUD_INVALID: "
-                                  NIP6_FMT "\n",
-                                  __func__,
-                                  NIP6(*target));
+                       ND_PRINTK1(KERN_DEBUG "%s(): trying to ucast probe in NUD_INVALID: %pI6\n",
+                                  __func__, target);
                }
                ndisc_send_ns(dev, neigh, target, target, saddr);
        } else if ((probes -= neigh->parms->app_probes) < 0) {
index caa441d..02885e8 100644 (file)
@@ -61,7 +61,7 @@ static void dump_packet(const struct nf_loginfo *info,
        }
 
        /* Max length: 88 "SRC=0000.0000.0000.0000.0000.0000.0000.0000 DST=0000.0000.0000.0000.0000.0000.0000.0000 " */
-       printk("SRC=" NIP6_FMT " DST=" NIP6_FMT " ", NIP6(ih->saddr), NIP6(ih->daddr));
+       printk("SRC=%pI6 DST=%pI6 ", &ih->saddr, &ih->daddr);
 
        /* Max length: 44 "LEN=65535 TC=255 HOPLIMIT=255 FLOWLBL=FFFFF " */
        printk("LEN=%Zu TC=%u HOPLIMIT=%u FLOWLBL=%u ",
index e91db16..727b953 100644 (file)
@@ -56,9 +56,8 @@ static bool ipv6_invert_tuple(struct nf_conntrack_tuple *tuple,
 static int ipv6_print_tuple(struct seq_file *s,
                            const struct nf_conntrack_tuple *tuple)
 {
-       return seq_printf(s, "src=" NIP6_FMT " dst=" NIP6_FMT " ",
-                         NIP6(*((struct in6_addr *)tuple->src.u3.ip6)),
-                         NIP6(*((struct in6_addr *)tuple->dst.u3.ip6)));
+       return seq_printf(s, "src=%pI6 dst=%pI6 ",
+                         tuple->src.u3.ip6, tuple->dst.u3.ip6);
 }
 
 /*
index 89dc699..d69fa46 100644 (file)
@@ -2408,19 +2408,16 @@ static int rt6_info_route(struct rt6_info *rt, void *p_arg)
 {
        struct seq_file *m = p_arg;
 
-       seq_printf(m, NIP6_SEQFMT " %02x ", NIP6(rt->rt6i_dst.addr),
-                  rt->rt6i_dst.plen);
+       seq_printf(m, "%pi6 %02x ", &rt->rt6i_dst.addr, rt->rt6i_dst.plen);
 
 #ifdef CONFIG_IPV6_SUBTREES
-       seq_printf(m, NIP6_SEQFMT " %02x ", NIP6(rt->rt6i_src.addr),
-                  rt->rt6i_src.plen);
+       seq_printf(m, "%pi6 %02x ", &rt->rt6i_src.addr, rt->rt6i_src.plen);
 #else
        seq_puts(m, "00000000000000000000000000000000 00 ");
 #endif
 
        if (rt->rt6i_nexthop) {
-               seq_printf(m, NIP6_SEQFMT,
-                          NIP6(*((struct in6_addr *)rt->rt6i_nexthop->primary_key)));
+               seq_printf(m, "%pi6", rt->rt6i_nexthop->primary_key);
        } else {
                seq_puts(m, "00000000000000000000000000000000");
        }
index b6b356b..9842764 100644 (file)
@@ -872,12 +872,10 @@ static int tcp_v6_inbound_md5_hash (struct sock *sk, struct sk_buff *skb)
 
        if (genhash || memcmp(hash_location, newhash, 16) != 0) {
                if (net_ratelimit()) {
-                       printk(KERN_INFO "MD5 Hash %s for "
-                              "(" NIP6_FMT ", %u)->"
-                              "(" NIP6_FMT ", %u)\n",
+                       printk(KERN_INFO "MD5 Hash %s for (%pI6, %u)->(%pI6, %u)\n",
                               genhash ? "failed" : "mismatch",
-                              NIP6(ip6h->saddr), ntohs(th->source),
-                              NIP6(ip6h->daddr), ntohs(th->dest));
+                              &ip6h->saddr, ntohs(th->source),
+                              &ip6h->daddr, ntohs(th->dest));
                }
                return 1;
        }
index e51da8c..32d914d 100644 (file)
@@ -54,62 +54,89 @@ int udp_v6_get_port(struct sock *sk, unsigned short snum)
        return udp_lib_get_port(sk, snum, ipv6_rcv_saddr_equal);
 }
 
+static inline int compute_score(struct sock *sk, struct net *net,
+                               unsigned short hnum,
+                               struct in6_addr *saddr, __be16 sport,
+                               struct in6_addr *daddr, __be16 dport,
+                               int dif)
+{
+       int score = -1;
+
+       if (net_eq(sock_net(sk), net) && sk->sk_hash == hnum &&
+                       sk->sk_family == PF_INET6) {
+               struct ipv6_pinfo *np = inet6_sk(sk);
+               struct inet_sock *inet = inet_sk(sk);
+
+               score = 0;
+               if (inet->dport) {
+                       if (inet->dport != sport)
+                               return -1;
+                       score++;
+               }
+               if (!ipv6_addr_any(&np->rcv_saddr)) {
+                       if (!ipv6_addr_equal(&np->rcv_saddr, daddr))
+                               return -1;
+                       score++;
+               }
+               if (!ipv6_addr_any(&np->daddr)) {
+                       if (!ipv6_addr_equal(&np->daddr, saddr))
+                               return -1;
+                       score++;
+               }
+               if (sk->sk_bound_dev_if) {
+                       if (sk->sk_bound_dev_if != dif)
+                               return -1;
+                       score++;
+               }
+       }
+       return score;
+}
+
 static struct sock *__udp6_lib_lookup(struct net *net,
                                      struct in6_addr *saddr, __be16 sport,
                                      struct in6_addr *daddr, __be16 dport,
-                                     int dif, struct hlist_head udptable[])
+                                     int dif, struct udp_table *udptable)
 {
-       struct sock *sk, *result = NULL;
-       struct hlist_node *node;
+       struct sock *sk, *result;
+       struct hlist_node *node, *next;
        unsigned short hnum = ntohs(dport);
-       int badness = -1;
-
-       read_lock(&udp_hash_lock);
-       sk_for_each(sk, node, &udptable[udp_hashfn(net, hnum)]) {
-               struct inet_sock *inet = inet_sk(sk);
-
-               if (net_eq(sock_net(sk), net) && sk->sk_hash == hnum &&
-                               sk->sk_family == PF_INET6) {
-                       struct ipv6_pinfo *np = inet6_sk(sk);
-                       int score = 0;
-                       if (inet->dport) {
-                               if (inet->dport != sport)
-                                       continue;
-                               score++;
-                       }
-                       if (!ipv6_addr_any(&np->rcv_saddr)) {
-                               if (!ipv6_addr_equal(&np->rcv_saddr, daddr))
-                                       continue;
-                               score++;
-                       }
-                       if (!ipv6_addr_any(&np->daddr)) {
-                               if (!ipv6_addr_equal(&np->daddr, saddr))
-                                       continue;
-                               score++;
-                       }
-                       if (sk->sk_bound_dev_if) {
-                               if (sk->sk_bound_dev_if != dif)
-                                       continue;
-                               score++;
-                       }
-                       if (score == 4) {
-                               result = sk;
-                               break;
-                       } else if (score > badness) {
-                               result = sk;
-                               badness = score;
-                       }
+       unsigned int hash = udp_hashfn(net, hnum);
+       struct udp_hslot *hslot = &udptable->hash[hash];
+       int score, badness;
+
+       rcu_read_lock();
+begin:
+       result = NULL;
+       badness = -1;
+       sk_for_each_rcu_safenext(sk, node, &hslot->head, next) {
+               /*
+                * lockless reader, and SLAB_DESTROY_BY_RCU items:
+                * We must check this item was not moved to another chain
+                */
+               if (udp_hashfn(net, sk->sk_hash) != hash)
+                       goto begin;
+               score = compute_score(sk, net, hnum, saddr, sport, daddr, dport, dif);
+               if (score > badness) {
+                       result = sk;
+                       badness = score;
+               }
+       }
+       if (result) {
+               if (unlikely(!atomic_inc_not_zero(&result->sk_refcnt)))
+                       result = NULL;
+               else if (unlikely(compute_score(result, net, hnum, saddr, sport,
+                                       daddr, dport, dif) < badness)) {
+                       sock_put(result);
+                       goto begin;
                }
        }
-       if (result)
-               sock_hold(result);
-       read_unlock(&udp_hash_lock);
+       rcu_read_unlock();
        return result;
 }
 
 static struct sock *__udp6_lib_lookup_skb(struct sk_buff *skb,
                                          __be16 sport, __be16 dport,
-                                         struct hlist_head udptable[])
+                                         struct udp_table *udptable)
 {
        struct sock *sk;
        struct ipv6hdr *iph = ipv6_hdr(skb);
@@ -239,7 +266,7 @@ csum_copy_err:
 
 void __udp6_lib_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
                    int type, int code, int offset, __be32 info,
-                   struct hlist_head udptable[]                    )
+                   struct udp_table *udptable)
 {
        struct ipv6_pinfo *np;
        struct ipv6hdr *hdr = (struct ipv6hdr*)skb->data;
@@ -275,7 +302,7 @@ static __inline__ void udpv6_err(struct sk_buff *skb,
                                 struct inet6_skb_parm *opt, int type,
                                 int code, int offset, __be32 info     )
 {
-       __udp6_lib_err(skb, opt, type, code, offset, info, udp_hash);
+       __udp6_lib_err(skb, opt, type, code, offset, info, &udp_table);
 }
 
 int udpv6_queue_rcv_skb(struct sock * sk, struct sk_buff *skb)
@@ -374,14 +401,15 @@ static struct sock *udp_v6_mcast_next(struct sock *sk,
  */
 static int __udp6_lib_mcast_deliver(struct net *net, struct sk_buff *skb,
                struct in6_addr *saddr, struct in6_addr *daddr,
-               struct hlist_head udptable[])
+               struct udp_table *udptable)
 {
        struct sock *sk, *sk2;
        const struct udphdr *uh = udp_hdr(skb);
+       struct udp_hslot *hslot = &udptable->hash[udp_hashfn(net, ntohs(uh->dest))];
        int dif;
 
-       read_lock(&udp_hash_lock);
-       sk = sk_head(&udptable[udp_hashfn(net, ntohs(uh->dest))]);
+       spin_lock(&hslot->lock);
+       sk = sk_head(&hslot->head);
        dif = inet6_iif(skb);
        sk = udp_v6_mcast_next(sk, uh->dest, daddr, uh->source, saddr, dif);
        if (!sk) {
@@ -409,7 +437,7 @@ static int __udp6_lib_mcast_deliver(struct net *net, struct sk_buff *skb,
                sk_add_backlog(sk, skb);
        bh_unlock_sock(sk);
 out:
-       read_unlock(&udp_hash_lock);
+       spin_unlock(&hslot->lock);
        return 0;
 }
 
@@ -447,7 +475,7 @@ static inline int udp6_csum_init(struct sk_buff *skb, struct udphdr *uh,
        return 0;
 }
 
-int __udp6_lib_rcv(struct sk_buff *skb, struct hlist_head udptable[],
+int __udp6_lib_rcv(struct sk_buff *skb, struct udp_table *udptable,
                   int proto)
 {
        struct sock *sk;
@@ -544,7 +572,7 @@ discard:
 
 static __inline__ int udpv6_rcv(struct sk_buff *skb)
 {
-       return __udp6_lib_rcv(skb, udp_hash, IPPROTO_UDP);
+       return __udp6_lib_rcv(skb, &udp_table, IPPROTO_UDP);
 }
 
 /*
@@ -1008,7 +1036,7 @@ int udp6_seq_show(struct seq_file *seq, void *v)
 static struct udp_seq_afinfo udp6_seq_afinfo = {
        .name           = "udp6",
        .family         = AF_INET6,
-       .hashtable      = udp_hash,
+       .udp_table      = &udp_table,
        .seq_fops       = {
                .owner  =       THIS_MODULE,
        },
@@ -1050,7 +1078,8 @@ struct proto udpv6_prot = {
        .sysctl_wmem       = &sysctl_udp_wmem_min,
        .sysctl_rmem       = &sysctl_udp_rmem_min,
        .obj_size          = sizeof(struct udp6_sock),
-       .h.udp_hash        = udp_hash,
+       .slab_flags        = SLAB_DESTROY_BY_RCU,
+       .h.udp_table       = &udp_table,
 #ifdef CONFIG_COMPAT
        .compat_setsockopt = compat_udpv6_setsockopt,
        .compat_getsockopt = compat_udpv6_getsockopt,
index 92dd7da..2377920 100644 (file)
@@ -7,9 +7,9 @@
 #include <net/inet_common.h>
 #include <net/transp_v6.h>
 
-extern int     __udp6_lib_rcv(struct sk_buff *, struct hlist_head [], int );
+extern int     __udp6_lib_rcv(struct sk_buff *, struct udp_table *, int );
 extern void    __udp6_lib_err(struct sk_buff *, struct inet6_skb_parm *,
-                              int , int , int , __be32 , struct hlist_head []);
+                              int , int , int , __be32 , struct udp_table *);
 
 extern int     udp_v6_get_port(struct sock *sk, unsigned short snum);
 
index 3cd1a1a..ba162a8 100644 (file)
 
 static int udplitev6_rcv(struct sk_buff *skb)
 {
-       return __udp6_lib_rcv(skb, udplite_hash, IPPROTO_UDPLITE);
+       return __udp6_lib_rcv(skb, &udplite_table, IPPROTO_UDPLITE);
 }
 
 static void udplitev6_err(struct sk_buff *skb,
                          struct inet6_skb_parm *opt,
                          int type, int code, int offset, __be32 info)
 {
-       __udp6_lib_err(skb, opt, type, code, offset, info, udplite_hash);
+       __udp6_lib_err(skb, opt, type, code, offset, info, &udplite_table);
 }
 
 static struct inet6_protocol udplitev6_protocol = {
@@ -49,7 +49,8 @@ struct proto udplitev6_prot = {
        .unhash            = udp_lib_unhash,
        .get_port          = udp_v6_get_port,
        .obj_size          = sizeof(struct udp6_sock),
-       .h.udp_hash        = udplite_hash,
+       .slab_flags        = SLAB_DESTROY_BY_RCU,
+       .h.udp_table       = &udplite_table,
 #ifdef CONFIG_COMPAT
        .compat_setsockopt = compat_udpv6_setsockopt,
        .compat_getsockopt = compat_udpv6_getsockopt,
@@ -95,7 +96,7 @@ void udplitev6_exit(void)
 static struct udp_seq_afinfo udplite6_seq_afinfo = {
        .name           = "udplite6",
        .family         = AF_INET6,
-       .hashtable      = udplite_hash,
+       .udp_table      = &udplite_table,
        .seq_fops       = {
                .owner  =       THIS_MODULE,
        },
index 6be1ec2..42f7d96 100644 (file)
@@ -436,7 +436,6 @@ static void irlan_check_response_param(struct irlan_cb *self, char *param,
        __u16 tmp_cpu; /* Temporary value in host order */
        __u8 *bytes;
        int i;
-       DECLARE_MAC_BUF(mac);
 
        IRDA_DEBUG(4, "%s(), parm=%s\n", __func__ , param);
 
@@ -521,8 +520,7 @@ static void irlan_check_response_param(struct irlan_cb *self, char *param,
        /* FILTER_ENTRY, have we got an ethernet address? */
        if (strcmp(param, "FILTER_ENTRY") == 0) {
                bytes = value;
-               IRDA_DEBUG(4, "Ethernet address = %s\n",
-                          print_mac(mac, bytes));
+               IRDA_DEBUG(4, "Ethernet address = %pM\n", bytes);
                for (i = 0; i < 6; i++)
                        self->dev->dev_addr[i] = bytes[i];
        }
index 48212c0..b58bd7c 100644 (file)
@@ -27,8 +27,7 @@
 
 static void llc_ui_format_mac(struct seq_file *seq, u8 *addr)
 {
-       DECLARE_MAC_BUF(mac);
-       seq_printf(seq, "%s", print_mac(mac, addr));
+       seq_printf(seq, "%pM", addr);
 }
 
 static struct sock *llc_get_sk_idx(loff_t pos)
index a3294d1..6424ac5 100644 (file)
@@ -188,7 +188,6 @@ void ieee80211_debugfs_key_add(struct ieee80211_key *key)
   {
        static int keycount;
        char buf[50];
-       DECLARE_MAC_BUF(mac);
        struct sta_info *sta;
 
        if (!key->local->debugfs.keys)
@@ -206,8 +205,7 @@ void ieee80211_debugfs_key_add(struct ieee80211_key *key)
        rcu_read_lock();
        sta = rcu_dereference(key->sta);
        if (sta)
-               sprintf(buf, "../../stations/%s",
-                       print_mac(mac, sta->sta.addr));
+               sprintf(buf, "../../stations/%pM", sta->sta.addr);
        rcu_read_unlock();
 
        /* using sta as a boolean is fine outside RCU lock */
index 2ad504f..69b2fbf 100644 (file)
@@ -104,8 +104,7 @@ static ssize_t ieee80211_if_fmt_##name(                                     \
        const struct ieee80211_sub_if_data *sdata, char *buf,           \
        int buflen)                                                     \
 {                                                                      \
-       DECLARE_MAC_BUF(mac);                                           \
-       return scnprintf(buf, buflen, "%s\n", print_mac(mac, sdata->field));\
+       return scnprintf(buf, buflen, "%pM\n", sdata->field);           \
 }
 
 #define __IEEE80211_IF_FILE(name)                                      \
index 189d0ba..21e8b1c 100644 (file)
@@ -246,15 +246,14 @@ STA_OPS_WR(agg_status);
 void ieee80211_sta_debugfs_add(struct sta_info *sta)
 {
        struct dentry *stations_dir = sta->local->debugfs.stations;
-       DECLARE_MAC_BUF(mbuf);
-       u8 *mac;
+       u8 mac[3*ETH_ALEN];
 
        sta->debugfs.add_has_run = true;
 
        if (!stations_dir)
                return;
 
-       mac = print_mac(mbuf, sta->sta.addr);
+       snprintf(mac, sizeof(mac), "%pM", sta->sta.addr);
 
        /*
         * This might fail due to a race condition:
index 8de60de..0d95561 100644 (file)
@@ -21,14 +21,13 @@ void mac80211_ev_michael_mic_failure(struct ieee80211_sub_if_data *sdata, int ke
 {
        union iwreq_data wrqu;
        char *buf = kmalloc(128, GFP_ATOMIC);
-       DECLARE_MAC_BUF(mac);
 
        if (buf) {
                /* TODO: needed parameters: count, key type, TSC */
                sprintf(buf, "MLME-MICHAELMICFAILURE.indication("
-                       "keyid=%d %scast addr=%s)",
+                       "keyid=%d %scast addr=%pM)",
                        keyidx, hdr->addr1[0] & 0x01 ? "broad" : "uni",
-                       print_mac(mac, hdr->addr2));
+                       hdr->addr2);
                memset(&wrqu, 0, sizeof(wrqu));
                wrqu.data.length = strlen(buf);
                wireless_send_event(sdata->dev, IWEVCUSTOM, &wrqu, buf);
index dc7d9a3..b854483 100644 (file)
@@ -241,7 +241,6 @@ void ieee80211_sta_stop_rx_ba_session(struct ieee80211_sub_if_data *sdata, u8 *r
        struct ieee80211_hw *hw = &local->hw;
        struct sta_info *sta;
        int ret, i;
-       DECLARE_MAC_BUF(mac);
 
        rcu_read_lock();
 
@@ -269,8 +268,8 @@ void ieee80211_sta_stop_rx_ba_session(struct ieee80211_sub_if_data *sdata, u8 *r
        BUG_ON(!local->ops->ampdu_action);
 
 #ifdef CONFIG_MAC80211_HT_DEBUG
-       printk(KERN_DEBUG "Rx BA session stop requested for %s tid %u\n",
-                               print_mac(mac, ra), tid);
+       printk(KERN_DEBUG "Rx BA session stop requested for %pM tid %u\n",
+              ra, tid);
 #endif /* CONFIG_MAC80211_HT_DEBUG */
 
        ret = local->ops->ampdu_action(hw, IEEE80211_AMPDU_RX_STOP,
@@ -383,14 +382,13 @@ int ieee80211_start_tx_ba_session(struct ieee80211_hw *hw, u8 *ra, u16 tid)
        u16 start_seq_num;
        u8 *state;
        int ret;
-       DECLARE_MAC_BUF(mac);
 
        if (tid >= STA_TID_NUM)
                return -EINVAL;
 
 #ifdef CONFIG_MAC80211_HT_DEBUG
-       printk(KERN_DEBUG "Open BA session requested for %s tid %u\n",
-                               print_mac(mac, ra), tid);
+       printk(KERN_DEBUG "Open BA session requested for %pM tid %u\n",
+              ra, tid);
 #endif /* CONFIG_MAC80211_HT_DEBUG */
 
        rcu_read_lock();
@@ -524,7 +522,6 @@ int ieee80211_stop_tx_ba_session(struct ieee80211_hw *hw,
        struct sta_info *sta;
        u8 *state;
        int ret = 0;
-       DECLARE_MAC_BUF(mac);
 
        if (tid >= STA_TID_NUM)
                return -EINVAL;
@@ -546,8 +543,8 @@ int ieee80211_stop_tx_ba_session(struct ieee80211_hw *hw,
        }
 
 #ifdef CONFIG_MAC80211_HT_DEBUG
-       printk(KERN_DEBUG "Tx BA session stop requested for %s tid %u\n",
-                               print_mac(mac, ra), tid);
+       printk(KERN_DEBUG "Tx BA session stop requested for %pM tid %u\n",
+              ra, tid);
 #endif /* CONFIG_MAC80211_HT_DEBUG */
 
        ieee80211_stop_queue(hw, sta->tid_to_tx_q[tid]);
@@ -579,7 +576,6 @@ void ieee80211_start_tx_ba_cb(struct ieee80211_hw *hw, u8 *ra, u16 tid)
        struct ieee80211_local *local = hw_to_local(hw);
        struct sta_info *sta;
        u8 *state;
-       DECLARE_MAC_BUF(mac);
 
        if (tid >= STA_TID_NUM) {
 #ifdef CONFIG_MAC80211_HT_DEBUG
@@ -594,8 +590,7 @@ void ieee80211_start_tx_ba_cb(struct ieee80211_hw *hw, u8 *ra, u16 tid)
        if (!sta) {
                rcu_read_unlock();
 #ifdef CONFIG_MAC80211_HT_DEBUG
-               printk(KERN_DEBUG "Could not find station: %s\n",
-                               print_mac(mac, ra));
+               printk(KERN_DEBUG "Could not find station: %pM\n", ra);
 #endif
                return;
        }
@@ -634,7 +629,6 @@ void ieee80211_stop_tx_ba_cb(struct ieee80211_hw *hw, u8 *ra, u8 tid)
        struct sta_info *sta;
        u8 *state;
        int agg_queue;
-       DECLARE_MAC_BUF(mac);
 
        if (tid >= STA_TID_NUM) {
 #ifdef CONFIG_MAC80211_HT_DEBUG
@@ -645,16 +639,15 @@ void ieee80211_stop_tx_ba_cb(struct ieee80211_hw *hw, u8 *ra, u8 tid)
        }
 
 #ifdef CONFIG_MAC80211_HT_DEBUG
-       printk(KERN_DEBUG "Stopping Tx BA session for %s tid %d\n",
-                               print_mac(mac, ra), tid);
+       printk(KERN_DEBUG "Stopping Tx BA session for %pM tid %d\n",
+              ra, tid);
 #endif /* CONFIG_MAC80211_HT_DEBUG */
 
        rcu_read_lock();
        sta = sta_info_get(local, ra);
        if (!sta) {
 #ifdef CONFIG_MAC80211_HT_DEBUG
-               printk(KERN_DEBUG "Could not find station: %s\n",
-                               print_mac(mac, ra));
+               printk(KERN_DEBUG "Could not find station: %pM\n", ra);
 #endif
                rcu_read_unlock();
                return;
@@ -783,7 +776,6 @@ void ieee80211_process_addba_request(struct ieee80211_local *local,
        u16 capab, tid, timeout, ba_policy, buf_size, start_seq_num, status;
        u8 dialog_token;
        int ret = -EOPNOTSUPP;
-       DECLARE_MAC_BUF(mac);
 
        /* extract session parameters from addba request frame */
        dialog_token = mgmt->u.action.u.addba_req.dialog_token;
@@ -808,8 +800,8 @@ void ieee80211_process_addba_request(struct ieee80211_local *local,
 #ifdef CONFIG_MAC80211_HT_DEBUG
                if (net_ratelimit())
                        printk(KERN_DEBUG "AddBA Req with bad params from "
-                               "%s on tid %u. policy %d, buffer size %d\n",
-                               print_mac(mac, mgmt->sa), tid, ba_policy,
+                               "%pM on tid %u. policy %d, buffer size %d\n",
+                               mgmt->sa, tid, ba_policy,
                                buf_size);
 #endif /* CONFIG_MAC80211_HT_DEBUG */
                goto end_no_lock;
@@ -831,8 +823,8 @@ void ieee80211_process_addba_request(struct ieee80211_local *local,
 #ifdef CONFIG_MAC80211_HT_DEBUG
                if (net_ratelimit())
                        printk(KERN_DEBUG "unexpected AddBA Req from "
-                               "%s on tid %u\n",
-                               print_mac(mac, mgmt->sa), tid);
+                               "%pM on tid %u\n",
+                               mgmt->sa, tid);
 #endif /* CONFIG_MAC80211_HT_DEBUG */
                goto end;
        }
@@ -964,7 +956,6 @@ void ieee80211_process_delba(struct ieee80211_sub_if_data *sdata,
        struct ieee80211_local *local = sdata->local;
        u16 tid, params;
        u16 initiator;
-       DECLARE_MAC_BUF(mac);
 
        params = le16_to_cpu(mgmt->u.action.u.delba.params);
        tid = (params & IEEE80211_DELBA_PARAM_TID_MASK) >> 12;
@@ -972,9 +963,8 @@ void ieee80211_process_delba(struct ieee80211_sub_if_data *sdata,
 
 #ifdef CONFIG_MAC80211_HT_DEBUG
        if (net_ratelimit())
-               printk(KERN_DEBUG "delba from %s (%s) tid %d reason code %d\n",
-                       print_mac(mac, mgmt->sa),
-                       initiator ? "initiator" : "recipient", tid,
+               printk(KERN_DEBUG "delba from %pM (%s) tid %d reason code %d\n",
+                       mgmt->sa, initiator ? "initiator" : "recipient", tid,
                        mgmt->u.action.u.delba.reason_code);
 #endif /* CONFIG_MAC80211_HT_DEBUG */
 
index a5b06fe..999f7aa 100644 (file)
@@ -132,7 +132,6 @@ static void ieee80211_key_enable_hw_accel(struct ieee80211_key *key)
 {
        const u8 *addr;
        int ret;
-       DECLARE_MAC_BUF(mac);
 
        assert_key_lock();
        might_sleep();
@@ -154,16 +153,15 @@ static void ieee80211_key_enable_hw_accel(struct ieee80211_key *key)
 
        if (ret && ret != -ENOSPC && ret != -EOPNOTSUPP)
                printk(KERN_ERR "mac80211-%s: failed to set key "
-                      "(%d, %s) to hardware (%d)\n",
+                      "(%d, %pM) to hardware (%d)\n",
                       wiphy_name(key->local->hw.wiphy),
-                      key->conf.keyidx, print_mac(mac, addr), ret);
+                      key->conf.keyidx, addr, ret);
 }
 
 static void ieee80211_key_disable_hw_accel(struct ieee80211_key *key)
 {
        const u8 *addr;
        int ret;
-       DECLARE_MAC_BUF(mac);
 
        assert_key_lock();
        might_sleep();
@@ -186,9 +184,9 @@ static void ieee80211_key_disable_hw_accel(struct ieee80211_key *key)
 
        if (ret)
                printk(KERN_ERR "mac80211-%s: failed to remove key "
-                      "(%d, %s) from hardware (%d)\n",
+                      "(%d, %pM) from hardware (%d)\n",
                       wiphy_name(key->local->hw.wiphy),
-                      key->conf.keyidx, print_mac(mac, addr), ret);
+                      key->conf.keyidx, addr, ret);
 
        spin_lock(&todo_lock);
        key->flags &= ~KEY_FLAG_UPLOADED_TO_HARDWARE;
index faac101..929ba54 100644 (file)
@@ -257,9 +257,6 @@ static void mesh_plink_timer(unsigned long data)
        struct sta_info *sta;
        __le16 llid, plid, reason;
        struct ieee80211_sub_if_data *sdata;
-#ifdef CONFIG_MAC80211_VERBOSE_MPL_DEBUG
-       DECLARE_MAC_BUF(mac);
-#endif
 
        /*
         * This STA is valid because sta_info_destroy() will
@@ -274,8 +271,8 @@ static void mesh_plink_timer(unsigned long data)
                spin_unlock_bh(&sta->lock);
                return;
        }
-       mpl_dbg("Mesh plink timer for %s fired on state %d\n",
-                       print_mac(mac, sta->sta.addr), sta->plink_state);
+       mpl_dbg("Mesh plink timer for %pM fired on state %d\n",
+               sta->sta.addr, sta->plink_state);
        reason = 0;
        llid = sta->llid;
        plid = sta->plid;
@@ -287,9 +284,9 @@ static void mesh_plink_timer(unsigned long data)
                /* retry timer */
                if (sta->plink_retries < dot11MeshMaxRetries(sdata)) {
                        u32 rand;
-                       mpl_dbg("Mesh plink for %s (retry, timeout): %d %d\n",
-                                       print_mac(mac, sta->sta.addr),
-                                       sta->plink_retries, sta->plink_timeout);
+                       mpl_dbg("Mesh plink for %pM (retry, timeout): %d %d\n",
+                               sta->sta.addr, sta->plink_retries,
+                               sta->plink_timeout);
                        get_random_bytes(&rand, sizeof(u32));
                        sta->plink_timeout = sta->plink_timeout +
                                             rand % sta->plink_timeout;
@@ -337,9 +334,6 @@ int mesh_plink_open(struct sta_info *sta)
 {
        __le16 llid;
        struct ieee80211_sub_if_data *sdata = sta->sdata;
-#ifdef CONFIG_MAC80211_VERBOSE_MPL_DEBUG
-       DECLARE_MAC_BUF(mac);
-#endif
 
        spin_lock_bh(&sta->lock);
        get_random_bytes(&llid, 2);
@@ -351,8 +345,8 @@ int mesh_plink_open(struct sta_info *sta)
        sta->plink_state = PLINK_OPN_SNT;
        mesh_plink_timer_set(sta, dot11MeshRetryTimeout(sdata));
        spin_unlock_bh(&sta->lock);
-       mpl_dbg("Mesh plink: starting establishment with %s\n",
-               print_mac(mac, sta->sta.addr));
+       mpl_dbg("Mesh plink: starting establishment with %pM\n",
+               sta->sta.addr);
 
        return mesh_plink_frame_tx(sdata, PLINK_OPEN,
                                   sta->sta.addr, llid, 0, 0);
@@ -360,10 +354,6 @@ int mesh_plink_open(struct sta_info *sta)
 
 void mesh_plink_block(struct sta_info *sta)
 {
-#ifdef CONFIG_MAC80211_VERBOSE_MPL_DEBUG
-       DECLARE_MAC_BUF(mac);
-#endif
-
        spin_lock_bh(&sta->lock);
        __mesh_plink_deactivate(sta);
        sta->plink_state = PLINK_BLOCKED;
@@ -374,12 +364,8 @@ int mesh_plink_close(struct sta_info *sta)
 {
        struct ieee80211_sub_if_data *sdata = sta->sdata;
        __le16 llid, plid, reason;
-#ifdef CONFIG_MAC80211_VERBOSE_MPL_DEBUG
-       DECLARE_MAC_BUF(mac);
-#endif
 
-       mpl_dbg("Mesh plink: closing link with %s\n",
-                       print_mac(mac, sta->sta.addr));
+       mpl_dbg("Mesh plink: closing link with %pM\n", sta->sta.addr);
        spin_lock_bh(&sta->lock);
        sta->reason = cpu_to_le16(MESH_LINK_CANCELLED);
        reason = sta->reason;
@@ -417,9 +403,6 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m
        u8 ie_len;
        u8 *baseaddr;
        __le16 plid, llid, reason;
-#ifdef CONFIG_MAC80211_VERBOSE_MPL_DEBUG
-       DECLARE_MAC_BUF(mac);
-#endif
 
        /* need action_code, aux */
        if (len < IEEE80211_MIN_ACTION_SIZE + 3)
@@ -557,10 +540,10 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m
                }
        }
 
-       mpl_dbg("Mesh plink (peer, state, llid, plid, event): %s %d %d %d %d\n",
-                       print_mac(mac, mgmt->sa), sta->plink_state,
-                       le16_to_cpu(sta->llid), le16_to_cpu(sta->plid),
-                       event);
+       mpl_dbg("Mesh plink (peer, state, llid, plid, event): %pM %d %d %d %d\n",
+               mgmt->sa, sta->plink_state,
+               le16_to_cpu(sta->llid), le16_to_cpu(sta->plid),
+               event);
        reason = 0;
        switch (sta->plink_state) {
                /* spin_unlock as soon as state is updated at each case */
@@ -660,8 +643,8 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m
                        sta->plink_state = PLINK_ESTAB;
                        mesh_plink_inc_estab_count(sdata);
                        spin_unlock_bh(&sta->lock);
-                       mpl_dbg("Mesh plink with %s ESTABLISHED\n",
-                                       print_mac(mac, sta->sta.addr));
+                       mpl_dbg("Mesh plink with %pM ESTABLISHED\n",
+                               sta->sta.addr);
                        break;
                default:
                        spin_unlock_bh(&sta->lock);
@@ -693,8 +676,8 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m
                        sta->plink_state = PLINK_ESTAB;
                        mesh_plink_inc_estab_count(sdata);
                        spin_unlock_bh(&sta->lock);
-                       mpl_dbg("Mesh plink with %s ESTABLISHED\n",
-                                       print_mac(mac, sta->sta.addr));
+                       mpl_dbg("Mesh plink with %pM ESTABLISHED\n",
+                               sta->sta.addr);
                        mesh_plink_frame_tx(sdata, PLINK_CONFIRM, sta->sta.addr, llid,
                                            plid, 0);
                        break;
index 87665d7..6ad2619 100644 (file)
@@ -575,18 +575,16 @@ static u32 ieee80211_handle_protect_preamb(struct ieee80211_sub_if_data *sdata,
        struct ieee80211_bss_conf *bss_conf = &sdata->bss_conf;
 #ifdef CONFIG_MAC80211_VERBOSE_DEBUG
        struct ieee80211_if_sta *ifsta = &sdata->u.sta;
-       DECLARE_MAC_BUF(mac);
 #endif
        u32 changed = 0;
 
        if (use_protection != bss_conf->use_cts_prot) {
 #ifdef CONFIG_MAC80211_VERBOSE_DEBUG
                if (net_ratelimit()) {
-                       printk(KERN_DEBUG "%s: CTS protection %s (BSSID="
-                              "%s)\n",
+                       printk(KERN_DEBUG "%s: CTS protection %s (BSSID=%pM)\n",
                               sdata->dev->name,
                               use_protection ? "enabled" : "disabled",
-                              print_mac(mac, ifsta->bssid));
+                              ifsta->bssid);
                }
 #endif
                bss_conf->use_cts_prot = use_protection;
@@ -597,10 +595,10 @@ static u32 ieee80211_handle_protect_preamb(struct ieee80211_sub_if_data *sdata,
 #ifdef CONFIG_MAC80211_VERBOSE_DEBUG
                if (net_ratelimit()) {
                        printk(KERN_DEBUG "%s: switched to %s barker preamble"
-                              " (BSSID=%s)\n",
+                              " (BSSID=%pM)\n",
                               sdata->dev->name,
                               use_short_preamble ? "short" : "long",
-                              print_mac(mac, ifsta->bssid));
+                              ifsta->bssid);
                }
 #endif
                bss_conf->use_short_preamble = use_short_preamble;
@@ -760,18 +758,16 @@ static void ieee80211_set_associated(struct ieee80211_sub_if_data *sdata,
 static void ieee80211_direct_probe(struct ieee80211_sub_if_data *sdata,
                                   struct ieee80211_if_sta *ifsta)
 {
-       DECLARE_MAC_BUF(mac);
-
        ifsta->direct_probe_tries++;
        if (ifsta->direct_probe_tries > IEEE80211_AUTH_MAX_TRIES) {
-               printk(KERN_DEBUG "%s: direct probe to AP %s timed out\n",
-                      sdata->dev->name, print_mac(mac, ifsta->bssid));
+               printk(KERN_DEBUG "%s: direct probe to AP %pM timed out\n",
+                      sdata->dev->name, ifsta->bssid);
                ifsta->state = IEEE80211_STA_MLME_DISABLED;
                return;
        }
 
-       printk(KERN_DEBUG "%s: direct probe to AP %s try %d\n",
-                       sdata->dev->name, print_mac(mac, ifsta->bssid),
+       printk(KERN_DEBUG "%s: direct probe to AP %pM try %d\n",
+                       sdata->dev->name, ifsta->bssid,
                        ifsta->direct_probe_tries);
 
        ifsta->state = IEEE80211_STA_MLME_DIRECT_PROBE;
@@ -791,20 +787,18 @@ static void ieee80211_direct_probe(struct ieee80211_sub_if_data *sdata,
 static void ieee80211_authenticate(struct ieee80211_sub_if_data *sdata,
                                   struct ieee80211_if_sta *ifsta)
 {
-       DECLARE_MAC_BUF(mac);
-
        ifsta->auth_tries++;
        if (ifsta->auth_tries > IEEE80211_AUTH_MAX_TRIES) {
-               printk(KERN_DEBUG "%s: authentication with AP %s"
+               printk(KERN_DEBUG "%s: authentication with AP %pM"
                       " timed out\n",
-                      sdata->dev->name, print_mac(mac, ifsta->bssid));
+                      sdata->dev->name, ifsta->bssid);
                ifsta->state = IEEE80211_STA_MLME_DISABLED;
                return;
        }
 
        ifsta->state = IEEE80211_STA_MLME_AUTHENTICATE;
-       printk(KERN_DEBUG "%s: authenticate with AP %s\n",
-              sdata->dev->name, print_mac(mac, ifsta->bssid));
+       printk(KERN_DEBUG "%s: authenticate with AP %pM\n",
+              sdata->dev->name, ifsta->bssid);
 
        ieee80211_send_auth(sdata, ifsta, 1, NULL, 0, 0);
 
@@ -914,20 +908,18 @@ static int ieee80211_privacy_mismatch(struct ieee80211_sub_if_data *sdata,
 static void ieee80211_associate(struct ieee80211_sub_if_data *sdata,
                                struct ieee80211_if_sta *ifsta)
 {
-       DECLARE_MAC_BUF(mac);
-
        ifsta->assoc_tries++;
        if (ifsta->assoc_tries > IEEE80211_ASSOC_MAX_TRIES) {
-               printk(KERN_DEBUG "%s: association with AP %s"
+               printk(KERN_DEBUG "%s: association with AP %pM"
                       " timed out\n",
-                      sdata->dev->name, print_mac(mac, ifsta->bssid));
+                      sdata->dev->name, ifsta->bssid);
                ifsta->state = IEEE80211_STA_MLME_DISABLED;
                return;
        }
 
        ifsta->state = IEEE80211_STA_MLME_ASSOCIATE;
-       printk(KERN_DEBUG "%s: associate with AP %s\n",
-              sdata->dev->name, print_mac(mac, ifsta->bssid));
+       printk(KERN_DEBUG "%s: associate with AP %pM\n",
+              sdata->dev->name, ifsta->bssid);
        if (ieee80211_privacy_mismatch(sdata, ifsta)) {
                printk(KERN_DEBUG "%s: mismatch in privacy configuration and "
                       "mixed-cell disabled - abort association\n", sdata->dev->name);
@@ -947,7 +939,6 @@ static void ieee80211_associated(struct ieee80211_sub_if_data *sdata,
        struct ieee80211_local *local = sdata->local;
        struct sta_info *sta;
        int disassoc;
-       DECLARE_MAC_BUF(mac);
 
        /* TODO: start monitoring current AP signal quality and number of
         * missed beacons. Scan other channels every now and then and search
@@ -960,8 +951,8 @@ static void ieee80211_associated(struct ieee80211_sub_if_data *sdata,
 
        sta = sta_info_get(local, ifsta->bssid);
        if (!sta) {
-               printk(KERN_DEBUG "%s: No STA entry for own AP %s\n",
-                      sdata->dev->name, print_mac(mac, ifsta->bssid));
+               printk(KERN_DEBUG "%s: No STA entry for own AP %pM\n",
+                      sdata->dev->name, ifsta->bssid);
                disassoc = 1;
        } else {
                disassoc = 0;
@@ -969,9 +960,9 @@ static void ieee80211_associated(struct ieee80211_sub_if_data *sdata,
                               sta->last_rx + IEEE80211_MONITORING_INTERVAL)) {
                        if (ifsta->flags & IEEE80211_STA_PROBEREQ_POLL) {
                                printk(KERN_DEBUG "%s: No ProbeResp from "
-                                      "current AP %s - assume out of "
+                                      "current AP %pM - assume out of "
                                       "range\n",
-                                      sdata->dev->name, print_mac(mac, ifsta->bssid));
+                                      sdata->dev->name, ifsta->bssid);
                                disassoc = 1;
                        } else
                                ieee80211_send_probe_req(sdata, ifsta->bssid,
@@ -1032,7 +1023,6 @@ static void ieee80211_rx_mgmt_auth(struct ieee80211_sub_if_data *sdata,
                                   size_t len)
 {
        u16 auth_alg, auth_transaction, status_code;
-       DECLARE_MAC_BUF(mac);
 
        if (ifsta->state != IEEE80211_STA_MLME_AUTHENTICATE &&
            sdata->vif.type != NL80211_IFTYPE_ADHOC)
@@ -1125,7 +1115,6 @@ static void ieee80211_rx_mgmt_deauth(struct ieee80211_sub_if_data *sdata,
                                     size_t len)
 {
        u16 reason_code;
-       DECLARE_MAC_BUF(mac);
 
        if (len < 24 + 2)
                return;
@@ -1157,7 +1146,6 @@ static void ieee80211_rx_mgmt_disassoc(struct ieee80211_sub_if_data *sdata,
                                       size_t len)
 {
        u16 reason_code;
-       DECLARE_MAC_BUF(mac);
 
        if (len < 24 + 2)
                return;
@@ -1195,7 +1183,6 @@ static void ieee80211_rx_mgmt_assoc_resp(struct ieee80211_sub_if_data *sdata,
        struct ieee80211_bss_conf *bss_conf = &sdata->bss_conf;
        u8 *pos;
        int i, j;
-       DECLARE_MAC_BUF(mac);
        bool have_higher_than_11mbit = false;
 
        /* AssocResp and ReassocResp have identical structure, so process both
@@ -1214,9 +1201,9 @@ static void ieee80211_rx_mgmt_assoc_resp(struct ieee80211_sub_if_data *sdata,
        status_code = le16_to_cpu(mgmt->u.assoc_resp.status_code);
        aid = le16_to_cpu(mgmt->u.assoc_resp.aid);
 
-       printk(KERN_DEBUG "%s: RX %sssocResp from %s (capab=0x%x "
+       printk(KERN_DEBUG "%s: RX %sssocResp from %pM (capab=0x%x "
               "status=%d aid=%d)\n",
-              sdata->dev->name, reassoc ? "Rea" : "A", print_mac(mac, mgmt->sa),
+              sdata->dev->name, reassoc ? "Rea" : "A", mgmt->sa,
               capab_info, status_code, (u16)(aid & ~(BIT(15) | BIT(14))));
 
        if (status_code != WLAN_STATUS_SUCCESS) {
@@ -1507,8 +1494,6 @@ static void ieee80211_rx_bss_info(struct ieee80211_sub_if_data *sdata,
        u64 beacon_timestamp, rx_timestamp;
        u64 supp_rates = 0;
        enum ieee80211_band band = rx_status->band;
-       DECLARE_MAC_BUF(mac);
-       DECLARE_MAC_BUF(mac2);
 
        if (elems->ds_params && elems->ds_params_len == 1)
                freq = ieee80211_channel_to_frequency(elems->ds_params[0]);
@@ -1538,10 +1523,10 @@ static void ieee80211_rx_bss_info(struct ieee80211_sub_if_data *sdata,
 #ifdef CONFIG_MAC80211_IBSS_DEBUG
                        if (sta->sta.supp_rates[band] != prev_rates)
                                printk(KERN_DEBUG "%s: updated supp_rates set "
-                                   "for %s based on beacon info (0x%llx | "
+                                   "for %pM based on beacon info (0x%llx | "
                                    "0x%llx -> 0x%llx)\n",
                                    sdata->dev->name,
-                                   print_mac(mac, sta->sta.addr),
+                                   sta->sta.addr,
                                    (unsigned long long) prev_rates,
                                    (unsigned long long) supp_rates,
                                    (unsigned long long) sta->sta.supp_rates[band]);
@@ -1605,10 +1590,9 @@ static void ieee80211_rx_bss_info(struct ieee80211_sub_if_data *sdata,
                        /* can't merge without knowing the TSF */
                        rx_timestamp = -1LLU;
 #ifdef CONFIG_MAC80211_IBSS_DEBUG
-               printk(KERN_DEBUG "RX beacon SA=%s BSSID="
-                      "%s TSF=0x%llx BCN=0x%llx diff=%lld @%lu\n",
-                      print_mac(mac, mgmt->sa),
-                      print_mac(mac2, mgmt->bssid),
+               printk(KERN_DEBUG "RX beacon SA=%pM BSSID="
+                      "%pM TSF=0x%llx BCN=0x%llx diff=%lld @%lu\n",
+                      mgmt->sa, mgmt->bssid,
                       (unsigned long long)rx_timestamp,
                       (unsigned long long)beacon_timestamp,
                       (unsigned long long)(rx_timestamp - beacon_timestamp),
@@ -1617,8 +1601,8 @@ static void ieee80211_rx_bss_info(struct ieee80211_sub_if_data *sdata,
                if (beacon_timestamp > rx_timestamp) {
 #ifdef CONFIG_MAC80211_IBSS_DEBUG
                        printk(KERN_DEBUG "%s: beacon TSF higher than "
-                              "local TSF - IBSS merge with BSSID %s\n",
-                              sdata->dev->name, print_mac(mac, mgmt->bssid));
+                              "local TSF - IBSS merge with BSSID %pM\n",
+                              sdata->dev->name, mgmt->bssid);
 #endif
                        ieee80211_sta_join_ibss(sdata, &sdata->u.sta, bss);
                        ieee80211_ibss_add_sta(sdata, NULL,
@@ -1727,11 +1711,6 @@ static void ieee80211_rx_mgmt_probe_req(struct ieee80211_sub_if_data *sdata,
        struct sk_buff *skb;
        struct ieee80211_mgmt *resp;
        u8 *pos, *end;
-       DECLARE_MAC_BUF(mac);
-#ifdef CONFIG_MAC80211_IBSS_DEBUG
-       DECLARE_MAC_BUF(mac2);
-       DECLARE_MAC_BUF(mac3);
-#endif
 
        if (sdata->vif.type != NL80211_IFTYPE_ADHOC ||
            ifsta->state != IEEE80211_STA_MLME_IBSS_JOINED ||
@@ -1744,10 +1723,10 @@ static void ieee80211_rx_mgmt_probe_req(struct ieee80211_sub_if_data *sdata,
                tx_last_beacon = 1;
 
 #ifdef CONFIG_MAC80211_IBSS_DEBUG
-       printk(KERN_DEBUG "%s: RX ProbeReq SA=%s DA=%s BSSID="
-              "%s (tx_last_beacon=%d)\n",
-              sdata->dev->name, print_mac(mac, mgmt->sa), print_mac(mac2, mgmt->da),
-              print_mac(mac3, mgmt->bssid), tx_last_beacon);
+       printk(KERN_DEBUG "%s: RX ProbeReq SA=%pM DA=%pM BSSID=%pM"
+              " (tx_last_beacon=%d)\n",
+              sdata->dev->name, mgmt->sa, mgmt->da,
+              mgmt->bssid, tx_last_beacon);
 #endif /* CONFIG_MAC80211_IBSS_DEBUG */
 
        if (!tx_last_beacon)
@@ -1763,8 +1742,8 @@ static void ieee80211_rx_mgmt_probe_req(struct ieee80211_sub_if_data *sdata,
            pos + 2 + pos[1] > end) {
 #ifdef CONFIG_MAC80211_IBSS_DEBUG
                printk(KERN_DEBUG "%s: Invalid SSID IE in ProbeReq "
-                      "from %s\n",
-                      sdata->dev->name, print_mac(mac, mgmt->sa));
+                      "from %pM\n",
+                      sdata->dev->name, mgmt->sa);
 #endif
                return;
        }
@@ -1783,8 +1762,8 @@ static void ieee80211_rx_mgmt_probe_req(struct ieee80211_sub_if_data *sdata,
        resp = (struct ieee80211_mgmt *) skb->data;
        memcpy(resp->da, mgmt->sa, ETH_ALEN);
 #ifdef CONFIG_MAC80211_IBSS_DEBUG
-       printk(KERN_DEBUG "%s: Sending ProbeResp to %s\n",
-              sdata->dev->name, print_mac(mac, resp->da));
+       printk(KERN_DEBUG "%s: Sending ProbeResp to %pM\n",
+              sdata->dev->name, resp->da);
 #endif /* CONFIG_MAC80211_IBSS_DEBUG */
        ieee80211_tx_skb(sdata, skb, 0);
 }
@@ -1990,7 +1969,6 @@ static int ieee80211_sta_create_ibss(struct ieee80211_sub_if_data *sdata,
        u8 bssid[ETH_ALEN], *pos;
        int i;
        int ret;
-       DECLARE_MAC_BUF(mac);
 
 #if 0
        /* Easier testing, use fixed BSSID. */
@@ -2006,8 +1984,8 @@ static int ieee80211_sta_create_ibss(struct ieee80211_sub_if_data *sdata,
        bssid[0] |= 0x02;
 #endif
 
-       printk(KERN_DEBUG "%s: Creating new IBSS network, BSSID %s\n",
-              sdata->dev->name, print_mac(mac, bssid));
+       printk(KERN_DEBUG "%s: Creating new IBSS network, BSSID %pM\n",
+              sdata->dev->name, bssid);
 
        bss = ieee80211_rx_bss_add(local, bssid,
                                   local->hw.conf.channel->center_freq,
@@ -2050,8 +2028,6 @@ static int ieee80211_sta_find_ibss(struct ieee80211_sub_if_data *sdata,
        int found = 0;
        u8 bssid[ETH_ALEN];
        int active_ibss;
-       DECLARE_MAC_BUF(mac);
-       DECLARE_MAC_BUF(mac2);
 
        if (ifsta->ssid_len == 0)
                return -EINVAL;
@@ -2068,8 +2044,7 @@ static int ieee80211_sta_find_ibss(struct ieee80211_sub_if_data *sdata,
                    || !(bss->capability & WLAN_CAPABILITY_IBSS))
                        continue;
 #ifdef CONFIG_MAC80211_IBSS_DEBUG
-               printk(KERN_DEBUG "   bssid=%s found\n",
-                      print_mac(mac, bss->bssid));
+               printk(KERN_DEBUG "   bssid=%pM found\n", bss->bssid);
 #endif /* CONFIG_MAC80211_IBSS_DEBUG */
                memcpy(bssid, bss->bssid, ETH_ALEN);
                found = 1;
@@ -2080,9 +2055,8 @@ static int ieee80211_sta_find_ibss(struct ieee80211_sub_if_data *sdata,
 
 #ifdef CONFIG_MAC80211_IBSS_DEBUG
        if (found)
-               printk(KERN_DEBUG "   sta_find_ibss: selected %s current "
-                      "%s\n", print_mac(mac, bssid),
-                      print_mac(mac2, ifsta->bssid));
+               printk(KERN_DEBUG "   sta_find_ibss: selected %pM current "
+                      "%pM\n", bssid, ifsta->bssid);
 #endif /* CONFIG_MAC80211_IBSS_DEBUG */
 
        if (found && memcmp(ifsta->bssid, bssid, ETH_ALEN) != 0) {
@@ -2099,9 +2073,9 @@ static int ieee80211_sta_find_ibss(struct ieee80211_sub_if_data *sdata,
                if (!bss)
                        goto dont_join;
 
-               printk(KERN_DEBUG "%s: Selected IBSS BSSID %s"
+               printk(KERN_DEBUG "%s: Selected IBSS BSSID %pM"
                       " based on configured SSID\n",
-                      sdata->dev->name, print_mac(mac, bssid));
+                      sdata->dev->name, bssid);
                ret = ieee80211_sta_join_ibss(sdata, ifsta, bss);
                ieee80211_rx_bss_put(local, bss);
                return ret;
@@ -2343,7 +2317,6 @@ struct sta_info *ieee80211_ibss_add_sta(struct ieee80211_sub_if_data *sdata,
 {
        struct ieee80211_local *local = sdata->local;
        struct sta_info *sta;
-       DECLARE_MAC_BUF(mac);
        int band = local->hw.conf.channel->band;
 
        /* TODO: Could consider removing the least recently used entry and
@@ -2351,7 +2324,7 @@ struct sta_info *ieee80211_ibss_add_sta(struct ieee80211_sub_if_data *sdata,
        if (local->num_sta >= IEEE80211_IBSS_MAX_STA_ENTRIES) {
                if (net_ratelimit()) {
                        printk(KERN_DEBUG "%s: No room for a new IBSS STA "
-                              "entry %s\n", sdata->dev->name, print_mac(mac, addr));
+                              "entry %pM\n", sdata->dev->name, addr);
                }
                return NULL;
        }
@@ -2360,8 +2333,8 @@ struct sta_info *ieee80211_ibss_add_sta(struct ieee80211_sub_if_data *sdata,
                return NULL;
 
 #ifdef CONFIG_MAC80211_VERBOSE_DEBUG
-       printk(KERN_DEBUG "%s: Adding new IBSS station %s (dev=%s)\n",
-              wiphy_name(local->hw.wiphy), print_mac(mac, addr), sdata->dev->name);
+       printk(KERN_DEBUG "%s: Adding new IBSS station %pM (dev=%s)\n",
+              wiphy_name(local->hw.wiphy), addr, sdata->dev->name);
 #endif
 
        sta = sta_info_alloc(sdata, addr, GFP_ATOMIC);
index cf6b121..39aaf21 100644 (file)
@@ -653,13 +653,12 @@ ieee80211_rx_h_decrypt(struct ieee80211_rx_data *rx)
 static void ap_sta_ps_start(struct sta_info *sta)
 {
        struct ieee80211_sub_if_data *sdata = sta->sdata;
-       DECLARE_MAC_BUF(mac);
 
        atomic_inc(&sdata->bss->num_sta_ps);
        set_and_clear_sta_flags(sta, WLAN_STA_PS, WLAN_STA_PSPOLL);
 #ifdef CONFIG_MAC80211_VERBOSE_PS_DEBUG
-       printk(KERN_DEBUG "%s: STA %s aid %d enters power save mode\n",
-              sdata->dev->name, print_mac(mac, sta->sta.addr), sta->sta.aid);
+       printk(KERN_DEBUG "%s: STA %pM aid %d enters power save mode\n",
+              sdata->dev->name, sta->sta.addr, sta->sta.aid);
 #endif /* CONFIG_MAC80211_VERBOSE_PS_DEBUG */
 }
 
@@ -670,7 +669,6 @@ static int ap_sta_ps_end(struct sta_info *sta)
        struct sk_buff *skb;
        int sent = 0;
        struct ieee80211_tx_info *info;
-       DECLARE_MAC_BUF(mac);
 
        atomic_dec(&sdata->bss->num_sta_ps);
 
@@ -680,8 +678,8 @@ static int ap_sta_ps_end(struct sta_info *sta)
                sta_info_clear_tim_bit(sta);
 
 #ifdef CONFIG_MAC80211_VERBOSE_PS_DEBUG
-       printk(KERN_DEBUG "%s: STA %s aid %d exits power save mode\n",
-              sdata->dev->name, print_mac(mac, sta->sta.addr), sta->sta.aid);
+       printk(KERN_DEBUG "%s: STA %pM aid %d exits power save mode\n",
+              sdata->dev->name, sta->sta.addr, sta->sta.aid);
 #endif /* CONFIG_MAC80211_VERBOSE_PS_DEBUG */
 
        /* Send all buffered frames to the station */
@@ -696,9 +694,9 @@ static int ap_sta_ps_end(struct sta_info *sta)
                local->total_ps_buffered--;
                sent++;
 #ifdef CONFIG_MAC80211_VERBOSE_PS_DEBUG
-               printk(KERN_DEBUG "%s: STA %s aid %d send PS frame "
+               printk(KERN_DEBUG "%s: STA %pM aid %d send PS frame "
                       "since STA not sleeping anymore\n", sdata->dev->name,
-                      print_mac(mac, sta->sta.addr), sta->sta.aid);
+                      sta->sta.addr, sta->sta.aid);
 #endif /* CONFIG_MAC80211_VERBOSE_PS_DEBUG */
                info->flags |= IEEE80211_TX_CTL_REQUEUE;
                dev_queue_xmit(skb);
@@ -789,15 +787,12 @@ ieee80211_reassemble_add(struct ieee80211_sub_if_data *sdata,
 #ifdef CONFIG_MAC80211_VERBOSE_DEBUG
                struct ieee80211_hdr *hdr =
                        (struct ieee80211_hdr *) entry->skb_list.next->data;
-               DECLARE_MAC_BUF(mac);
-               DECLARE_MAC_BUF(mac2);
                printk(KERN_DEBUG "%s: RX reassembly removed oldest "
                       "fragment entry (idx=%d age=%lu seq=%d last_frag=%d "
-                      "addr1=%s addr2=%s\n",
+                      "addr1=%pM addr2=%pM\n",
                       sdata->dev->name, idx,
                       jiffies - entry->first_frag_time, entry->seq,
-                      entry->last_frag, print_mac(mac, hdr->addr1),
-                      print_mac(mac2, hdr->addr2));
+                      entry->last_frag, hdr->addr1, hdr->addr2);
 #endif
                __skb_queue_purge(&entry->skb_list);
        }
@@ -866,7 +861,6 @@ ieee80211_rx_h_defragment(struct ieee80211_rx_data *rx)
        unsigned int frag, seq;
        struct ieee80211_fragment_entry *entry;
        struct sk_buff *skb;
-       DECLARE_MAC_BUF(mac);
 
        hdr = (struct ieee80211_hdr *)rx->skb->data;
        fc = hdr->frame_control;
@@ -970,7 +964,6 @@ ieee80211_rx_h_ps_poll(struct ieee80211_rx_data *rx)
        struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(rx->dev);
        struct sk_buff *skb;
        int no_pending_pkts;
-       DECLARE_MAC_BUF(mac);
        __le16 fc = ((struct ieee80211_hdr *)rx->skb->data)->frame_control;
 
        if (likely(!rx->sta || !ieee80211_is_pspoll(fc) ||
@@ -1001,8 +994,8 @@ ieee80211_rx_h_ps_poll(struct ieee80211_rx_data *rx)
                set_sta_flags(rx->sta, WLAN_STA_PSPOLL);
 
 #ifdef CONFIG_MAC80211_VERBOSE_PS_DEBUG
-               printk(KERN_DEBUG "STA %s aid %d: PS Poll (entries after %d)\n",
-                      print_mac(mac, rx->sta->sta.addr), rx->sta->sta.aid,
+               printk(KERN_DEBUG "STA %pM aid %d: PS Poll (entries after %d)\n",
+                      rx->sta->sta.addr, rx->sta->sta.aid,
                       skb_queue_len(&rx->sta->ps_tx_buf));
 #endif /* CONFIG_MAC80211_VERBOSE_PS_DEBUG */
 
@@ -1025,9 +1018,9 @@ ieee80211_rx_h_ps_poll(struct ieee80211_rx_data *rx)
                 *        Should we send it a null-func frame indicating we
                 *        have nothing buffered for it?
                 */
-               printk(KERN_DEBUG "%s: STA %s sent PS Poll even "
+               printk(KERN_DEBUG "%s: STA %pM sent PS Poll even "
                       "though there are no buffered frames for it\n",
-                      rx->dev->name, print_mac(mac, rx->sta->sta.addr));
+                      rx->dev->name, rx->sta->sta.addr);
 #endif /* CONFIG_MAC80211_VERBOSE_PS_DEBUG */
        }
 
@@ -1097,10 +1090,6 @@ ieee80211_data_to_8023(struct ieee80211_rx_data *rx)
        u8 src[ETH_ALEN] __aligned(2);
        struct sk_buff *skb = rx->skb;
        struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
-       DECLARE_MAC_BUF(mac);
-       DECLARE_MAC_BUF(mac2);
-       DECLARE_MAC_BUF(mac3);
-       DECLARE_MAC_BUF(mac4);
 
        if (unlikely(!ieee80211_is_data_present(hdr->frame_control)))
                return -1;
@@ -1279,7 +1268,6 @@ ieee80211_rx_h_amsdu(struct ieee80211_rx_data *rx)
        int remaining, err;
        u8 dst[ETH_ALEN];
        u8 src[ETH_ALEN];
-       DECLARE_MAC_BUF(mac);
 
        if (unlikely(!ieee80211_is_data(fc)))
                return RX_CONTINUE;
@@ -1632,8 +1620,6 @@ static void ieee80211_rx_michael_mic_report(struct net_device *dev,
 {
        int keyidx;
        unsigned int hdrlen;
-       DECLARE_MAC_BUF(mac);
-       DECLARE_MAC_BUF(mac2);
 
        hdrlen = ieee80211_hdrlen(hdr->frame_control);
        if (rx->skb->len >= hdrlen + 4)
index 7fef8ea..ca89a84 100644 (file)
@@ -137,14 +137,12 @@ struct sta_info *sta_info_get_by_idx(struct ieee80211_local *local, int idx,
 static void __sta_info_free(struct ieee80211_local *local,
                            struct sta_info *sta)
 {
-       DECLARE_MAC_BUF(mbuf);
-
        rate_control_free_sta(sta);
        rate_control_put(sta->rate_ctrl);
 
 #ifdef CONFIG_MAC80211_VERBOSE_DEBUG
-       printk(KERN_DEBUG "%s: Destroyed STA %s\n",
-              wiphy_name(local->hw.wiphy), print_mac(mbuf, sta->sta.addr));
+       printk(KERN_DEBUG "%s: Destroyed STA %pM\n",
+              wiphy_name(local->hw.wiphy), sta->sta.addr);
 #endif /* CONFIG_MAC80211_VERBOSE_DEBUG */
 
        kfree(sta);
@@ -222,7 +220,6 @@ struct sta_info *sta_info_alloc(struct ieee80211_sub_if_data *sdata,
        struct ieee80211_local *local = sdata->local;
        struct sta_info *sta;
        int i;
-       DECLARE_MAC_BUF(mbuf);
 
        sta = kzalloc(sizeof(*sta) + local->hw.sta_data_size, gfp);
        if (!sta)
@@ -263,8 +260,8 @@ struct sta_info *sta_info_alloc(struct ieee80211_sub_if_data *sdata,
        skb_queue_head_init(&sta->tx_filtered);
 
 #ifdef CONFIG_MAC80211_VERBOSE_DEBUG
-       printk(KERN_DEBUG "%s: Allocated STA %s\n",
-              wiphy_name(local->hw.wiphy), print_mac(mbuf, sta->sta.addr));
+       printk(KERN_DEBUG "%s: Allocated STA %pM\n",
+              wiphy_name(local->hw.wiphy), sta->sta.addr);
 #endif /* CONFIG_MAC80211_VERBOSE_DEBUG */
 
 #ifdef CONFIG_MAC80211_MESH
@@ -281,7 +278,6 @@ int sta_info_insert(struct sta_info *sta)
        struct ieee80211_sub_if_data *sdata = sta->sdata;
        unsigned long flags;
        int err = 0;
-       DECLARE_MAC_BUF(mac);
 
        /*
         * Can't be a WARN_ON because it can be triggered through a race:
@@ -322,8 +318,8 @@ int sta_info_insert(struct sta_info *sta)
        }
 
 #ifdef CONFIG_MAC80211_VERBOSE_DEBUG
-       printk(KERN_DEBUG "%s: Inserted STA %s\n",
-              wiphy_name(local->hw.wiphy), print_mac(mac, sta->sta.addr));
+       printk(KERN_DEBUG "%s: Inserted STA %pM\n",
+              wiphy_name(local->hw.wiphy), sta->sta.addr);
 #endif /* CONFIG_MAC80211_VERBOSE_DEBUG */
 
        spin_unlock_irqrestore(&local->sta_lock, flags);
@@ -423,9 +419,6 @@ static void __sta_info_unlink(struct sta_info **sta)
 {
        struct ieee80211_local *local = (*sta)->local;
        struct ieee80211_sub_if_data *sdata = (*sta)->sdata;
-#ifdef CONFIG_MAC80211_VERBOSE_DEBUG
-       DECLARE_MAC_BUF(mbuf);
-#endif
        /*
         * pull caller's reference if we're already gone.
         */
@@ -468,8 +461,8 @@ static void __sta_info_unlink(struct sta_info **sta)
        }
 
 #ifdef CONFIG_MAC80211_VERBOSE_DEBUG
-       printk(KERN_DEBUG "%s: Removed STA %s\n",
-              wiphy_name(local->hw.wiphy), print_mac(mbuf, (*sta)->sta.addr));
+       printk(KERN_DEBUG "%s: Removed STA %pM\n",
+              wiphy_name(local->hw.wiphy), (*sta)->sta.addr);
 #endif /* CONFIG_MAC80211_VERBOSE_DEBUG */
 
        /*
@@ -544,7 +537,6 @@ static void sta_info_cleanup_expire_buffered(struct ieee80211_local *local,
        unsigned long flags;
        struct sk_buff *skb;
        struct ieee80211_sub_if_data *sdata;
-       DECLARE_MAC_BUF(mac);
 
        if (skb_queue_empty(&sta->ps_tx_buf))
                return;
@@ -564,8 +556,8 @@ static void sta_info_cleanup_expire_buffered(struct ieee80211_local *local,
                sdata = sta->sdata;
                local->total_ps_buffered--;
 #ifdef CONFIG_MAC80211_VERBOSE_PS_DEBUG
-               printk(KERN_DEBUG "Buffered frame expired (STA "
-                      "%s)\n", print_mac(mac, sta->sta.addr));
+               printk(KERN_DEBUG "Buffered frame expired (STA %pM)\n",
+                      sta->sta.addr);
 #endif
                dev_kfree_skb(skb);
 
@@ -809,15 +801,14 @@ void ieee80211_sta_expire(struct ieee80211_sub_if_data *sdata,
        struct ieee80211_local *local = sdata->local;
        struct sta_info *sta, *tmp;
        LIST_HEAD(tmp_list);
-       DECLARE_MAC_BUF(mac);
        unsigned long flags;
 
        spin_lock_irqsave(&local->sta_lock, flags);
        list_for_each_entry_safe(sta, tmp, &local->sta_list, list)
                if (time_after(jiffies, sta->last_rx + exp_time)) {
 #ifdef CONFIG_MAC80211_IBSS_DEBUG
-                       printk(KERN_DEBUG "%s: expiring inactive STA %s\n",
-                              sdata->dev->name, print_mac(mac, sta->sta.addr));
+                       printk(KERN_DEBUG "%s: expiring inactive STA %pM\n",
+                              sdata->dev->name, sta->sta.addr);
 #endif
                        __sta_info_unlink(&sta);
                        if (sta)
index 34b32bc..38fa111 100644 (file)
@@ -263,10 +263,9 @@ int ieee80211_tkip_decrypt_data(struct crypto_blkcipher *tfm,
             (iv32 == key->u.tkip.rx[queue].iv32 &&
              iv16 <= key->u.tkip.rx[queue].iv16))) {
 #ifdef CONFIG_MAC80211_TKIP_DEBUG
-               DECLARE_MAC_BUF(mac);
                printk(KERN_DEBUG "TKIP replay detected for RX frame from "
-                      "%s (RX IV (%04x,%02x) <= prev. IV (%04x,%02x)\n",
-                      print_mac(mac, ta),
+                      "%pM (RX IV (%04x,%02x) <= prev. IV (%04x,%02x)\n",
+                      ta,
                       iv32, iv16, key->u.tkip.rx[queue].iv32,
                       key->u.tkip.rx[queue].iv16);
 #endif
@@ -287,9 +286,8 @@ int ieee80211_tkip_decrypt_data(struct crypto_blkcipher *tfm,
                {
                        int i;
                        u8 key_offset = NL80211_TKIP_DATA_OFFSET_ENCR_KEY;
-                       DECLARE_MAC_BUF(mac);
-                       printk(KERN_DEBUG "TKIP decrypt: Phase1 TA=%s"
-                              " TK=", print_mac(mac, ta));
+                       printk(KERN_DEBUG "TKIP decrypt: Phase1 TA=%pM"
+                              " TK=", ta);
                        for (i = 0; i < 16; i++)
                                printk("%02x ",
                                       key->conf.key[key_offset + i]);
index 1460537..9191b51 100644 (file)
@@ -201,10 +201,9 @@ ieee80211_tx_h_check_assoc(struct ieee80211_tx_data *tx)
                             tx->sdata->vif.type != NL80211_IFTYPE_ADHOC &&
                             ieee80211_is_data(hdr->frame_control))) {
 #ifdef CONFIG_MAC80211_VERBOSE_DEBUG
-                       DECLARE_MAC_BUF(mac);
                        printk(KERN_DEBUG "%s: dropped data frame to not "
-                              "associated station %s\n",
-                              tx->dev->name, print_mac(mac, hdr->addr1));
+                              "associated station %pM\n",
+                              tx->dev->name, hdr->addr1);
 #endif /* CONFIG_MAC80211_VERBOSE_DEBUG */
                        I802_DEBUG_INC(tx->local->tx_handlers_drop_not_assoc);
                        return TX_DROP;
@@ -331,7 +330,6 @@ ieee80211_tx_h_unicast_ps_buf(struct ieee80211_tx_data *tx)
        struct ieee80211_tx_info *info = IEEE80211_SKB_CB(tx->skb);
        struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)tx->skb->data;
        u32 staflags;
-       DECLARE_MAC_BUF(mac);
 
        if (unlikely(!sta || ieee80211_is_probe_resp(hdr->frame_control)))
                return TX_CONTINUE;
@@ -341,9 +339,9 @@ ieee80211_tx_h_unicast_ps_buf(struct ieee80211_tx_data *tx)
        if (unlikely((staflags & WLAN_STA_PS) &&
                     !(staflags & WLAN_STA_PSPOLL))) {
 #ifdef CONFIG_MAC80211_VERBOSE_PS_DEBUG
-               printk(KERN_DEBUG "STA %s aid %d: PS buffer (entries "
+               printk(KERN_DEBUG "STA %pM aid %d: PS buffer (entries "
                       "before %d)\n",
-                      print_mac(mac, sta->sta.addr), sta->sta.aid,
+                      sta->sta.addr, sta->sta.aid,
                       skb_queue_len(&sta->ps_tx_buf));
 #endif /* CONFIG_MAC80211_VERBOSE_PS_DEBUG */
                if (tx->local->total_ps_buffered >= TOTAL_MAX_TX_BUFFER)
@@ -352,9 +350,9 @@ ieee80211_tx_h_unicast_ps_buf(struct ieee80211_tx_data *tx)
                        struct sk_buff *old = skb_dequeue(&sta->ps_tx_buf);
 #ifdef CONFIG_MAC80211_VERBOSE_PS_DEBUG
                        if (net_ratelimit()) {
-                               printk(KERN_DEBUG "%s: STA %s TX "
+                               printk(KERN_DEBUG "%s: STA %pM TX "
                                       "buffer full - dropping oldest frame\n",
-                                      tx->dev->name, print_mac(mac, sta->sta.addr));
+                                      tx->dev->name, sta->sta.addr);
                        }
 #endif
                        dev_kfree_skb(old);
@@ -371,9 +369,9 @@ ieee80211_tx_h_unicast_ps_buf(struct ieee80211_tx_data *tx)
        }
 #ifdef CONFIG_MAC80211_VERBOSE_PS_DEBUG
        else if (unlikely(test_sta_flags(sta, WLAN_STA_PS))) {
-               printk(KERN_DEBUG "%s: STA %s in PS mode, but pspoll "
+               printk(KERN_DEBUG "%s: STA %pM in PS mode, but pspoll "
                       "set -> send frame\n", tx->dev->name,
-                      print_mac(mac, sta->sta.addr));
+                      sta->sta.addr);
        }
 #endif /* CONFIG_MAC80211_VERBOSE_PS_DEBUG */
        clear_sta_flags(sta, WLAN_STA_PSPOLL);
@@ -1593,12 +1591,10 @@ int ieee80211_subif_start_xmit(struct sk_buff *skb,
                       compare_ether_addr(dev->dev_addr,
                                          skb->data + ETH_ALEN) == 0))) {
 #ifdef CONFIG_MAC80211_VERBOSE_DEBUG
-               DECLARE_MAC_BUF(mac);
-
                if (net_ratelimit())
-                       printk(KERN_DEBUG "%s: dropped frame to %s"
+                       printk(KERN_DEBUG "%s: dropped frame to %pM"
                               " (unauthorized port)\n", dev->name,
-                              print_mac(mac, hdr.addr1));
+                              hdr.addr1);
 #endif
 
                I802_DEBUG_INC(local->tx_handlers_drop_unauth_port);
index 139b5f2..d27ef7f 100644 (file)
@@ -206,13 +206,11 @@ int ieee80211_ht_agg_queue_add(struct ieee80211_local *local,
                         * on the previous queue
                         * since HT is strict in order */
 #ifdef CONFIG_MAC80211_HT_DEBUG
-                       if (net_ratelimit()) {
-                               DECLARE_MAC_BUF(mac);
+                       if (net_ratelimit())
                                printk(KERN_DEBUG "allocated aggregation queue"
-                                       " %d tid %d addr %s pool=0x%lX\n",
-                                       i, tid, print_mac(mac, sta->sta.addr),
+                                       " %d tid %d addr %pM pool=0x%lX\n",
+                                       i, tid, sta->sta.addr,
                                        local->queue_pool[0]);
-                       }
 #endif /* CONFIG_MAC80211_HT_DEBUG */
                        return 0;
                }
index 6db6494..3a20b03 100644 (file)
@@ -90,7 +90,6 @@ ieee80211_rx_h_michael_mic_verify(struct ieee80211_rx_data *rx)
        u8 mic[MICHAEL_MIC_LEN];
        struct sk_buff *skb = rx->skb;
        int authenticator = 1, wpa_test = 0;
-       DECLARE_MAC_BUF(mac);
 
        /*
         * No way to verify the MIC if the hardware stripped it
@@ -227,7 +226,6 @@ ieee80211_crypto_tkip_decrypt(struct ieee80211_rx_data *rx)
        int hdrlen, res, hwaccel = 0, wpa_test = 0;
        struct ieee80211_key *key = rx->key;
        struct sk_buff *skb = rx->skb;
-       DECLARE_MAC_BUF(mac);
 
        hdrlen = ieee80211_hdrlen(hdr->frame_control);
 
@@ -453,7 +451,6 @@ ieee80211_crypto_ccmp_decrypt(struct ieee80211_rx_data *rx)
        struct sk_buff *skb = rx->skb;
        u8 pn[CCMP_PN_LEN];
        int data_len;
-       DECLARE_MAC_BUF(mac);
 
        hdrlen = ieee80211_hdrlen(hdr->frame_control);
 
index 9a24332..60aba45 100644 (file)
@@ -820,13 +820,11 @@ static int ip_vs_conn_seq_show(struct seq_file *seq, void *v)
 
 #ifdef CONFIG_IP_VS_IPV6
                if (cp->af == AF_INET6)
-                       seq_printf(seq,
-                               "%-3s " NIP6_FMT " %04X " NIP6_FMT
-                               " %04X " NIP6_FMT " %04X %-11s %7lu\n",
+                       seq_printf(seq, "%-3s %pI6 %04X %pI6 %04X %pI6 %04X %-11s %7lu\n",
                                ip_vs_proto_name(cp->protocol),
-                               NIP6(cp->caddr.in6), ntohs(cp->cport),
-                               NIP6(cp->vaddr.in6), ntohs(cp->vport),
-                               NIP6(cp->daddr.in6), ntohs(cp->dport),
+                               &cp->caddr.in6, ntohs(cp->cport),
+                               &cp->vaddr.in6, ntohs(cp->vport),
+                               &cp->daddr.in6, ntohs(cp->dport),
                                ip_vs_state_name(cp->protocol, cp->state),
                                (cp->timer.expires-jiffies)/HZ);
                else
@@ -883,13 +881,11 @@ static int ip_vs_conn_sync_seq_show(struct seq_file *seq, void *v)
 
 #ifdef CONFIG_IP_VS_IPV6
                if (cp->af == AF_INET6)
-                       seq_printf(seq,
-                               "%-3s " NIP6_FMT " %04X " NIP6_FMT
-                               " %04X " NIP6_FMT " %04X %-11s %-6s %7lu\n",
+                       seq_printf(seq, "%-3s %pI6 %04X %pI6 %04X %pI6 %04X %-11s %-6s %7lu\n",
                                ip_vs_proto_name(cp->protocol),
-                               NIP6(cp->caddr.in6), ntohs(cp->cport),
-                               NIP6(cp->vaddr.in6), ntohs(cp->vport),
-                               NIP6(cp->daddr.in6), ntohs(cp->dport),
+                               &cp->caddr.in6, ntohs(cp->cport),
+                               &cp->vaddr.in6, ntohs(cp->vport),
+                               &cp->daddr.in6, ntohs(cp->dport),
                                ip_vs_state_name(cp->protocol, cp->state),
                                ip_vs_origin_name(cp->flags),
                                (cp->timer.expires-jiffies)/HZ);
index 958abf3..c3c6844 100644 (file)
@@ -805,9 +805,9 @@ static int ip_vs_out_icmp_v6(struct sk_buff *skb, int *related)
        if (ic == NULL)
                return NF_DROP;
 
-       IP_VS_DBG(12, "Outgoing ICMPv6 (%d,%d) " NIP6_FMT "->" NIP6_FMT "\n",
+       IP_VS_DBG(12, "Outgoing ICMPv6 (%d,%d) %pI6->%pI6\n",
                  ic->icmp6_type, ntohs(icmpv6_id(ic)),
-                 NIP6(iph->saddr), NIP6(iph->daddr));
+                 &iph->saddr, &iph->daddr);
 
        /*
         * Work through seeing if this is for us.
@@ -1175,9 +1175,9 @@ ip_vs_in_icmp_v6(struct sk_buff *skb, int *related, unsigned int hooknum)
        if (ic == NULL)
                return NF_DROP;
 
-       IP_VS_DBG(12, "Incoming ICMPv6 (%d,%d) " NIP6_FMT "->" NIP6_FMT "\n",
+       IP_VS_DBG(12, "Incoming ICMPv6 (%d,%d) %pI6->%pI6\n",
                  ic->icmp6_type, ntohs(icmpv6_id(ic)),
-                 NIP6(iph->saddr), NIP6(iph->daddr));
+                 &iph->saddr, &iph->daddr);
 
        /*
         * Work through seeing if this is for us.
index 0302cf3..76db27e 100644 (file)
@@ -1867,9 +1867,9 @@ static int ip_vs_info_seq_show(struct seq_file *seq, void *v)
                if (iter->table == ip_vs_svc_table) {
 #ifdef CONFIG_IP_VS_IPV6
                        if (svc->af == AF_INET6)
-                               seq_printf(seq, "%s  [" NIP6_FMT "]:%04X %s ",
+                               seq_printf(seq, "%s  [%pI6]:%04X %s ",
                                           ip_vs_proto_name(svc->protocol),
-                                          NIP6(svc->addr.in6),
+                                          &svc->addr.in6,
                                           ntohs(svc->port),
                                           svc->scheduler->name);
                        else
@@ -1895,9 +1895,9 @@ static int ip_vs_info_seq_show(struct seq_file *seq, void *v)
 #ifdef CONFIG_IP_VS_IPV6
                        if (dest->af == AF_INET6)
                                seq_printf(seq,
-                                          "  -> [" NIP6_FMT "]:%04X"
+                                          "  -> [%pI6]:%04X"
                                           "      %-7s %-6d %-10d %-10d\n",
-                                          NIP6(dest->addr.in6),
+                                          &dest->addr.in6,
                                           ntohs(dest->port),
                                           ip_vs_fwd_name(atomic_read(&dest->conn_flags)),
                                           atomic_read(&dest->weight),
index 0791f9e..54cd67f 100644 (file)
@@ -203,26 +203,21 @@ ip_vs_tcpudp_debug_packet_v6(struct ip_vs_protocol *pp,
        if (ih == NULL)
                sprintf(buf, "%s TRUNCATED", pp->name);
        else if (ih->nexthdr == IPPROTO_FRAGMENT)
-               sprintf(buf, "%s " NIP6_FMT "->" NIP6_FMT " frag",
-                       pp->name, NIP6(ih->saddr),
-                       NIP6(ih->daddr));
+               sprintf(buf, "%s %pI6->%pI6 frag",
+                       pp->name, &ih->saddr, &ih->daddr);
        else {
                __be16 _ports[2], *pptr;
 
                pptr = skb_header_pointer(skb, offset + sizeof(struct ipv6hdr),
                                          sizeof(_ports), _ports);
                if (pptr == NULL)
-                       sprintf(buf, "%s TRUNCATED " NIP6_FMT "->" NIP6_FMT,
-                               pp->name,
-                               NIP6(ih->saddr),
-                               NIP6(ih->daddr));
+                       sprintf(buf, "%s TRUNCATED %pI6->%pI6",
+                               pp->name, &ih->saddr, &ih->daddr);
                else
-                       sprintf(buf, "%s " NIP6_FMT ":%u->" NIP6_FMT ":%u",
+                       sprintf(buf, "%s %pI6:%u->%pI6:%u",
                                pp->name,
-                               NIP6(ih->saddr),
-                               ntohs(pptr[0]),
-                               NIP6(ih->daddr),
-                               ntohs(pptr[1]));
+                               &ih->saddr, ntohs(pptr[0]),
+                               &ih->daddr, ntohs(pptr[1]));
        }
 
        printk(KERN_DEBUG "IPVS: %s: %s\n", msg, buf);
index 80ab0c8..6ede888 100644 (file)
@@ -154,9 +154,8 @@ ah_esp_debug_packet_v6(struct ip_vs_protocol *pp, const struct sk_buff *skb,
        if (ih == NULL)
                sprintf(buf, "%s TRUNCATED", pp->name);
        else
-               sprintf(buf, "%s " NIP6_FMT "->" NIP6_FMT,
-                       pp->name, NIP6(ih->saddr),
-                       NIP6(ih->daddr));
+               sprintf(buf, "%s %pI6->%pI6",
+                       pp->name, &ih->saddr, &ih->daddr);
 
        printk(KERN_DEBUG "IPVS: %s: %s\n", msg, buf);
 }
index 02ddc2b..fc342dd 100644 (file)
@@ -141,14 +141,13 @@ __ip_vs_get_out_rt_v6(struct ip_vs_conn *cp)
                                                                 NULL, &fl);
                        if (!rt) {
                                spin_unlock(&dest->dst_lock);
-                               IP_VS_DBG_RL("ip6_route_output error, "
-                                            "dest: " NIP6_FMT "\n",
-                                            NIP6(dest->addr.in6));
+                               IP_VS_DBG_RL("ip6_route_output error, dest: %pI6\n",
+                                            &dest->addr.in6);
                                return NULL;
                        }
                        __ip_vs_dst_set(dest, 0, dst_clone(&rt->u.dst));
-                       IP_VS_DBG(10, "new dst " NIP6_FMT ", refcnt=%d\n",
-                                 NIP6(dest->addr.in6),
+                       IP_VS_DBG(10, "new dst %pI6, refcnt=%d\n",
+                                 &dest->addr.in6,
                                  atomic_read(&rt->u.dst.__refcnt));
                }
                spin_unlock(&dest->dst_lock);
@@ -167,8 +166,8 @@ __ip_vs_get_out_rt_v6(struct ip_vs_conn *cp)
 
                rt = (struct rt6_info *)ip6_route_output(&init_net, NULL, &fl);
                if (!rt) {
-                       IP_VS_DBG_RL("ip6_route_output error, dest: "
-                                    NIP6_FMT "\n", NIP6(cp->daddr.in6));
+                       IP_VS_DBG_RL("ip6_route_output error, dest: %pI6\n",
+                                    &cp->daddr.in6);
                        return NULL;
                }
        }
@@ -301,8 +300,8 @@ ip_vs_bypass_xmit_v6(struct sk_buff *skb, struct ip_vs_conn *cp,
 
        rt = (struct rt6_info *)ip6_route_output(&init_net, NULL, &fl);
        if (!rt) {
-               IP_VS_DBG_RL("ip_vs_bypass_xmit_v6(): ip6_route_output error, "
-                            "dest: " NIP6_FMT "\n", NIP6(iph->daddr));
+               IP_VS_DBG_RL("ip_vs_bypass_xmit_v6(): ip6_route_output error, dest: %pI6\n",
+                            &iph->daddr);
                goto tx_error_icmp;
        }
 
index 4f71071..8cab6d5 100644 (file)
@@ -467,11 +467,9 @@ static int help(struct sk_buff *skb,
                                 NIPQUAD(cmd.u3.ip),
                                 NIPQUAD(ct->tuplehash[dir].tuple.src.u3.ip));
                } else {
-                       pr_debug("conntrack_ftp: NOT RECORDING: " NIP6_FMT
-                                " != " NIP6_FMT "\n",
-                                NIP6(*((struct in6_addr *)cmd.u3.ip6)),
-                                NIP6(*((struct in6_addr *)
-                                       ct->tuplehash[dir].tuple.src.u3.ip6)));
+                       pr_debug("conntrack_ftp: NOT RECORDING: %pI6 != %pI6\n",
+                                cmd.u3.ip6,
+                                ct->tuplehash[dir].tuple.src.u3.ip6);
                }
 
                /* Thanks to Cristiano Lincoln Mattos
index c1504f7..99bc803 100644 (file)
@@ -850,10 +850,8 @@ static int process_setup(struct sk_buff *skb, struct nf_conn *ct,
            get_h225_addr(ct, *data, &setup->destCallSignalAddress,
                          &addr, &port) &&
            memcmp(&addr, &ct->tuplehash[!dir].tuple.src.u3, sizeof(addr))) {
-               pr_debug("nf_ct_q931: set destCallSignalAddress "
-                        NIP6_FMT ":%hu->" NIP6_FMT ":%hu\n",
-                        NIP6(*(struct in6_addr *)&addr), ntohs(port),
-                        NIP6(*(struct in6_addr *)&ct->tuplehash[!dir].tuple.src.u3),
+               pr_debug("nf_ct_q931: set destCallSignalAddress %pI6:%hu->%pI6:%hu\n",
+                        &addr, ntohs(port), &ct->tuplehash[!dir].tuple.src.u3,
                         ntohs(ct->tuplehash[!dir].tuple.src.u.tcp.port));
                ret = set_h225_addr(skb, data, dataoff,
                                    &setup->destCallSignalAddress,
@@ -868,10 +866,8 @@ static int process_setup(struct sk_buff *skb, struct nf_conn *ct,
            get_h225_addr(ct, *data, &setup->sourceCallSignalAddress,
                          &addr, &port) &&
            memcmp(&addr, &ct->tuplehash[!dir].tuple.dst.u3, sizeof(addr))) {
-               pr_debug("nf_ct_q931: set sourceCallSignalAddress "
-                        NIP6_FMT ":%hu->" NIP6_FMT ":%hu\n",
-                        NIP6(*(struct in6_addr *)&addr), ntohs(port),
-                        NIP6(*(struct in6_addr *)&ct->tuplehash[!dir].tuple.dst.u3),
+               pr_debug("nf_ct_q931: set sourceCallSignalAddress %pI6:%hu->%pI6:%hu\n",
+                        &addr, ntohs(port), &ct->tuplehash[!dir].tuple.dst.u3,
                         ntohs(ct->tuplehash[!dir].tuple.dst.u.tcp.port));
                ret = set_h225_addr(skb, data, dataoff,
                                    &setup->sourceCallSignalAddress,
index 6fc4292..6379717 100644 (file)
@@ -904,12 +904,11 @@ static int dl_seq_real_show(struct dsthash_ent *ent, u_int8_t family,
                                 ent->rateinfo.cost);
 #if defined(CONFIG_IP6_NF_IPTABLES) || defined(CONFIG_IP6_NF_IPTABLES_MODULE)
        case NFPROTO_IPV6:
-               return seq_printf(s, "%ld " NIP6_FMT ":%u->"
-                                    NIP6_FMT ":%u %u %u %u\n",
+               return seq_printf(s, "%ld %pI6:%u->%pI6:%u %u %u %u\n",
                                 (long)(ent->expires - jiffies)/HZ,
-                                NIP6(*(struct in6_addr *)&ent->dst.ip6.src),
+                                &ent->dst.ip6.src,
                                 ntohs(ent->dst.src_port),
-                                NIP6(*(struct in6_addr *)&ent->dst.ip6.dst),
+                                &ent->dst.ip6.dst,
                                 ntohs(ent->dst.dst_port),
                                 ent->rateinfo.credit, ent->rateinfo.credit_cap,
                                 ent->rateinfo.cost);
index 280c471..b785727 100644 (file)
@@ -426,9 +426,8 @@ static int recent_seq_show(struct seq_file *seq, void *v)
                           "oldest_pkt: %u", NIPQUAD(e->addr.ip), e->ttl,
                           e->stamps[i], e->index);
        else
-               seq_printf(seq, "src=" NIP6_FMT " ttl: %u last_seen: %lu "
-                          "oldest_pkt: %u", NIP6(e->addr.in6), e->ttl,
-                          e->stamps[i], e->index);
+               seq_printf(seq, "src=%pI6 ttl: %u last_seen: %lu oldest_pkt: %u",
+                          &e->addr.in6, e->ttl, e->stamps[i], e->index);
        for (i = 0; i < e->nstamps; i++)
                seq_printf(seq, "%s %lu", i ? "," : "", e->stamps[i]);
        seq_printf(seq, "\n");
index 249f6b9..2fc49e5 100644 (file)
@@ -371,7 +371,7 @@ void netlbl_af6list_audit_addr(struct audit_buffer *audit_buf,
 
        if (dev != NULL)
                audit_log_format(audit_buf, " netif=%s", dev);
-       audit_log_format(audit_buf, " %s=" NIP6_FMT, dir, NIP6(*addr));
+       audit_log_format(audit_buf, " %s=%pI6", dir, addr);
        if (ntohl(mask->s6_addr32[3]) != 0xffffffff) {
                u32 mask_len = 0;
                u32 mask_val;
index 2d106cf..c83fea7 100644 (file)
@@ -233,7 +233,7 @@ size_t nla_strlcpy(char *dst, const struct nlattr *nla, size_t dstsize)
  *
  * Returns the number of bytes copied.
  */
-int nla_memcpy(void *dest, struct nlattr *src, int count)
+int nla_memcpy(void *dest, const struct nlattr *src, int count)
 {
        int minlen = min_t(int, count, nla_len(src));
 
index 4124bbb..ceaa4aa 100644 (file)
@@ -223,10 +223,9 @@ static int sctp_v6_xmit(struct sk_buff *skb, struct sctp_transport *transport)
                ipv6_addr_copy(&fl.fl6_dst, rt0->addr);
        }
 
-       SCTP_DEBUG_PRINTK("%s: skb:%p, len:%d, "
-                         "src:" NIP6_FMT " dst:" NIP6_FMT "\n",
+       SCTP_DEBUG_PRINTK("%s: skb:%p, len:%d, src:%pI6 dst:%pI6\n",
                          __func__, skb, skb->len,
-                         NIP6(fl.fl6_src), NIP6(fl.fl6_dst));
+                         &fl.fl6_src, &fl.fl6_dst);
 
        SCTP_INC_STATS(SCTP_MIB_OUTSCTPPACKS);
 
@@ -252,23 +251,19 @@ static struct dst_entry *sctp_v6_get_dst(struct sctp_association *asoc,
                fl.oif = daddr->v6.sin6_scope_id;
 
 
-       SCTP_DEBUG_PRINTK("%s: DST=" NIP6_FMT " ",
-                         __func__, NIP6(fl.fl6_dst));
+       SCTP_DEBUG_PRINTK("%s: DST=%pI6 ", __func__, &fl.fl6_dst);
 
        if (saddr) {
                ipv6_addr_copy(&fl.fl6_src, &saddr->v6.sin6_addr);
-               SCTP_DEBUG_PRINTK(
-                       "SRC=" NIP6_FMT " - ",
-                       NIP6(fl.fl6_src));
+               SCTP_DEBUG_PRINTK("SRC=%pI6 - ", &fl.fl6_src);
        }
 
        dst = ip6_route_output(&init_net, NULL, &fl);
        if (!dst->error) {
                struct rt6_info *rt;
                rt = (struct rt6_info *)dst;
-               SCTP_DEBUG_PRINTK(
-                       "rt6_dst:" NIP6_FMT " rt6_src:" NIP6_FMT "\n",
-                       NIP6(rt->rt6i_dst.addr), NIP6(rt->rt6i_src.addr));
+               SCTP_DEBUG_PRINTK("rt6_dst:%pI6 rt6_src:%pI6\n",
+                       &rt->rt6i_dst.addr, &rt->rt6i_src.addr);
                return dst;
        }
        SCTP_DEBUG_PRINTK("NO ROUTE\n");
@@ -314,9 +309,8 @@ static void sctp_v6_get_saddr(struct sctp_sock *sk,
        __u8 matchlen = 0;
        __u8 bmatchlen;
 
-       SCTP_DEBUG_PRINTK("%s: asoc:%p dst:%p "
-                         "daddr:" NIP6_FMT " ",
-                         __func__, asoc, dst, NIP6(daddr->v6.sin6_addr));
+       SCTP_DEBUG_PRINTK("%s: asoc:%p dst:%p daddr:%pI6 ",
+                         __func__, asoc, dst, &daddr->v6.sin6_addr);
 
        if (!asoc) {
                ipv6_dev_get_saddr(sock_net(sctp_opt2sk(sk)),
@@ -324,8 +318,8 @@ static void sctp_v6_get_saddr(struct sctp_sock *sk,
                                   &daddr->v6.sin6_addr,
                                   inet6_sk(&sk->inet.sk)->srcprefs,
                                   &saddr->v6.sin6_addr);
-               SCTP_DEBUG_PRINTK("saddr from ipv6_get_saddr: " NIP6_FMT "\n",
-                                 NIP6(saddr->v6.sin6_addr));
+               SCTP_DEBUG_PRINTK("saddr from ipv6_get_saddr: %pI6\n",
+                                 &saddr->v6.sin6_addr);
                return;
        }
 
@@ -353,12 +347,11 @@ static void sctp_v6_get_saddr(struct sctp_sock *sk,
 
        if (baddr) {
                memcpy(saddr, baddr, sizeof(union sctp_addr));
-               SCTP_DEBUG_PRINTK("saddr: " NIP6_FMT "\n",
-                                 NIP6(saddr->v6.sin6_addr));
+               SCTP_DEBUG_PRINTK("saddr: %pI6\n", &saddr->v6.sin6_addr);
        } else {
                printk(KERN_ERR "%s: asoc:%p Could not find a valid source "
-                      "address for the dest:" NIP6_FMT "\n",
-                      __func__, asoc, NIP6(daddr->v6.sin6_addr));
+                      "address for the dest:%pI6\n",
+                      __func__, asoc, &daddr->v6.sin6_addr);
        }
 
        rcu_read_unlock();
@@ -727,7 +720,7 @@ static int sctp_v6_is_ce(const struct sk_buff *skb)
 /* Dump the v6 addr to the seq file. */
 static void sctp_v6_seq_dump_addr(struct seq_file *seq, union sctp_addr *addr)
 {
-       seq_printf(seq, NIP6_FMT " ", NIP6(addr->v6.sin6_addr));
+       seq_printf(seq, "%pI6 ", &addr->v6.sin6_addr);
 }
 
 static void sctp_v6_ecn_capable(struct sock *sk)
index a6a0ea7..d07b484 100644 (file)
@@ -1123,11 +1123,10 @@ sctp_disposition_t sctp_sf_backbeat_8_3(const struct sctp_endpoint *ep,
                if (from_addr.sa.sa_family == AF_INET6) {
                        if (net_ratelimit())
                                printk(KERN_WARNING
-                                   "%s association %p could not find address "
-                                   NIP6_FMT "\n",
+                                   "%s association %p could not find address %pI6\n",
                                    __func__,
                                    asoc,
-                                   NIP6(from_addr.v6.sin6_addr));
+                                   &from_addr.v6.sin6_addr);
                } else {
                        if (net_ratelimit())
                                printk(KERN_WARNING
index 4895c34..8f06749 100644 (file)
@@ -278,8 +278,8 @@ struct rpc_clnt *rpc_create(struct rpc_create_args *args)
                case AF_INET6: {
                        struct sockaddr_in6 *sin =
                                        (struct sockaddr_in6 *)args->address;
-                       snprintf(servername, sizeof(servername), NIP6_FMT,
-                                NIP6(sin->sin6_addr));
+                       snprintf(servername, sizeof(servername), "%pI6",
+                                &sin->sin6_addr);
                        break;
                }
                default:
index 41013dd..4c8adad 100644 (file)
@@ -305,9 +305,9 @@ static int rpcb_register_netid6(struct sockaddr_in6 *address_to_register,
                snprintf(buf, sizeof(buf), "::.%u.%u",
                                port >> 8, port & 0xff);
        else
-               snprintf(buf, sizeof(buf), NIP6_FMT".%u.%u",
-                               NIP6(address_to_register->sin6_addr),
-                               port >> 8, port & 0xff);
+               snprintf(buf, sizeof(buf), "%pI6.%u.%u",
+                        &address_to_register->sin6_addr,
+                        port >> 8, port & 0xff);
        map->r_addr = buf;
 
        dprintk("RPC:       %sregistering [%u, %u, %s, '%s'] with "
index f24800f..16f714a 100644 (file)
@@ -168,7 +168,7 @@ static void ip_map_request(struct cache_detail *cd,
                                ntohl(im->m_addr.s6_addr32[3]) >>  8 & 0xff,
                                ntohl(im->m_addr.s6_addr32[3]) >>  0 & 0xff);
        } else {
-               snprintf(text_addr, 40, NIP6_FMT, NIP6(im->m_addr));
+               snprintf(text_addr, 40, "%pI6", &im->m_addr);
        }
        qword_add(bpp, blen, im->m_class);
        qword_add(bpp, blen, text_addr);
@@ -214,7 +214,7 @@ static int ip_map_parse(struct cache_detail *cd,
                addr.s6_addr32[2] = htonl(0xffff);
                addr.s6_addr32[3] =
                        htonl((((((b1<<8)|b2)<<8)|b3)<<8)|b4);
-       } else if (sscanf(buf, NIP6_FMT "%c",
+       } else if (sscanf(buf, "%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x%c",
                        &b1, &b2, &b3, &b4, &b5, &b6, &b7, &b8, &c) == 8) {
                addr.s6_addr16[0] = htons(b1);
                addr.s6_addr16[1] = htons(b2);
@@ -286,8 +286,7 @@ static int ip_map_show(struct seq_file *m,
                        ntohl(addr.s6_addr32[3]) >>  0 & 0xff,
                        dom);
        } else {
-               seq_printf(m, "%s " NIP6_FMT " %s\n",
-                       im->m_class, NIP6(addr), dom);
+               seq_printf(m, "%s %pI6 %s\n", im->m_class, &addr, dom);
        }
        return 0;
 }
index 0a50361..82a9b62 100644 (file)
@@ -342,8 +342,7 @@ static void xs_format_ipv6_peer_addresses(struct rpc_xprt *xprt,
 
        buf = kzalloc(40, GFP_KERNEL);
        if (buf) {
-               snprintf(buf, 40, NIP6_FMT,
-                               NIP6(addr->sin6_addr));
+               snprintf(buf, 40, "%pI6",&addr->sin6_addr);
        }
        xprt->address_strings[RPC_DISPLAY_ADDR] = buf;
 
@@ -358,18 +357,17 @@ static void xs_format_ipv6_peer_addresses(struct rpc_xprt *xprt,
 
        buf = kzalloc(64, GFP_KERNEL);
        if (buf) {
-               snprintf(buf, 64, "addr="NIP6_FMT" port=%u proto=%s",
-                               NIP6(addr->sin6_addr),
+               snprintf(buf, 64, "addr=%pI6 port=%u proto=%s",
+                               &addr->sin6_addr,
                                ntohs(addr->sin6_port),
                                protocol);
        }
        xprt->address_strings[RPC_DISPLAY_ALL] = buf;
 
        buf = kzalloc(36, GFP_KERNEL);
-       if (buf) {
-               snprintf(buf, 36, NIP6_SEQFMT,
-                               NIP6(addr->sin6_addr));
-       }
+       if (buf)
+               snprintf(buf, 36, "%pi6", &addr->sin6_addr);
+
        xprt->address_strings[RPC_DISPLAY_HEX_ADDR] = buf;
 
        buf = kzalloc(8, GFP_KERNEL);
@@ -381,10 +379,10 @@ static void xs_format_ipv6_peer_addresses(struct rpc_xprt *xprt,
 
        buf = kzalloc(50, GFP_KERNEL);
        if (buf) {
-               snprintf(buf, 50, NIP6_FMT".%u.%u",
-                               NIP6(addr->sin6_addr),
-                               ntohs(addr->sin6_port) >> 8,
-                               ntohs(addr->sin6_port) & 0xff);
+               snprintf(buf, 50, "%pI6.%u.%u",
+                        &addr->sin6_addr,
+                        ntohs(addr->sin6_port) >> 8,
+                        ntohs(addr->sin6_port) & 0xff);
        }
        xprt->address_strings[RPC_DISPLAY_UNIVERSAL_ADDR] = buf;
 
@@ -1448,8 +1446,8 @@ static int xs_bind6(struct sock_xprt *transport, struct socket *sock)
                if (port > last)
                        nloop++;
        } while (err == -EADDRINUSE && nloop != 2);
-       dprintk("RPC:       xs_bind6 "NIP6_FMT":%u: %s (%d)\n",
-               NIP6(myaddr.sin6_addr), port, err ? "failed" : "ok", err);
+       dprintk("RPC:       xs_bind6 %pI6:%u: %s (%d)\n",
+               &myaddr.sin6_addr, port, err ? "failed" : "ok", err);
        return err;
 }
 
index fe43ef7..f72ba77 100644 (file)
@@ -243,12 +243,11 @@ static int recv_notification(struct notifier_block *nb, unsigned long evt,
 static char *eth_addr2str(struct tipc_media_addr *a, char *str_buf, int str_size)
 {
        unchar *addr = (unchar *)&a->dev_addr;
-       DECLARE_MAC_BUF(mac);
 
        if (str_size < 18)
                *str_buf = '\0';
        else
-               sprintf(str_buf, "%s", print_mac(mac, addr));
+               sprintf(str_buf, "%pM", addr);
        return str_buf;
 }
 
index 2587274..9d88c3d 100644 (file)
@@ -2469,13 +2469,11 @@ static void xfrm_audit_common_policyinfo(struct xfrm_policy *xp,
                                         sel->prefixlen_d);
                break;
        case AF_INET6:
-               audit_log_format(audit_buf, " src=" NIP6_FMT,
-                                NIP6(*(struct in6_addr *)sel->saddr.a6));
+               audit_log_format(audit_buf, " src=%pI6", sel->saddr.a6);
                if (sel->prefixlen_s != 128)
                        audit_log_format(audit_buf, " src_prefixlen=%d",
                                         sel->prefixlen_s);
-               audit_log_format(audit_buf, " dst=" NIP6_FMT,
-                                NIP6(*(struct in6_addr *)sel->daddr.a6));
+               audit_log_format(audit_buf, " dst=%pI6", sel->daddr.a6);
                if (sel->prefixlen_d != 128)
                        audit_log_format(audit_buf, " dst_prefixlen=%d",
                                         sel->prefixlen_d);
index 508337f..304eca4 100644 (file)
@@ -2115,10 +2115,8 @@ static void xfrm_audit_helper_sainfo(struct xfrm_state *x,
                                 NIPQUAD(x->id.daddr.a4));
                break;
        case AF_INET6:
-               audit_log_format(audit_buf,
-                                " src=" NIP6_FMT " dst=" NIP6_FMT,
-                                NIP6(*(struct in6_addr *)x->props.saddr.a6),
-                                NIP6(*(struct in6_addr *)x->id.daddr.a6));
+               audit_log_format(audit_buf, " src=%pI6 dst=%pI6",
+                                x->props.saddr.a6, x->id.daddr.a6);
                break;
        }
 
@@ -2142,10 +2140,8 @@ static void xfrm_audit_helper_pktinfo(struct sk_buff *skb, u16 family,
        case AF_INET6:
                iph6 = ipv6_hdr(skb);
                audit_log_format(audit_buf,
-                                " src=" NIP6_FMT " dst=" NIP6_FMT
-                                " flowlbl=0x%x%02x%02x",
-                                NIP6(iph6->saddr),
-                                NIP6(iph6->daddr),
+                                " src=%pI6 dst=%pI6 flowlbl=0x%x%02x%02x",
+                                &iph6->saddr,&iph6->daddr,
                                 iph6->flow_lbl[0] & 0x0f,
                                 iph6->flow_lbl[1],
                                 iph6->flow_lbl[2]);
index 4a8a1ab..76cf56d 100644 (file)
@@ -2503,6 +2503,57 @@ static int xfrm_send_report(u8 proto, struct xfrm_selector *sel,
        return nlmsg_multicast(xfrm_nl, skb, 0, XFRMNLGRP_REPORT, GFP_ATOMIC);
 }
 
+static inline size_t xfrm_mapping_msgsize(void)
+{
+       return NLMSG_ALIGN(sizeof(struct xfrm_user_mapping));
+}
+
+static int build_mapping(struct sk_buff *skb, struct xfrm_state *x,
+                        xfrm_address_t *new_saddr, __be16 new_sport)
+{
+       struct xfrm_user_mapping *um;
+       struct nlmsghdr *nlh;
+
+       nlh = nlmsg_put(skb, 0, 0, XFRM_MSG_MAPPING, sizeof(*um), 0);
+       if (nlh == NULL)
+               return -EMSGSIZE;
+
+       um = nlmsg_data(nlh);
+
+       memcpy(&um->id.daddr, &x->id.daddr, sizeof(um->id.daddr));
+       um->id.spi = x->id.spi;
+       um->id.family = x->props.family;
+       um->id.proto = x->id.proto;
+       memcpy(&um->new_saddr, new_saddr, sizeof(um->new_saddr));
+       memcpy(&um->old_saddr, &x->props.saddr, sizeof(um->old_saddr));
+       um->new_sport = new_sport;
+       um->old_sport = x->encap->encap_sport;
+       um->reqid = x->props.reqid;
+
+       return nlmsg_end(skb, nlh);
+}
+
+static int xfrm_send_mapping(struct xfrm_state *x, xfrm_address_t *ipaddr,
+                            __be16 sport)
+{
+       struct sk_buff *skb;
+
+       if (x->id.proto != IPPROTO_ESP)
+               return -EINVAL;
+
+       if (!x->encap)
+               return -EINVAL;
+
+       skb = nlmsg_new(xfrm_mapping_msgsize(), GFP_ATOMIC);
+       if (skb == NULL)
+               return -ENOMEM;
+
+       if (build_mapping(skb, x, ipaddr, sport) < 0)
+               BUG();
+
+       return nlmsg_multicast(xfrm_nl, skb, 0, XFRMNLGRP_MAPPING, GFP_ATOMIC);
+}
+
 static struct xfrm_mgr netlink_mgr = {
        .id             = "netlink",
        .notify         = xfrm_send_state_notify,
@@ -2511,6 +2562,7 @@ static struct xfrm_mgr netlink_mgr = {
        .notify_policy  = xfrm_send_policy_notify,
        .report         = xfrm_send_report,
        .migrate        = xfrm_send_migrate,
+       .new_mapping    = xfrm_send_mapping,
 };
 
 static int __init xfrm_user_init(void)
index cb30c7e..ed6af12 100644 (file)
@@ -495,7 +495,7 @@ static inline void avc_print_ipv6_addr(struct audit_buffer *ab,
                                       char *name1, char *name2)
 {
        if (!ipv6_addr_any(addr))
-               audit_log_format(ab, " %s=" NIP6_FMT, name1, NIP6(*addr));
+               audit_log_format(ab, " %s=%pI6", name1, addr);
        if (port)
                audit_log_format(ab, " %s=%d", name2, ntohs(port));
 }
index 3e3fde7..aedf02b 100644 (file)
@@ -4626,7 +4626,7 @@ static unsigned int selinux_ip_postroute(struct sk_buff *skb, int ifindex,
         * as fast and as clean as possible. */
        if (selinux_compat_net || !selinux_policycap_netpeer)
                return selinux_ip_postroute_compat(skb, ifindex, family);
-
+#ifdef CONFIG_XFRM
        /* If skb->dst->xfrm is non-NULL then the packet is undergoing an IPsec
         * packet transformation so allow the packet to pass without any checks
         * since we'll have another chance to perform access control checks
@@ -4635,7 +4635,7 @@ static unsigned int selinux_ip_postroute(struct sk_buff *skb, int ifindex,
         *       is NULL, in this case go ahead and apply access control. */
        if (skb->dst != NULL && skb->dst->xfrm != NULL)
                return NF_ACCEPT;
-
+#endif
        secmark_active = selinux_secmark_enabled();
        peerlbl_active = netlbl_enabled() || selinux_xfrm_enabled();
        if (!secmark_active && !peerlbl_active)