svn commit: r331228 - in head/sys/dev/mpr: . mpi

Alexander Motin mav at FreeBSD.org
Mon Mar 19 23:21:46 UTC 2018


Author: mav
Date: Mon Mar 19 23:21:45 2018
New Revision: 331228
URL: https://svnweb.freebsd.org/changeset/base/331228

Log:
  Update mpr(4) driver from v15 to v18 from Broadcom site.
  
  Version 16 is just a number bump, since we already had those changes.
  
  Version 17 introduces new AdapterType value, that allows new user-space
  tools from Broadcom to differentiate adapter generations 3 and 3.5.
  
  Version 18 updates headers and adds SAS_DEVICE_DISCOVERY_ERROR reporting.
  
  MFC after:	2 weeks

Modified:
  head/sys/dev/mpr/mpi/mpi2.h
  head/sys/dev/mpr/mpi/mpi2_cnfg.h
  head/sys/dev/mpr/mpi/mpi2_history.txt
  head/sys/dev/mpr/mpi/mpi2_ioc.h
  head/sys/dev/mpr/mpr_ioctl.h
  head/sys/dev/mpr/mpr_sas.c
  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	Mon Mar 19 22:43:27 2018	(r331227)
+++ head/sys/dev/mpr/mpi/mpi2.h	Mon Mar 19 23:21:45 2018	(r331228)
@@ -44,7 +44,7 @@
  *                  scatter/gather formats.
  *  Creation Date:  June 21, 2006
  *
- *  mpi2.h Version:  02.00.46
+ *  mpi2.h Version:  02.00.48
  *
  *  NOTE: Names (typedefs, defines, etc.) beginning with an MPI25 or Mpi25
  *        prefix are for use only on MPI v2.5 products, and must not be used
@@ -151,6 +151,8 @@
  *  04-10-16  02.00.44  Bumped MPI2_HEADER_VERSION_UNIT.
  *  07-06-16  02.00.45  Bumped MPI2_HEADER_VERSION_UNIT.
  *  09-02-16  02.00.46  Bumped MPI2_HEADER_VERSION_UNIT.
+ *  11-23-16  02.00.47  Bumped MPI2_HEADER_VERSION_UNIT.
+ *  02-03-17  02.00.48  Bumped MPI2_HEADER_VERSION_UNIT.
  *  --------------------------------------------------------------------------
  */
 
@@ -194,7 +196,7 @@
 
 
 /* Unit and Dev versioning for this MPI header set */
-#define MPI2_HEADER_VERSION_UNIT            (0x2E)
+#define MPI2_HEADER_VERSION_UNIT            (0x30)
 #define MPI2_HEADER_VERSION_DEV             (0x00)
 #define MPI2_HEADER_VERSION_UNIT_MASK       (0xFF00)
 #define MPI2_HEADER_VERSION_UNIT_SHIFT      (8)

Modified: head/sys/dev/mpr/mpi/mpi2_cnfg.h
==============================================================================
--- head/sys/dev/mpr/mpi/mpi2_cnfg.h	Mon Mar 19 22:43:27 2018	(r331227)
+++ head/sys/dev/mpr/mpi/mpi2_cnfg.h	Mon Mar 19 23:21:45 2018	(r331228)
@@ -42,7 +42,7 @@
  *          Title:  MPI Configuration messages and pages
  *  Creation Date:  November 10, 2006
  *
- *    mpi2_cnfg.h Version:  02.00.39
+ *    mpi2_cnfg.h Version:  02.00.40
  *
  *  NOTE: Names (typedefs, defines, etc.) beginning with an MPI25 or Mpi25
  *        prefix are for use only on MPI v2.5 products, and must not be used
@@ -255,6 +255,10 @@
  *  09-01-16  02.00.39  Added MPI26_CONFIG_PAGE_ENCLOSURE_0 and related defines.
  *                      Added MPI26_ENCLOS_PGAD_FORM_GET_NEXT_HANDLE and
  *                      MPI26_ENCLOS_PGAD_FORM_HANDLE page address formats.
