Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 28 May 2015 18:14:56 +0000 (UTC)
From:      Stephen McConnell <slm@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r283660 - in head/sys/dev/mpr: . mpi
Message-ID:  <201505281814.t4SIEuUO073996@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: slm
Date: Thu May 28 18:14:55 2015
New Revision: 283660
URL: https://svnweb.freebsd.org/changeset/base/283660

Log:
  The wrong commit message was given with r283632. To get the correct commit
  message synced to the changes in r283632, those changes are now backed out.
  Another commit will be done that is exactly the same as r283632 except it will
  have to correct commit message.
  
  Approved by:	ken, scottl, asomers, gibbs

Modified:
  head/sys/dev/mpr/mpi/mpi2.h
  head/sys/dev/mpr/mpi/mpi2_cnfg.h
  head/sys/dev/mpr/mpi/mpi2_hbd.h
  head/sys/dev/mpr/mpi/mpi2_history.txt
  head/sys/dev/mpr/mpi/mpi2_init.h
  head/sys/dev/mpr/mpi/mpi2_ioc.h
  head/sys/dev/mpr/mpi/mpi2_ra.h
  head/sys/dev/mpr/mpi/mpi2_raid.h
  head/sys/dev/mpr/mpi/mpi2_sas.h
  head/sys/dev/mpr/mpi/mpi2_targ.h
  head/sys/dev/mpr/mpi/mpi2_tool.h
  head/sys/dev/mpr/mpi/mpi2_type.h
  head/sys/dev/mpr/mpr.c
  head/sys/dev/mpr/mpr_config.c
  head/sys/dev/mpr/mpr_ioctl.h
  head/sys/dev/mpr/mpr_mapping.c
  head/sys/dev/mpr/mpr_mapping.h
  head/sys/dev/mpr/mpr_pci.c
  head/sys/dev/mpr/mpr_sas.c
  head/sys/dev/mpr/mpr_sas.h
  head/sys/dev/mpr/mpr_sas_lsi.c
  head/sys/dev/mpr/mpr_user.c
  head/sys/dev/mpr/mprvar.h

Modified: head/sys/dev/mpr/mpi/mpi2.h
==============================================================================
--- head/sys/dev/mpr/mpi/mpi2.h	Thu May 28 18:06:03 2015	(r283659)
+++ head/sys/dev/mpr/mpi/mpi2.h	Thu May 28 18:14:55 2015	(r283660)
@@ -1,6 +1,5 @@
 /*-
- * Copyright (c) 2012-2015 LSI Corp.
- * Copyright (c) 2013-2015 Avago Technologies
+ * Copyright (c) 2013 LSI Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -27,14 +26,13 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD
+ * LSI MPT-Fusion Host Adapter FreeBSD
  *
  * $FreeBSD$
  */
 
 /*
- *  Copyright (c) 2000-2015 LSI Corporation.
- *  Copyright (c) 2013-2015 Avago Technologies
+ *  Copyright (c) 2000-2013 LSI Corporation.
  *
  *
  *           Name:  mpi2.h

Modified: head/sys/dev/mpr/mpi/mpi2_cnfg.h
==============================================================================
--- head/sys/dev/mpr/mpi/mpi2_cnfg.h	Thu May 28 18:06:03 2015	(r283659)
+++ head/sys/dev/mpr/mpi/mpi2_cnfg.h	Thu May 28 18:14:55 2015	(r283660)
@@ -1,6 +1,5 @@
 /*-
- * Copyright (c) 2012-2015 LSI Corp.
- * Copyright (c) 2013-2015 Avago Technologies
+ * Copyright (c) 2013 LSI Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -27,14 +26,13 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD
+ * LSI MPT-Fusion Host Adapter FreeBSD
  *
  * $FreeBSD$
  */
 
 /*
- *  Copyright (c) 2000-2015 LSI Corporation.
- *  Copyright (c) 2013-2015 Avago Technologies
+ *  Copyright (c) 2000-2013 LSI Corporation.
  *
  *
  *           Name:  mpi2_cnfg.h

Modified: head/sys/dev/mpr/mpi/mpi2_hbd.h
==============================================================================
--- head/sys/dev/mpr/mpi/mpi2_hbd.h	Thu May 28 18:06:03 2015	(r283659)
+++ head/sys/dev/mpr/mpi/mpi2_hbd.h	Thu May 28 18:14:55 2015	(r283660)
@@ -1,6 +1,5 @@
 /*-
- * Copyright (c) 2012-2015 LSI Corp.
- * Copyright (c) 2013-2015 Avago Technologies
+ * Copyright (c) 2013 LSI Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -27,14 +26,13 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD
+ * LSI MPT-Fusion Host Adapter FreeBSD
  *
  * $FreeBSD$
  */
 
 /*
- *  Copyright (c) 2009-2015 LSI Corporation.
- *  Copyright (c) 2013-2015 Avago Technologies
+ *  Copyright (c) 2009-2011 LSI Corporation.
  *
  *
  *           Name:  mpi2_hbd.h

Modified: head/sys/dev/mpr/mpi/mpi2_history.txt
==============================================================================
--- head/sys/dev/mpr/mpi/mpi2_history.txt	Thu May 28 18:06:03 2015	(r283659)
+++ head/sys/dev/mpr/mpi/mpi2_history.txt	Thu May 28 18:14:55 2015	(r283660)
@@ -1,6 +1,5 @@
 /*-
- * Copyright (c) 2012-2015 LSI Corp.
- * Copyright (c) 2013-2015 Avago Technologies
+ * Copyright (c) 2013 LSI Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -27,7 +26,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD
+ * LSI MPT-Fusion Host Adapter FreeBSD
  *
  * $FreeBSD$
  */
@@ -36,8 +35,7 @@
  Fusion-MPT MPI 2.0 / 2.5 Header File Change History
  ==============================
 
