svn commit: r224513 - in projects/hid: contrib/top release/amd64 release/i386 release/powerpc sbin/mount share/mk sys/cam sys/cam/ata sys/dev/ahci sys/dev/ath sys/dev/ath/ath_hal/ar5416 sys/dev/mpt...

Alexander Motin mav at FreeBSD.org
Sat Jul 30 13:28:12 UTC 2011


Author: mav
Date: Sat Jul 30 13:28:11 2011
New Revision: 224513
URL: http://svn.freebsd.org/changeset/base/224513

Log:
  MFC at r224512

Modified:
  projects/hid/release/amd64/make-memstick.sh
  projects/hid/release/i386/make-memstick.sh
  projects/hid/release/powerpc/make-memstick.sh
  projects/hid/sbin/mount/mount.c
  projects/hid/sys/cam/ata/ata_da.c
  projects/hid/sys/cam/cam_periph.c
  projects/hid/sys/dev/ahci/ahci.c
  projects/hid/sys/dev/ahci/ahci.h
  projects/hid/sys/dev/ath/ath_hal/ar5416/ar5416.h
  projects/hid/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c
  projects/hid/sys/dev/ath/ath_hal/ar5416/ar5416_cal.c
  projects/hid/sys/dev/ath/ath_hal/ar5416/ar5416_recv.c
  projects/hid/sys/dev/ath/if_ath_sysctl.c
  projects/hid/sys/dev/mpt/mpt.c
  projects/hid/sys/dev/mpt/mpt.h
  projects/hid/sys/dev/mpt/mpt_cam.c
  projects/hid/sys/dev/mpt/mpt_debug.c
  projects/hid/sys/dev/mpt/mpt_pci.c
  projects/hid/sys/dev/mpt/mpt_raid.c
  projects/hid/sys/dev/mpt/mpt_raid.h
  projects/hid/sys/dev/mpt/mpt_user.c
  projects/hid/sys/dev/re/if_re.c
  projects/hid/sys/dev/usb/input/ums.c
  projects/hid/sys/pci/if_rlreg.h
  projects/hid/sys/powerpc/powermac/fcu.c
  projects/hid/sys/ufs/ffs/ffs_alloc.c
  projects/hid/sys/ufs/ffs/ffs_softdep.c
  projects/hid/sys/ufs/ffs/ffs_vfsops.c
  projects/hid/sys/ufs/ffs/ffs_vnops.c
  projects/hid/sys/ufs/ufs/inode.h
  projects/hid/usr.sbin/mfiutil/mfi_show.c
Directory Properties:
  projects/hid/   (props changed)
  projects/hid/cddl/contrib/opensolaris/   (props changed)
  projects/hid/contrib/bind9/   (props changed)
  projects/hid/contrib/binutils/   (props changed)
  projects/hid/contrib/bzip2/   (props changed)
  projects/hid/contrib/compiler-rt/   (props changed)
  projects/hid/contrib/dialog/   (props changed)
  projects/hid/contrib/ee/   (props changed)
  projects/hid/contrib/expat/   (props changed)
  projects/hid/contrib/file/   (props changed)
  projects/hid/contrib/gcc/   (props changed)
  projects/hid/contrib/gdb/   (props changed)
  projects/hid/contrib/gdtoa/   (props changed)
  projects/hid/contrib/gnu-sort/   (props changed)
  projects/hid/contrib/groff/   (props changed)
  projects/hid/contrib/less/   (props changed)
  projects/hid/contrib/libpcap/   (props changed)
  projects/hid/contrib/libstdc++/   (props changed)
  projects/hid/contrib/llvm/   (props changed)
  projects/hid/contrib/llvm/tools/clang/   (props changed)
  projects/hid/contrib/ncurses/   (props changed)
  projects/hid/contrib/netcat/   (props changed)
  projects/hid/contrib/ntp/   (props changed)
  projects/hid/contrib/one-true-awk/   (props changed)
  projects/hid/contrib/openbsm/   (props changed)
  projects/hid/contrib/openpam/   (props changed)
  projects/hid/contrib/pf/   (props changed)
  projects/hid/contrib/sendmail/   (props changed)
  projects/hid/contrib/tcpdump/   (props changed)
  projects/hid/contrib/tcsh/   (props changed)
  projects/hid/contrib/tnftp/   (props changed)
  projects/hid/contrib/top/   (props changed)
  projects/hid/contrib/top/install-sh   (props changed)
  projects/hid/contrib/tzcode/stdtime/   (props changed)
  projects/hid/contrib/tzcode/zic/   (props changed)
  projects/hid/contrib/tzdata/   (props changed)
  projects/hid/contrib/wpa/   (props changed)
  projects/hid/contrib/xz/   (props changed)
  projects/hid/crypto/openssh/   (props changed)
  projects/hid/crypto/openssl/   (props changed)
  projects/hid/gnu/lib/   (props changed)
  projects/hid/gnu/usr.bin/binutils/   (props changed)
  projects/hid/gnu/usr.bin/cc/cc_tools/   (props changed)
  projects/hid/gnu/usr.bin/gdb/   (props changed)
  projects/hid/lib/libc/   (props changed)
  projects/hid/lib/libc/stdtime/   (props changed)
  projects/hid/lib/libutil/   (props changed)
  projects/hid/lib/libz/   (props changed)
  projects/hid/sbin/   (props changed)
  projects/hid/sbin/ipfw/   (props changed)
  projects/hid/share/mk/bsd.arch.inc.mk   (props changed)
  projects/hid/share/zoneinfo/   (props changed)
  projects/hid/sys/   (props changed)
  projects/hid/sys/amd64/include/xen/   (props changed)
  projects/hid/sys/boot/   (props changed)
  projects/hid/sys/boot/i386/efi/   (props changed)
  projects/hid/sys/boot/ia64/efi/   (props changed)
  projects/hid/sys/boot/ia64/ski/   (props changed)
  projects/hid/sys/boot/powerpc/boot1.chrp/   (props changed)
  projects/hid/sys/boot/powerpc/ofw/   (props changed)
  projects/hid/sys/cddl/contrib/opensolaris/   (props changed)
  projects/hid/sys/conf/   (props changed)
  projects/hid/sys/contrib/dev/acpica/   (props changed)
  projects/hid/sys/contrib/octeon-sdk/   (props changed)
  projects/hid/sys/contrib/pf/   (props changed)
  projects/hid/sys/contrib/x86emu/   (props changed)
  projects/hid/usr.bin/calendar/   (props changed)
  projects/hid/usr.bin/csup/   (props changed)
  projects/hid/usr.bin/procstat/   (props changed)
  projects/hid/usr.sbin/ndiscvt/   (props changed)
  projects/hid/usr.sbin/rtadvctl/   (props changed)
  projects/hid/usr.sbin/rtadvd/   (props changed)
  projects/hid/usr.sbin/zic/   (props changed)