+ *  02-02-17  02.00.40  Added MPI2_MANPAGE7_SLOT_UNKNOWN.
+ *                      Added ChassisSlot field to SAS Enclosure Page 0.
+ *                      Added ChassisSlot Valid bit (bit 5) to the Flags field
+ *                      in SAS Enclosure Page 0.
  *  --------------------------------------------------------------------------
  */
 
@@ -853,6 +857,9 @@ typedef struct _MPI2_MANPAGE7_CONNECTOR_INFO
 #define MPI2_MANPAGE7_LOCATION_NOT_PRESENT              (0x20)
 #define MPI2_MANPAGE7_LOCATION_NOT_CONNECTED            (0x80)
 
+/* defines for the Slot field */
+#define MPI2_MANPAGE7_SLOT_UNKNOWN                      (0xFFFF)
+
 /*
  * Host code (drivers, BIOS, utilities, etc.) should leave this define set to
  * one and check the value returned for NumPhys at runtime.
@@ -3092,11 +3099,11 @@ typedef struct _MPI2_CONFIG_PAGE_SAS_ENCLOSURE_0
     U16                                 EnclosureHandle;            /* 0x16 */
     U16                                 NumSlots;                   /* 0x18 */
     U16                                 StartSlot;                  /* 0x1A */
-    U8                                  Reserved2;                  /* 0x1C */
+    U8                                  ChassisSlot;                /* 0x1C */
     U8                                  EnclosureLevel;             /* 0x1D */
     U16                                 SEPDevHandle;               /* 0x1E */
-    U32                                 Reserved3;                  /* 0x20 */
-    U32                                 Reserved4;                  /* 0x24 */
+    U32                                 Reserved2;                  /* 0x20 */
+    U32                                 Reserved3;                  /* 0x24 */
 } MPI2_CONFIG_PAGE_SAS_ENCLOSURE_0,
   MPI2_POINTER PTR_MPI2_CONFIG_PAGE_SAS_ENCLOSURE_0,
   Mpi2SasEnclosurePage0_t, MPI2_POINTER pMpi2SasEnclosurePage0_t,
@@ -3107,6 +3114,7 @@ typedef struct _MPI2_CONFIG_PAGE_SAS_ENCLOSURE_0
 #define MPI2_SASENCLOSURE0_PAGEVERSION      (0x04)
 
 /* values for SAS Enclosure Page 0 Flags field */
+#define MPI2_SAS_ENCLS0_FLAGS_CHASSIS_SLOT_VALID    (0x0020)
 #define MPI2_SAS_ENCLS0_FLAGS_ENCL_LEVEL_VALID      (0x0010)
 #define MPI2_SAS_ENCLS0_FLAGS_MNG_MASK              (0x000F)
 #define MPI2_SAS_ENCLS0_FLAGS_MNG_UNKNOWN           (0x0000)
@@ -3119,6 +3127,7 @@ typedef struct _MPI2_CONFIG_PAGE_SAS_ENCLOSURE_0
 #define MPI26_ENCLOSURE0_PAGEVERSION        (0x04)
 
 /* Values for Enclosure Page 0 Flags field */
+#define MPI26_ENCLS0_FLAGS_CHASSIS_SLOT_VALID       (0x0020)
 #define MPI26_ENCLS0_FLAGS_ENCL_LEVEL_VALID         (0x0010)
 #define MPI26_ENCLS0_FLAGS_MNG_MASK                 (0x000F)
 #define MPI26_ENCLS0_FLAGS_MNG_UNKNOWN              (0x0000)

Modified: head/sys/dev/mpr/mpi/mpi2_history.txt
==============================================================================
--- head/sys/dev/mpr/mpi/mpi2_history.txt	Mon Mar 19 22:43:27 2018	(r331227)
+++ head/sys/dev/mpr/mpi/mpi2_history.txt	Mon Mar 19 23:21:45 2018	(r331228)
@@ -41,16 +41,16 @@
  All rights reserved.
 
  ---------------------------------------
- Header Set Release Version:    02.00.46
- Header Set Release Date:       09-07-16
+ Header Set Release Version:    02.00.48
+ Header Set Release Date:       02-03-17
  ---------------------------------------
 
  Filename               Current version     Prior version
  ----------             ---------------     -------------
