Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 15 Jan 2009 21:23:45 +0000 (UTC)
From:      Marius Strobl <marius@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-6@freebsd.org
Subject:   svn commit: r187314 - in stable/6/sys: . dev/esp
Message-ID:  <200901152123.n0FLNjH8087843@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: marius
Date: Thu Jan 15 21:23:44 2009
New Revision: 187314
URL: http://svn.freebsd.org/changeset/base/187314

Log:
  MFC: r180692
  
  o Fix style(9) bugs and similar nits.
  o Merge ncr53c9x.c from NetBSD:
    1.115: fix variable shadowing
    1.118: __inline -> inline
    1.121: fix empty if

Modified:
  stable/6/sys/   (props changed)
  stable/6/sys/dev/esp/esp_sbus.c
  stable/6/sys/dev/esp/ncr53c9x.c
  stable/6/sys/dev/esp/ncr53c9xvar.h

Modified: stable/6/sys/dev/esp/esp_sbus.c
==============================================================================
--- stable/6/sys/dev/esp/esp_sbus.c	Thu Jan 15 20:49:17 2009	(r187313)
+++ stable/6/sys/dev/esp/esp_sbus.c	Thu Jan 15 21:23:44 2009	(r187314)
@@ -158,19 +158,19 @@ MODULE_DEPEND(esp, sbus, 1, 1, 1);
 MODULE_DEPEND(esp, cam, 1, 1, 1);
 
 /*
- * Functions and the switch for the MI code.
+ * Functions and the switch for the MI code
  */