- Copyright (c) 2000-2015 LSI Corporation.
- Copyright (c) 2013-2015 Avago Technologies
+ Copyright (c) 2000-2013 LSI Corporation.
 
  ---------------------------------------
  Header Set Release Version:    02.00.33

Modified: head/sys/dev/mpr/mpi/mpi2_init.h
==============================================================================
--- head/sys/dev/mpr/mpi/mpi2_init.h	Thu May 28 18:06:03 2015	(r283659)
+++ head/sys/dev/mpr/mpi/mpi2_init.h	Thu May 28 18:14:55 2015	(r283660)
@@ -1,6 +1,5 @@
 /*-
- * Copyright (c) 2012-2015 LSI Corp.
- * Copyright (c) 2013-2015 Avago Technologies
+ * Copyright (c) 2013 LSI Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -27,14 +26,13 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD
+ * LSI MPT-Fusion Host Adapter FreeBSD
  *
  * $FreeBSD$
  */
 
 /*
- *  Copyright (c) 2000-2015 LSI Corporation.
- *  Copyright (c) 2013-2015 Avago Technologies
+ *  Copyright (c) 2000-2013 LSI Corporation.
  *
  *
  *           Name:  mpi2_init.h

Modified: head/sys/dev/mpr/mpi/mpi2_ioc.h
==============================================================================
--- head/sys/dev/mpr/mpi/mpi2_ioc.h	Thu May 28 18:06:03 2015	(r283659)
+++ head/sys/dev/mpr/mpi/mpi2_ioc.h	Thu May 28 18:14:55 2015	(r283660)
@@ -1,6 +1,5 @@
 /*-
- * Copyright (c) 2012-2015 LSI Corp.
- * Copyright (c) 2013-2015 Avago Technologies
+ * Copyright (c) 2013 LSI Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -27,14 +26,13 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD
+ * LSI MPT-Fusion Host Adapter FreeBSD
  *
  * $FreeBSD$
  */
 
 /*
- *  Copyright (c) 2000-2015 LSI Corporation.
- *  Copyright (c) 2013-2015 Avago Technologies
+ *  Copyright (c) 2000-2013 LSI Corporation.
  *
  *
  *           Name:  mpi2_ioc.h

Modified: head/sys/dev/mpr/mpi/mpi2_ra.h
==============================================================================
--- head/sys/dev/mpr/mpi/mpi2_ra.h	Thu May 28 18:06:03 2015	(r283659)
+++ head/sys/dev/mpr/mpi/mpi2_ra.h	Thu May 28 18:14:55 2015	(r283660)
@@ -1,6 +1,5 @@
 /*-
- * Copyright (c) 2012-2015 LSI Corp.
- * Copyright (c) 2013-2015 Avago Technologies
+ * Copyright (c) 2013 LSI Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -27,14 +26,13 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD
+ * LSI MPT-Fusion Host Adapter FreeBSD
  *
  * $FreeBSD$
  */
 
 /*
- *  Copyright (c) 2012-2015 LSI Corporation.
- *  Copyright (c) 2013-2015 Avago Technologies
+ *  Copyright (c) 2009 LSI Corporation.
  *
  *
  *           Name:  mpi2_ra.h

Modified: head/sys/dev/mpr/mpi/mpi2_raid.h
==============================================================================
--- head/sys/dev/mpr/mpi/mpi2_raid.h	Thu May 28 18:06:03 2015	(r283659)
+++ head/sys/dev/mpr/mpi/mpi2_raid.h	Thu May 28 18:14:55 2015	(r283660)
@@ -1,6 +1,5 @@
 /*-
- * Copyright (c) 2012-2015 LSI Corp.
- * Copyright (c) 2013-2015 Avago Technologies
+ * Copyright (c) 2013 LSI Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -27,14 +26,13 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD
+ * LSI MPT-Fusion Host Adapter FreeBSD
  *
  * $FreeBSD$
  */
 
 /*
- *  Copyright (c) 2000-2015 LSI Corporation.
- *  Copyright (c) 2013-2015 Avago Technologies
+ *  Copyright (c) 2000-2013 LSI Corporation.
  *
  *
  *           Name:  mpi2_raid.h

Modified: head/sys/dev/mpr/mpi/mpi2_sas.h
==============================================================================
--- head/sys/dev/mpr/mpi/mpi2_sas.h	Thu May 28 18:06:03 2015	(r283659)
+++ head/sys/dev/mpr/mpi/mpi2_sas.h	Thu May 28 18:14:55 2015	(r283660)
@@ -1,6 +1,5 @@
 /*-
- * Copyright (c) 2012-2015 LSI Corp.
- * Copyright (c) 2013-2015 Avago Technologies
+ * Copyright (c) 2013 LSI Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -27,14 +26,13 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD
+ * LSI MPT-Fusion Host Adapter FreeBSD
  *
  * $FreeBSD$
  */
 
 /*
- *  Copyright (c) 2000-2015 LSI Corporation.
- *  Copyright (c) 2013-2015 Avago Technologies
+ *  Copyright (c) 2000-2013 LSI Corporation.
  *
  *
  *           Name:  mpi2_sas.h

Modified: head/sys/dev/mpr/mpi/mpi2_targ.h
==============================================================================
--- head/sys/dev/mpr/mpi/mpi2_targ.h	Thu May 28 18:06:03 2015	(r283659)
+++ head/sys/dev/mpr/mpi/mpi2_targ.h	Thu May 28 18:14:55 2015	(r283660)
@@ -1,6 +1,5 @@
 /*-
- * Copyright (c) 2012-2015 LSI Corp.
- * Copyright (c) 2013-2015 Avago Technologies
+ * Copyright (c) 2013 LSI Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -27,14 +26,13 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD
+ * LSI MPT-Fusion Host Adapter FreeBSD
  *
  * $FreeBSD$
  */
 
 /*
- *  Copyright (c) 2000-2015 LSI Corporation.
- *  Copyright (c) 2013-2015 Avago Technologies
+ *  Copyright (c) 2000-2012 LSI Corporation.
  *
  *
  *           Name:  mpi2_targ.h

Modified: head/sys/dev/mpr/mpi/mpi2_tool.h
==============================================================================
--- head/sys/dev/mpr/mpi/mpi2_tool.h	Thu May 28 18:06:03 2015	(r283659)
+++ head/sys/dev/mpr/mpi/mpi2_tool.h	Thu May 28 18:14:55 2015	(r283660)
@@ -1,6 +1,5 @@
 /*-
- * Copyright (c) 2012-2015 LSI Corp.
- * Copyright (c) 2013-2015 Avago Technologies
+ * Copyright (c) 2013 LSI Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -27,14 +26,13 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD
+ * LSI MPT-Fusion Host Adapter FreeBSD
  *
  * $FreeBSD$
  */
 
 /*
- *  Copyright (c) 2000-2015 LSI Corporation.
- *  Copyright (c) 2013-2015 Avago Technologies
+ *  Copyright (c) 2000-2013 LSI Corporation.
  *
  *
  *           Name:  mpi2_tool.h

Modified: head/sys/dev/mpr/mpi/mpi2_type.h
==============================================================================
--- head/sys/dev/mpr/mpi/mpi2_type.h	Thu May 28 18:06:03 2015	(r283659)
+++ head/sys/dev/mpr/mpi/mpi2_type.h	Thu May 28 18:14:55 2015	(r283660)
@@ -1,6 +1,5 @@
 /*-
- * Copyright (c) 2012-2015 LSI Corp.
- * Copyright (c) 2013-2015 Avago Technologies
+ * Copyright (c) 2013 LSI Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -27,14 +26,13 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD
+ * LSI MPT-Fusion Host Adapter FreeBSD
  *
  * $FreeBSD$
  */
 
 /*
- *  Copyright (c) 2000-2015 LSI Corporation.
- *  Copyright (c) 2013-2015 Avago Technologies
+ *  Copyright (c) 2000-2007 LSI Corporation.
  *
  *
  *           Name:  mpi2_type.h

Modified: head/sys/dev/mpr/mpr.c
==============================================================================
--- head/sys/dev/mpr/mpr.c	Thu May 28 18:06:03 2015	(r283659)
+++ head/sys/dev/mpr/mpr.c	Thu May 28 18:14:55 2015	(r283660)
@@ -1,7 +1,6 @@
 /*-
  * Copyright (c) 2009 Yahoo! Inc.
- * Copyright (c) 2011-2015 LSI Corp.
- * Copyright (c) 2013-2015 Avago Technologies
+ * Copyright (c) 2012-2014 LSI Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -25,14 +24,12 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD
- *
  */
 
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD$");
 