- mpi2.h                 02.00.46            02.00.45
- mpi2_cnfg.h            02.00.39            02.00.38
+ mpi2.h                 02.00.48            02.00.47
+ mpi2_cnfg.h            02.00.40            02.00.39
  mpi2_init.h            02.00.21            02.00.21
- mpi2_ioc.h             02.00.30            02.00.29
+ mpi2_ioc.h             02.00.32            02.00.31
  mpi2_raid.h            02.00.11            02.00.11
  mpi2_sas.h             02.00.10            02.00.10
  mpi2_targ.h            02.00.09            02.00.09
@@ -59,7 +59,7 @@
  mpi2_ra.h              02.00.01            02.00.01
  mpi2_hbd.h             02.00.04            02.00.04
  mpi2_pci.h             02.00.02            02.00.02
- mpi2_history.txt       02.00.43            02.00.43
+ mpi2_history.txt       02.00.45            02.00.44
 
 
  *  Date      Version   Description
@@ -161,6 +161,8 @@ mpi2.h
  * 04-10-16  02.00.44   Bumped MPI2_HEADER_VERSION_UNIT.
  * 07-06-16  02.00.45   Bumped MPI2_HEADER_VERSION_UNIT.
  * 09-02-16  02.00.46   Bumped MPI2_HEADER_VERSION_UNIT.
+ * 11-23-16  02.00.47   Bumped MPI2_HEADER_VERSION_UNIT.
+ * 02-03-17  02.00.48   Bumped MPI2_HEADER_VERSION_UNIT.
  *  --------------------------------------------------------------------------
 
 mpi2_cnfg.h
@@ -363,8 +365,12 @@ mpi2_cnfg.h
  *                      phy data.
  *                      Added InitStatus to PCIe IO Unit Page 1 header.
  *  09-01-16  02.00.39  Added MPI26_CONFIG_PAGE_ENCLOSURE_0 and related defines.
- *                      Added MPI26_ENCLOS_PGAD_FORM_GET_NEXT_HANDLE and 
- *                      MPI26_ENCLOS_PGAD_FORM_HANDLE page address formats. 
+ *                      Added MPI26_ENCLOS_PGAD_FORM_GET_NEXT_HANDLE and
+ *                      MPI26_ENCLOS_PGAD_FORM_HANDLE page address formats.
+ *  02-02-17  02.00.40  Added MPI2_MANPAGE7_SLOT_UNKNOWN.
+ *                      Added ChassisSlot field to SAS Enclosure Page 0.
+ *                      Added ChassisSlot Valid bit (bit 5) to the Flags field
+ *                      in SAS Enclosure Page 0.
  *  --------------------------------------------------------------------------
 
 mpi2_init.h
@@ -551,10 +557,15 @@ mpi2_ioc.h
  *                      Request Message.
  *                      Added new values for the RegionType field in the Layout
  *                      Data sections of the FLASH Layout Extended Image Data.
- *                      Added new defines for the ReasonCode field of 
+ *                      Added new defines for the ReasonCode field of
  *                      Active Cable Exception Event.
- *                      Added MPI2_EVENT_ENCL_DEVICE_STATUS_CHANGE and 
- *                      MPI26_EVENT_DATA_ENCL_DEV_STATUS_CHANGE. 
+ *                      Added MPI2_EVENT_ENCL_DEVICE_STATUS_CHANGE and
+ *                      MPI26_EVENT_DATA_ENCL_DEV_STATUS_CHANGE.
+ * 11-23-16   02.00.31  Added MPI2_EVENT_SAS_DEVICE_DISCOVERY_ERROR and
+ *                      MPI25_EVENT_DATA_SAS_DEVICE_DISCOVERY_ERROR.
+ * 02-02-17   02.00.32  Added MPI2_FW_DOWNLOAD_ITYPE_CBB_BACKUP.
+ *                      Added MPI25_EVENT_DATA_ACTIVE_CABLE_EXCEPT and related
+ *                      defines for the ReasonCode field.
  * --------------------------------------------------------------------------
 
 mpi2_raid.h
@@ -676,20 +687,35 @@ mpi2_pci.h
 
 mpi2_history.txt         Parts list history
 