Modified: projects/hid/release/amd64/make-memstick.sh
==============================================================================
--- projects/hid/release/amd64/make-memstick.sh	Sat Jul 30 13:25:11 2011	(r224512)
+++ projects/hid/release/amd64/make-memstick.sh	Sat Jul 30 13:28:11 2011	(r224513)
@@ -32,7 +32,7 @@ if [ -e ${2} ]; then
   exit 1
 fi
 
-echo '/dev/gpt/FreeBSD_Install / ufs rw,noatime 1 1' > ${1}/etc/fstab
+echo '/dev/gpt/FreeBSD_Install / ufs ro,noatime 1 1' > ${1}/etc/fstab
 rm -f ${tempfile}
 makefs -B little ${tempfile} ${1}
 if [ $? -ne 0 ]; then

Modified: projects/hid/release/i386/make-memstick.sh
==============================================================================
--- projects/hid/release/i386/make-memstick.sh	Sat Jul 30 13:25:11 2011	(r224512)
+++ projects/hid/release/i386/make-memstick.sh	Sat Jul 30 13:28:11 2011	(r224513)
@@ -32,7 +32,7 @@ if [ -e ${2} ]; then
   exit 1
 fi
 
-echo '/dev/gpt/FreeBSD_Install / ufs rw,noatime 1 1' > ${1}/etc/fstab
+echo '/dev/gpt/FreeBSD_Install / ufs ro,noatime 1 1' > ${1}/etc/fstab
 rm -f ${tempfile}
 makefs -B little ${tempfile} ${1}
 if [ $? -ne 0 ]; then

Modified: projects/hid/release/powerpc/make-memstick.sh
==============================================================================
--- projects/hid/release/powerpc/make-memstick.sh	Sat Jul 30 13:25:11 2011	(r224512)
+++ projects/hid/release/powerpc/make-memstick.sh	Sat Jul 30 13:28:11 2011	(r224513)
@@ -32,7 +32,7 @@ if [ -e ${2} ]; then
   exit 1
 fi
 
-echo '/dev/da0s3 / ufs rw,noatime 1 1' > ${1}/etc/fstab
+echo '/dev/da0s3 / ufs ro,noatime 1 1' > ${1}/etc/fstab
 rm -f ${tempfile}
 makefs -B big ${tempfile} ${1}
 if [ $? -ne 0 ]; then

