Subject: Subject: [PATCH 2/4] Net device error logging, revised (e100)

From: Jim Keniston <[email-masked]>
Date: Mon, 25 Aug 2003 14:39:35 -0700

Here's a patch to modify the v2.6.0-test4 e100 driver to use netdev_*
macros and support verbosity control via the NETIF_MSG_* message levels.

Jim Keniston
IBM Linux Technology Center

diff -Naur linux.org/drivers/net/e100/e100_config.c linux.e100.patched/drivers/net/e100/e100_config.c
--- linux.org/drivers/net/e100/e100_config.c	Mon Aug 25 13:29:38 2003
+++ linux.e100.patched/drivers/net/e100/e100_config.c	Mon Aug 25 13:29:38 2003
@@ -565,7 +565,8 @@
 		config_byte = CB_CFIG_LOOPBACK_EXTERNAL;
 		break;
 	default:
-		printk(KERN_NOTICE "e100: e100_config_loopback_mode: "
+		netdev_printk(KERN_NOTICE, bdp->device,,
+		       "e100_config_loopback_mode: "
 		       "Invalid argument 'mode': %d\n", mode);
 		goto exit;
 	}
diff -Naur linux.org/drivers/net/e100/e100_main.c linux.e100.patched/drivers/net/e100/e100_main.c
--- linux.org/drivers/net/e100/e100_main.c	Mon Aug 25 13:29:38 2003
+++ linux.e100.patched/drivers/net/e100/e100_main.c	Mon Aug 25 13:29:38 2003
@@ -78,6 +78,7 @@
 #include <net/checksum.h>
 #include <linux/tcp.h>
 #include <linux/udp.h>
+#include <linux/moduleparam.h>
 #include "e100.h"
 #include "e100_ucode.h"
 #include "e100_config.h"
@@ -215,12 +216,19 @@
 static void e100_dump_stats_cntrs(struct e100_private *);
 
 static void e100_check_options(int board, struct e100_private *bdp);
-static void e100_set_int_option(int *, int, int, int, int, char *);
+static void e100_set_int_option(struct e100_private *bdp, int *,
+				int, int, int, int, char *);
 static void e100_set_bool_option(struct e100_private *bdp, int, u32, int,
 				 char *);
 unsigned char e100_wait_exec_cmplx(struct e100_private *, u32, u8, u8);
 void e100_exec_cmplx(struct e100_private *, u32, u8);
 
+static int debug = -1;
+#define E100_DFLT_MSGLVL (NETIF_MSG_DRV | NETIF_MSG_PROBE | NETIF_MSG_LINK)
+
+module_param(debug, int, 0);
+MODULE_PARM_DESC(debug, "e100 debug level: 0 (quiet) to 15 (verbose)");
+
 /**
  * e100_get_rx_struct - retrieve cell to hold skb buff from the pool
  * @bdp: atapter's private data struct
@@ -433,15 +441,12 @@
 e100_wait_exec_simple(struct e100_private *bdp, u8 scb_cmd_low)
 {
 	if (!e100_wait_scb(bdp)) {
-		printk(KERN_DEBUG "e100: %s: e100_wait_exec_simple: failed\n",
-		       bdp->device->name);
+		netdev_dbg(bdp->device,, "e100_wait_exec_simple: failed\n");
 #ifdef E100_CU_DEBUG		
-		printk(KERN_ERR "e100: %s: Last command (%x/%x) "
-			"timeout\n", bdp->device->name, 
+		netdev_err(bdp->device,, "Last command (%x/%x) timeout\n",
 			bdp->last_cmd, bdp->last_sub_cmd);
-		printk(KERN_ERR "e100: %s: Current simple command (%x) "
-			"can't be executed\n", 
-			bdp->device->name, scb_cmd_low);
+		netdev_err(bdp->device,, "Current simple command (%x) "
+			"can't be executed\n", scb_cmd_low);
 #endif		
 		return false;
 	}
@@ -466,12 +471,10 @@
 {
 	if (!e100_wait_scb(bdp)) {
 #ifdef E100_CU_DEBUG		
-		printk(KERN_ERR "e100: %s: Last command (%x/%x) "
-			"timeout\n", bdp->device->name, 
+		netdev_err(bdp->device,, "Last command (%x/%x) timeout\n",
 			bdp->last_cmd, bdp->last_sub_cmd);
-		printk(KERN_ERR "e100: %s: Current complex command "
-			"(%x/%x) can't be executed\n", 
-			bdp->device->name, cmd, sub_cmd);
+		netdev_err(bdp->device,, "Current complex command "
+			"(%x/%x) can't be executed\n", cmd, sub_cmd);
 #endif		
 		return false;
 	}
@@ -562,7 +565,7 @@
 
 	dev = alloc_etherdev(sizeof (struct e100_private));
 	if (dev == NULL) {
-		printk(KERN_ERR "e100: Not able to alloc etherdev struct\n");
+		dev_err(&pcid->dev, "Not able to alloc etherdev struct\n");
 		rc = -ENODEV;
 		goto out;
 	}
@@ -584,6 +587,15 @@
 	pci_set_drvdata(pcid, dev);
 	SET_NETDEV_DEV(dev, &pcid->dev);
 
+	if (debug < 0) {
+		dev->msg_enable = E100_DFLT_MSGLVL;
+	} else if (debug >= 8 * sizeof(int)) {
+		/* All levels enabled */
+		dev->msg_enable = -1;
+	} else {
+		dev->msg_enable = (1 << debug) - 1;
+	}
+
 	if ((rc = e100_alloc_space(bdp)) != 0) {
 		goto err_dev;
 	}
