mirror of https://gitee.com/openkylin/linux.git
scsi: mpt3sas: Added support for SAS Device Discovery Error Event.
The SAS Device Discovery Error Event is sent to the host when discovery for a particular device is failed during discovery, even after maximum retries by the IOC. Signed-off-by: Chaitra P B <chaitra.basappa@broadcom.com> Signed-off-by: Suganath Prabu S <suganath-prabu.subramani@broadcom.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
e21fef6f33
commit
95540b8eaf
|
@ -1030,6 +1030,9 @@ _base_display_event_data(struct MPT3SAS_ADAPTER *ioc,
|
||||||
case MPI2_EVENT_ACTIVE_CABLE_EXCEPTION:
|
case MPI2_EVENT_ACTIVE_CABLE_EXCEPTION:
|
||||||
desc = "Cable Event";
|
desc = "Cable Event";
|
||||||
break;
|
break;
|
||||||
|
case MPI2_EVENT_SAS_DEVICE_DISCOVERY_ERROR:
|
||||||
|
desc = "SAS Device Discovery Error";
|
||||||
|
break;
|
||||||
case MPI2_EVENT_PCIE_DEVICE_STATUS_CHANGE:
|
case MPI2_EVENT_PCIE_DEVICE_STATUS_CHANGE:
|
||||||
desc = "PCIE Device Status Change";
|
desc = "PCIE Device Status Change";
|
||||||
break;
|
break;
|
||||||
|
@ -6599,6 +6602,7 @@ mpt3sas_base_attach(struct MPT3SAS_ADAPTER *ioc)
|
||||||
_base_unmask_events(ioc, MPI2_EVENT_LOG_ENTRY_ADDED);
|
_base_unmask_events(ioc, MPI2_EVENT_LOG_ENTRY_ADDED);
|
||||||
_base_unmask_events(ioc, MPI2_EVENT_TEMP_THRESHOLD);
|
_base_unmask_events(ioc, MPI2_EVENT_TEMP_THRESHOLD);
|
||||||
_base_unmask_events(ioc, MPI2_EVENT_ACTIVE_CABLE_EXCEPTION);
|
_base_unmask_events(ioc, MPI2_EVENT_ACTIVE_CABLE_EXCEPTION);
|
||||||
|
_base_unmask_events(ioc, MPI2_EVENT_SAS_DEVICE_DISCOVERY_ERROR);
|
||||||
if (ioc->hba_mpi_version_belonged == MPI26_VERSION) {
|
if (ioc->hba_mpi_version_belonged == MPI26_VERSION) {
|
||||||
if (ioc->is_gen35_ioc) {
|
if (ioc->is_gen35_ioc) {
|
||||||
_base_unmask_events(ioc,
|
_base_unmask_events(ioc,
|
||||||
|
|
|
@ -7526,6 +7526,44 @@ _scsih_sas_discovery_event(struct MPT3SAS_ADAPTER *ioc,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* _scsih_sas_device_discovery_error_event - display SAS device discovery error
|
||||||
|
* events
|
||||||
|
* @ioc: per adapter object
|
||||||
|
* @fw_event: The fw_event_work object
|
||||||
|
* Context: user.
|
||||||
|
*
|
||||||
|
* Return nothing.
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
_scsih_sas_device_discovery_error_event(struct MPT3SAS_ADAPTER *ioc,
|
||||||
|
struct fw_event_work *fw_event)
|
||||||
|
{
|
||||||
|
Mpi25EventDataSasDeviceDiscoveryError_t *event_data =
|
||||||
|
(Mpi25EventDataSasDeviceDiscoveryError_t *)fw_event->event_data;
|
||||||
|
|
||||||
|
switch (event_data->ReasonCode) {
|
||||||
|
case MPI25_EVENT_SAS_DISC_ERR_SMP_FAILED:
|
||||||
|
pr_warn(MPT3SAS_FMT "SMP command sent to the expander"
|
||||||
|
"(handle:0x%04x, sas_address:0x%016llx,"
|
||||||
|
"physical_port:0x%02x) has failed",
|
||||||
|
ioc->name, le16_to_cpu(event_data->DevHandle),
|
||||||
|
(unsigned long long)le64_to_cpu(event_data->SASAddress),
|
||||||
|
event_data->PhysicalPort);
|
||||||
|
break;
|
||||||
|
case MPI25_EVENT_SAS_DISC_ERR_SMP_TIMEOUT:
|
||||||
|
pr_warn(MPT3SAS_FMT "SMP command sent to the expander"
|
||||||
|
"(handle:0x%04x, sas_address:0x%016llx,"
|
||||||
|
"physical_port:0x%02x) has timed out",
|
||||||
|
ioc->name, le16_to_cpu(event_data->DevHandle),
|
||||||
|
(unsigned long long)le64_to_cpu(event_data->SASAddress),
|
||||||
|
event_data->PhysicalPort);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* _scsih_pcie_enumeration_event - handle enumeration events
|
* _scsih_pcie_enumeration_event - handle enumeration events
|
||||||
* @ioc: per adapter object
|
* @ioc: per adapter object
|
||||||
|
@ -9353,6 +9391,9 @@ _mpt3sas_fw_work(struct MPT3SAS_ADAPTER *ioc, struct fw_event_work *fw_event)
|
||||||
case MPI2_EVENT_SAS_DISCOVERY:
|
case MPI2_EVENT_SAS_DISCOVERY:
|
||||||
_scsih_sas_discovery_event(ioc, fw_event);
|
_scsih_sas_discovery_event(ioc, fw_event);
|
||||||
break;
|
break;
|
||||||
|
case MPI2_EVENT_SAS_DEVICE_DISCOVERY_ERROR:
|
||||||
|
_scsih_sas_device_discovery_error_event(ioc, fw_event);
|
||||||
|
break;
|
||||||
case MPI2_EVENT_SAS_BROADCAST_PRIMITIVE:
|
case MPI2_EVENT_SAS_BROADCAST_PRIMITIVE:
|
||||||
_scsih_sas_broadcast_primitive_event(ioc, fw_event);
|
_scsih_sas_broadcast_primitive_event(ioc, fw_event);
|
||||||
break;
|
break;
|
||||||
|
@ -9537,6 +9578,7 @@ mpt3sas_scsih_event_callback(struct MPT3SAS_ADAPTER *ioc, u8 msix_index,
|
||||||
case MPI2_EVENT_SAS_DEVICE_STATUS_CHANGE:
|
case MPI2_EVENT_SAS_DEVICE_STATUS_CHANGE:
|
||||||
case MPI2_EVENT_IR_OPERATION_STATUS:
|
case MPI2_EVENT_IR_OPERATION_STATUS:
|
||||||
case MPI2_EVENT_SAS_DISCOVERY:
|
case MPI2_EVENT_SAS_DISCOVERY:
|
||||||
|
case MPI2_EVENT_SAS_DEVICE_DISCOVERY_ERROR:
|
||||||
case MPI2_EVENT_SAS_ENCL_DEVICE_STATUS_CHANGE:
|
case MPI2_EVENT_SAS_ENCL_DEVICE_STATUS_CHANGE:
|
||||||
case MPI2_EVENT_IR_PHYSICAL_DISK:
|
case MPI2_EVENT_IR_PHYSICAL_DISK:
|
||||||
case MPI2_EVENT_PCIE_ENUMERATION:
|
case MPI2_EVENT_PCIE_ENUMERATION:
|
||||||
|
|
Loading…
Reference in New Issue