From 0656476aa64a81502dfd4643d24aa6d077a861ca Mon Sep 17 00:00:00 2001 From: Alexander Motin Date: Mon, 6 Mar 2017 19:39:31 +0000 Subject: [PATCH] Import mpr(4) driver P12 to P14 diff from vendor site. This is mostly a version bump to stay in version number sync with firmware. The only change there was cosmetic: Display degraded speed message upon receiving Active Cable Exception Event with DEGRADED reason code. Discussed with: slm@ MFC after: 1 week --- sys/dev/mpr/mpi/mpi2_ioc.h | 5 ++++- sys/dev/mpr/mpr_sas_lsi.c | 18 +++++++++++++++--- sys/dev/mpr/mpr_table.c | 6 ++++++ sys/dev/mpr/mprvar.h | 2 +- 4 files changed, 26 insertions(+), 5 deletions(-) diff --git a/sys/dev/mpr/mpi/mpi2_ioc.h b/sys/dev/mpr/mpi/mpi2_ioc.h index 37f01c66619..003f7cd6228 100644 --- a/sys/dev/mpr/mpi/mpi2_ioc.h +++ b/sys/dev/mpr/mpi/mpi2_ioc.h @@ -688,7 +688,10 @@ typedef struct _MPI26_EVENT_DATA_ACTIVE_CABLE_EXCEPT MPI2_POINTER pMpi26EventDataActiveCableExcept_t; /* defines for ReasonCode field */ -#define MPI26_EVENT_ACTIVE_CABLE_INSUFFICIENT_POWER (0x00) +#define MPI26_EVENT_ACTIVE_CABLE_INSUFFICIENT_POWER (0x00) +#define MPI26_EVENT_ACTIVE_CABLE_PRESENT (0x01) +#define MPI26_EVENT_ACTIVE_CABLE_DEGRADED (0x02) + /* Hard Reset Received Event data */ diff --git a/sys/dev/mpr/mpr_sas_lsi.c b/sys/dev/mpr/mpr_sas_lsi.c index 3150dfc6a9e..9555a719c8c 100644 --- a/sys/dev/mpr/mpr_sas_lsi.c +++ b/sys/dev/mpr/mpr_sas_lsi.c @@ -651,14 +651,26 @@ skip_fp_send: ace_event_data = (pMpi26EventDataActiveCableExcept_t)fw_event->event_data; - if (ace_event_data->ReasonCode == - MPI26_EVENT_ACTIVE_CABLE_INSUFFICIENT_POWER) { - mpr_printf(sc, "Currently an active cable with " + switch(ace_event_data->ReasonCode) { + case MPI26_EVENT_ACTIVE_CABLE_INSUFFICIENT_POWER: + { + mpr_printf(sc, "Currently a cable with " "ReceptacleID %d cannot be powered and device " "connected to this active cable will not be seen. " "This active cable requires %d mW of power.\n", ace_event_data->ReceptacleID, ace_event_data->ActiveCablePowerRequirement); + break; + } + case MPI26_EVENT_ACTIVE_CABLE_DEGRADED: + { + mpr_printf(sc, "Currently a cable with " + "ReceptacleID %d is not running at optimal speed " + "(12 Gb/s rate)\n", ace_event_data->ReceptacleID); + break; + } + default: + break; } break; } diff --git a/sys/dev/mpr/mpr_table.c b/sys/dev/mpr/mpr_table.c index d7920034ac6..2dab6103483 100644 --- a/sys/dev/mpr/mpr_table.c +++ b/sys/dev/mpr/mpr_table.c @@ -95,6 +95,12 @@ struct mpr_table_lookup mpr_event_names[] = { {"SasPhyCounter", 0x22}, {"GpioInterrupt", 0x23}, {"HbdPhyEvent", 0x24}, + {"SasQuiesce", 0x25}, + {"SasNotifyPrimitive", 0x26}, + {"TempThreshold", 0x27}, + {"HostMessage", 0x28}, + {"PowerPerformanceChange", 0x29}, + {"CableEvent", 0x34}, {NULL, 0}, {"Unknown Event", 0} }; diff --git a/sys/dev/mpr/mprvar.h b/sys/dev/mpr/mprvar.h index 4f0e9e70e09..981358bcf91 100644 --- a/sys/dev/mpr/mprvar.h +++ b/sys/dev/mpr/mprvar.h @@ -33,7 +33,7 @@ #ifndef _MPRVAR_H #define _MPRVAR_H -#define MPR_DRIVER_VERSION "13.01.00.00-fbsd" +#define MPR_DRIVER_VERSION "15.01.00.00-fbsd" #define MPR_DB_MAX_WAIT 2500