Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 28 Aug 2008 21:07:03 +0100 (BST)
From:      Gavin Atkinson <gavin@FreeBSD.org>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   kern/126924: [an] [patch] printf -> device_printf and simplify probe
Message-ID:  <200808282007.m7SK73HZ050146@buffy.york.ac.uk>
Resent-Message-ID: <200808282010.m7SKA1Sg028799@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         126924
>Category:       kern
>Synopsis:       [an] [patch] printf -> device_printf and simplify probe
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Thu Aug 28 20:10:01 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator:     Gavin Atkinson
>Release:        FreeBSD 7.0-STABLE amd64
>Organization:
>Environment:
System: FreeBSD buffy.york.ac.uk 7.0-STABLE FreeBSD 7.0-STABLE #3: Fri Jun 20 09:21:51 UTC 2008 root@buffy.york.ac.uk:/usr/obj/usr/src/sys/GENERIC amd64

>Description:
	There's an bit of duplicated code in thhe probe routine of if_an_pci.c
which is presumably left over from a previous version of this driver, but which
can simply be rolled into the existing probe code now.
	While here, convert printf() to device_printf and add a couple of
extra messages to cover various failure modes.
	Net change to driver size is ~20 bytes.
>How-To-Repeat:
	N/A.  Changes tested with an MPI350.
>Fix:

--- an-device_printf.diff begins here ---
Index: src/sys/dev/an/if_an_pci.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/an/if_an_pci.c,v
retrieving revision 1.30
diff -u -r1.30 if_an_pci.c
--- src/sys/dev/an/if_an_pci.c	18 Jan 2008 16:34:18 -0000	1.30
+++ src/sys/dev/an/if_an_pci.c	28 Aug 2008 19:59:55 -0000
@@ -103,6 +103,7 @@
 
 static struct an_type an_devs[] = {
 	{ AIRONET_VENDORID, AIRONET_DEVICEID_35x, "Cisco Aironet 350 Series" },
+	{ AIRONET_VENDORID, AIRONET_DEVICEID_MPI350, "Cisco Aironet MPI350" },
 	{ AIRONET_VENDORID, AIRONET_DEVICEID_4500, "Aironet PCI4500" },
 	{ AIRONET_VENDORID, AIRONET_DEVICEID_4800, "Aironet PCI4800" },
 	{ AIRONET_VENDORID, AIRONET_DEVICEID_4xxx, "Aironet PCI4500/PCI4800" },
@@ -133,13 +134,6 @@
 		t++;
 	}
 
-	if (pci_get_vendor(dev) == AIRONET_VENDORID &&
-	    pci_get_device(dev) == AIRONET_DEVICEID_MPI350) {
-		device_set_desc(dev, "Cisco Aironet MPI350");
-		an_pci_probe(dev);
-		return(BUS_PROBE_DEFAULT);
-	}
-
 	return(ENXIO);
 }
 
@@ -169,7 +163,7 @@
 		command = pci_read_config(dev, PCIR_COMMAND, 4);
 
 		if (!(command & PCIM_CMD_PORTEN)) {
-			printf("an%d: failed to enable I/O ports!\n", unit);
+			device_printf(dev, "failed to enable I/O ports!\n");
 			error = ENXIO;
 			goto fail;
 		}
@@ -178,7 +172,7 @@
 	error = an_alloc_port(dev, sc->port_rid, 1);
 
 	if (error) {
-		printf("an%d: couldn't map ports\n", unit);
+		device_printf(dev, "couldn't map ports\n");
 		goto fail;
 	}
 
@@ -191,7 +185,7 @@
 		sc->mem_rid = PCIR_BAR(1);
 		error = an_alloc_memory(dev, sc->mem_rid, 1);
 		if (error) {
-			printf("an%d: couldn't map memory\n", unit);
+			device_printf(dev, "couldn't map memory\n");
 			goto fail;
 		}
 		sc->an_mem_btag = rman_get_bustag(sc->mem_res);
@@ -202,7 +196,7 @@
 		error = an_alloc_aux_memory(dev, sc->mem_aux_rid, 
 		    AN_AUX_MEM_SIZE);
 		if (error) {
-			printf("an%d: couldn't map aux memory\n", unit);
+			device_printf(dev, "couldn't map aux memory\n");
 			goto fail;
 		}
 		sc->an_mem_aux_btag = rman_get_bustag(sc->mem_aux_res);
@@ -222,7 +216,7 @@
 			       NULL,			/* lockarg */
 			       &sc->an_dtag);
 		if (error) {
-			printf("an%d: couldn't get DMA region\n", unit);
+			device_printf(dev, "couldn't get DMA region\n");
 			goto fail;
 		}
 	}
@@ -230,12 +224,14 @@
 	/* Allocate interrupt */
 	error = an_alloc_irq(dev, 0, RF_SHAREABLE);
 	if (error) {
+		device_printf(dev, "couldn't get interrupt\n");
 		goto fail;
 	}
 
 	sc->an_dev = dev;
 	error = an_attach(sc, device_get_unit(dev), flags);
 	if (error) {
+		device_printf(dev, "couldn't attach\n");
 		goto fail;
 	}
 
@@ -244,6 +240,8 @@
 	 */
 	error = bus_setup_intr(dev, sc->irq_res, INTR_TYPE_NET,
 	    NULL, an_intr, sc, &sc->irq_handle);
+	if (error)
+		device_printf(dev, "couldn't setup interrupt\n");
 
 fail:
 	if (error)
--- an-device_printf.diff ends here ---


>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200808282007.m7SK73HZ050146>