summaryrefslogtreecommitdiff
path: root/drivers/scsi/smartpqi
diff options
context:
space:
mode:
authorKevin Barnett <kevin.barnett@microsemi.com>2016-08-31 22:54:23 +0300
committerMartin K. Petersen <martin.petersen@oracle.com>2016-09-02 13:21:37 +0300
commit77668f412dbcd6a9dd04c92f0b170c5b5182a5fb (patch)
tree9bd915c6a8e7241094b305a2000cd70df2ad389c /drivers/scsi/smartpqi
parentb17f048658c9b1bc8ac1d9a54b223f740c70f8fd (diff)
downloadlinux-77668f412dbcd6a9dd04c92f0b170c5b5182a5fb.tar.xz
scsi: smartpqi: simplify spanning
Removed the workaround for the transition to spanning. Reviewed-by: Scott Teel <scott.teel@microsemi.com> Reviewed-by: Scott Benesh <scott.benesh@microsemi.com> Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de> Reviewed-by: Tomas Henzl <thenzl@redhat.com> Signed-off-by: Kevin Barnett <kevin.barnett@microsemi.com> Signed-off-by: Don Brace <don.brace@microsemi.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'drivers/scsi/smartpqi')
-rw-r--r--drivers/scsi/smartpqi/smartpqi_init.c38
1 files changed, 20 insertions, 18 deletions
diff --git a/drivers/scsi/smartpqi/smartpqi_init.c b/drivers/scsi/smartpqi/smartpqi_init.c
index 6eab38e0d5e9..9922e31f0b14 100644
--- a/drivers/scsi/smartpqi/smartpqi_init.c
+++ b/drivers/scsi/smartpqi/smartpqi_init.c
@@ -3663,6 +3663,18 @@ static int pqi_validate_device_capability(struct pqi_ctrl_info *ctrl_info)
return -EINVAL;
}
+ if (!ctrl_info->inbound_spanning_supported) {
+ dev_err(&ctrl_info->pci_dev->dev,
+ "the controller does not support inbound spanning\n");
+ return -EINVAL;
+ }
+
+ if (ctrl_info->outbound_spanning_supported) {
+ dev_err(&ctrl_info->pci_dev->dev,
+ "the controller supports outbound spanning but this driver does not\n");
+ return -EINVAL;
+ }
+
return 0;
}
@@ -4138,24 +4150,14 @@ static void pqi_calculate_queue_resources(struct pqi_ctrl_info *ctrl_info)
ctrl_info->num_queue_groups = num_queue_groups;
- if (ctrl_info->max_inbound_iu_length_per_firmware == 256 &&
- ctrl_info->outbound_spanning_supported) {
- /*
- * TEMPHACK
- * This is older f/w that doesn't actually support spanning.
- */
- ctrl_info->max_inbound_iu_length =
- PQI_OPERATIONAL_IQ_ELEMENT_LENGTH;
- } else {
- /*
- * Make sure that the max. inbound IU length is an even multiple
- * of our inbound element length.
- */
- ctrl_info->max_inbound_iu_length =
- (ctrl_info->max_inbound_iu_length_per_firmware /
- PQI_OPERATIONAL_IQ_ELEMENT_LENGTH) *
- PQI_OPERATIONAL_IQ_ELEMENT_LENGTH;
- }
+ /*
+ * Make sure that the max. inbound IU length is an even multiple
+ * of our inbound element length.
+ */
+ ctrl_info->max_inbound_iu_length =
+ (ctrl_info->max_inbound_iu_length_per_firmware /
+ PQI_OPERATIONAL_IQ_ELEMENT_LENGTH) *
+ PQI_OPERATIONAL_IQ_ELEMENT_LENGTH;
num_elements_per_iq =
(ctrl_info->max_inbound_iu_length /