-static u_char	esp_read_reg(struct ncr53c9x_softc *, int);
-static void	esp_write_reg(struct ncr53c9x_softc *, int, u_char);
-static int	esp_dma_isintr(struct ncr53c9x_softc *);
-static void	esp_dma_reset(struct ncr53c9x_softc *);
-static int	esp_dma_intr(struct ncr53c9x_softc *);
-static int	esp_dma_setup(struct ncr53c9x_softc *, caddr_t *, size_t *,
-			      int, size_t *);
-static void	esp_dma_go(struct ncr53c9x_softc *);
-static void	esp_dma_stop(struct ncr53c9x_softc *);
-static int	esp_dma_isactive(struct ncr53c9x_softc *);
-static int	espattach(struct esp_softc *, struct ncr53c9x_glue *);
+static u_char	esp_read_reg(struct ncr53c9x_softc *sc, int reg);
+static void	esp_write_reg(struct ncr53c9x_softc *sc, int reg, u_char v);
+static int	esp_dma_isintr(struct ncr53c9x_softc *sc);
+static void	esp_dma_reset(struct ncr53c9x_softc *sc);
+static int	esp_dma_intr(struct ncr53c9x_softc *sc);
+static int	esp_dma_setup(struct ncr53c9x_softc *sc, caddr_t *addr,
+		    size_t *len, int datain, size_t *dmasize);
+static void	esp_dma_go(struct ncr53c9x_softc *sc);
+static void	esp_dma_stop(struct ncr53c9x_softc *sc);
+static int	esp_dma_isactive(struct ncr53c9x_softc *sc);
+static int	espattach(struct esp_softc *esc, struct ncr53c9x_glue *gluep);
 
 static struct ncr53c9x_glue esp_sbus_glue = {
 	esp_read_reg,
@@ -311,7 +311,7 @@ esp_sbus_attach(device_t dev)
 		esc->sc_regh = rman_get_bushandle(esc->sc_res);
 	} else {
 		/*
-		 * Search accompanying DMA engine. It should have been
+		 * Search accompanying DMA engine.  It should have been
 		 * already attached otherwise there isn't much we can do.
 		 */
 		if (device_get_children(device_get_parent(dev), &children,
@@ -498,9 +498,6 @@ esp_resume(device_t dev)
 	return (ENXIO);
 }
 
-/*
- * Attach this instance, and then all the sub-devices
- */
 static int
 espattach(struct esp_softc *esc, struct ncr53c9x_glue *gluep)
 {
@@ -530,7 +527,7 @@ espattach(struct esp_softc *esc, struct 
 	 */
 
 	/*
-	 * Read the part-unique ID code of the SCSI chip. The contained
+	 * Read the part-unique ID code of the SCSI chip.  The contained
 	 * value is only valid if all of the following conditions are met:
 	 * - After power-up or chip reset.
 	 * - Before any value is written to this register.
@@ -570,7 +567,7 @@ espattach(struct esp_softc *esc, struct 
 		    (NCRCFG3_CDB | NCRCFG3_FCLK)) {
 			sc->sc_rev = NCR_VARIANT_ESP100A;
 		} else {
-			/* NCRCFG2_FE enables > 64K transfers */
+			/* NCRCFG2_FE enables > 64K transfers. */
 			sc->sc_cfg2 |= NCRCFG2_FE;
 			sc->sc_cfg3 = 0;
 			NCR_WRITE_REG(sc, NCR_CFG3, sc->sc_cfg3);
@@ -581,15 +578,18 @@ espattach(struct esp_softc *esc, struct 
 				case 0x00:
 					sc->sc_rev = NCR_VARIANT_FAS100A;
 					break;
+
 				case 0x02:
 					if ((uid & 0x07) == 0x02)
 						sc->sc_rev = NCR_VARIANT_FAS216;
 					else
 						sc->sc_rev = NCR_VARIANT_FAS236;
 					break;
+
 				case 0x0a:
 					sc->sc_rev = NCR_VARIANT_FAS366;
 					break;
+
 				default:
 					/*
 					 * We could just treat unknown chips
@@ -660,10 +660,10 @@ espattach(struct esp_softc *esc, struct 
 		/*
 		 * The onboard SCSI chips in Sun Ultra 1 are actually
 		 * documented to be NCR53C9X which use NCRCFG3_FCLK and
-		 * NCRCFG3_FSCSI. BSD/OS however probes these chips as
+		 * NCRCFG3_FSCSI.  BSD/OS however probes these chips as
 		 * FAS100A and uses NCRF9XCFG3_FCLK and NCRF9XCFG3_FSCSI
 		 * instead which seems to be correct as otherwise sync
-		 * negotiation just doesn't work. Using NCRF9XCFG3_FCLK
+		 * negotiation just doesn't work.  Using NCRF9XCFG3_FCLK
 		 * and NCRF9XCFG3_FSCSI with these chips in fact also
 		 * yields Fast-SCSI speed.
 		 */
@@ -683,7 +683,7 @@ espattach(struct esp_softc *esc, struct 
 	/* Limit minsync due to unsolved performance issues. */
 	sc->sc_maxsync = sc->sc_minsync;
 
-	/* Establish interrupt channel */
+	/* Establish interrupt channel. */
 	esc->sc_irqrid = 0;
 	if ((esc->sc_irqres = bus_alloc_resource_any(esc->sc_dev, SYS_RES_IRQ,
 	    &esc->sc_irqrid, RF_SHAREABLE|RF_ACTIVE)) == NULL) {
@@ -697,7 +697,7 @@ espattach(struct esp_softc *esc, struct 
 		goto fail_ires;
 	}
 
-	/* Turn on target selection using the `DMA' method */
+	/* Turn on target selection using the `DMA' method. */
 	if (sc->sc_rev != NCR_VARIANT_FAS366)
 		sc->sc_features |= NCR_F_DMASELECT;
 
@@ -720,7 +720,7 @@ espattach(struct esp_softc *esc, struct 
 }
 
 /*
- * Glue functions.
+ * Glue functions
  */
 
 #ifdef ESP_SBUS_DEBUG
@@ -844,11 +844,8 @@ static void
 esp_dma_stop(struct ncr53c9x_softc *sc)
 {
 	struct esp_softc *esc = (struct esp_softc *)sc;
-	uint32_t csr;
 
-	csr = L64854_GCSR(esc->sc_dma);
-	csr &= ~D_EN_DMA;
-	L64854_SCSR(esc->sc_dma, csr);
+	L64854_SCSR(esc->sc_dma, L64854_GCSR(esc->sc_dma) & ~D_EN_DMA);
 }
 
 static int

Modified: stable/6/sys/dev/esp/ncr53c9x.c
==============================================================================
--- stable/6/sys/dev/esp/ncr53c9x.c	Thu Jan 15 20:49:17 2009	(r187313)
+++ stable/6/sys/dev/esp/ncr53c9x.c	Thu Jan 15 21:23:44 2009	(r187314)
@@ -129,46 +129,54 @@ __FBSDID("$FreeBSD$");
 #include <dev/esp/ncr53c9xreg.h>
 #include <dev/esp/ncr53c9xvar.h>
 
-int ncr53c9x_debug = NCR_SHOWMISC /*|NCR_SHOWPHASE|NCR_SHOWTRAC|NCR_SHOWCMDS*/;
+int ncr53c9x_debug =
+    NCR_SHOWMISC /* | NCR_SHOWPHASE | NCR_SHOWTRAC | NCR_SHOWCMDS */;
 #ifdef DEBUG
 int ncr53c9x_notag = 0;
 #endif
 
-static void	ncr53c9x_select(struct ncr53c9x_softc *, struct ncr53c9x_ecb *);
-static int	ncr53c9x_reselect(struct ncr53c9x_softc *, int, int, int);
-static void	ncr53c9x_scsi_reset(struct ncr53c9x_softc *);
-static void	ncr53c9x_poll(struct cam_sim *);
-static void	ncr53c9x_sched(struct ncr53c9x_softc *);
-static void	ncr53c9x_done(struct ncr53c9x_softc *, struct ncr53c9x_ecb *);
-static void	ncr53c9x_msgin(struct ncr53c9x_softc *);
-static void	ncr53c9x_msgout(struct ncr53c9x_softc *);
+static void	ncr53c9x_abort(struct ncr53c9x_softc *sc,
+		    struct ncr53c9x_ecb *ecb);
+static void	ncr53c9x_dequeue(struct ncr53c9x_softc *sc,
+		    struct ncr53c9x_ecb *ecb);
+static void	ncr53c9x_done(struct ncr53c9x_softc *sc,
+		    struct ncr53c9x_ecb *ecb);
+static void	ncr53c9x_free_ecb(struct ncr53c9x_softc *sc,
+		    struct ncr53c9x_ecb *ecb);
+static void	ncr53c9x_msgin(struct ncr53c9x_softc *sc);
+static void	ncr53c9x_msgout(struct ncr53c9x_softc *sc);
+static void	ncr53c9x_poll(struct cam_sim *sim);
+static int	ncr53c9x_rdfifo(struct ncr53c9x_softc *sc, int how);
+static int	ncr53c9x_reselect(struct ncr53c9x_softc *sc, int message,
+		    int tagtype, int tagid);
+static void	ncr53c9x_sense(struct ncr53c9x_softc *sc,
+		    struct ncr53c9x_ecb *ecb);
+static void	ncr53c9x_scsi_reset(struct ncr53c9x_softc *sc);
+static void	ncr53c9x_sched(struct ncr53c9x_softc *sc);
+static void	ncr53c9x_select(struct ncr53c9x_softc *sc,
+		    struct ncr53c9x_ecb *ecb);
 static void	ncr53c9x_timeout(void *arg);
 static void	ncr53c9x_watch(void *arg);
-static void	ncr53c9x_abort(struct ncr53c9x_softc *, struct ncr53c9x_ecb *);
-static void	ncr53c9x_dequeue(struct ncr53c9x_softc *,
-				struct ncr53c9x_ecb *);
-static void	ncr53c9x_sense(struct ncr53c9x_softc *, struct ncr53c9x_ecb *);
-static void	ncr53c9x_free_ecb(struct ncr53c9x_softc *,
-				  struct ncr53c9x_ecb *);
-static void	ncr53c9x_wrfifo(struct ncr53c9x_softc *, u_char *, int);
-static int	ncr53c9x_rdfifo(struct ncr53c9x_softc *, int);
-
-static struct ncr53c9x_ecb *ncr53c9x_get_ecb(struct ncr53c9x_softc *);
-static struct ncr53c9x_linfo *ncr53c9x_lunsearch(struct ncr53c9x_tinfo *,
-						 int64_t lun);
-
-static __inline void ncr53c9x_readregs(struct ncr53c9x_softc *);
-static __inline int ncr53c9x_stp2cpb(struct ncr53c9x_softc *, int);
-static __inline void ncr53c9x_setsync(struct ncr53c9x_softc *,
-				      struct ncr53c9x_tinfo *);
+static void	ncr53c9x_wrfifo(struct ncr53c9x_softc *sc, u_char *p,
+		    int len);
 
-#define NCR_RDFIFO_START   0
-#define NCR_RDFIFO_CONTINUE 1
+static struct ncr53c9x_ecb	*ncr53c9x_get_ecb(struct ncr53c9x_softc *sc);
+static struct ncr53c9x_linfo	*ncr53c9x_lunsearch(struct ncr53c9x_tinfo *sc,
+				    int64_t lun);
+
+static inline void	ncr53c9x_readregs(struct ncr53c9x_softc *sc);
+static inline void	ncr53c9x_setsync(struct ncr53c9x_softc *sc,
+			    struct ncr53c9x_tinfo *ti);
+static inline int	ncr53c9x_stp2cpb(struct ncr53c9x_softc *sc,
+			    int period);
 
-#define NCR_SET_COUNT(sc, size) do { \
-		NCR_WRITE_REG((sc), NCR_TCL, (size)); 			\
+#define	NCR_RDFIFO_START   0
+#define	NCR_RDFIFO_CONTINUE 1
+
+#define	NCR_SET_COUNT(sc, size) do {					\
+		NCR_WRITE_REG((sc), NCR_TCL, (size));			\
 		NCR_WRITE_REG((sc), NCR_TCM, (size) >> 8);		\
-		if ((sc->sc_cfg2 & NCRCFG2_FE) || 			\
+		if ((sc->sc_cfg2 & NCRCFG2_FE) ||			\
 		    (sc->sc_rev == NCR_VARIANT_FAS366)) {		\
 			NCR_WRITE_REG((sc), NCR_TCH, (size) >> 16);	\
 		}							\
@@ -178,8 +186,8 @@ static __inline void ncr53c9x_setsync(st
 } while (0)
 
 #ifndef mstohz
-#define mstohz(ms) \
-	(((ms) < 0x20000)  ? \
+#define	mstohz(ms) \
+	(((ms) < 0x20000) ? \
 	    ((ms +0u) / 1000u) * hz : \
 	    ((ms +0u) * hz) /1000u)
 #endif
@@ -211,6 +219,7 @@ static struct ncr53c9x_linfo *
 ncr53c9x_lunsearch(struct ncr53c9x_tinfo *ti, int64_t lun)
 {
 	struct ncr53c9x_linfo *li;
+
 	LIST_FOREACH(li, &ti->luns, link)
 		if (li->lun == lun)
 			return (li);
@@ -248,7 +257,7 @@ ncr53c9x_attach(struct ncr53c9x_softc *s
 	/*
 	 * Allocate SCSI message buffers.
 	 * Front-ends can override allocation to avoid alignment
-	 * handling in the DMA engines. Note that that ncr53c9x_msgout()
+	 * handling in the DMA engines.  Note that ncr53c9x_msgout()
 	 * can request a 1 byte DMA transfer.
 	 */
 	if (sc->sc_omess == NULL) {
@@ -294,12 +303,12 @@ ncr53c9x_attach(struct ncr53c9x_softc *s
 
 	sc->sc_ccf = FREQTOCCF(sc->sc_freq);
 
-	/* The value *must not* be == 1. Make it 2 */
+	/* The value *must not* be == 1.  Make it 2. */
 	if (sc->sc_ccf == 1)
 		sc->sc_ccf = 2;
 
 	/*
-	 * The recommended timeout is 250ms. This register is loaded
+	 * The recommended timeout is 250ms.  This register is loaded
 	 * with a value calculated as follows, from the docs:
 	 *
 	 *		(timout period) x (CLK frequency)
@@ -311,11 +320,11 @@ ncr53c9x_attach(struct ncr53c9x_softc *s
 	 */
 	sc->sc_timeout = ((250 * 1000) * sc->sc_freq) / (8192 * sc->sc_ccf);
 
-	/* CCF register only has 3 bits; 0 is actually 8 */
+	/* The CCF register only has 3 bits; 0 is actually 8. */
 	sc->sc_ccf &= 7;
 
 	/*
-	 * Register with CAM
+	 * Register with CAM.
 	 */
 	devq = cam_simq_alloc(sc->sc_ntarg);
 	if (devq == NULL) {
@@ -325,8 +334,7 @@ ncr53c9x_attach(struct ncr53c9x_softc *s
 	}
 
 	sim = cam_sim_alloc(ncr53c9x_action, ncr53c9x_poll, "esp", sc,
-			    device_get_unit(sc->sc_dev), 1,
-			    NCR_TAG_DEPTH, devq);
+	    device_get_unit(sc->sc_dev), 1, NCR_TAG_DEPTH, devq);
 	if (sim == NULL) {
 		device_printf(sc->sc_dev, "cannot allocate SIM entry\n");
 		error = ENOMEM;
@@ -339,8 +347,7 @@ ncr53c9x_attach(struct ncr53c9x_softc *s
 	}
 
 	if (xpt_create_path(&path, NULL, cam_sim_path(sim),
-			    CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD)
-			    != CAM_REQ_CMP) {
+	    CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP) {
 		device_printf(sc->sc_dev, "cannot create path\n");
 		error = EIO;
 		goto fail_bus;
@@ -349,16 +356,19 @@ ncr53c9x_attach(struct ncr53c9x_softc *s
 	sc->sc_sim = sim;
 	sc->sc_path = path;
 
-	/* Reset state & bus */
+	/* Reset state and bus. */
 #if 0
 	sc->sc_cfflags = sc->sc_dev.dv_cfdata->cf_flags;
+#else
+	sc->sc_cfflags = 0;
 #endif
 	sc->sc_state = 0;
 	ncr53c9x_init(sc, 1);
 
 	TAILQ_INIT(&sc->free_list);
-	if ((sc->ecb_array = malloc(sizeof(struct ncr53c9x_ecb) * NCR_TAG_DEPTH,
-				    M_DEVBUF, M_NOWAIT|M_ZERO)) == NULL) {
+	if ((sc->ecb_array =
+	    malloc(sizeof(struct ncr53c9x_ecb) * NCR_TAG_DEPTH, M_DEVBUF,
+	    M_NOWAIT | M_ZERO)) == NULL) {
 		device_printf(sc->sc_dev, "cannot allocate ECB array\n");
 		error = ENOMEM;
 		goto fail_path;
@@ -416,8 +426,8 @@ ncr53c9x_detach(struct ncr53c9x_softc *s
 }
 
 /*
- * This is the generic ncr53c9x reset function. It does not reset the SCSI bus,
- * only this controller, but kills any on-going commands, and also stops
+ * This is the generic ncr53c9x reset function.  It does not reset the SCSI
+ * bus, only this controller, but kills any on-going commands, and also stops
  * and resets the DMA.
  *
  * After reset, registers are loaded with the defaults from the attach
@@ -427,20 +437,21 @@ void
 ncr53c9x_reset(struct ncr53c9x_softc *sc)
 {
 
-	/* reset DMA first */
+	/* Reset DMA first. */
 	NCRDMA_RESET(sc);
 
-	/* reset SCSI chip */
+	/* Reset SCSI chip. */
 	NCRCMD(sc, NCRCMD_RSTCHIP);
 	NCRCMD(sc, NCRCMD_NOP);
 	DELAY(500);
 
-	/* do these backwards, and fall through */
+	/* Do these backwards, and fall through. */
 	switch (sc->sc_rev) {
 	case NCR_VARIANT_ESP406:
 	case NCR_VARIANT_FAS408:
 		NCR_WRITE_REG(sc, NCR_CFG5, sc->sc_cfg5 | NCRCFG5_SINT);
 		NCR_WRITE_REG(sc, NCR_CFG4, sc->sc_cfg4);
+		/* FALLTHROUGH */
 	case NCR_VARIANT_AM53C974:
 	case NCR_VARIANT_FAS100A:
 	case NCR_VARIANT_FAS216:
@@ -450,9 +461,11 @@ ncr53c9x_reset(struct ncr53c9x_softc *sc
 	case NCR_VARIANT_ESP200:
 		sc->sc_features |= NCR_F_HASCFG3;
 		NCR_WRITE_REG(sc, NCR_CFG3, sc->sc_cfg3);
+		/* FALLTHROUGH */
 	case NCR_VARIANT_ESP100A:
 		sc->sc_features |= NCR_F_SELATN3;
 		NCR_WRITE_REG(sc, NCR_CFG2, sc->sc_cfg2);
+		/* FALLTHROUGH */
 	case NCR_VARIANT_ESP100:
 		NCR_WRITE_REG(sc, NCR_CFG1, sc->sc_cfg1);
 		NCR_WRITE_REG(sc, NCR_CCF, sc->sc_ccf);
@@ -466,7 +479,7 @@ ncr53c9x_reset(struct ncr53c9x_softc *sc
 		sc->sc_cfg3 = NCRFASCFG3_FASTCLK | NCRFASCFG3_OBAUTO;
 		sc->sc_cfg3_fscsi = NCRFASCFG3_FASTSCSI;
 		NCR_WRITE_REG(sc, NCR_CFG3, sc->sc_cfg3);
-		sc->sc_cfg2 = 0; /* NCRCFG2_HMEFE| NCRCFG2_HME32 */
+		sc->sc_cfg2 = 0; /* NCRCFG2_HMEFE | NCRCFG2_HME32 */
 		NCR_WRITE_REG(sc, NCR_CFG2, sc->sc_cfg2);
 		NCR_WRITE_REG(sc, NCR_CFG1, sc->sc_cfg1);
 		NCR_WRITE_REG(sc, NCR_CCF, sc->sc_ccf);
@@ -475,8 +488,8 @@ ncr53c9x_reset(struct ncr53c9x_softc *sc
 		break;
 
 	default:
-		device_printf(sc->sc_dev, "unknown revision code, "
-			      "assuming ESP100\n");
+		device_printf(sc->sc_dev,
+		    "unknown revision code, assuming ESP100\n");
 		NCR_WRITE_REG(sc, NCR_CFG1, sc->sc_cfg1);
 		NCR_WRITE_REG(sc, NCR_CCF, sc->sc_ccf);
 		NCR_WRITE_REG(sc, NCR_SYNCOFF, 0);
@@ -488,7 +501,7 @@ ncr53c9x_reset(struct ncr53c9x_softc *sc
 
 #if 0
 	device_printf(sc->sc_dev, "ncr53c9x_reset: revision %d\n",
-	       sc->sc_rev);
+	    sc->sc_rev);
 	device_printf(sc->sc_dev, "ncr53c9x_reset: cfg1 0x%x, cfg2 0x%x, "
 	    "cfg3 0x%x, ccf 0x%x, timeout 0x%x\n",
 	    sc->sc_cfg1, sc->sc_cfg2, sc->sc_cfg3, sc->sc_ccf, sc->sc_timeout);
@@ -496,7 +509,7 @@ ncr53c9x_reset(struct ncr53c9x_softc *sc
 }
 
 /*
- * Reset the SCSI bus, but not the chip
+ * Reset the SCSI bus, but not the chip.
  */
 static void
 ncr53c9x_scsi_reset(struct ncr53c9x_softc *sc)
@@ -510,13 +523,14 @@ ncr53c9x_scsi_reset(struct ncr53c9x_soft
 }
 
 /*
- * Initialize ncr53c9x state machine
+ * Initialize ncr53c9x state machine.
  */
 void
 ncr53c9x_init(struct ncr53c9x_softc *sc, int doreset)
 {
 	struct ncr53c9x_ecb *ecb;
 	struct ncr53c9x_linfo *li;
+	struct ncr53c9x_tinfo *ti;
 	int i, r;
 
 	NCR_MISC(("[NCR_INIT(%d) %d] ", doreset, sc->sc_state));
@@ -538,13 +552,13 @@ ncr53c9x_init(struct ncr53c9x_softc *sc,
 			ecb->ccb->ccb_h.status = CAM_CMD_TIMEOUT;
 			ncr53c9x_done(sc, ecb);
 		}
-		/* Cancel outstanding disconnected commands on each LUN */
+		/* Cancel outstanding disconnected commands on each LUN. */
 		for (r = 0; r < sc->sc_ntarg; r++) {
 			LIST_FOREACH(li, &sc->sc_tinfo[r].luns, link) {
 				if ((ecb = li->untagged) != NULL) {
 					li->untagged = NULL;
 					/*
-					 * XXXXXXX
+					 * XXX
 					 *
 					 * Should we terminate a command
 					 * that never reached the disk?
@@ -567,7 +581,7 @@ ncr53c9x_init(struct ncr53c9x_softc *sc,
 	}
 
 	/*
-	 * reset the chip to a known state
+	 * Reset the chip to a known state.
 	 */
 	ncr53c9x_reset(sc);
 
@@ -576,12 +590,14 @@ ncr53c9x_init(struct ncr53c9x_softc *sc,
 	sc->sc_phase = sc->sc_prevphase = INVALID_PHASE;
 
 	for (r = 0; r < sc->sc_ntarg; r++) {
-		struct ncr53c9x_tinfo *ti = &sc->sc_tinfo[r];
+		ti = &sc->sc_tinfo[r];
 /* XXX - config flags per target: low bits: no reselect; high bits: no synch */
+		ti->flags = ((sc->sc_minsync != 0 &&
+		    (sc->sc_cfflags & (1 << ((r & 7) + 8))) == 0) ?
+		    0 : T_SYNCHOFF) |
+		    ((sc->sc_cfflags & (1 << (r & 7))) == 0 ?
+		    0 : T_RSELECTOFF);
 
-		ti->flags = ((sc->sc_minsync && !(sc->sc_cfflags & (1<<((r&7)+8))))
-		    ? 0 : T_SYNCHOFF) |
-		    ((sc->sc_cfflags & (1<<(r&7))) ? T_RSELECTOFF : 0);
 #ifdef DEBUG
 		if (ncr53c9x_notag)
 			ti->flags &= ~T_TAG;
@@ -606,15 +622,15 @@ ncr53c9x_init(struct ncr53c9x_softc *sc,
  * NCR_INTR - so make sure it is the last read.
  *
  * I think that (from reading the docs) most bits in these registers
- * only make sense when he DMA CSR has an interrupt showing. Call only
+ * only make sense when the DMA CSR has an interrupt showing.  Call only
  * if an interrupt is pending.
  */
-static __inline void
+static inline void
 ncr53c9x_readregs(struct ncr53c9x_softc *sc)
 {
 
 	sc->sc_espstat = NCR_READ_REG(sc, NCR_STAT);
-	/* Only the stepo bits are of interest */
+	/* Only the step bits are of interest. */
 	sc->sc_espstep = NCR_READ_REG(sc, NCR_STEP) & NCRSTEP_MASK;
 
 	if (sc->sc_rev == NCR_VARIANT_FAS366)
@@ -629,9 +645,8 @@ ncr53c9x_readregs(struct ncr53c9x_softc 
 	 * Determine the SCSI bus phase, return either a real SCSI bus phase
 	 * or some pseudo phase we use to detect certain exceptions.
 	 */
-
 	sc->sc_phase = (sc->sc_espintr & NCRINTR_DIS) ?
-	    /* Disconnected */ BUSFREE_PHASE : sc->sc_espstat & NCRSTAT_PHASE;
+	    BUSFREE_PHASE : sc->sc_espstat & NCRSTAT_PHASE;
 
 	NCR_INTS(("regs[intr=%02x,stat=%02x,step=%02x,stat2=%02x] ",
 	    sc->sc_espintr, sc->sc_espstat, sc->sc_espstep, sc->sc_espstat2));
@@ -640,18 +655,18 @@ ncr53c9x_readregs(struct ncr53c9x_softc 
 /*
  * Convert Synchronous Transfer Period to chip register Clock Per Byte value.
  */
-static __inline int
+static inline int
 ncr53c9x_stp2cpb(struct ncr53c9x_softc *sc, int period)
 {
 	int v;
 	v = (sc->sc_freq * period) / 250;
 	if (ncr53c9x_cpb2stp(sc, v) < period)
-		/* Correct round-down error */
+		/* Correct round-down error. */
 		v++;
 	return (v);
 }
 
-static __inline void
+static inline void
 ncr53c9x_setsync(struct ncr53c9x_softc *sc, struct ncr53c9x_tinfo *ti)
 {
 	u_char syncoff, synctp;
@@ -705,20 +720,17 @@ ncr53c9x_setsync(struct ncr53c9x_softc *
 static void
 ncr53c9x_select(struct ncr53c9x_softc *sc, struct ncr53c9x_ecb *ecb)
 {
-	int target = ecb->ccb->ccb_h.target_id;
-	int lun = ecb->ccb->ccb_h.target_lun;
 	struct ncr53c9x_tinfo *ti;
-	int tiflags;
 	u_char *cmd;
-	int clen;
-	int selatn3, selatns;
 	size_t dmasize;
+	int clen, selatn3, selatns;
+	int lun = ecb->ccb->ccb_h.target_lun;
+	int target = ecb->ccb->ccb_h.target_id;
 
 	NCR_TRACE(("[ncr53c9x_select(t%d,l%d,cmd:%x,tag:%x,%x)] ",
 	    target, lun, ecb->cmd.cmd.opcode, ecb->tag[0], ecb->tag[1]));
 
 	ti = &sc->sc_tinfo[target];
-	tiflags = ti->flags;
 	sc->sc_state = NCR_SELECTING;
 	/*
 	 * Schedule the timeout now, the first time we will go away
@@ -730,7 +742,7 @@ ncr53c9x_select(struct ncr53c9x_softc *s
 
 	/*
 	 * The docs say the target register is never reset, and I
-	 * can't think of a better place to set it
+	 * can't think of a better place to set it.
 	 */
 	if (sc->sc_rev == NCR_VARIANT_FAS366) {
 		NCRCMD(sc, NCRCMD_FLUSH);
@@ -756,9 +768,9 @@ ncr53c9x_select(struct ncr53c9x_softc *s
 			NCR_SET_COUNT(sc, dmasize);
 
 			if (sc->sc_rev != NCR_VARIANT_FAS366)
-				NCRCMD(sc, NCRCMD_NOP|NCRCMD_DMA);
+				NCRCMD(sc, NCRCMD_NOP | NCRCMD_DMA);
 
-			/* And get the targets attention */
+			/* And get the target's attention */
 			NCRCMD(sc, NCRCMD_SELNATN | NCRCMD_DMA);
 			NCRDMA_SETUP(sc, &sc->sc_cmdp, &sc->sc_cmdlen, 0,
 			    &dmasize);
@@ -773,15 +785,15 @@ ncr53c9x_select(struct ncr53c9x_softc *s
 	selatn3 = selatns = 0;
 	if (ecb->tag[0] != 0) {
 		if (sc->sc_features & NCR_F_SELATN3)
-			/* use SELATN3 to send tag messages */
+			/* Use SELATN3 to send tag messages. */
 			selatn3 = 1;
 		else
-			/* We don't have SELATN3; use SELATNS to send tags */
+			/* We don't have SELATN3; use SELATNS to send tags. */
 			selatns = 1;
 	}
 
 	if (ti->flags & T_NEGOTIATE) {
-		/* We have to use SELATNS to send sync/wide messages */
+		/* We have to use SELATNS to send sync/wide messages. */
 		selatn3 = 0;
 		selatns = 1;
 	}
@@ -789,34 +801,33 @@ ncr53c9x_select(struct ncr53c9x_softc *s
 	cmd = (u_char *)&ecb->cmd.cmd;
 
 	if (selatn3) {
-		/* We'll use tags with SELATN3 */
+		/* We'll use tags with SELATN3. */
 		clen = ecb->clen + 3;
 		cmd -= 3;
 		cmd[0] = MSG_IDENTIFY(lun, 1);	/* msg[0] */
 		cmd[1] = ecb->tag[0];		/* msg[1] */
 		cmd[2] = ecb->tag[1];		/* msg[2] */
 	} else {
-		/* We don't have tags, or will send messages with SELATNS */
+		/* We don't have tags, or will send messages with SELATNS. */
 		clen = ecb->clen + 1;
 		cmd -= 1;
-		cmd[0] = MSG_IDENTIFY(lun, (tiflags & T_RSELECTOFF) == 0);
+		cmd[0] = MSG_IDENTIFY(lun, (ti->flags & T_RSELECTOFF) == 0);
 	}
 
 	if ((sc->sc_features & NCR_F_DMASELECT) && !selatns) {
-
-		/* setup DMA transfer for command */
+		/* Setup DMA transfer for command. */
 		dmasize = clen;
 		sc->sc_cmdlen = clen;
 		sc->sc_cmdp = cmd;
 
-		/* Program the SCSI counter */
+		/* Program the SCSI counter. */
 		NCR_SET_COUNT(sc, dmasize);
 
-		/* load the count in */
+		/* Load the count in. */
 		/* if (sc->sc_rev != NCR_VARIANT_FAS366) */
-			NCRCMD(sc, NCRCMD_NOP|NCRCMD_DMA);
+			NCRCMD(sc, NCRCMD_NOP | NCRCMD_DMA);
 
-		/* And get the targets attention */
+		/* And get the target's attention. */
 		if (selatn3) {
 			sc->sc_msgout = SEND_TAG;
 			sc->sc_flags |= NCR_ATN;
@@ -833,13 +844,13 @@ ncr53c9x_select(struct ncr53c9x_softc *s
 	 * happy for it to disconnect etc.
 	 */
 
-	/* Now get the command into the FIFO */
+	/* Now get the command into the FIFO. */
 	ncr53c9x_wrfifo(sc, cmd, clen);
 
-	/* And get the targets attention */
+	/* And get the target's attention. */
 	if (selatns) {
 		NCR_MSGS(("SELATNS \n"));
-		/* Arbitrate, select and stop after IDENTIFY message */
+		/* Arbitrate, select and stop after IDENTIFY message. */
 		NCRCMD(sc, NCRCMD_SELATNS);
 	} else if (selatn3) {
 		sc->sc_msgout = SEND_TAG;
@@ -855,7 +866,6 @@ ncr53c9x_free_ecb(struct ncr53c9x_softc 
 
 	ecb->flags = 0;
 	TAILQ_INSERT_TAIL(&sc->free_list, ecb, free_links);
-	return;
 }
 
 static struct ncr53c9x_ecb *
@@ -870,7 +880,7 @@ ncr53c9x_get_ecb(struct ncr53c9x_softc *
 		TAILQ_REMOVE(&sc->free_list, ecb, free_links);
 		ecb->flags = ECB_ALLOC;
 		bzero(&ecb->ccb, sizeof(struct ncr53c9x_ecb) -
-		      offsetof(struct ncr53c9x_ecb, ccb));
+		    offsetof(struct ncr53c9x_ecb, ccb));
 	}
 	return (ecb);
 }
@@ -880,7 +890,7 @@ ncr53c9x_get_ecb(struct ncr53c9x_softc *
  */
 
 /*
- * Start a SCSI-command
+ * Start a SCSI-command.
  * This function is called by the higher level SCSI-driver to queue/run
  * SCSI-commands.
  */
@@ -888,8 +898,13 @@ ncr53c9x_get_ecb(struct ncr53c9x_softc *
 void
 ncr53c9x_action(struct cam_sim *sim, union ccb *ccb)
 {
-	struct ncr53c9x_softc *sc;
+	struct ccb_pathinq *cpi;
+	struct ccb_scsiio *csio;
+	struct ccb_trans_settings *cts;
 	struct ncr53c9x_ecb *ecb;
+	struct ncr53c9x_softc *sc;
+	struct ncr53c9x_tinfo *ti;
+	int target;
 
 	NCR_TRACE(("[ncr53c9x_action %d]", ccb->ccb_h.func_code));
 
@@ -903,17 +918,17 @@ ncr53c9x_action(struct cam_sim *sim, uni
 		mtx_unlock(&sc->sc_lock);
 		xpt_done(ccb);
 		return;
+
 	case XPT_CALC_GEOMETRY:
 		mtx_unlock(&sc->sc_lock);
 		cam_calc_geometry(&ccb->ccg, sc->sc_extended_geom);
 		xpt_done(ccb);
 		return;
-	case XPT_PATH_INQ:
-	{
-		struct ccb_pathinq *cpi = &ccb->cpi;
 
+	case XPT_PATH_INQ:
+		cpi = &ccb->cpi;
 		cpi->version_num = 1;
-		cpi->hba_inquiry = PI_SDTR_ABLE|PI_TAG_ABLE;
+		cpi->hba_inquiry = PI_SDTR_ABLE | PI_TAG_ABLE;
 		cpi->hba_inquiry |=
 		    (sc->sc_rev == NCR_VARIANT_FAS366) ? PI_WIDE_16 : 0;
 		cpi->target_sprt = 0;
@@ -932,11 +947,10 @@ ncr53c9x_action(struct cam_sim *sim, uni
 		mtx_unlock(&sc->sc_lock);
 		xpt_done(ccb);
 		return;
-	}
+
 	case XPT_GET_TRAN_SETTINGS:
-	{
-		struct ccb_trans_settings *cts = &ccb->cts;
-		struct ncr53c9x_tinfo *ti;
+		cts = &ccb->cts;
+		ti = &sc->sc_tinfo[ccb->ccb_h.target_id];
 
 		ti = &sc->sc_tinfo[ccb->ccb_h.target_id];
 
@@ -965,25 +979,24 @@ ncr53c9x_action(struct cam_sim *sim, uni
 		mtx_unlock(&sc->sc_lock);
 		xpt_done(ccb);
 		return;
-	}
+
 	case XPT_ABORT:
 		printf("XPT_ABORT called\n");
 		ccb->ccb_h.status = CAM_FUNC_NOTAVAIL;
 		mtx_unlock(&sc->sc_lock);
 		xpt_done(ccb);
 		return;
+
 	case XPT_TERM_IO:
 		printf("XPT_TERM_IO called\n");
 		ccb->ccb_h.status = CAM_FUNC_NOTAVAIL;
 		mtx_unlock(&sc->sc_lock);
 		xpt_done(ccb);
 		return;
+
 	case XPT_RESET_DEV:
 		printf("XPT_RESET_DEV called\n");
 	case XPT_SCSI_IO:
-	{
-		struct ccb_scsiio *csio;
-
 		if (ccb->ccb_h.target_id < 0 ||
 		    ccb->ccb_h.target_id >= sc->sc_ntarg) {
 			ccb->ccb_h.status = CAM_PATH_INVALID;
@@ -1006,7 +1019,7 @@ ncr53c9x_action(struct cam_sim *sim, uni
 			return;
 		}
 
-		/* Initialize ecb */
+		/* Initialize ecb. */
 		ecb->ccb = ccb;
 		ecb->timeout = ccb->ccb_h.timeout;
 
@@ -1018,10 +1031,10 @@ ncr53c9x_action(struct cam_sim *sim, uni
 			csio = &ccb->csio;
 			if ((ccb->ccb_h.flags & CAM_CDB_POINTER) != 0)
 				bcopy(csio->cdb_io.cdb_ptr, &ecb->cmd.cmd,
-				      csio->cdb_len);
+				    csio->cdb_len);
 			else
 				bcopy(csio->cdb_io.cdb_bytes, &ecb->cmd.cmd,
-				      csio->cdb_len);
+				    csio->cdb_len);
 			ecb->clen = csio->cdb_len;
 			ecb->daddr = csio->data_ptr;
 			ecb->dleft = csio->dxfer_len;
@@ -1032,15 +1045,12 @@ ncr53c9x_action(struct cam_sim *sim, uni
 		ecb->flags |= ECB_READY;
 		if (sc->sc_state == NCR_IDLE)
 			ncr53c9x_sched(sc);
-
 		break;
-	}
 
 	case XPT_SET_TRAN_SETTINGS:
-	{
-		struct ncr53c9x_tinfo *ti;
-		struct ccb_trans_settings *cts = &ccb->cts;
-		int target = ccb->ccb_h.target_id;
+		cts = &ccb->cts;
+		target = ccb->ccb_h.target_id;
+		ti = &sc->sc_tinfo[target];
 
 		ti = &sc->sc_tinfo[target];
 
@@ -1087,11 +1097,10 @@ ncr53c9x_action(struct cam_sim *sim, uni
 		ccb->ccb_h.status = CAM_REQ_CMP;
 		xpt_done(ccb);
 		return;
-	}
 
 	default:
 		device_printf(sc->sc_dev, "Unhandled function code %d\n",
-		       ccb->ccb_h.func_code);
+		    ccb->ccb_h.func_code);
 		ccb->ccb_h.status = CAM_PROVIDE_FAIL;
 		mtx_unlock(&sc->sc_lock);
 		xpt_done(ccb);
@@ -1121,7 +1130,7 @@ ncr53c9x_poll(struct cam_sim *sim)
  */
 
 /*
- * Schedule a scsi operation.  This has now been pulled out of the interrupt
+ * Schedule a SCSI operation.  This has now been pulled out of the interrupt
  * handler so that we may call it from ncr53c9x_scsipi_request and
  * ncr53c9x_done.  This may save us an unnecessary interrupt just to get
  * things going.  Should only be called when state == NCR_IDLE and at bio pl.
@@ -1130,12 +1139,12 @@ static void
 ncr53c9x_sched(struct ncr53c9x_softc *sc)
 {
 	struct ncr53c9x_ecb *ecb;
-	struct ncr53c9x_tinfo *ti;
 	struct ncr53c9x_linfo *li;
-	int lun;
-	int tag;
+	struct ncr53c9x_tinfo *ti;
+	int lun, tag;
 
 	NCR_TRACE(("[ncr53c9x_sched] "));
+
 	if (sc->sc_state != NCR_IDLE)
 		panic("ncr53c9x_sched: not IDLE (state=%d)", sc->sc_state);
 
@@ -1166,7 +1175,7 @@ ncr53c9x_sched(struct ncr53c9x_softc *sc
 		if (li == NULL) {
 			/* Initialize LUN info and add to list. */
 			if ((li = malloc(sizeof(*li),
-			    M_DEVBUF, M_NOWAIT|M_ZERO)) == NULL) {
+			    M_DEVBUF, M_NOWAIT | M_ZERO)) == NULL) {
 				continue;
 			}
 			li->lun = lun;
@@ -1177,17 +1186,20 @@ ncr53c9x_sched(struct ncr53c9x_softc *sc
 		}
 		li->last_used = time_second;
 		if (tag == 0) {
-			/* Try to issue this as an un-tagged command */
+			/* Try to issue this as an untagged command. */
 			if (li->untagged == NULL)
 				li->untagged = ecb;
 		}
 		if (li->untagged != NULL) {
 			tag = 0;
 			if ((li->busy != 1) && li->used == 0) {
-				/* We need to issue this untagged command now */
+				/*
+				 * We need to issue this untagged command
+				 * now.
+				 */
 				ecb = li->untagged;
 			} else {
-				/* Not ready yet */
+				/* not ready, yet */
 				continue;
 			}
 		}
@@ -1211,10 +1223,11 @@ ncr53c9x_sched(struct ncr53c9x_softc *sc
 			sc->sc_nexus = ecb;
 			ncr53c9x_select(sc, ecb);
 			break;
-		} else
+		} else {
 			NCR_TRACE(("%d:%d busy\n",
 			    ecb->ccb->ccb_h.target_id,
 			    ecb->ccb->ccb_h.target_lun));
+		}
 	}
 }
 
@@ -1222,9 +1235,9 @@ static void
 ncr53c9x_sense(struct ncr53c9x_softc *sc, struct ncr53c9x_ecb *ecb)
 {
 	union ccb *ccb = ecb->ccb;
+	struct ncr53c9x_linfo *li;
 	struct ncr53c9x_tinfo *ti;
 	struct scsi_request_sense *ss = (void *)&ecb->cmd.cmd;
-	struct ncr53c9x_linfo *li;
 	int lun;
 
 	NCR_TRACE(("requesting sense "));
@@ -1232,7 +1245,7 @@ ncr53c9x_sense(struct ncr53c9x_softc *sc
 	lun = ccb->ccb_h.target_lun;
 	ti = &sc->sc_tinfo[ccb->ccb_h.target_id];
 
-	/* Next, setup a request sense command block */
+	/* Next, setup a REQUEST SENSE command block. */
 	memset(ss, 0, sizeof(*ss));
 	ss->opcode = REQUEST_SENSE;
 	ss->byte2 = ccb->ccb_h.target_lun << SCSI_CMD_LUN_SHIFT;
@@ -1247,7 +1260,7 @@ ncr53c9x_sense(struct ncr53c9x_softc *sc
 	if (li->busy)
 		li->busy = 0;
 	ncr53c9x_dequeue(sc, ecb);
-	li->untagged = ecb; /* must be executed first to fix C/A */
+	li->untagged = ecb;	/* Must be executed first to fix C/A. */
 	li->busy = 2;
 	if (ecb == sc->sc_nexus) {
 		ncr53c9x_select(sc, ecb);
@@ -1266,15 +1279,15 @@ static void
 ncr53c9x_done(struct ncr53c9x_softc *sc, struct ncr53c9x_ecb *ecb)
 {
 	union ccb *ccb = ecb->ccb;
-	struct ncr53c9x_tinfo *ti;
 	struct ncr53c9x_linfo *li;
+	struct ncr53c9x_tinfo *ti;
 	int lun;
 
 	NCR_TRACE(("[ncr53c9x_done(status:%x)] ", ccb->ccb_h.status));
 
 	ti = &sc->sc_tinfo[ccb->ccb_h.target_id];
 	lun = ccb->ccb_h.target_lun;
-	li  = TINFO_LUN(ti, lun);
+	li = TINFO_LUN(ti, lun);
 
 	untimeout(ncr53c9x_timeout, ecb, ccb->ccb_h.timeout_ch);
 
@@ -1296,7 +1309,7 @@ ncr53c9x_done(struct ncr53c9x_softc *sc,
 			if ((ecb->flags & ECB_SENSE) != 0)
 				ccb->ccb_h.status = CAM_AUTOSENSE_FAIL;
 			else {
-				/* First, save the return values */
+				/* First, save the return values. */
 				ccb->csio.resid = ecb->dleft;
 				ncr53c9x_sense(sc, ecb);
 				return;
@@ -1337,7 +1350,7 @@ ncr53c9x_done(struct ncr53c9x_softc *sc,
 	}
 
 	if (ccb->ccb_h.status == CAM_SEL_TIMEOUT) {
-		/* Selection timeout -- discard this LUN if empty */
+		/* Selection timeout -- discard this LUN if empty. */
 		if (li->untagged == NULL && li->used == 0) {
 			if (lun < NCR_NLUN)
 				ti->lun[lun] = NULL;
@@ -1354,8 +1367,8 @@ ncr53c9x_done(struct ncr53c9x_softc *sc,
 static void
 ncr53c9x_dequeue(struct ncr53c9x_softc *sc, struct ncr53c9x_ecb *ecb)
 {
-	struct ncr53c9x_tinfo *ti;
 	struct ncr53c9x_linfo *li;
+	struct ncr53c9x_tinfo *ti;
 	int64_t lun;
 
 	ti = &sc->sc_tinfo[ecb->ccb->ccb_h.target_id];
@@ -1364,7 +1377,7 @@ ncr53c9x_dequeue(struct ncr53c9x_softc *
 #ifdef DIAGNOSTIC
 	if (li == NULL || li->lun != lun)
 		panic("ncr53c9x_dequeue: lun %qx for ecb %p does not exist",
-		      (long long) lun, ecb);
+		    (long long)lun, ecb);
 #endif
 	if (li->untagged == ecb) {
 		li->busy = 0;
@@ -1376,8 +1389,7 @@ ncr53c9x_dequeue(struct ncr53c9x_softc *
 		    (li->queued[ecb->tag[1]] != ecb))
 			panic("ncr53c9x_dequeue: slot %d for lun %qx has %p "
 			    "instead of ecb %p\n", ecb->tag[1],
-			    (long long) lun,
-			    li->queued[ecb->tag[1]], ecb);
+			    (long long)lun, li->queued[ecb->tag[1]], ecb);
 #endif
 		li->queued[ecb->tag[1]] = NULL;
 		li->used--;
@@ -1395,16 +1407,15 @@ ncr53c9x_dequeue(struct ncr53c9x_softc *
 
 /*
  * Schedule an outgoing message by prioritizing it, and asserting
- * attention on the bus. We can only do this when we are the initiator
+ * attention on the bus.  We can only do this when we are the initiator
  * else there will be an illegal command interrupt.
  */
-#define ncr53c9x_sched_msgout(m) \
-	do {							\
-		NCR_MSGS(("ncr53c9x_sched_msgout %x %d", m, __LINE__));	\
-		NCRCMD(sc, NCRCMD_SETATN);			\
-		sc->sc_flags |= NCR_ATN;			\
-		sc->sc_msgpriq |= (m);				\
-	} while (0)
+#define	ncr53c9x_sched_msgout(m) do {					\
+	NCR_MSGS(("ncr53c9x_sched_msgout %x %d", m, __LINE__));		\
+	NCRCMD(sc, NCRCMD_SETATN);					\
+	sc->sc_flags |= NCR_ATN;					\
+	sc->sc_msgpriq |= (m);						\
+} while (0)

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***



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