-/* Communications core for Avago Technologies (LSI) MPT3 */
+/* Communications core for LSI MPT2 */
 
 /* TODO Move headers to mprvar */
 #include <sys/types.h>
@@ -75,6 +72,7 @@ __FBSDID("$FreeBSD$");
 #include <dev/mpr/mpr_ioctl.h>
 #include <dev/mpr/mprvar.h>
 #include <dev/mpr/mpr_table.h>
+#include <dev/mpr/mpr_sas.h>
 
 static int mpr_diag_reset(struct mpr_softc *sc, int sleep_flag);
 static int mpr_init_queues(struct mpr_softc *sc);
@@ -354,9 +352,11 @@ mpr_transition_operational(struct mpr_so
 static int
 mpr_iocfacts_allocate(struct mpr_softc *sc, uint8_t attaching)
 {
-	int error;
+	int error, i;
 	Mpi2IOCFactsReply_t saved_facts;
 	uint8_t saved_mode, reallocating;
+	struct mprsas_lun *lun, *lun_tmp;
+	struct mprsas_target *targ;
 
 	mpr_dprint(sc, MPR_TRACE, "%s\n", __func__);
 
@@ -513,7 +513,27 @@ mpr_iocfacts_allocate(struct mpr_softc *
 	 */
 	if (reallocating) {
 		mpr_iocfacts_free(sc);
-		mprsas_realloc_targets(sc, saved_facts.MaxTargets);
+
+		/*
+		 * The number of targets is based on IOC Facts, so free all of
+		 * the allocated LUNs for each target and then the target buffer
+		 * itself.
+		 */
+		for (i=0; i< saved_facts.MaxTargets; i++) {
+			targ = &sc->sassc->targets[i];
+			SLIST_FOREACH_SAFE(lun, &targ->luns, lun_link,
+			    lun_tmp) {
+				free(lun, M_MPR);
+			}
+		}
+		free(sc->sassc->targets, M_MPR);
+
+		sc->sassc->targets = malloc(sizeof(struct mprsas_target) *
+		    sc->facts->MaxTargets, M_MPR, M_WAITOK|M_ZERO);
+		if (!sc->sassc->targets) {
+			panic("%s failed to alloc targets with error %d\n",
+			    __func__, ENOMEM);
+		}
 	}
 
 	/*
@@ -755,7 +775,7 @@ mpr_reinit(struct mpr_softc *sc)
 	/* the end of discovery will release the simq, so we're done. */
 	mpr_dprint(sc, MPR_INFO, "%s finished sc %p post %u free %u\n", 
 	    __func__, sc, sc->replypostindex, sc->replyfreeindex);
-	mprsas_release_simq_reinit(sassc);
+	mprsas_release_simq_reinit(sassc);	
 
 	return 0;
 }
@@ -796,8 +816,7 @@ mpr_wait_db_ack(struct mpr_softc *sc, in
  		 * 0.5 milisecond
 		 */
 		if (mtx_owned(&sc->mpr_mtx) && sleep_flag == CAN_SLEEP)
-			msleep(&sc->msleep_fake_chan, &sc->mpr_mtx, 0, "mprdba",
-			    hz/1000);
+			msleep(&sc->msleep_fake_chan, &sc->mpr_mtx, 0, "mprdba",			    hz/1000);
 		else if (sleep_flag == CAN_SLEEP)
 			pause("mprdba", hz/1000);
 		else
@@ -963,7 +982,7 @@ mpr_enqueue_request(struct mpr_softc *sc
 	reply_descriptor rd;
 
 	MPR_FUNCTRACE(sc);
-	mpr_dprint(sc, MPR_TRACE, "SMID %u cm %p ccb %p\n",
+	mpr_dprint(sc, MPR_TRACE, "%s SMID %u cm %p ccb %p\n", __func__,
 	    cm->cm_desc.Default.SMID, cm, cm->cm_ccb);
 
 	if (sc->mpr_flags & MPR_FLAGS_ATTACH_DONE && !(sc->mpr_flags &
@@ -1353,8 +1372,6 @@ mpr_get_tunables(struct mpr_softc *sc)
 	sc->disable_msix = 0;
 	sc->disable_msi = 0;
 	sc->max_chains = MPR_CHAIN_FRAMES;
-	sc->enable_ssu = MPR_SSU_ENABLE_SSD_DISABLE_HDD;
-	sc->spinup_wait_time = DEFAULT_SPINUP_WAIT;
 
 	/*
 	 * Grab the global variables.
@@ -1363,8 +1380,6 @@ mpr_get_tunables(struct mpr_softc *sc)
 	TUNABLE_INT_FETCH("hw.mpr.disable_msix", &sc->disable_msix);
 	TUNABLE_INT_FETCH("hw.mpr.disable_msi", &sc->disable_msi);
 	TUNABLE_INT_FETCH("hw.mpr.max_chains", &sc->max_chains);
-	TUNABLE_INT_FETCH("hw.mpr.enable_ssu", &sc->enable_ssu);
-	TUNABLE_INT_FETCH("hw.mpr.spinup_wait_time", &sc->spinup_wait_time);
 
 	/* Grab the unit-instance variables */
 	snprintf(tmpstr, sizeof(tmpstr), "dev.mpr.%d.debug_level",
@@ -1387,14 +1402,6 @@ mpr_get_tunables(struct mpr_softc *sc)
 	snprintf(tmpstr, sizeof(tmpstr), "dev.mpr.%d.exclude_ids",
 	    device_get_unit(sc->mpr_dev));
 	TUNABLE_STR_FETCH(tmpstr, sc->exclude_ids, sizeof(sc->exclude_ids));
-
-	snprintf(tmpstr, sizeof(tmpstr), "dev.mpr.%d.enable_ssu",
-	    device_get_unit(sc->mpr_dev));
-	TUNABLE_INT_FETCH(tmpstr, &sc->enable_ssu);
-
-	snprintf(tmpstr, sizeof(tmpstr), "dev.mpr.%d.spinup_wait_time",
-	    device_get_unit(sc->mpr_dev));
-	TUNABLE_INT_FETCH(tmpstr, &sc->spinup_wait_time);
 }
 
 static void
@@ -1467,20 +1474,11 @@ mpr_setup_sysctl(struct mpr_softc *sc)
 	    OID_AUTO, "max_chains", CTLFLAG_RD,
 	    &sc->max_chains, 0,"maximum chain frames that will be allocated");
 
-	SYSCTL_ADD_INT(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree),
-	    OID_AUTO, "enable_ssu", CTLFLAG_RW, &sc->enable_ssu, 0,
-	    "enable SSU to SATA SSD/HDD at shutdown");
-
 #if __FreeBSD_version >= 900030
 	SYSCTL_ADD_UQUAD(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree),
 	    OID_AUTO, "chain_alloc_fail", CTLFLAG_RD,
 	    &sc->chain_alloc_fail, "chain allocation failures");
 #endif //FreeBSD_version >= 900030
-
-	SYSCTL_ADD_INT(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree),
-	    OID_AUTO, "spinup_wait_time", CTLFLAG_RD,
-	    &sc->spinup_wait_time, DEFAULT_SPINUP_WAIT, "seconds to wait for "
-	    "spinup after SATA ID error");
 }
 
 int
@@ -2098,7 +2096,7 @@ mpr_update_events(struct mpr_softc *sc, 
 	    (reply->IOCStatus & MPI2_IOCSTATUS_MASK) != MPI2_IOCSTATUS_SUCCESS)
 		error = ENXIO;
 	
-	if (reply)
+	if(reply)
 		mpr_print_event(sc, reply);
 
 	mpr_dprint(sc, MPR_TRACE, "%s finished error %d\n", __func__, error);
@@ -2165,8 +2163,8 @@ mpr_deregister_events(struct mpr_softc *
  * Add a chain element as the next SGE for the specified command.
  * Reset cm_sge and cm_sgesize to indicate all the available space. Chains are
  * only required for IEEE commands.  Therefore there is no code for commands
- * that have the MPR_CM_FLAGS_SGE_SIMPLE flag set (and those commands
- * shouldn't be requesting chains).
+ * that have the MPR_CM_FLAGS_SGE_SIMPLE flag set (and those commands shouldn't
+ * be requesting chains).
  */
 static int
 mpr_add_chain(struct mpr_command *cm, int segsleft)
@@ -2248,9 +2246,9 @@ mpr_add_chain(struct mpr_command *cm, in
 
 /*
  * Add one scatter-gather element to the scatter-gather list for a command.
- * Maintain cm_sglsize and cm_sge as the remaining size and pointer to the
- * next SGE to fill in, respectively.  In Gen3, the MPI SGL does not have a
- * chain, so don't consider any chain additions.
+ * Maintain cm_sglsize and cm_sge as the remaining size and pointer to the next
+ * SGE to fill in, respectively.  In Gen3, the MPI SGL does not have a chain,
+ * so don't consider any chain additions.
  */
 int
 mpr_push_sge(struct mpr_command *cm, MPI2_SGE_SIMPLE64 *sge, size_t len,
@@ -2662,7 +2660,7 @@ mpr_request_polled(struct mpr_softc *sc,
 		}
 	}
 
-	if (error) {
+	if(error) {
 		mpr_dprint(sc, MPR_FAULT, "Calling Reinit from %s\n", __func__);
 		rc = mpr_reinit(sc);
 		mpr_dprint(sc, MPR_FAULT, "Reinit %s\n", (rc == 0) ?
@@ -2719,12 +2717,9 @@ mpr_read_config_page(struct mpr_softc *s
 
 	cm->cm_data = params->buffer;
 	cm->cm_length = params->length;
-	if (cm->cm_data != NULL) {
-		cm->cm_sge = &req->PageBufferSGE;
-		cm->cm_sglsize = sizeof(MPI2_SGE_IO_UNION);
-		cm->cm_flags = MPR_CM_FLAGS_SGE_SIMPLE | MPR_CM_FLAGS_DATAIN;
-	} else
-		cm->cm_sge = NULL;
+	cm->cm_sge = &req->PageBufferSGE;
+	cm->cm_sglsize = sizeof(MPI2_SGE_IO_UNION);
+	cm->cm_flags = MPR_CM_FLAGS_SGE_SIMPLE | MPR_CM_FLAGS_DATAIN;
 	cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE;
 
 	cm->cm_complete_data = params;
@@ -2781,12 +2776,9 @@ mpr_config_complete(struct mpr_softc *sc
 		goto done;
 	}
 	params->status = reply->IOCStatus;
-	if (params->hdr.Struct.PageType == MPI2_CONFIG_PAGETYPE_EXTENDED) {
+	if (params->hdr.Ext.ExtPageType != 0) {
 		params->hdr.Ext.ExtPageType = reply->ExtPageType;
 		params->hdr.Ext.ExtPageLength = reply->ExtPageLength;
-		params->hdr.Ext.PageType = reply->Header.PageType;
-		params->hdr.Ext.PageNumber = reply->Header.PageNumber;
-		params->hdr.Ext.PageVersion = reply->Header.PageVersion;
 	} else {
 		params->hdr.Struct.PageType = reply->Header.PageType;
 		params->hdr.Struct.PageNumber = reply->Header.PageNumber;

Modified: head/sys/dev/mpr/mpr_config.c
==============================================================================
--- head/sys/dev/mpr/mpr_config.c	Thu May 28 18:06:03 2015	(r283659)
+++ head/sys/dev/mpr/mpr_config.c	Thu May 28 18:14:55 2015	(r283660)
@@ -1,6 +1,5 @@
 /*-
- * Copyright (c) 2011-2015 LSI Corp.
- * Copyright (c) 2013-2015 Avago Technologies
+ * Copyright (c) 2011-2014 LSI Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -24,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD
+ * LSI MPT-Fusion Host Adapter FreeBSD
  */
 
 #include <sys/cdefs.h>

Modified: head/sys/dev/mpr/mpr_ioctl.h
==============================================================================
--- head/sys/dev/mpr/mpr_ioctl.h	Thu May 28 18:06:03 2015	(r283659)
+++ head/sys/dev/mpr/mpr_ioctl.h	Thu May 28 18:14:55 2015	(r283660)
@@ -27,13 +27,12 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD userland interface
+ * LSI MPT-Fusion Host Adapter FreeBSD userland interface
  *
  * $FreeBSD$
  */
 /*-
- * Copyright (c) 2011-2015 LSI Corp.
- * Copyright (c) 2013-2015 Avago Technologies
+ * Copyright (c) 2011-2014 LSI Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -57,7 +56,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD
+ * LSI MPT-Fusion Host Adapter FreeBSD
  *
  * $FreeBSD$
  */

Modified: head/sys/dev/mpr/mpr_mapping.c
==============================================================================
--- head/sys/dev/mpr/mpr_mapping.c	Thu May 28 18:06:03 2015	(r283659)
+++ head/sys/dev/mpr/mpr_mapping.c	Thu May 28 18:14:55 2015	(r283660)
@@ -1,6 +1,5 @@
 /*-
- * Copyright (c) 2011-2015 LSI Corp.
- * Copyright (c) 2013-2015 Avago Technologies
+ * Copyright (c) 2011-2014 LSI Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -24,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD
+ * LSI MPT-Fusion Host Adapter FreeBSD
  */
 
 #include <sys/cdefs.h>
@@ -327,13 +326,11 @@ _mapping_get_high_missing_mt_idx(struct 
 {
 	u32 map_idx, high_idx = MPR_ENCTABLE_BAD_IDX;
 	u8 high_missing_count = 0;
-	u32 start_idx, end_idx, start_idx_ir, end_idx_ir;
+	u32 start_idx, end_idx, start_idx_ir = 0, end_idx_ir;
 	struct dev_mapping_table *mt_entry;
 	u16 ioc_pg8_flags = le16toh(sc->ioc_pg8.Flags);
 
 	start_idx = 0;
-	start_idx_ir = 0;
-	end_idx_ir = 0;
 	end_idx = sc->max_devices;
 	if (ioc_pg8_flags & MPI2_IOCPAGE8_FLAGS_RESERVED_TARGETID_0)
 		start_idx = 1;
@@ -890,14 +887,14 @@ _mapping_get_dev_info(struct mpr_softc *
 	u16 ioc_pg8_flags = le16toh(sc->ioc_pg8.Flags);
 	Mpi2ConfigReply_t mpi_reply;
 	Mpi2SasDevicePage0_t sas_device_pg0;
-	u8 entry, enc_idx, phy_idx, sata_end_device;
+	u8 entry, enc_idx, phy_idx;
 	u32 map_idx, index, device_info;
 	struct _map_phy_change *phy_change, *tmp_phy_change;
 	uint64_t sas_address;
 	struct enc_mapping_table *et_entry;
 	struct dev_mapping_table *mt_entry;
 	u8 add_code = MPI2_EVENT_SAS_TOPO_RC_TARG_ADDED;
-	int rc = 1;
+	int rc;
 
 	for (entry = 0; entry < topo_change->num_entries; entry++) {
 		phy_change = &topo_change->phy_details[entry];
@@ -911,36 +908,41 @@ _mapping_get_dev_info(struct mpr_softc *
 			continue;
 		}
 
-		/*
-		 * Always get SATA Identify information because this is used
-		 * to determine if Start/Stop Unit should be sent to the drive
-		 * when the system is shutdown.
-		 */
 		device_info = le32toh(sas_device_pg0.DeviceInfo);
-		sas_address = sas_device_pg0.SASAddress.High;
-		sas_address = (sas_address << 32) |
-		    sas_device_pg0.SASAddress.Low;
-		sata_end_device = 0;
-		if ((device_info & MPI2_SAS_DEVICE_INFO_END_DEVICE) &&
-		    (device_info & MPI2_SAS_DEVICE_INFO_SATA_DEVICE)) {
-			sata_end_device = 1;
-			rc = mprsas_get_sas_address_for_sata_disk(sc,
-			    &sas_address, phy_change->dev_handle, device_info,
-			    &phy_change->is_SATA_SSD);
-			if (rc) {
-				mpr_dprint(sc, MPR_ERROR, "%s: failed to get "
-				    "disk type (SSD or HDD) and SAS Address "
-				    "for SATA device with handle 0x%04x\n",
-				    __func__, phy_change->dev_handle);
-			} else {
+		if ((ioc_pg8_flags & MPI2_IOCPAGE8_FLAGS_MASK_MAPPING_MODE) ==
+		    MPI2_IOCPAGE8_FLAGS_DEVICE_PERSISTENCE_MAPPING) {
+			if ((device_info & MPI2_SAS_DEVICE_INFO_END_DEVICE) &&
+			    (device_info & MPI2_SAS_DEVICE_INFO_SATA_DEVICE)) {
+				rc = mprsas_get_sas_address_for_sata_disk(sc,
+				    &sas_address, phy_change->dev_handle,
+				    device_info);
+				if (rc) {
+					printf("%s: failed to compute the "
+					    "hashed SAS Address for SATA "
+					    "device with handle 0x%04x\n",
+					    __func__, phy_change->dev_handle);
+					sas_address =
+					    sas_device_pg0.SASAddress.High;
+					sas_address = (sas_address << 32) |
+					    sas_device_pg0.SASAddress.Low;
+				}
 				mpr_dprint(sc, MPR_INFO, "SAS Address for SATA "
 				    "device = %jx\n", sas_address);
+			} else {
+				sas_address =
+					sas_device_pg0.SASAddress.High;
+				sas_address = (sas_address << 32) |
+					sas_device_pg0.SASAddress.Low;
 			}
+		} else {
+			sas_address = sas_device_pg0.SASAddress.High;
+			sas_address = (sas_address << 32) |
+			   sas_device_pg0.SASAddress.Low;
 		}
-
 		phy_change->physical_id = sas_address;
 		phy_change->slot = le16toh(sas_device_pg0.Slot);
-		phy_change->device_info = le32toh(sas_device_pg0.DeviceInfo);
+		phy_change->device_info =
+		    le32toh(sas_device_pg0.DeviceInfo);
 
 		if ((ioc_pg8_flags & MPI2_IOCPAGE8_FLAGS_MASK_MAPPING_MODE) ==
 		    MPI2_IOCPAGE8_FLAGS_ENCLOSURE_SLOT_MAPPING) {
@@ -948,10 +950,10 @@ _mapping_get_dev_info(struct mpr_softc *
 			    topo_change->enc_handle);
 			if (enc_idx == MPR_ENCTABLE_BAD_IDX) {
 				phy_change->is_processed = 1;
-				mpr_dprint(sc, MPR_MAPPING, "%s: failed to add "
-				    "the device with handle 0x%04x because the "
-				    "enclosure is not in the mapping table\n",
-				    __func__, phy_change->dev_handle);
+				printf("%s: failed to add the device with "
+				    "handle 0x%04x because the enclosure is "
+				    "not in the mapping table\n", __func__,
+				    phy_change->dev_handle);
 				continue;
 			}
 			if (!((phy_change->device_info &

Modified: head/sys/dev/mpr/mpr_mapping.h
==============================================================================
--- head/sys/dev/mpr/mpr_mapping.h	Thu May 28 18:06:03 2015	(r283659)
+++ head/sys/dev/mpr/mpr_mapping.h	Thu May 28 18:14:55 2015	(r283660)
@@ -1,6 +1,5 @@
 /*-
- * Copyright (c) 2011-2015 LSI Corp.
- * Copyright (c) 2013-2015 Avago Technologies
+ * Copyright (c) 2011-2014 LSI Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -24,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD
+ * LSI MPT-Fusion Host Adapter FreeBSD
  *
  * $FreeBSD$
  */
@@ -39,7 +38,6 @@
  * @dev_handle: device handle for the device pointed by this entry
  * @slot: slot ID
  * @is_processed: Flag to indicate whether this entry is processed or not
- * @is_SATA_SSD: 1 if this is a SATA device AND an SSD, 0 otherwise
  */
 struct _map_phy_change {
 	uint64_t	physical_id;
@@ -48,8 +46,6 @@ struct _map_phy_change {
 	uint16_t	slot;
 	uint8_t	reason;
 	uint8_t	is_processed;
-	uint8_t	is_SATA_SSD;
-	uint8_t reserved;
 };
 
 /**
@@ -70,6 +66,6 @@ struct _map_topology_change {
 
 extern int
 mprsas_get_sas_address_for_sata_disk(struct mpr_softc *ioc,
-    u64 *sas_address, u16 handle, u32 device_info, u8 *is_SATA_SSD);
+    u64 *sas_address, u16 handle, u32 device_info);
 
 #endif

Modified: head/sys/dev/mpr/mpr_pci.c
==============================================================================
--- head/sys/dev/mpr/mpr_pci.c	Thu May 28 18:06:03 2015	(r283659)
+++ head/sys/dev/mpr/mpr_pci.c	Thu May 28 18:14:55 2015	(r283660)
@@ -27,7 +27,7 @@
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD$");
 
-/* PCI/PCI-X/PCIe bus interface for the Avago Tech (LSI) MPT3 controllers */
+/* PCI/PCI-X/PCIe bus interface for the LSI MPT2 controllers */
 
 /* TODO Move headers to mprvar */
 #include <sys/types.h>
@@ -99,17 +99,17 @@ struct mpr_ident {
 	const char	*desc;
 } mpr_identifiers[] = {
 	{ MPI2_MFGPAGE_VENDORID_LSI, MPI25_MFGPAGE_DEVID_SAS3004,
-	    0xffff, 0xffff, 0, "Avago Technologies (LSI) SAS3004" },
+	    0xffff, 0xffff, 0, "LSI SAS3004" },
 	{ MPI2_MFGPAGE_VENDORID_LSI, MPI25_MFGPAGE_DEVID_SAS3008,
-	    0xffff, 0xffff, 0, "Avago Technologies (LSI) SAS3008" },
+	    0xffff, 0xffff, 0, "LSI SAS3008" },
 	{ MPI2_MFGPAGE_VENDORID_LSI, MPI25_MFGPAGE_DEVID_SAS3108_1,
-	    0xffff, 0xffff, 0, "Avago Technologies (LSI) SAS3108_1" },
+	    0xffff, 0xffff, 0, "LSI SAS3108_1" },
 	{ MPI2_MFGPAGE_VENDORID_LSI, MPI25_MFGPAGE_DEVID_SAS3108_2,
-	    0xffff, 0xffff, 0, "Avago Technologies (LSI) SAS3108_2" },
+	    0xffff, 0xffff, 0, "LSI SAS3108_2" },
 	{ MPI2_MFGPAGE_VENDORID_LSI, MPI25_MFGPAGE_DEVID_SAS3108_5,
-	    0xffff, 0xffff, 0, "Avago Technologies (LSI) SAS3108_5" },
+	    0xffff, 0xffff, 0, "LSI SAS3108_5" },
 	{ MPI2_MFGPAGE_VENDORID_LSI, MPI25_MFGPAGE_DEVID_SAS3108_6,
-	    0xffff, 0xffff, 0, "Avago Technologies (LSI) SAS3108_6" },
+	    0xffff, 0xffff, 0, "LSI SAS3108_6" },
 	{ 0, 0, 0, 0, 0, NULL }
 };
 

Modified: head/sys/dev/mpr/mpr_sas.c
==============================================================================
--- head/sys/dev/mpr/mpr_sas.c	Thu May 28 18:06:03 2015	(r283659)
+++ head/sys/dev/mpr/mpr_sas.c	Thu May 28 18:14:55 2015	(r283660)
@@ -1,7 +1,6 @@
 /*-
  * Copyright (c) 2009 Yahoo! Inc.
- * Copyright (c) 2011-2015 LSI Corp.
- * Copyright (c) 2013-2015 Avago Technologies
+ * Copyright (c) 2011-2014 LSI Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -24,15 +23,12 @@
  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
- *
- * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD
- *
  */
 
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD$");
 
-/* Communications core for Avago Technologies (LSI) MPT3 */
+/* Communications core for LSI MPT2 */
 
 /* TODO Move headers to mprvar */
 #include <sys/types.h>
@@ -126,10 +122,14 @@ static void mprsas_scsiio_complete(struc
 static void mprsas_action_resetdev(struct mprsas_softc *, union ccb *);
 static void mprsas_resetdev_complete(struct mpr_softc *,
     struct mpr_command *);
-static int mprsas_send_abort(struct mpr_softc *sc, struct mpr_command *tm,
+static int  mprsas_send_abort(struct mpr_softc *sc, struct mpr_command *tm,
     struct mpr_command *cm);
+static int  mprsas_send_reset(struct mpr_softc *sc, struct mpr_command *tm,
+    uint8_t type);
 static void mprsas_async(void *callback_arg, uint32_t code,
     struct cam_path *path, void *arg);
+static void mprsas_prepare_ssu(struct mpr_softc *sc, struct cam_path *path,
+    struct ccb_getdev *cgd);
 #if (__FreeBSD_version < 901503) || \
     ((__FreeBSD_version >= 1000000) && (__FreeBSD_version < 1000006))
 static void mprsas_check_eedp(struct mpr_softc *sc, struct cam_path *path,
@@ -142,12 +142,13 @@ static void mprsas_portenable_complete(s
     struct mpr_command *cm);
 
 #if __FreeBSD_version >= 900026
-static void mprsas_smpio_complete(struct mpr_softc *sc,
-    struct mpr_command *cm);
+static void
+mprsas_smpio_complete(struct mpr_softc *sc, struct mpr_command *cm);
 static void mprsas_send_smpcmd(struct mprsas_softc *sassc,
-    union ccb *ccb, uint64_t sasaddr);
-static void mprsas_action_smpio(struct mprsas_softc *sassc, union ccb *ccb);
-#endif //FreeBSD_version >= 900026
+	       	union ccb *ccb, uint64_t sasaddr);
+static void
+mprsas_action_smpio(struct mprsas_softc *sassc, union ccb *ccb);
+#endif
 
 struct mprsas_target *
 mprsas_find_target_by_handle(struct mprsas_softc *sassc, int start,
@@ -229,7 +230,7 @@ mprsas_startup_decrement(struct mprsas_s
 	}
 }
 
-/* The firmware requires us to stop sending commands when we're doing task
+/* LSI's firmware requires us to stop sending commands when we're doing task
  * management, so refcount the TMs and keep the simq frozen when any are in
  * use.
  */
@@ -240,31 +241,35 @@ mprsas_alloc_tm(struct mpr_softc *sc)
 
 	MPR_FUNCTRACE(sc);
 	tm = mpr_alloc_high_priority_command(sc);
+	if (tm != NULL) {
+		if (sc->sassc->tm_count++ == 0) {
+			mpr_dprint(sc, MPR_RECOVERY,
+			    "%s freezing simq\n", __func__);
+			xpt_freeze_simq(sc->sassc->sim, 1);
+		}
+		mpr_dprint(sc, MPR_RECOVERY, "%s tm_count %u\n", __func__,
+		    sc->sassc->tm_count);
+	}
 	return tm;
 }
 
 void
 mprsas_free_tm(struct mpr_softc *sc, struct mpr_command *tm)
 {
-	MPR_FUNCTRACE(sc);
+	mpr_dprint(sc, MPR_TRACE, "%s", __func__);
 	if (tm == NULL)
 		return;
 
-	/*
-	 * For TM's the devq is frozen for the device.  Unfreeze it here and
-	 * free the resources used for freezing the devq.  Must clear the
-	 * INRESET flag as well or scsi I/O will not work.
-	 */
-	if (tm->cm_targ != NULL) {
-		tm->cm_targ->flags &= ~MPRSAS_TARGET_INRESET;
-	}
-	if (tm->cm_ccb) {
-		mpr_dprint(sc, MPR_INFO, "Unfreezing devq for target ID %d\n",
-		    tm->cm_targ->tid);
-		xpt_release_devq(tm->cm_ccb->ccb_h.path, 1, TRUE);
-		xpt_free_path(tm->cm_ccb->ccb_h.path);
-		xpt_free_ccb(tm->cm_ccb);
+	/* if there are no TMs in use, we can release the simq.  We use our
+	 * own refcount so that it's easier for a diag reset to cleanup and
+	 * release the simq.
+	 */
+	if (--sc->sassc->tm_count == 0) {
+		mpr_dprint(sc, MPR_RECOVERY, "%s releasing simq\n", __func__);
+		xpt_release_simq(sc->sassc->sim, 1);
 	}
+	mpr_dprint(sc, MPR_RECOVERY, "%s tm_count %u\n", __func__,
+	    sc->sassc->tm_count);
 
 	mpr_free_high_priority_command(sc, tm);
 }
@@ -293,8 +298,8 @@ mprsas_rescan_target(struct mpr_softc *s
 		return;
 	}
 
-	if (xpt_create_path(&ccb->ccb_h.path, NULL, pathid, targetid,
-	    CAM_LUN_WILDCARD) != CAM_REQ_CMP) {
+	if (xpt_create_path(&ccb->ccb_h.path, NULL, pathid,
+	    targetid, CAM_LUN_WILDCARD) != CAM_REQ_CMP) {
 		mpr_dprint(sc, MPR_ERROR, "unable to create path for rescan\n");
 		xpt_free_ccb(ccb);
 		return;
@@ -468,16 +473,11 @@ mprsas_prepare_volume_remove(struct mprs
 	    MPI2_REQ_DESCRIPT_FLAGS_HIGH_PRIORITY;
 	cm->cm_complete = mprsas_remove_volume;
 	cm->cm_complete_data = (void *)(uintptr_t)handle;
-
-	mpr_dprint(sc, MPR_INFO, "%s: Sending reset for target ID %d\n",
-	    __func__, targ->tid);
-	mprsas_prepare_for_tm(sc, cm, targ, CAM_LUN_WILDCARD);
-
 	mpr_map_command(sc, cm);
 }
 
 /*
- * The MPT3 firmware performs debounce on the link to avoid transient link
+ * The MPT2 firmware performs debounce on the link to avoid transient link
  * errors and false removals.  When it does decide that link has been lost
  * and a device needs to go away, it expects that the host will perform a
  * target reset and then an op remove.  The reset has the side-effect of
@@ -532,11 +532,6 @@ mprsas_prepare_remove(struct mprsas_soft
 	    MPI2_REQ_DESCRIPT_FLAGS_HIGH_PRIORITY;
 	cm->cm_complete = mprsas_remove_device;
 	cm->cm_complete_data = (void *)(uintptr_t)handle;
-
-	mpr_dprint(sc, MPR_INFO, "%s: Sending reset for target ID %d\n",
-	    __func__, targ->tid);
-	mprsas_prepare_for_tm(sc, cm, targ, CAM_LUN_WILDCARD);
-
 	mpr_map_command(sc, cm);
 }
 
@@ -601,10 +596,10 @@ mprsas_remove_device(struct mpr_softc *s
 
 	mpr_map_command(sc, tm);
 
-	mpr_dprint(sc, MPR_INFO, "clearing target %u handle 0x%04x\n",
+	mpr_dprint(sc, MPR_XINFO, "clearing target %u handle 0x%04x\n",
 	    targ->tid, handle);
 	if (targ->encl_level_valid) {
-		mpr_dprint(sc, MPR_INFO, "At enclosure level %d, slot %d, "
+		mpr_dprint(sc, MPR_XINFO, "At enclosure level %d, slot %d, "
 		    "connector name (%4s)\n", targ->encl_level, targ->encl_slot,
 		    targ->connector_name);
 	}
@@ -613,7 +608,7 @@ mprsas_remove_device(struct mpr_softc *s
 
 		mpr_dprint(sc, MPR_XINFO, "Completing missed command %p\n", tm);
 		ccb = tm->cm_complete_data;
-		mprsas_set_ccbstatus(ccb, CAM_DEV_NOT_THERE);
+		ccb->ccb_h.status = CAM_DEV_NOT_THERE;
 		mprsas_scsiio_complete(sc, tm);
 	}
 }
@@ -731,7 +726,7 @@ mpr_attach_sas(struct mpr_softc *sc)

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



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