@@ -655,7 +667,7 @@
 	e100_check_options(e100nics, bdp);
 
 	if (!e100_init(bdp)) {
-		printk(KERN_ERR "e100: Failed to initialize, instance #%d\n",
+		netdev_err(dev,, "Failed to initialize, instance #%d\n",
 		       e100nics);
 		rc = -ENODEV;
 		goto err_unregister_netdev;
@@ -665,7 +677,7 @@
 	cal_checksum = e100_eeprom_calculate_chksum(bdp);
 	read_checksum = e100_eeprom_read(bdp, (bdp->eeprom_size - 1));
 	if (cal_checksum != read_checksum) {
-                printk(KERN_ERR "e100: Corrupted EEPROM on instance #%d\n",
+                netdev_err(dev,, "Corrupted EEPROM on instance #%d\n",
 		       e100nics);
                 rc = -ENODEV;
                 goto err_unregister_netdev;
@@ -675,9 +687,8 @@
 
 	e100_get_speed_duplex_caps(bdp);
 
-	printk(KERN_NOTICE
-	       "e100: %s: %s\n", 
-	       bdp->device->name, "Intel(R) PRO/100 Network Connection");
+	netdev_printk(KERN_NOTICE,
+		dev, PROBE, "Intel(R) PRO/100 Network Connection\n");
 	e100_print_brd_conf(bdp);
 
 	bdp->wolsupported = 0;
@@ -694,8 +705,6 @@
 		bdp->wolopts = WAKE_MAGIC;
 	}
 
-	printk(KERN_NOTICE "\n");
-
 	goto out;
 
 err_unregister_netdev:
@@ -839,26 +848,28 @@
 e100_check_options(int board, struct e100_private *bdp)
 {
 	if (board >= E100_MAX_NIC) {
-		printk(KERN_NOTICE 
-		       "e100: No configuration available for board #%d\n",
-		       board);
-		printk(KERN_NOTICE "e100: Using defaults for all values\n");
+		netdev_printk(KERN_NOTICE, bdp->device, PROBE,
+			"No configuration available for board #%d.  "
+			"Using defaults for all values\n", board);
 		board = E100_MAX_NIC;
 	}
 
-	e100_set_int_option(&(bdp->params.TxDescriptors), TxDescriptors[board],
+	e100_set_int_option(bdp, &(bdp->params.TxDescriptors),
+			    TxDescriptors[board],
 			    E100_MIN_TCB, E100_MAX_TCB, E100_DEFAULT_TCB,
 			    "TxDescriptor count");
 
-	e100_set_int_option(&(bdp->params.RxDescriptors), RxDescriptors[board],
+	e100_set_int_option(bdp, &(bdp->params.RxDescriptors),
+			    RxDescriptors[board],
 			    E100_MIN_RFD, E100_MAX_RFD, E100_DEFAULT_RFD,
 			    "RxDescriptor count");
 
-	e100_set_int_option(&(bdp->params.e100_speed_duplex),
+	e100_set_int_option(bdp, &(bdp->params.e100_speed_duplex),
 			    e100_speed_duplex[board], 0, 4,
 			    E100_DEFAULT_SPEED_DUPLEX, "speed/duplex mode");
 
-	e100_set_int_option(&(bdp->params.ber), ber[board], 0, ZLOCK_MAX_ERRORS,
+	e100_set_int_option(bdp, &(bdp->params.ber), ber[board], 0,
+			    ZLOCK_MAX_ERRORS,
 			    E100_DEFAULT_BER, "Bit Error Rate count");
 
 	e100_set_bool_option(bdp, XsumRX[board], PRM_XSUMRX, E100_DEFAULT_XSUM,
@@ -883,11 +894,11 @@
 			     E100_DEFAULT_BUNDLE_SMALL_FR,
 			     "CPU saver bundle small frames value");
 
-	e100_set_int_option(&(bdp->params.IntDelay), IntDelay[board], 0x0,
+	e100_set_int_option(bdp, &(bdp->params.IntDelay), IntDelay[board], 0x0,
 			    0xFFFF, E100_DEFAULT_CPUSAVER_INTERRUPT_DELAY,
 			    "CPU saver interrupt delay value");
 
-	e100_set_int_option(&(bdp->params.BundleMax), BundleMax[board], 0x1,
+	e100_set_int_option(bdp, &(bdp->params.BundleMax), BundleMax[board], 0x1,
 			    0xFFFF, E100_DEFAULT_CPUSAVER_BUNDLE_MAX,
 			    "CPU saver bundle max value");
 
@@ -895,6 +906,7 @@
 
 /**
  * e100_set_int_option - check and set an integer option
+ * @bdp: adapter's private data struct
  * @option: a pointer to the relevant option field
  * @val: the value specified
  * @min: the minimum valid value
@@ -907,22 +919,22 @@
  * Otherwise, if the value is invalid, change it to the default.
  */
 void __devinit
-e100_set_int_option(int *option, int val, int min, int max, int default_val,
-		    char *name)
+e100_set_int_option(struct e100_private *bdp, int *option, int val,
+	int min, int max, int default_val, char *name)
 {
 	if (val == -1) {	/* no value specified. use default */
 		*option = default_val;
 
 	} else if ((val < min) || (val > max)) {
-		printk(KERN_NOTICE
-		       "e100: Invalid %s specified (%i). "
-		       "Valid range is %i-%i\n",
-		       name, val, min, max);
-		printk(KERN_NOTICE "e100: Using default %s of %i\n", name,
-		       default_val);
+		netdev_printk(KERN_NOTICE, bdp->device, PROBE,
+		       "Invalid %s specified (%i). "
+		       "Valid range is %i-%i. "
+		       "Using default %s of %i\n",
+		       name, val, min, max, name, default_val);
 		*option = default_val;
 	} else {
-		printk(KERN_INFO "e100: Using specified %s of %i\n", name, val);
+		netdev_info(bdp->device, PROBE,
+		       "Using specified %s of %i\n", name, val);
 		*option = val;
 	}
 }
@@ -949,17 +961,17 @@
 			bdp->params.b_params |= mask;
 
 	} else if ((val != true) && (val != false)) {
-		printk(KERN_NOTICE
-		       "e100: Invalid %s specified (%i). "
-		       "Valid values are %i/%i\n",
-		       name, val, false, true);
-		printk(KERN_NOTICE "e100: Using default %s of %i\n", name,
-		       default_val);
+		netdev_printk(KERN_NOTICE, bdp->device, PROBE,
+		       "Invalid %s specified (%i). "
+		       "Valid values are %i/%i. "
+		       "Using default %s of %i\n",
+		       name, val, false, true, name, default_val);
 
 		if (default_val)
 			bdp->params.b_params |= mask;
 	} else {
-		printk(KERN_INFO "e100: Using specified %s of %i\n", name, val);
+		netdev_info(bdp->device, PROBE,
+			"Using specified %s of %i\n", name, val);
 		if (val)
 			bdp->params.b_params |= mask;
 	}
@@ -1181,8 +1193,7 @@
 	}
 
 	if (!e100_exec_non_cu_cmd(bdp, cmd)) {
-		printk(KERN_WARNING "e100: %s: Multicast setup failed\n", 
-		       dev->name);
+		netdev_warn(dev,, "Multicast setup failed\n");
 	}
 }
 
@@ -1262,20 +1273,20 @@
 
 	if (!e100_selftest(bdp, &st_timeout, &st_result)) {
         	if (st_timeout) {
-			printk(KERN_ERR "e100: selftest timeout\n");
+			netdev_err(bdp->device,, "selftest timeout\n");
 		} else {
-			printk(KERN_ERR "e100: selftest failed. Results: %x\n",
-					st_result);
+			netdev_err(bdp->device,,
+				"selftest failed. Results: %x\n", st_result);
 		}
 		return false;
 	}
 	else
-		printk(KERN_DEBUG "e100: selftest OK.\n");
+		netdev_dbg(bdp->device,, "selftest OK.\n");
 
 	/* read the MAC address from the eprom */
 	e100_rd_eaddr(bdp);
 	if (!is_valid_ether_addr(bdp->device->dev_addr)) {
-		printk(KERN_ERR "e100: Invalid Ethernet address\n");
+		netdev_err(bdp->device,, "Invalid Ethernet address\n");
 		return false;
 	}
 	/* read NIC's part number */
@@ -1426,7 +1437,7 @@
 
 	return true;
 err:
-	printk(KERN_ERR "e100: hw init failed\n");
+	netdev_err(bdp->device,, "hw init failed\n");
 	return false;
 }
 
@@ -1555,8 +1566,7 @@
 	return 0;
 
 err:
-	printk(KERN_ERR
-	       "e100: Failed to allocate memory\n");
+	netdev_err(bdp->device,, "Failed to allocate memory\n");
 	return -ENOMEM;
 }
 
@@ -1697,8 +1707,7 @@
 
 #ifdef E100_CU_DEBUG
 	if (e100_cu_unknown_state(bdp)) {
-		printk(KERN_ERR "e100: %s: CU unknown state in e100_watchdog\n",
-			dev->name);
+		netdev_err(dev,, "CU unknown state in e100_watchdog\n");
 	}
 #endif	
 	if (!netif_running(dev)) {
@@ -1708,9 +1717,9 @@
 	/* check if link state has changed */
 	if (e100_phy_check(bdp)) {
 		if (netif_carrier_ok(dev)) {
-			printk(KERN_ERR
-			       "e100: %s NIC Link is Up %d Mbps %s duplex\n",
-			       bdp->device->name, bdp->cur_line_speed,
+			netdev_err(dev, LINK,
+			       "NIC Link is Up %d Mbps %s duplex\n",
+			       bdp->cur_line_speed,
 			       (bdp->cur_dplx_mode == HALF_DUPLEX) ?
 			       "Half" : "Full");
 
@@ -1718,8 +1727,7 @@
 			e100_config(bdp);  
 
 		} else {
-			printk(KERN_ERR "e100: %s NIC Link is Down\n",
-			       bdp->device->name);
+			netdev_err(dev, LINK, "NIC Link is Down\n");
 		}
 	}
 
@@ -2289,14 +2297,12 @@
 	case START_WAIT:
 		// The last command was a non_tx CU command
 		if (!e100_wait_cus_idle(bdp))
-			printk(KERN_DEBUG
-			       "e100: %s: cu_start: timeout waiting for cu\n",
-			       bdp->device->name);
+			netdev_dbg(bdp->device,,
+			       "cu_start: timeout waiting for cu\n");
 		if (!e100_wait_exec_cmplx(bdp, (u32) (tcb->tcb_phys),
 					  SCB_CUC_START, CB_TRANSMIT)) {
-			printk(KERN_DEBUG
-			       "e100: %s: cu_start: timeout waiting for scb\n",
-			       bdp->device->name);
+			netdev_dbg(bdp->device,,
+			       "cu_start: timeout waiting for scb\n");
 			e100_exec_cmplx(bdp, (u32) (tcb->tcb_phys),
 					SCB_CUC_START);
 			ret = false;
@@ -2414,8 +2420,7 @@
 
 	res = e100_exec_non_cu_cmd(bdp, cmd);
 	if (!res)
-		printk(KERN_WARNING "e100: %s: IA setup failed\n", 
-		       bdp->device->name);
+		netdev_warn(bdp->device,, "IA setup failed\n");
 
 exit:
 	return res;
@@ -2460,9 +2465,7 @@
 	spin_lock(&bdp->bd_lock);
 
 	if (!e100_wait_exec_cmplx(bdp, rx_struct->dma_addr, SCB_RUC_START, 0)) {
-		printk(KERN_DEBUG
-		       "e100: %s: start_ru: wait_scb failed\n", 
-		       bdp->device->name);
+		netdev_dbg(bdp->device,, "start_ru: wait_scb failed\n");
 		e100_exec_cmplx(bdp, rx_struct->dma_addr, SCB_RUC_START);
 	}
 	if (bdp->next_cu_cmd == RESUME_NO_WAIT) {
@@ -2707,8 +2710,8 @@
 			spin_lock_bh(&(bdp->bd_non_tx_lock));
 		} else {
 #ifdef E100_CU_DEBUG			
-			printk(KERN_ERR "e100: %s: non-TX command (%x) "
-				"timeout\n", bdp->device->name, sub_cmd);
+			netdev_err(bdp->device,, "non-TX command (%x) "
+				"timeout\n", sub_cmd);
 #endif			
 			rc = false;
 			goto exit;
@@ -2961,14 +2964,17 @@
 {
 	/* Print the string if checksum Offloading was enabled */
 	if (bdp->flags & DF_CSUM_OFFLOAD)
-		printk(KERN_NOTICE "  Hardware receive checksums enabled\n");
+		netdev_printk(KERN_NOTICE, bdp->device, PROBE,
+			"  Hardware receive checksums enabled\n");
 	else {
 		if (bdp->rev_id >= D101MA_REV_ID) 
-			printk(KERN_NOTICE "  Hardware receive checksums disabled\n");
+			netdev_printk(KERN_NOTICE, bdp->device, PROBE,
+				"  Hardware receive checksums disabled\n");
 	}
 
 	if ((bdp->flags & DF_UCODE_LOADED))
-		printk(KERN_NOTICE "  cpu cycle saver enabled\n");
+		netdev_printk(KERN_NOTICE, bdp->device, PROBE,
+			"  cpu cycle saver enabled\n");
 }
 
 /**
@@ -3017,8 +3023,8 @@
 	bdp->scb = (scb_t *) ioremap_nocache(dev->mem_start, sizeof (scb_t));
 
 	if (!bdp->scb) {
-		printk(KERN_ERR "e100: %s: Failed to map PCI address 0x%lX\n",
-		       dev->name, pci_resource_start(pcid, 0));
+		netdev_err(dev,, "Failed to map PCI address 0x%lX\n",
+		       pci_resource_start(pcid, 0));
 		rc = -ENOMEM;
 		goto err_region;
 	}
@@ -3092,7 +3098,7 @@
 		return false;
 
 	if (!e100_setup_iaaddr(bdp, bdp->device->dev_addr)) {
-		printk(KERN_ERR "e100: e100_configure_device: "
+		netdev_err(bdp->device,, "e100_configure_device: "
 			"setup iaaddr failed\n");
 		return false;
 	}
@@ -3122,7 +3128,7 @@
 	e100_sw_reset(bdp, cmd);
 	if (cmd == PORT_SOFTWARE_RESET) {
 		if (!e100_configure_device(bdp))
-			printk(KERN_ERR "e100: e100_deisolate_driver:" 
+			netdev_err(bdp->device,, "e100_deisolate_driver:"
 		       		" device configuration failed\n");
 	} 
 
@@ -3206,6 +3212,20 @@
 	case ETHTOOL_PHYS_ID:
 		rc = e100_ethtool_led_blink(dev,ifr);
 		break;
+	case ETHTOOL_GMSGLVL: {
+		struct ethtool_value eval = {ETHTOOL_GMSGLVL};
+		eval.data = dev->msg_enable;
+		if (copy_to_user(ifr->ifr_data, &eval, sizeof(eval)))
+			return -EFAULT;
+		return 0;
+	}
+	case ETHTOOL_SMSGLVL: {
+		struct ethtool_value eval;
+		if (copy_from_user(&eval, ifr->ifr_data, sizeof(eval)))
+			return -EFAULT;
+		dev->msg_enable = eval.data;
+		return 0;
+	}
 #ifdef	ETHTOOL_GRINGPARAM
 	case ETHTOOL_GRINGPARAM: {
 		struct ethtool_ringparam ering;
@@ -3843,8 +3863,7 @@
 
 	res = e100_exec_non_cu_cmd(bdp, cmd);
 	if (!res)
-		printk(KERN_WARNING "e100: %s: Filter setup failed\n",
-		       bdp->device->name);
+		netdev_warn(bdp->device,, "Filter setup failed\n");
 
 exit:
 	return res;
@@ -3859,10 +3878,10 @@
 	if (e100_config(bdp)) {
 		if (bdp->wolopts & (WAKE_UCAST | WAKE_ARP))
 			if (!e100_setup_filter(bdp))
-				printk(KERN_ERR
-				       "e100: WOL options failed\n");
+				netdev_err(bdp->device,,
+				       "WOL options failed\n");
 	} else {
-		printk(KERN_ERR "e100: config WOL failed\n");
+		netdev_err(bdp->device,, "config WOL failed\n");
 	}
 }
 #endif
@@ -4159,9 +4178,9 @@
 #ifdef E100_CU_DEBUG			
 			if (!(non_tx_cmd->cb_status 
 			    & __constant_cpu_to_le16(CB_STATUS_COMPLETE)))
-				printk(KERN_ERR "e100: %s: Queued "
+				netdev_err(bdp->device,, "Queued "
 					"command (%x) timeout\n", 
-					bdp->device->name, sub_cmd);
+					sub_cmd);
 #endif			
 			list_del(&(active_command->list_elem));
 			e100_free_non_tx_cmd(bdp, active_command);
diff -Naur linux.org/drivers/net/e100/e100_phy.c linux.e100.patched/drivers/net/e100/e100_phy.c
--- linux.org/drivers/net/e100/e100_phy.c	Mon Aug 25 13:29:38 2003
+++ linux.e100.patched/drivers/net/e100/e100_phy.c	Mon Aug 25 13:29:38 2003
@@ -72,7 +72,7 @@
 	if (mdi_cntrl & MDI_PHY_READY) 
 		return 0;
 	else {
-		printk(KERN_ERR "e100: MDI write timeout\n");
+		netdev_err(bdp->device,, "MDI write timeout\n");
 		return 1;
 	}
 }
@@ -127,7 +127,7 @@
 		return 0;
 	}
 	else {
-		printk(KERN_ERR "e100: MDI read timeout\n");
+		netdev_err(bdp->device,, "MDI read timeout\n");
 		return 1;
 	}
 }
@@ -236,22 +236,20 @@
 		switch (bdp->params.e100_speed_duplex) {
 		case E100_AUTONEG:
 			/* The adapter can't autoneg. so set to 10/HALF */
-			printk(KERN_INFO
-			       "e100: 503 serial component detected which "
-			       "cannot autonegotiate\n");
-			printk(KERN_INFO
-			       "e100: speed/duplex forced to "
+			netdev_info(bdp->device, PROBE,
+			       "503 serial component detected which "
+			       "cannot autonegotiate. "
+			       "speed/duplex forced to "
 			       "10Mbps / Half duplex\n");
 			bdp->params.e100_speed_duplex = E100_SPEED_10_HALF;
 			break;
 
 		case E100_SPEED_100_HALF:
 		case E100_SPEED_100_FULL:
-			printk(KERN_ERR
-			       "e100: 503 serial component detected "
-			       "which does not support 100Mbps\n");
-			printk(KERN_ERR
-			       "e100: Change the forced speed/duplex "
+			netdev_err(bdp->device,,
+			       "503 serial component detected "
+			       "which does not support 100Mbps. "
+			       "Change the forced speed/duplex "
 			       "to a supported setting\n");
 			return false;
 		}
@@ -269,7 +267,7 @@
 		if ((bdp->params.e100_speed_duplex != E100_AUTONEG) &&
 		    (bdp->params.e100_speed_duplex != E100_SPEED_100_FULL)) {
 			/* just inform user about 100 full */
-			printk(KERN_ERR "e100: NC3133 NIC can only run "
+			netdev_err(bdp->device,, "NC3133 NIC can only run "
 			       "at 100Mbps full duplex\n");
 		}
 
diff -Naur linux.org/drivers/net/e100/e100_test.c linux.e100.patched/drivers/net/e100/e100_test.c
--- linux.org/drivers/net/e100/e100_test.c	Mon Aug 25 13:29:38 2003
+++ linux.e100.patched/drivers/net/e100/e100_test.c	Mon Aug 25 13:29:38 2003
@@ -44,7 +44,7 @@
 static void e100_diag_config_loopback(struct e100_private *, u8, u8, u8 *,u8 *);
 static u8 e100_diag_loopback_alloc(struct e100_private *);
 static void e100_diag_loopback_cu_ru_exec(struct e100_private *);
-static u8 e100_diag_check_pkt(u8 *);
+static u8 e100_diag_check_pkt(struct e100_private *bdp, u8 *);
 static void e100_diag_loopback_free(struct e100_private *);
 static int e100_cable_diag(struct e100_private *bdp);
 
@@ -169,19 +169,19 @@
 {
 	u8 rc = 0;
 
-	printk(KERN_DEBUG "%s: PHY loopback test starts\n", dev->name);
+	netdev_printk(KERN_DEBUG, dev,, "PHY loopback test starts\n");
 	e100_hw_init(dev->priv);
 	if (!e100_diag_one_loopback(dev, PHY_LOOPBACK)) {
 		rc |= PHY_LOOPBACK;
 	}
-	printk(KERN_DEBUG "%s: PHY loopback test ends\n", dev->name);
+	netdev_printk(KERN_DEBUG, dev,, "PHY loopback test ends\n");
 
-	printk(KERN_DEBUG "%s: MAC loopback test starts\n", dev->name);
+	netdev_printk(KERN_DEBUG, dev,, "MAC loopback test starts\n");
 	e100_hw_init(dev->priv);
 	if (!e100_diag_one_loopback(dev, MAC_LOOPBACK)) {
 		rc |= MAC_LOOPBACK;
 	}
-	printk(KERN_DEBUG "%s: MAC loopback test ends\n", dev->name);
+	netdev_printk(KERN_DEBUG, dev,, "MAC loopback test ends\n");
 
 	return rc;
 }
@@ -349,7 +349,7 @@
 {
 	/*load CU & RU base */ 
 	if(!e100_wait_exec_cmplx(bdp, bdp->loopback.dma_handle, SCB_RUC_START, 0))
-		printk(KERN_ERR "e100: SCB_RUC_START failed!\n");
+		netdev_err(bdp->device,, "SCB_RUC_START failed!\n");
 
 	bdp->next_cu_cmd = START_WAIT;
 	e100_start_cu(bdp, bdp->loopback.tcb);
@@ -359,20 +359,23 @@
 /**
  * e100_diag_check_pkt - checks if a given packet is a loopback packet
  * @bdp: atapter's private data struct
+ * @datap: pointer to packet data
  *
  * Returns true if OK false otherwise.
  */
 static u8
-e100_diag_check_pkt(u8 *datap)
+e100_diag_check_pkt(struct e100_private *bdp, u8 *datap)
 {
 	int i;
 	for (i = 0; i<512; i++) {
 		if( !((*datap)==0xFF && (*(datap + 512) == 0xBA)) ) {
-			printk (KERN_ERR "e100: check loopback packet failed at: %x\n", i);
+			netdev_err(bdp->device,,
+				"check loopback packet failed at: %x\n", i);
 			return false;
 			}
 	}
-	printk (KERN_DEBUG "e100: Check received loopback packet OK\n");
+	netdev_printk(KERN_DEBUG, bdp->device,,
+		"Check received loopback packet OK\n");
 	return true;
 }
 
@@ -404,11 +407,13 @@
         }
 
         if (rfd_status & RFD_STATUS_COMPLETE) {
-		printk(KERN_DEBUG "e100: Loopback packet received\n");
-                return e100_diag_check_pkt(((u8 *)rfdp+bdp->rfd_size));
+		netdev_printk(KERN_DEBUG, bdp->device,,
+			"Loopback packet received\n");
+                return e100_diag_check_pkt(bdp,
+			((u8 *)rfdp+bdp->rfd_size));
 	}
 	else {
-		printk(KERN_ERR "e100: Loopback packet not received\n");
+		netdev_err(bdp->device,, "Loopback packet not received\n");
 		return false;
 	}
 }