aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi
diff options
context:
space:
mode:
authorWendy Xiong <wenxiong@linux.vnet.ibm.com>2014-01-21 13:16:39 -0500
committerJames Bottomley <JBottomley@Parallels.com>2014-03-19 18:04:38 -0400
commit0b1f8d445b8cc5ac58786334f1ddaefa09fdf096 (patch)
treea65f9408d454819c1a8592e5721f1460bd9eeeef /drivers/scsi
parent0759c666a39f16ab3a42d37b1e8fb0f246f97f52 (diff)
[SCSI] ipr: Remove extended delay bit on GSCSI reads/writes ops
This patch removes extended delay bit on GSCSI reads/writes ops, the performance will be significanly better. Signed-off-by: Wen Xiong <wenxiong@linux.vnet.ibm.com> Acked-by: Brian King <brking@linux.vnet.ibm.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/ipr.c6
-rw-r--r--drivers/scsi/ipr.h1
2 files changed, 6 insertions, 1 deletions
diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c
index 3f5b56a99892..7e1276a35e41 100644
--- a/drivers/scsi/ipr.c
+++ b/drivers/scsi/ipr.c
@@ -1143,6 +1143,7 @@ static void ipr_init_res_entry(struct ipr_resource_entry *res,
1143 res->add_to_ml = 0; 1143 res->add_to_ml = 0;
1144 res->del_from_ml = 0; 1144 res->del_from_ml = 0;
1145 res->resetting_device = 0; 1145 res->resetting_device = 0;
1146 res->reset_occurred = 0;
1146 res->sdev = NULL; 1147 res->sdev = NULL;
1147 res->sata_port = NULL; 1148 res->sata_port = NULL;
1148 1149
@@ -5015,6 +5016,7 @@ static int __ipr_eh_dev_reset(struct scsi_cmnd *scsi_cmd)
5015 } else 5016 } else
5016 rc = ipr_device_reset(ioa_cfg, res); 5017 rc = ipr_device_reset(ioa_cfg, res);
5017 res->resetting_device = 0; 5018 res->resetting_device = 0;
5019 res->reset_occurred = 1;
5018 5020
5019 LEAVE; 5021 LEAVE;
5020 return rc ? FAILED : SUCCESS; 5022 return rc ? FAILED : SUCCESS;
@@ -6183,8 +6185,10 @@ static int ipr_queuecommand(struct Scsi_Host *shost,
6183 ioarcb->cmd_pkt.flags_hi |= IPR_FLAGS_HI_NO_ULEN_CHK; 6185 ioarcb->cmd_pkt.flags_hi |= IPR_FLAGS_HI_NO_ULEN_CHK;
6184 6186
6185 ioarcb->cmd_pkt.flags_hi |= IPR_FLAGS_HI_NO_LINK_DESC; 6187 ioarcb->cmd_pkt.flags_hi |= IPR_FLAGS_HI_NO_LINK_DESC;
6186 if (ipr_is_gscsi(res)) 6188 if (ipr_is_gscsi(res) && res->reset_occurred) {
6189 res->reset_occurred = 0;
6187 ioarcb->cmd_pkt.flags_lo |= IPR_FLAGS_LO_DELAY_AFTER_RST; 6190 ioarcb->cmd_pkt.flags_lo |= IPR_FLAGS_LO_DELAY_AFTER_RST;
6191 }
6188 ioarcb->cmd_pkt.flags_lo |= IPR_FLAGS_LO_ALIGNED_BFR; 6192 ioarcb->cmd_pkt.flags_lo |= IPR_FLAGS_LO_ALIGNED_BFR;
6189 ioarcb->cmd_pkt.flags_lo |= ipr_get_task_attributes(scsi_cmd); 6193 ioarcb->cmd_pkt.flags_lo |= ipr_get_task_attributes(scsi_cmd);
6190 } 6194 }
diff --git a/drivers/scsi/ipr.h b/drivers/scsi/ipr.h
index 9ce38a22647e..f66645c73492 100644
--- a/drivers/scsi/ipr.h
+++ b/drivers/scsi/ipr.h
@@ -1252,6 +1252,7 @@ struct ipr_resource_entry {
1252 u8 add_to_ml:1; 1252 u8 add_to_ml:1;
1253 u8 del_from_ml:1; 1253 u8 del_from_ml:1;
1254 u8 resetting_device:1; 1254 u8 resetting_device:1;
1255 u8 reset_occurred:1;
1255 1256
1256 u32 bus; /* AKA channel */ 1257 u32 bus; /* AKA channel */
1257 u32 target; /* AKA id */ 1258 u32 target; /* AKA id */