-Filename     02.00.46  02.00.45  02.00.44  02.00.43  02.00.42
-----------   --------  --------  --------  --------  --------
-mpi2.h       02.00.46  02.00.45  02.00.44  02.00.43  02.00.42
-mpi2_cnfg.h  02.00.39  02.00.38  02.00.37  02.00.36  02.00.35
-mpi2_init.h  02.00.21  02.00.21  02.00.21  02.00.21  02.00.20
-mpi2_ioc.h   02.00.30  02.00.29  02.00.28  02.00.28  02.00.27
-mpi2_raid.h  02.00.11  02.00.11  02.00.11  02.00.11  02.00.11
-mpi2_sas.h   02.00.10  02.00.10  02.00.10  02.00.10  02.00.10
-mpi2_targ.h  02.00.09  02.00.09  02.00.09  02.00.09  02.00.09
-mpi2_tool.h  02.00.14  02.00.13  02.00.13  02.00.13  02.00.13
-mpi2_type.h  02.00.01  02.00.01  02.00.01  02.00.01  02.00.01
-mpi2_ra.h    02.00.01  02.00.01  02.00.01  02.00.01  02.00.01
-mpi2_hbd.h   02.00.04  02.00.04  02.00.04  02.00.04  02.00.03
-mpi2_pci.h   02.00.02  02.00.02  02.00.01  02.00.01  02.00.00
+Filename     02.00.48
+----------   --------
+mpi2.h       02.00.48
+mpi2_cnfg.h  02.00.40
+mpi2_init.h  02.00.21
+mpi2_ioc.h   02.00.32
+mpi2_raid.h  02.00.11
+mpi2_sas.h   02.00.10
+mpi2_targ.h  02.00.09
+mpi2_tool.h  02.00.14
+mpi2_type.h  02.00.01
+mpi2_ra.h    02.00.01
+mpi2_hbd.h   02.00.04
+mpi2_pci.h   02.00.02
+
+Filename     02.00.47  02.00.46  02.00.45  02.00.44  02.00.43  02.00.42
+----------   --------  --------  --------  --------  --------  --------
+mpi2.h       02.00.47  02.00.46  02.00.45  02.00.44  02.00.43  02.00.42
+mpi2_cnfg.h  02.00.39  02.00.39  02.00.38  02.00.37  02.00.36  02.00.35
+mpi2_init.h  02.00.21  02.00.21  02.00.21  02.00.21  02.00.21  02.00.20
+mpi2_ioc.h   02.00.31  02.00.30  02.00.29  02.00.28  02.00.28  02.00.27
+mpi2_raid.h  02.00.11  02.00.11  02.00.11  02.00.11  02.00.11  02.00.11
+mpi2_sas.h   02.00.10  02.00.10  02.00.10  02.00.10  02.00.10  02.00.10
+mpi2_targ.h  02.00.09  02.00.09  02.00.09  02.00.09  02.00.09  02.00.09
+mpi2_tool.h  02.00.14  02.00.14  02.00.13  02.00.13  02.00.13  02.00.13
+mpi2_type.h  02.00.01  02.00.01  02.00.01  02.00.01  02.00.01  02.00.01
+mpi2_ra.h    02.00.01  02.00.01  02.00.01  02.00.01  02.00.01  02.00.01
+mpi2_hbd.h   02.00.04  02.00.04  02.00.04  02.00.04  02.00.04  02.00.03
+mpi2_pci.h   02.00.02  02.00.02  02.00.02  02.00.01  02.00.01  02.00.00
 
 Filename     02.00.41  02.00.40  02.00.39  02.00.38  02.00.37  02.00.36
 ----------   --------  --------  --------  --------  --------  --------

Modified: head/sys/dev/mpr/mpi/mpi2_ioc.h
==============================================================================
--- head/sys/dev/mpr/mpi/mpi2_ioc.h	Mon Mar 19 22:43:27 2018	(r331227)
+++ head/sys/dev/mpr/mpi/mpi2_ioc.h	Mon Mar 19 23:21:45 2018	(r331228)
@@ -42,7 +42,7 @@
  *          Title:  MPI IOC, Port, Event, FW Download, and FW Upload messages
  *  Creation Date:  October 11, 2006
  *
