diff options
author | Wendy Xiong <wenxiong@linux.vnet.ibm.com> | 2014-01-21 13:16:39 -0500 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2014-03-19 18:04:38 -0400 |
commit | 0b1f8d445b8cc5ac58786334f1ddaefa09fdf096 (patch) | |
tree | a65f9408d454819c1a8592e5721f1460bd9eeeef | |
parent | 0759c666a39f16ab3a42d37b1e8fb0f246f97f52 (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>
-rw-r--r-- | drivers/scsi/ipr.c | 6 | ||||
-rw-r--r-- | drivers/scsi/ipr.h | 1 |
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 */ |