Modified: projects/hid/sbin/mount/mount.c
==============================================================================
--- projects/hid/sbin/mount/mount.c	Sat Jul 30 13:25:11 2011	(r224512)
+++ projects/hid/sbin/mount/mount.c	Sat Jul 30 13:28:11 2011	(r224513)
@@ -317,7 +317,7 @@ main(int argc, char *argv[])
 	rval = 0;
 	switch (argc) {
 	case 0:
-		if ((mntsize = getmntinfo(&mntbuf, MNT_WAIT)) == 0)
+		if ((mntsize = getmntinfo(&mntbuf, MNT_NOWAIT)) == 0)
 			err(1, "getmntinfo");
 		if (all) {
 			while ((fs = getfsent()) != NULL) {
@@ -666,7 +666,7 @@ getmntpt(const char *name)
 	struct statfs *mntbuf;
 	int i, mntsize;
 
-	mntsize = getmntinfo(&mntbuf, MNT_WAIT);
+	mntsize = getmntinfo(&mntbuf, MNT_NOWAIT);
 	for (i = mntsize - 1; i >= 0; i--) {
 		if (strcmp(mntbuf[i].f_mntfromname, name) == 0 ||
 		    strcmp(mntbuf[i].f_mntonname, name) == 0)

Modified: projects/hid/sys/cam/ata/ata_da.c
==============================================================================
--- projects/hid/sys/cam/ata/ata_da.c	Sat Jul 30 13:25:11 2011	(r224512)
+++ projects/hid/sys/cam/ata/ata_da.c	Sat Jul 30 13:28:11 2011	(r224513)
@@ -69,6 +69,7 @@ __FBSDID("$FreeBSD$");
 #define ATA_MAX_28BIT_LBA               268435455UL
 
 typedef enum {
+	ADA_STATE_RAHEAD,
 	ADA_STATE_WCACHE,
 	ADA_STATE_NORMAL
 } ada_state;
@@ -94,7 +95,8 @@ typedef enum {
 } ada_quirks;
 
 typedef enum {
-	ADA_CCB_WCACHE		= 0x01,
+	ADA_CCB_RAHEAD		= 0x01,
+	ADA_CCB_WCACHE		= 0x02,
 	ADA_CCB_BUFFER_IO	= 0x03,
 	ADA_CCB_WAITING		= 0x04,
 	ADA_CCB_DUMP		= 0x05,
@@ -132,6 +134,7 @@ struct ada_softc {
 	int	 outstanding_cmds;
 	int	 trim_max_ranges;
 	int	 trim_running;
+	int	 read_ahead;
 	int	 write_cache;
 #ifdef ADA_TEST_FAILURE
 	int      force_read_error;
@@ -294,10 +297,19 @@ static void		adaresume(void *arg);
 #define	ADA_DEFAULT_SPINDOWN_SUSPEND	1
 #endif
 
+#ifndef	ADA_DEFAULT_READ_AHEAD
+#define	ADA_DEFAULT_READ_AHEAD	1
+#endif
+
 #ifndef	ADA_DEFAULT_WRITE_CACHE
 #define	ADA_DEFAULT_WRITE_CACHE	1
 #endif
 
+#define	ADA_RA	(softc->read_ahead >= 0 ? \
+		 softc->read_ahead : ada_read_ahead)
+#define	ADA_WC	(softc->write_cache >= 0 ? \
+		 softc->write_cache : ada_write_cache)
+
 /*
  * Most platforms map firmware geometry to actual, but some don't.  If
  * not overridden, default to nothing.
@@ -312,6 +324,7 @@ static int ada_default_timeout = ADA_DEF
 static int ada_send_ordered = ADA_DEFAULT_SEND_ORDERED;
 static int ada_spindown_shutdown = ADA_DEFAULT_SPINDOWN_SHUTDOWN;
 static int ada_spindown_suspend = ADA_DEFAULT_SPINDOWN_SUSPEND;
+static int ada_read_ahead = ADA_DEFAULT_READ_AHEAD;
 static int ada_write_cache = ADA_DEFAULT_WRITE_CACHE;
 
 SYSCTL_NODE(_kern_cam, OID_AUTO, ada, CTLFLAG_RD, 0,
@@ -334,6 +347,9 @@ TUNABLE_INT("kern.cam.ada.spindown_shutd
 SYSCTL_INT(_kern_cam_ada, OID_AUTO, spindown_suspend, CTLFLAG_RW,
            &ada_spindown_suspend, 0, "Spin down upon suspend");
 TUNABLE_INT("kern.cam.ada.spindown_suspend", &ada_spindown_suspend);
+SYSCTL_INT(_kern_cam_ada, OID_AUTO, read_ahead, CTLFLAG_RW,
+           &ada_read_ahead, 0, "Enable disk read-ahead");
+TUNABLE_INT("kern.cam.ada.read_ahead", &ada_read_ahead);
 SYSCTL_INT(_kern_cam_ada, OID_AUTO, write_cache, CTLFLAG_RW,
            &ada_write_cache, 0, "Enable disk write cache");
 TUNABLE_INT("kern.cam.ada.write_cache", &ada_write_cache);
@@ -737,16 +753,19 @@ adaasync(void *callback_arg, u_int32_t c
 
 		softc = (struct ada_softc *)periph->softc;
 		cam_periph_async(periph, code, path, arg);
-		if (ada_write_cache < 0 && softc->write_cache < 0)
-			break;
 		if (softc->state != ADA_STATE_NORMAL)
 			break;
 		xpt_setup_ccb(&cgd.ccb_h, periph->path, CAM_PRIORITY_NORMAL);
 		cgd.ccb_h.func_code = XPT_GDEV_TYPE;
 		xpt_action((union ccb *)&cgd);
-		if ((cgd.ident_data.support.command1 & ATA_SUPPORT_WRITECACHE) == 0)
-			break;
-		softc->state = ADA_STATE_WCACHE;
+		if (ADA_RA >= 0 &&
+		    cgd.ident_data.support.command1 & ATA_SUPPORT_LOOKAHEAD)
+			softc->state = ADA_STATE_RAHEAD;
+		else if (ADA_WC >= 0 &&
+		    cgd.ident_data.support.command1 & ATA_SUPPORT_WRITECACHE)
+			softc->state = ADA_STATE_WCACHE;
+		else
+		    break;
 		cam_periph_acquire(periph);
 		cam_freeze_devq_arg(periph->path,
 		    RELSIM_RELEASE_RUNLEVEL, CAM_RL_DEV + 1);
@@ -789,6 +808,9 @@ adasysctlinit(void *context, int pending
 	}
 
 	SYSCTL_ADD_INT(&softc->sysctl_ctx, SYSCTL_CHILDREN(softc->sysctl_tree),
+		OID_AUTO, "read_ahead", CTLFLAG_RW | CTLFLAG_MPSAFE,
+		&softc->read_ahead, 0, "Enable disk read ahead.");
+	SYSCTL_ADD_INT(&softc->sysctl_ctx, SYSCTL_CHILDREN(softc->sysctl_tree),
 		OID_AUTO, "write_cache", CTLFLAG_RW | CTLFLAG_MPSAFE,
 		&softc->write_cache, 0, "Enable disk write cache.");
 #ifdef ADA_TEST_FAILURE
@@ -922,6 +944,10 @@ adaregister(struct cam_periph *periph, v
 	quirks = softc->quirks;
 	TUNABLE_INT_FETCH(announce_buf, &quirks);
 	softc->quirks = quirks;
+	softc->read_ahead = -1;
+	snprintf(announce_buf, sizeof(announce_buf),
+	    "kern.cam.ada.%d.read_ahead", periph->unit_number);
+	TUNABLE_INT_FETCH(announce_buf, &softc->read_ahead);
 	softc->write_cache = -1;
 	snprintf(announce_buf, sizeof(announce_buf),
 	    "kern.cam.ada.%d.write_cache", periph->unit_number);
@@ -1044,7 +1070,14 @@ adaregister(struct cam_periph *periph, v
 	    (ADA_DEFAULT_TIMEOUT * hz) / ADA_ORDEREDTAG_INTERVAL,
 	    adasendorderedtag, softc);
 
-	if ((ada_write_cache >= 0 || softc->write_cache >= 0) &&
+	if (ADA_RA >= 0 &&
+	    cgd->ident_data.support.command1 & ATA_SUPPORT_LOOKAHEAD) {
+		softc->state = ADA_STATE_RAHEAD;
+		cam_periph_acquire(periph);
+		cam_freeze_devq_arg(periph->path,
+		    RELSIM_RELEASE_RUNLEVEL, CAM_RL_DEV + 1);
+		xpt_schedule(periph, CAM_PRIORITY_DEV);
+	} else if (ADA_WC >= 0 &&
 	    cgd->ident_data.support.command1 & ATA_SUPPORT_WRITECACHE) {
 		softc->state = ADA_STATE_WCACHE;
 		cam_periph_acquire(periph);
@@ -1317,8 +1350,19 @@ out:
 		adaschedule(periph);
 		break;
 	}
+	case ADA_STATE_RAHEAD:
 	case ADA_STATE_WCACHE:
 	{
+		if (softc->flags & ADA_FLAG_PACK_INVALID) {
+			softc->state = ADA_STATE_NORMAL;
+			xpt_release_ccb(start_ccb);
+			cam_release_devq(periph->path,
+			    RELSIM_RELEASE_RUNLEVEL, 0, CAM_RL_DEV + 1, FALSE);
+			adaschedule(periph);
+			cam_periph_release_locked(periph);
+			return;
+		}
+
 		cam_fill_ataio(ataio,
 		    1,
 		    adadone,
@@ -1328,10 +1372,15 @@ out:
 		    0,
 		    ada_default_timeout*1000);
 
-		ata_28bit_cmd(ataio, ATA_SETFEATURES, (softc->write_cache > 0 ||
-		     (softc->write_cache < 0 && ada_write_cache)) ?
-		    ATA_SF_ENAB_WCACHE : ATA_SF_DIS_WCACHE, 0, 0);
-		start_ccb->ccb_h.ccb_state = ADA_CCB_WCACHE;
+		if (softc->state == ADA_STATE_RAHEAD) {
+			ata_28bit_cmd(ataio, ATA_SETFEATURES, ADA_RA ?
+			    ATA_SF_ENAB_RCACHE : ATA_SF_DIS_RCACHE, 0, 0);
+			start_ccb->ccb_h.ccb_state = ADA_CCB_RAHEAD;
+		} else {
+			ata_28bit_cmd(ataio, ATA_SETFEATURES, ADA_WC ?
+			    ATA_SF_ENAB_WCACHE : ATA_SF_DIS_WCACHE, 0, 0);
+			start_ccb->ccb_h.ccb_state = ADA_CCB_WCACHE;
+		}
 		xpt_action(start_ccb);
 		break;
 	}
@@ -1343,6 +1392,7 @@ adadone(struct cam_periph *periph, union
 {
 	struct ada_softc *softc;
 	struct ccb_ataio *ataio;
+	struct ccb_getdev *cgd;
 
 	softc = (struct ada_softc *)periph->softc;
 	ataio = &done_ccb->ataio;
@@ -1423,6 +1473,47 @@ adadone(struct cam_periph *periph, union
 			biodone(bp);
 		break;
 	}
+	case ADA_CCB_RAHEAD:
+	{
+		if ((done_ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) {
+			if (adaerror(done_ccb, 0, 0) == ERESTART) {
+				return;
+			} else if ((done_ccb->ccb_h.status & CAM_DEV_QFRZN) != 0) {
+				cam_release_devq(done_ccb->ccb_h.path,
+				    /*relsim_flags*/0,
+				    /*reduction*/0,
+				    /*timeout*/0,
+				    /*getcount_only*/0);
+			}
+		}
+
+		/*
+		 * Since our peripheral may be invalidated by an error
+		 * above or an external event, we must release our CCB
+		 * before releasing the reference on the peripheral.
+		 * The peripheral will only go away once the last reference
+		 * is removed, and we need it around for the CCB release
+		 * operation.
+		 */
+		cgd = (struct ccb_getdev *)done_ccb;
+		xpt_setup_ccb(&cgd->ccb_h, periph->path, CAM_PRIORITY_NORMAL);
+		cgd->ccb_h.func_code = XPT_GDEV_TYPE;
+		xpt_action((union ccb *)cgd);
+		if (ADA_WC >= 0 &&
+		    cgd->ident_data.support.command1 & ATA_SUPPORT_WRITECACHE) {
+			softc->state = ADA_STATE_WCACHE;
+			xpt_release_ccb(done_ccb);
+			xpt_schedule(periph, CAM_PRIORITY_DEV);
+			return;
+		}
+		softc->state = ADA_STATE_NORMAL;
+		xpt_release_ccb(done_ccb);
+		cam_release_devq(periph->path,
+		    RELSIM_RELEASE_RUNLEVEL, 0, CAM_RL_DEV + 1, FALSE);
+		adaschedule(periph);
+		cam_periph_release_locked(periph);
+		return;
+	}
 	case ADA_CCB_WCACHE:
 	{
 		if ((done_ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) {

Modified: projects/hid/sys/cam/cam_periph.c
==============================================================================
--- projects/hid/sys/cam/cam_periph.c	Sat Jul 30 13:25:11 2011	(r224512)
+++ projects/hid/sys/cam/cam_periph.c	Sat Jul 30 13:28:11 2011	(r224513)
@@ -1550,7 +1550,8 @@ camperiphscsisenseerror(union ccb *ccb, 
 		 * make sure we actually have retries available.
 		 */
 		if ((err_action & SSQ_DECREMENT_COUNT) != 0) {
-		 	if (ccb->ccb_h.retry_count > 0)
+		 	if (ccb->ccb_h.retry_count > 0 &&
+			    (periph->flags & CAM_PERIPH_INVALID) == 0)
 		 		ccb->ccb_h.retry_count--;
 			else {
 				*action_string = "Retries exhausted";
@@ -1718,6 +1719,7 @@ int
 cam_periph_error(union ccb *ccb, cam_flags camflags,
 		 u_int32_t sense_flags, union ccb *save_ccb)
 {
+	struct cam_periph *periph;
 	const char *action_string;
 	cam_status  status;
 	int	    frozen;
@@ -1725,7 +1727,8 @@ cam_periph_error(union ccb *ccb, cam_fla
 	int         openings;
 	u_int32_t   relsim_flags;
 	u_int32_t   timeout = 0;
-	
+
+	periph = xpt_path_periph(ccb->ccb_h.path);
 	action_string = NULL;
 	status = ccb->ccb_h.status;
 	frozen = (status & CAM_DEV_QFRZN) != 0;
@@ -1787,9 +1790,9 @@ cam_periph_error(union ccb *ccb, cam_fla
 			xpt_print(ccb->ccb_h.path, "Data overrun\n");
 			printed++;
 		}
-		error = EIO;	/* we have to kill the command */
 		/* decrement the number of retries */
-		if (ccb->ccb_h.retry_count > 0) {
+		if (ccb->ccb_h.retry_count > 0 &&
+		    (periph->flags & CAM_PERIPH_INVALID) == 0) {
 			ccb->ccb_h.retry_count--;
 			error = ERESTART;
 		} else {
@@ -1808,7 +1811,8 @@ cam_periph_error(union ccb *ccb, cam_fla
 		struct cam_path *newpath;
 
 		if ((camflags & CAM_RETRY_SELTO) != 0) {
-			if (ccb->ccb_h.retry_count > 0) {
+			if (ccb->ccb_h.retry_count > 0 &&
+			    (periph->flags & CAM_PERIPH_INVALID) == 0) {
 
 				ccb->ccb_h.retry_count--;
 				error = ERESTART;
@@ -1826,10 +1830,11 @@ cam_periph_error(union ccb *ccb, cam_fla
 				timeout = periph_selto_delay;
 				break;
 			}
+			action_string = "Retries exhausted";
 		}
 		error = ENXIO;
 		/* Should we do more if we can't create the path?? */
-		if (xpt_create_path(&newpath, xpt_path_periph(ccb->ccb_h.path),
+		if (xpt_create_path(&newpath, periph,
 				    xpt_path_path_id(ccb->ccb_h.path),
 				    xpt_path_target_id(ccb->ccb_h.path),
 				    CAM_LUN_WILDCARD) != CAM_REQ_CMP) 
@@ -1874,11 +1879,16 @@ cam_periph_error(union ccb *ccb, cam_fla
 		/* FALLTHROUGH */
 	case CAM_REQUEUE_REQ:
 		/* Unconditional requeue */
-		error = ERESTART;
 		if (bootverbose && printed == 0) {
 			xpt_print(ccb->ccb_h.path, "Request requeued\n");
 			printed++;
 		}
+		if ((periph->flags & CAM_PERIPH_INVALID) == 0)
+			error = ERESTART;
+		else {
+			action_string = "Retries exhausted";
+			error = EIO;
+		}
 		break;
 	case CAM_RESRC_UNAVAIL:
 		/* Wait a bit for the resource shortage to abate. */
@@ -1893,7 +1903,8 @@ cam_periph_error(union ccb *ccb, cam_fla
 		/* FALLTHROUGH */
 	default:
 		/* decrement the number of retries */
-		if (ccb->ccb_h.retry_count > 0) {
+		if (ccb->ccb_h.retry_count > 0 &&
+		    (periph->flags & CAM_PERIPH_INVALID) == 0) {
 			ccb->ccb_h.retry_count--;
 			error = ERESTART;
 			if (bootverbose && printed == 0) {

Modified: projects/hid/sys/dev/ahci/ahci.c
==============================================================================
--- projects/hid/sys/dev/ahci/ahci.c	Sat Jul 30 13:25:11 2011	(r224512)
+++ projects/hid/sys/dev/ahci/ahci.c	Sat Jul 30 13:28:11 2011	(r224513)
@@ -1879,12 +1879,13 @@ ahci_execute_transaction(struct ahci_slo
 			device_printf(dev, "Poll timeout on slot %d port %d\n",
 			    slot->slot, port);
 			device_printf(dev, "is %08x cs %08x ss %08x "
-			    "rs %08x tfd %02x serr %08x\n",
+			    "rs %08x tfd %02x serr %08x cmd %08x\n",
 			    ATA_INL(ch->r_mem, AHCI_P_IS),
 			    ATA_INL(ch->r_mem, AHCI_P_CI),
 			    ATA_INL(ch->r_mem, AHCI_P_SACT), ch->rslots,
 			    ATA_INL(ch->r_mem, AHCI_P_TFD),
-			    ATA_INL(ch->r_mem, AHCI_P_SERR));
+			    ATA_INL(ch->r_mem, AHCI_P_SERR),
+			    ATA_INL(ch->r_mem, AHCI_P_CMD));
 			et = AHCI_ERR_TIMEOUT;
 		}
 
@@ -1960,8 +1961,12 @@ ahci_timeout(struct ahci_slot *slot)
 		ccs = (ATA_INL(ch->r_mem, AHCI_P_CMD) & AHCI_P_CMD_CCS_MASK)
 		    >> AHCI_P_CMD_CCS_SHIFT;
 		if ((sstatus & (1 << slot->slot)) != 0 || ccs == slot->slot ||
-		    ch->fbs_enabled)
+		    ch->fbs_enabled || ch->wrongccs)
 			slot->state = AHCI_SLOT_EXECUTING;
+		else if ((ch->rslots & (1 << ccs)) == 0) {
+			ch->wrongccs = 1;
+			slot->state = AHCI_SLOT_EXECUTING;
+		}
 
 		callout_reset(&slot->timeout,
 		    (int)slot->ccb->ccb_h.timeout * hz / 2000,
@@ -1971,10 +1976,12 @@ ahci_timeout(struct ahci_slot *slot)
 
 	device_printf(dev, "Timeout on slot %d port %d\n",
 	    slot->slot, slot->ccb->ccb_h.target_id & 0x0f);
-	device_printf(dev, "is %08x cs %08x ss %08x rs %08x tfd %02x serr %08x\n",
+	device_printf(dev, "is %08x cs %08x ss %08x rs %08x tfd %02x "
+	    "serr %08x cmd %08x\n",
 	    ATA_INL(ch->r_mem, AHCI_P_IS), ATA_INL(ch->r_mem, AHCI_P_CI),
 	    ATA_INL(ch->r_mem, AHCI_P_SACT), ch->rslots,
-	    ATA_INL(ch->r_mem, AHCI_P_TFD), ATA_INL(ch->r_mem, AHCI_P_SERR));
+	    ATA_INL(ch->r_mem, AHCI_P_TFD), ATA_INL(ch->r_mem, AHCI_P_SERR),
+	    ATA_INL(ch->r_mem, AHCI_P_CMD));
 
 	/* Handle frozen command. */
 	if (ch->frozen) {
@@ -1987,7 +1994,7 @@ ahci_timeout(struct ahci_slot *slot)
 		}
 		xpt_done(fccb);
 	}
-	if (!ch->fbs_enabled) {
+	if (!ch->fbs_enabled && !ch->wrongccs) {
 		/* Without FBS we know real timeout source. */
 		ch->fatalerr = 1;
 		/* Handle command with timeout. */
@@ -2585,6 +2592,7 @@ ahci_reset(device_t dev)
 		xpt_release_simq(ch->sim, TRUE);
 	ch->eslots = 0;
 	ch->toslots = 0;
+	ch->wrongccs = 0;
 	ch->fatalerr = 0;
 	/* Tell the XPT about the event */
 	xpt_async(AC_BUS_RESET, ch->path, NULL);

Modified: projects/hid/sys/dev/ahci/ahci.h
==============================================================================
--- projects/hid/sys/dev/ahci/ahci.h	Sat Jul 30 13:25:11 2011	(r224512)
+++ projects/hid/sys/dev/ahci/ahci.h	Sat Jul 30 13:28:11 2011	(r224513)
@@ -426,6 +426,7 @@ struct ahci_channel {
 	int			resetting;	/* Hard-reset in progress. */
 	int			resetpolldiv;	/* Hard-reset poll divider. */
 	int			listening;	/* SUD bit is cleared. */
+	int			wrongccs;	/* CCS field in CMD was wrong */
 	union ccb		*frozen;	/* Frozen command */
 	struct callout		pm_timer;	/* Power management events */
 	struct callout		reset_timer;	/* Hard-reset timeout */

Modified: projects/hid/sys/dev/ath/ath_hal/ar5416/ar5416.h
==============================================================================
--- projects/hid/sys/dev/ath/ath_hal/ar5416/ar5416.h	Sat Jul 30 13:25:11 2011	(r224512)
+++ projects/hid/sys/dev/ath/ath_hal/ar5416/ar5416.h	Sat Jul 30 13:28:11 2011	(r224513)
@@ -218,6 +218,8 @@ extern	HAL_BOOL ar5416ResetKeyCacheEntry
 extern	HAL_BOOL ar5416SetKeyCacheEntry(struct ath_hal *ah, uint16_t entry,
 	       const HAL_KEYVAL *k, const uint8_t *mac, int xorKey);
 
+extern	uint32_t ar5416GetRxFilter(struct ath_hal *ah);
+extern	void ar5416SetRxFilter(struct ath_hal *ah, uint32_t bits);
 extern	void ar5416StartPcuReceive(struct ath_hal *ah);
 extern	void ar5416StopPcuReceive(struct ath_hal *ah);
 extern	HAL_BOOL ar5416SetupRxDesc(struct ath_hal *,

Modified: projects/hid/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c
==============================================================================
--- projects/hid/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c	Sat Jul 30 13:25:11 2011	(r224512)
+++ projects/hid/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c	Sat Jul 30 13:28:11 2011	(r224513)
@@ -117,6 +117,8 @@ ar5416InitState(struct ath_hal_5416 *ahp
 	ah->ah_resetTxQueue		= ar5416ResetTxQueue;
 
 	/* Receive Functions */
+	ah->ah_getRxFilter		= ar5416GetRxFilter;
+	ah->ah_setRxFilter		= ar5416SetRxFilter;
 	ah->ah_startPcuReceive		= ar5416StartPcuReceive;
 	ah->ah_stopPcuReceive		= ar5416StopPcuReceive;
 	ah->ah_setupRxDesc		= ar5416SetupRxDesc;

Modified: projects/hid/sys/dev/ath/ath_hal/ar5416/ar5416_cal.c
==============================================================================
--- projects/hid/sys/dev/ath/ath_hal/ar5416/ar5416_cal.c	Sat Jul 30 13:25:11 2011	(r224512)
+++ projects/hid/sys/dev/ath/ath_hal/ar5416/ar5416_cal.c	Sat Jul 30 13:28:11 2011	(r224513)
@@ -73,8 +73,15 @@ ar5416IsCalSupp(struct ath_hal *ah, cons
 	case ADC_GAIN_CAL:
 	case ADC_DC_CAL:
 		/* Run ADC Gain Cal for either 5ghz any or 2ghz HT40 */
-		if (IEEE80211_IS_CHAN_5GHZ(chan))
-			return AH_TRUE;
+		/*
+		 * Merlin (AR9280) doesn't ever complete ADC calibrations
+		 * in 5ghz non-HT40 mode (ie, HT20, 11a). For now, disable
+		 * it for Merlin only until further information is
+		 * available.
+		 */
+		if (! AR_SREV_MERLIN(ah))
+			if (IEEE80211_IS_CHAN_5GHZ(chan))
+				return AH_TRUE;
 		if (IEEE80211_IS_CHAN_HT40(chan))
 			return AH_TRUE;
 		return AH_FALSE;
@@ -186,36 +193,22 @@ ar5416RunInitCals(struct ath_hal *ah, in
 }
 #endif
 
+
+/*
+ * AGC calibration for the AR5416, AR9130, AR9160, AR9280.
+ */
 HAL_BOOL
 ar5416InitCalHardware(struct ath_hal *ah, const struct ieee80211_channel *chan)
 {
-	if (AR_SREV_MERLIN_10_OR_LATER(ah)) {
-		/* Enable Rx Filter Cal */
-		OS_REG_CLR_BIT(ah, AR_PHY_ADC_CTL, AR_PHY_ADC_CTL_OFF_PWDADC);
-		OS_REG_SET_BIT(ah, AR_PHY_AGC_CONTROL,
-		    AR_PHY_AGC_CONTROL_FLTR_CAL);
-
-		/* Clear the carrier leak cal bit */
-		OS_REG_CLR_BIT(ah, AR_PHY_CL_CAL_CTL, AR_PHY_CL_CAL_ENABLE);
-
-		/* kick off the cal */
-		OS_REG_SET_BIT(ah, AR_PHY_AGC_CONTROL, AR_PHY_AGC_CONTROL_CAL);
 
-		/* Poll for offset calibration complete */
-		if (!ath_hal_wait(ah, AR_PHY_AGC_CONTROL, AR_PHY_AGC_CONTROL_CAL, 0)) {
-			HALDEBUG(ah, HAL_DEBUG_ANY,
-			    "%s: offset calibration failed to complete in 1ms; "
-			    "noisy environment?\n", __func__);
-			return AH_FALSE;
-		}
+	if (AR_SREV_MERLIN_10_OR_LATER(ah)) {
+		/* Disable ADC */
+		OS_REG_CLR_BIT(ah, AR_PHY_ADC_CTL,
+		    AR_PHY_ADC_CTL_OFF_PWDADC);
 
-		/* Set the cl cal bit and rerun the cal a 2nd time */
 		/* Enable Rx Filter Cal */
-		OS_REG_CLR_BIT(ah, AR_PHY_ADC_CTL, AR_PHY_ADC_CTL_OFF_PWDADC);
 		OS_REG_SET_BIT(ah, AR_PHY_AGC_CONTROL,
 		    AR_PHY_AGC_CONTROL_FLTR_CAL);
-
-		OS_REG_SET_BIT(ah, AR_PHY_CL_CAL_CTL, AR_PHY_CL_CAL_ENABLE);
 	} 	
 
 	/* Calibrate the AGC */
@@ -229,6 +222,16 @@ ar5416InitCalHardware(struct ath_hal *ah
 		return AH_FALSE;
 	}
 
+	if (AR_SREV_MERLIN_10_OR_LATER(ah)) {
+		/* Enable ADC */
+		OS_REG_SET_BIT(ah, AR_PHY_ADC_CTL,
+		    AR_PHY_ADC_CTL_OFF_PWDADC);
+
+		/* Disable Rx Filter Cal */
+		OS_REG_CLR_BIT(ah, AR_PHY_AGC_CONTROL,
+		    AR_PHY_AGC_CONTROL_FLTR_CAL);
+	}
+
 	return AH_TRUE;
 }
 
@@ -247,7 +250,8 @@ ar5416InitCal(struct ath_hal *ah, const 
 
 	/* Do initial chipset-specific calibration */
 	if (! AH5416(ah)->ah_cal_initcal(ah, chan)) {
-		HALDEBUG(ah, HAL_DEBUG_ANY, "%s: initial chipset calibration did "
+		HALDEBUG(ah, HAL_DEBUG_ANY,
+		    "%s: initial chipset calibration did "
 		    "not complete in time; noisy environment?\n", __func__);
 		return AH_FALSE;
 	}

Modified: projects/hid/sys/dev/ath/ath_hal/ar5416/ar5416_recv.c
==============================================================================
--- projects/hid/sys/dev/ath/ath_hal/ar5416/ar5416_recv.c	Sat Jul 30 13:25:11 2011	(r224512)
+++ projects/hid/sys/dev/ath/ath_hal/ar5416/ar5416_recv.c	Sat Jul 30 13:28:11 2011	(r224513)
@@ -27,6 +27,46 @@
 #include "ar5416/ar5416desc.h"
 
 /*
+ * Get the receive filter.
+ */
+uint32_t
+ar5416GetRxFilter(struct ath_hal *ah)
+{
+	uint32_t bits = OS_REG_READ(ah, AR_RX_FILTER);
+	uint32_t phybits = OS_REG_READ(ah, AR_PHY_ERR);
+
+	if (phybits & AR_PHY_ERR_RADAR)
+		bits |= HAL_RX_FILTER_PHYRADAR;
+	if (phybits & (AR_PHY_ERR_OFDM_TIMING | AR_PHY_ERR_CCK_TIMING))
+		bits |= HAL_RX_FILTER_PHYERR;
+	return bits;
+}
+
+/*
+ * Set the receive filter.
+ */
+void
+ar5416SetRxFilter(struct ath_hal *ah, u_int32_t bits)
+{
+	uint32_t phybits;
+
+	OS_REG_WRITE(ah, AR_RX_FILTER, (bits & 0xffff));
+	phybits = 0;
+	if (bits & HAL_RX_FILTER_PHYRADAR)
+		phybits |= AR_PHY_ERR_RADAR;
+	if (bits & HAL_RX_FILTER_PHYERR)
+		phybits |= AR_PHY_ERR_OFDM_TIMING | AR_PHY_ERR_CCK_TIMING;
+	OS_REG_WRITE(ah, AR_PHY_ERR, phybits);
+	if (phybits) {
+		OS_REG_WRITE(ah, AR_RXCFG,
+		    OS_REG_READ(ah, AR_RXCFG) | AR_RXCFG_ZLFDMA);
+	} else {
+		OS_REG_WRITE(ah, AR_RXCFG,
+		    OS_REG_READ(ah, AR_RXCFG) &~ AR_RXCFG_ZLFDMA);
+	}
+}
+
+/*
  * Start receive at the PCU engine
  */
 void

Modified: projects/hid/sys/dev/ath/if_ath_sysctl.c
==============================================================================
--- projects/hid/sys/dev/ath/if_ath_sysctl.c	Sat Jul 30 13:25:11 2011	(r224512)
+++ projects/hid/sys/dev/ath/if_ath_sysctl.c	Sat Jul 30 13:28:11 2011	(r224513)
@@ -354,7 +354,21 @@ ath_sysctl_intmit(SYSCTL_HANDLER_ARGS)
 	error = sysctl_handle_int(oidp, &intmit, 0, req);
 	if (error || !req->newptr)
 		return error;
-	return !ath_hal_setintmit(sc->sc_ah, intmit) ? EINVAL : 0;
+
+	/* reusing error; 1 here means "good"; 0 means "fail" */
+	error = ath_hal_setintmit(sc->sc_ah, intmit);
+	if (! error)
+		return EINVAL;
+
+	/*
+	 * Reset the hardware here - disabling ANI in the HAL
+	 * doesn't reset ANI related registers, so it'll leave
+	 * things in an inconsistent state.
+	 */
+	if (sc->sc_ifp->if_drv_flags & IFF_DRV_RUNNING)
+		ath_reset(sc->sc_ifp);
+
+	return 0;
 }
 
 #ifdef IEEE80211_SUPPORT_TDMA

Modified: projects/hid/sys/dev/mpt/mpt.c
==============================================================================
--- projects/hid/sys/dev/mpt/mpt.c	Sat Jul 30 13:25:11 2011	(r224512)
+++ projects/hid/sys/dev/mpt/mpt.c	Sat Jul 30 13:28:11 2011	(r224513)
@@ -301,66 +301,75 @@ mpt_modevent(module_t mod, int type, voi
 	return (error);
 }
 
-int
+static int
 mpt_stdload(struct mpt_personality *pers)
 {
+
 	/* Load is always successful. */
 	return (0);
 }
 
-int
+static int
 mpt_stdprobe(struct mpt_softc *mpt)
 {
+
 	/* Probe is always successful. */
 	return (0);
 }
 
-int
+static int
 mpt_stdattach(struct mpt_softc *mpt)
 {
+
 	/* Attach is always successful. */
 	return (0);
 }
 
-int
+static int
 mpt_stdenable(struct mpt_softc *mpt)
 {
+
 	/* Enable is always successful. */
 	return (0);
 }
 
-void
+static void
 mpt_stdready(struct mpt_softc *mpt)
 {
-}
 
+}
 
-int
+static int
 mpt_stdevent(struct mpt_softc *mpt, request_t *req, MSG_EVENT_NOTIFY_REPLY *msg)
 {
+
 	mpt_lprt(mpt, MPT_PRT_DEBUG, "mpt_stdevent: 0x%x\n", msg->Event & 0xFF);
 	/* Event was not for us. */
 	return (0);
 }
 
-void
+static void
 mpt_stdreset(struct mpt_softc *mpt, int type)
 {
+
 }
 
-void
+static void
 mpt_stdshutdown(struct mpt_softc *mpt)
 {
+
 }
 
-void
+static void
 mpt_stddetach(struct mpt_softc *mpt)
 {
+
 }
 
-int
+static int
 mpt_stdunload(struct mpt_personality *pers)
 {
+
 	/* Unload is always successful. */
 	return (0);
 }
@@ -383,7 +392,6 @@ mpt_postattach(void *unused)
 }
 SYSINIT(mptdev, SI_SUB_CONFIGURE, SI_ORDER_MIDDLE, mpt_postattach, NULL);
 
-
 /******************************* Bus DMA Support ******************************/
 void
 mpt_map_rquest(void *arg, bus_dma_segment_t *segs, int nseg, int error)
@@ -478,6 +486,7 @@ static int
 mpt_default_reply_handler(struct mpt_softc *mpt, request_t *req,
 	uint32_t reply_desc, MSG_DEFAULT_REPLY *reply_frame)
 {
+
 	mpt_prt(mpt,
 	    "Default Handler Called: req=%p:%u reply_descriptor=%x frame=%p\n",
 	    req, req->serno, reply_desc, reply_frame);
@@ -494,8 +503,8 @@ static int
 mpt_config_reply_handler(struct mpt_softc *mpt, request_t *req,
  uint32_t reply_desc, MSG_DEFAULT_REPLY *reply_frame)
 {
-	if (req != NULL) {
 
+	if (req != NULL) {
 		if (reply_frame != NULL) {
 			MSG_CONFIG *cfgp;
 			MSG_CONFIG_REPLY *reply;
@@ -528,6 +537,7 @@ static int
 mpt_handshake_reply_handler(struct mpt_softc *mpt, request_t *req,
  uint32_t reply_desc, MSG_DEFAULT_REPLY *reply_frame)
 {
+
 	/* Nothing to be done. */
 	return (TRUE);
 }
@@ -650,6 +660,7 @@ static int
 mpt_core_event(struct mpt_softc *mpt, request_t *req,
 	       MSG_EVENT_NOTIFY_REPLY *msg)
 {
+
 	mpt_lprt(mpt, MPT_PRT_DEBUG, "mpt_core_event: 0x%x\n",
                  msg->Event & 0xFF);
 	switch(msg->Event & 0xFF) {
@@ -870,6 +881,7 @@ mpt_complete_request_chain(struct mpt_so
 void
 mpt_dump_reply_frame(struct mpt_softc *mpt, MSG_DEFAULT_REPLY *reply_frame)
 {
+
 	mpt_prt(mpt, "Address Reply:\n");
 	mpt_print_reply(reply_frame);
 }
@@ -881,12 +893,14 @@ static __inline  uint32_t mpt_rd_intr(st
 static __inline uint32_t
 mpt_rd_db(struct mpt_softc *mpt)
 {
+
 	return mpt_read(mpt, MPT_OFFSET_DOORBELL);
 }
 
 static __inline uint32_t
 mpt_rd_intr(struct mpt_softc *mpt)
 {
+
 	return mpt_read(mpt, MPT_OFFSET_INTR_STATUS);
 }
 
@@ -895,6 +909,7 @@ static int
 mpt_wait_db_ack(struct mpt_softc *mpt)
 {
 	int i;
+
 	for (i=0; i < MPT_MAX_WAIT; i++) {
 		if (!MPT_DB_IS_BUSY(mpt_rd_intr(mpt))) {
 			maxwait_ack = i > maxwait_ack ? i : maxwait_ack;
@@ -910,6 +925,7 @@ static int
 mpt_wait_db_int(struct mpt_softc *mpt)
 {
 	int i;
+
 	for (i = 0; i < MPT_MAX_WAIT; i++) {
 		if (MPT_DB_INTR(mpt_rd_intr(mpt))) {
 			maxwait_int = i > maxwait_int ? i : maxwait_int;
@@ -925,6 +941,7 @@ void
 mpt_check_doorbell(struct mpt_softc *mpt)
 {
 	uint32_t db = mpt_rd_db(mpt);
+
 	if (MPT_STATE(db) != MPT_DB_STATE_RUNNING) {
 		mpt_prt(mpt, "Device not running\n");
 		mpt_print_db(db);
@@ -956,6 +973,7 @@ static int mpt_download_fw(struct mpt_so
 static int
 mpt_soft_reset(struct mpt_softc *mpt)
 {
+
 	mpt_lprt(mpt, MPT_PRT_DEBUG, "soft reset\n");
 
 	/* Have to use hard reset if we are not in Running state */
@@ -1019,6 +1037,7 @@ mpt_enable_diag_mode(struct mpt_softc *m
 static void
 mpt_disable_diag_mode(struct mpt_softc *mpt)
 {
+
 	mpt_write(mpt, MPT_OFFSET_SEQUENCE, 0xFFFFFFFF);
 }
 
@@ -1094,6 +1113,7 @@ mpt_hard_reset(struct mpt_softc *mpt)
 static void
 mpt_core_ioc_reset(struct mpt_softc *mpt, int type)
 {
+
 	/*
 	 * Complete all pending requests with a status
 	 * appropriate for an IOC reset.
@@ -1102,7 +1122,6 @@ mpt_core_ioc_reset(struct mpt_softc *mpt
 				   MPI_IOCSTATUS_INVALID_STATE);
 }
 
-
 /*
  * Reset the IOC when needed. Try software command first then if needed
  * poke at the magic diagnostic reset. Note that a hard reset resets
@@ -1263,6 +1282,7 @@ retry:
 void
 mpt_send_cmd(struct mpt_softc *mpt, request_t *req)
 {
+
 	if (mpt->verbose > MPT_PRT_DEBUG2) {
 		mpt_dump_request(mpt, req);
 	}
@@ -2110,6 +2130,7 @@ mpt_send_event_request(struct mpt_softc 
 void
 mpt_enable_ints(struct mpt_softc *mpt)
 {
+
 	/* Unmask every thing except door bell int */
 	mpt_write(mpt, MPT_OFFSET_INTR_MASK, MPT_INTR_DB_MASK);
 }
@@ -2120,6 +2141,7 @@ mpt_enable_ints(struct mpt_softc *mpt)
 void
 mpt_disable_ints(struct mpt_softc *mpt)
 {
+
 	/* Mask all interrupts */
 	mpt_write(mpt, MPT_OFFSET_INTR_MASK,
 	    MPT_INTR_REPLY_MASK | MPT_INTR_DB_MASK);
@@ -2219,7 +2241,7 @@ mpt_detach(struct mpt_softc *mpt)
 	return (0);
 }
 
-int
+static int
 mpt_core_load(struct mpt_personality *pers)
 {
 	int i;
@@ -2245,7 +2267,7 @@ mpt_core_load(struct mpt_personality *pe
  * Initialize per-instance driver data and perform
  * initial controller configuration.
  */
-int
+static int
 mpt_core_attach(struct mpt_softc *mpt)
 {
         int val, error;
@@ -2276,9 +2298,10 @@ mpt_core_attach(struct mpt_softc *mpt)
 	return (error);
 }
 
-int
+static int
 mpt_core_enable(struct mpt_softc *mpt)
 {
+
 	/*
 	 * We enter with the IOC enabled, but async events
 	 * not enabled, ports not enabled and interrupts
@@ -2326,13 +2349,14 @@ mpt_core_enable(struct mpt_softc *mpt)
 	return (0);
 }
 
-void
+static void
 mpt_core_shutdown(struct mpt_softc *mpt)
 {
+
 	mpt_disable_ints(mpt);
 }
 
-void
+static void
 mpt_core_detach(struct mpt_softc *mpt)
 {
 	int val;
@@ -2351,9 +2375,10 @@ mpt_core_detach(struct mpt_softc *mpt)
 	mpt_dma_buf_free(mpt);
 }
 
-int
+static int
 mpt_core_unload(struct mpt_personality *pers)
 {
+
 	/* Unload is always successful. */
 	return (0);
 }
@@ -2575,6 +2600,7 @@ static void
 mpt_dma_buf_free(struct mpt_softc *mpt)
 {
 	int i;
+
 	if (mpt->request_dmat == 0) {
 		mpt_lprt(mpt, MPT_PRT_DEBUG, "already released dma memory\n");
 		return;

Modified: projects/hid/sys/dev/mpt/mpt.h
==============================================================================
--- projects/hid/sys/dev/mpt/mpt.h	Sat Jul 30 13:25:11 2011	(r224512)
+++ projects/hid/sys/dev/mpt/mpt.h	Sat Jul 30 13:28:11 2011	(r224513)
@@ -1075,16 +1075,6 @@ mpt_complete_request_chain(struct mpt_so
 int mpt_reset(struct mpt_softc *, int /*reinit*/);
 
 /****************************** Debugging ************************************/
-typedef struct mpt_decode_entry {
-	char    *name;
-	u_int	 value;
-	u_int	 mask;
-} mpt_decode_entry_t;
-
-int mpt_decode_value(mpt_decode_entry_t *table, u_int num_entries,
-		     const char *name, u_int value, u_int *cur_column,
-		     u_int wrap_point);
-
 void mpt_dump_data(struct mpt_softc *, const char *, void *, int);
 void mpt_dump_request(struct mpt_softc *, request_t *);
 
@@ -1110,17 +1100,21 @@ do {						\
 		mpt_prt(mpt, __VA_ARGS__);	\
 } while (0)
 
+#if 0
 #define mpt_lprtc(mpt, level, ...)		\
 do {						\
 	if (level <= (mpt)->verbose)		\
 		mpt_prtc(mpt, __VA_ARGS__);	\
 } while (0)
+#endif
 #else
 void mpt_lprt(struct mpt_softc *, int, const char *, ...)
 	__printflike(3, 4);
+#if 0
 void mpt_lprtc(struct mpt_softc *, int, const char *, ...)
 	__printflike(3, 4);
 #endif
+#endif
 void mpt_prt(struct mpt_softc *, const char *, ...)
 	__printflike(2, 3);
 void mpt_prtc(struct mpt_softc *, const char *, ...)
@@ -1277,7 +1271,6 @@ void		mpt_check_doorbell(struct mpt_soft
 void		mpt_dump_reply_frame(struct mpt_softc *mpt,
 				     MSG_DEFAULT_REPLY *reply_frame);
 
-void		mpt_set_config_regs(struct mpt_softc *);
 int		mpt_issue_cfg_req(struct mpt_softc */*mpt*/, request_t */*req*/,
 				  cfgparms_t *params,
 				  bus_addr_t /*addr*/, bus_size_t/*len*/,
@@ -1331,6 +1324,5 @@ char *mpt_ioc_diag(uint32_t diag);
 void mpt_req_state(mpt_req_state_t state);
 void mpt_print_config_request(void *vmsg);
 void mpt_print_request(void *vmsg);
-void mpt_print_scsi_io_request(MSG_SCSI_IO_REQUEST *msg);
 void mpt_dump_sgl(SGE_IO_UNION *se, int offset);
 #endif /* _MPT_H_ */

Modified: projects/hid/sys/dev/mpt/mpt_cam.c
==============================================================================
--- projects/hid/sys/dev/mpt/mpt_cam.c	Sat Jul 30 13:25:11 2011	(r224512)
+++ projects/hid/sys/dev/mpt/mpt_cam.c	Sat Jul 30 13:28:11 2011	(r224513)
@@ -193,7 +193,7 @@ MODULE_DEPEND(mpt_cam, cam, 1, 1, 1);
 int mpt_enable_sata_wc = -1;
 TUNABLE_INT("hw.mpt.enable_sata_wc", &mpt_enable_sata_wc);
 
-int
+static int
 mpt_cam_probe(struct mpt_softc *mpt)
 {
 	int role;

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


More information about the svn-src-projects mailing list