- *  mpi2_ioc.h Version:  02.00.30
+ *  mpi2_ioc.h Version:  02.00.32
  *
  *  NOTE: Names (typedefs, defines, etc.) beginning with an MPI25 or Mpi25
  *        prefix are for use only on MPI v2.5 products, and must not be used
@@ -200,6 +200,11 @@
  *                      Active Cable Exception Event.
  *                      Added MPI2_EVENT_ENCL_DEVICE_STATUS_CHANGE and
  *                      MPI26_EVENT_DATA_ENCL_DEV_STATUS_CHANGE.
+ * 11-23-16   02.00.31  Added MPI2_EVENT_SAS_DEVICE_DISCOVERY_ERROR and
+ *                      MPI25_EVENT_DATA_SAS_DEVICE_DISCOVERY_ERROR.
+ * 02-02-17   02.00.32  Added MPI2_FW_DOWNLOAD_ITYPE_CBB_BACKUP.
+ *                      Added MPI25_EVENT_DATA_ACTIVE_CABLE_EXCEPT and related
+ *                      defines for the ReasonCode field.
  *  --------------------------------------------------------------------------
  */
 
@@ -610,6 +615,7 @@ typedef struct _MPI2_EVENT_NOTIFICATION_REPLY
 #define MPI2_EVENT_PCIE_TOPOLOGY_CHANGE_LIST        (0x0032) /* MPI v2.6 and later */
 #define MPI2_EVENT_PCIE_LINK_COUNTER                (0x0033) /* MPI v2.6 and later */
 #define MPI2_EVENT_ACTIVE_CABLE_EXCEPTION           (0x0034) /* MPI v2.6 and later */
+#define MPI2_EVENT_SAS_DEVICE_DISCOVERY_ERROR       (0x0035) /* MPI v2.5 and later */
 #define MPI2_EVENT_MIN_PRODUCT_SPECIFIC             (0x006E)
 #define MPI2_EVENT_MAX_PRODUCT_SPECIFIC             (0x007F)
 
@@ -715,12 +721,21 @@ typedef struct _MPI26_EVENT_DATA_ACTIVE_CABLE_EXCEPT
     U8          ReasonCode;                         /* 0x04 */
     U8          ReceptacleID;                       /* 0x05 */
     U16         Reserved1;                          /* 0x06 */
-} MPI26_EVENT_DATA_ACTIVE_CABLE_EXCEPT,
+} MPI25_EVENT_DATA_ACTIVE_CABLE_EXCEPT,
+  MPI2_POINTER PTR_MPI25_EVENT_DATA_ACTIVE_CABLE_EXCEPT,
+  Mpi25EventDataActiveCableExcept_t,
+  MPI2_POINTER pMpi25EventDataActiveCableExcept_t,
+  MPI26_EVENT_DATA_ACTIVE_CABLE_EXCEPT,
   MPI2_POINTER PTR_MPI26_EVENT_DATA_ACTIVE_CABLE_EXCEPT,
   Mpi26EventDataActiveCableExcept_t,
   MPI2_POINTER pMpi26EventDataActiveCableExcept_t;
 
-/* defines for ReasonCode field */
+/* MPI2.5 defines for the ReasonCode field */
+#define MPI25_EVENT_ACTIVE_CABLE_INSUFFICIENT_POWER     (0x00)
+#define MPI25_EVENT_ACTIVE_CABLE_PRESENT                (0x01)
+#define MPI25_EVENT_ACTIVE_CABLE_DEGRADED               (0x02)
+
+/* MPI2.6 defines for the ReasonCode field */
 #define MPI26_EVENT_ACTIVE_CABLE_INSUFFICIENT_POWER     (0x00)
 #define MPI26_EVENT_ACTIVE_CABLE_PRESENT                (0x01)
 #define MPI26_EVENT_ACTIVE_CABLE_DEGRADED               (0x02)
@@ -1168,6 +1183,24 @@ typedef struct _MPI2_EVENT_DATA_SAS_QUIESCE
 #define MPI2_EVENT_SAS_QUIESCE_RC_COMPLETED                 (0x02)
 
 
+typedef struct _MPI25_EVENT_DATA_SAS_DEVICE_DISCOVERY_ERROR
+{
+    U16         DevHandle;                  /* 0x00 */
+    U8          ReasonCode;                 /* 0x02 */
+    U8          PhysicalPort;               /* 0x03 */
+    U32         Reserved1[2];               /* 0x04 */
+    U64         SASAddress;                 /* 0x0C */
+    U32         Reserved2[2];               /* 0x14 */
+} MPI25_EVENT_DATA_SAS_DEVICE_DISCOVERY_ERROR,
+  MPI2_POINTER PTR_MPI25_EVENT_DATA_SAS_DEVICE_DISCOVERY_ERROR,
+  Mpi25EventDataSasDeviceDiscoveryError_t,
+  MPI2_POINTER pMpi25EventDataSasDeviceDiscoveryError_t;
+
+/* SAS Device Discovery Error Event data ReasonCode values */
+#define MPI25_EVENT_SAS_DISC_ERR_SMP_FAILED         (0x01)
+#define MPI25_EVENT_SAS_DISC_ERR_SMP_TIMEOUT        (0x02)
+
+
 /* Host Based Discovery Phy Event data */
 
 typedef struct _MPI2_EVENT_HBD_PHY_SAS
@@ -1493,6 +1526,7 @@ typedef struct _MPI2_FW_DOWNLOAD_REQUEST
 #define MPI2_FW_DOWNLOAD_ITYPE_COMPLETE             (0x0A)
 #define MPI2_FW_DOWNLOAD_ITYPE_COMMON_BOOT_BLOCK    (0x0B)
 #define MPI2_FW_DOWNLOAD_ITYPE_PUBLIC_KEY           (0x0C) /* MPI v2.5 and newer */
+#define MPI2_FW_DOWNLOAD_ITYPE_CBB_BACKUP           (0x0D)
 #define MPI2_FW_DOWNLOAD_ITYPE_SBR                  (0x0E)
 #define MPI2_FW_DOWNLOAD_ITYPE_SBR_BACKUP           (0x0F)
 #define MPI2_FW_DOWNLOAD_ITYPE_HIIM                 (0x10)

Modified: head/sys/dev/mpr/mpr_ioctl.h
==============================================================================
--- head/sys/dev/mpr/mpr_ioctl.h	Mon Mar 19 22:43:27 2018	(r331227)
+++ head/sys/dev/mpr/mpr_ioctl.h	Mon Mar 19 23:21:45 2018	(r331228)
@@ -149,6 +149,7 @@ typedef struct mpr_pci_bits
  *
  */
 #define	MPRIOCTL_ADAPTER_TYPE_SAS3		6
+#define	MPRIOCTL_ADAPTER_TYPE_SAS35		7
 typedef struct mpr_adapter_data
 {
 	uint32_t	StructureLength;
@@ -202,7 +203,7 @@ typedef struct mpr_pass_thru
 /*
  * Event queue defines
  */
-#define	MPR_EVENT_QUEUE_SIZE		(50) /* Max Events stored in driver */
+#define	MPR_EVENT_QUEUE_SIZE		(200) /* Max Events stored in driver */
 #define	MPR_MAX_EVENT_DATA_LENGTH	(48) /* Size of each event in Dwords */
 
 typedef struct mpr_event_query

Modified: head/sys/dev/mpr/mpr_sas.c
==============================================================================
--- head/sys/dev/mpr/mpr_sas.c	Mon Mar 19 22:43:27 2018	(r331227)
+++ head/sys/dev/mpr/mpr_sas.c	Mon Mar 19 23:21:45 2018	(r331228)
@@ -708,6 +708,7 @@ mprsas_register_events(struct mpr_softc *sc)
 	setbit(events, MPI2_EVENT_IR_PHYSICAL_DISK);
 	setbit(events, MPI2_EVENT_IR_OPERATION_STATUS);
 	setbit(events, MPI2_EVENT_TEMP_THRESHOLD);
+	setbit(events, MPI2_EVENT_SAS_DEVICE_DISCOVERY_ERROR);
 	if (sc->facts->MsgVersion >= MPI2_VERSION_02_06) {
 		setbit(events, MPI2_EVENT_ACTIVE_CABLE_EXCEPTION);
 		if (sc->mpr_flags & MPR_FLAGS_GEN35_IOC) {

Modified: head/sys/dev/mpr/mpr_sas_lsi.c
==============================================================================
--- head/sys/dev/mpr/mpr_sas_lsi.c	Mon Mar 19 22:43:27 2018	(r331227)
+++ head/sys/dev/mpr/mpr_sas_lsi.c	Mon Mar 19 23:21:45 2018	(r331228)
@@ -681,6 +681,41 @@ skip_fp_send:
 		}
 		break;
 	}
+	case MPI2_EVENT_SAS_DEVICE_DISCOVERY_ERROR:
+	{
+		pMpi25EventDataSasDeviceDiscoveryError_t discovery_error_data;
+		uint64_t sas_address;
+
+		discovery_error_data =
+		    (pMpi25EventDataSasDeviceDiscoveryError_t)
+		    fw_event->event_data;
+		
+		sas_address = discovery_error_data->SASAddress.High;
+		sas_address = (sas_address << 32) |
+		    discovery_error_data->SASAddress.Low;
+
+		switch(discovery_error_data->ReasonCode) {
+		case MPI25_EVENT_SAS_DISC_ERR_SMP_FAILED:
+		{
+			mpr_printf(sc, "SMP command failed during discovery "
+			    "for expander with SAS Address %jx and "
+			    "handle 0x%x.\n", sas_address,
+			    discovery_error_data->DevHandle);
+			break;
+		}
+		case MPI25_EVENT_SAS_DISC_ERR_SMP_TIMEOUT:
+		{
+			mpr_printf(sc, "SMP command timed out during "
+			    "discovery for expander with SAS Address %jx and "
+			    "handle 0x%x.\n", sas_address,
+			    discovery_error_data->DevHandle);
+			break;
+		}
+		default:
+			break;
+		}
+		break;
+	}
 	case MPI2_EVENT_PCIE_TOPOLOGY_CHANGE_LIST: 
 	{
 		MPI26_EVENT_DATA_PCIE_TOPOLOGY_CHANGE_LIST *data;

Modified: head/sys/dev/mpr/mpr_user.c
==============================================================================
--- head/sys/dev/mpr/mpr_user.c	Mon Mar 19 22:43:27 2018	(r331227)
+++ head/sys/dev/mpr/mpr_user.c	Mon Mar 19 23:21:45 2018	(r331228)
@@ -1189,7 +1189,10 @@ mpr_user_get_adapter_data(struct mpr_softc *sc, mpr_ad
 	/*
 	 * General device info.
 	 */
-	data->AdapterType = MPRIOCTL_ADAPTER_TYPE_SAS3;
+	if (sc->mpr_flags & MPR_FLAGS_GEN35_IOC)
+		data->AdapterType = MPRIOCTL_ADAPTER_TYPE_SAS35;
+	else
+		data->AdapterType = MPRIOCTL_ADAPTER_TYPE_SAS3;
 	data->PCIDeviceHwId = pci_get_device(sc->mpr_dev);
 	data->PCIDeviceHwRev = pci_read_config(sc->mpr_dev, PCIR_REVID, 1);
 	data->SubSystemId = pci_get_subdevice(sc->mpr_dev);

Modified: head/sys/dev/mpr/mprvar.h
==============================================================================
--- head/sys/dev/mpr/mprvar.h	Mon Mar 19 22:43:27 2018	(r331227)
+++ head/sys/dev/mpr/mprvar.h	Mon Mar 19 23:21:45 2018	(r331228)
@@ -33,7 +33,7 @@
 #ifndef _MPRVAR_H
 #define _MPRVAR_H
 
-#define MPR_DRIVER_VERSION	"15.03.00.00-fbsd"
+#define MPR_DRIVER_VERSION	"18.03.00.00-fbsd"
 
 #define MPR_DB_MAX_WAIT		2500
 


More information about the svn-src-head mailing list