aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/scsi/zfcp_fc.h
diff options
context:
space:
mode:
authorChristof Schmitt <christof.schmitt@de.ibm.com>2011-02-22 13:54:45 -0500
committerJames Bottomley <James.Bottomley@suse.de>2011-02-25 12:02:14 -0500
commit2443c8b23aea83d529868030e28f45a6fa6553b2 (patch)
treede381ef06c4ed3685b8fe843a16edb997affeadf /drivers/s390/scsi/zfcp_fc.h
parent259afe2ed92c179e0a85da10ca63bf927b9851ca (diff)
[SCSI] zfcp: Merge FCP task management setup with regular FCP command setup
For task management commands, only LUN and flags are required. The regular FCP setup already sets the LUN in the fcp_cmnd. All is required for merging the function is setting up the TM flags. Signed-off-by: Christof Schmitt <christof.schmitt@de.ibm.com> Signed-off-by: Steffen Maier <maier@linux.vnet.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/s390/scsi/zfcp_fc.h')
-rw-r--r--drivers/s390/scsi/zfcp_fc.h22
1 files changed, 8 insertions, 14 deletions
diff --git a/drivers/s390/scsi/zfcp_fc.h b/drivers/s390/scsi/zfcp_fc.h
index 2066f9d9ceb5..5243ce44aa42 100644
--- a/drivers/s390/scsi/zfcp_fc.h
+++ b/drivers/s390/scsi/zfcp_fc.h
@@ -164,14 +164,21 @@ struct zfcp_fc_wka_ports {
164 * zfcp_fc_scsi_to_fcp - setup FCP command with data from scsi_cmnd 164 * zfcp_fc_scsi_to_fcp - setup FCP command with data from scsi_cmnd
165 * @fcp: fcp_cmnd to setup 165 * @fcp: fcp_cmnd to setup
166 * @scsi: scsi_cmnd where to get LUN, task attributes/flags and CDB 166 * @scsi: scsi_cmnd where to get LUN, task attributes/flags and CDB
167 * @tm: task management flags to setup task management command
167 */ 168 */
168static inline 169static inline
169void zfcp_fc_scsi_to_fcp(struct fcp_cmnd *fcp, struct scsi_cmnd *scsi) 170void zfcp_fc_scsi_to_fcp(struct fcp_cmnd *fcp, struct scsi_cmnd *scsi,
171 u8 tm_flags)
170{ 172{
171 char tag[2]; 173 char tag[2];
172 174
173 int_to_scsilun(scsi->device->lun, (struct scsi_lun *) &fcp->fc_lun); 175 int_to_scsilun(scsi->device->lun, (struct scsi_lun *) &fcp->fc_lun);
174 176
177 if (unlikely(tm_flags)) {
178 fcp->fc_tm_flags = tm_flags;
179 return;
180 }
181
175 if (scsi_populate_tag_msg(scsi, tag)) { 182 if (scsi_populate_tag_msg(scsi, tag)) {
176 switch (tag[0]) { 183 switch (tag[0]) {
177 case MSG_ORDERED_TAG: 184 case MSG_ORDERED_TAG:
@@ -198,19 +205,6 @@ void zfcp_fc_scsi_to_fcp(struct fcp_cmnd *fcp, struct scsi_cmnd *scsi)
198} 205}
199 206
200/** 207/**
201 * zfcp_fc_fcp_tm - setup FCP command as task management command
202 * @fcp: fcp_cmnd to setup
203 * @dev: scsi_device where to send the task management command
204 * @tm: task management flags to setup tm command
205 */
206static inline
207void zfcp_fc_fcp_tm(struct fcp_cmnd *fcp, struct scsi_device *dev, u8 tm_flags)
208{
209 int_to_scsilun(dev->lun, (struct scsi_lun *) &fcp->fc_lun);
210 fcp->fc_tm_flags |= tm_flags;
211}
212
213/**
214 * zfcp_fc_evap_fcp_rsp - evaluate FCP RSP IU and update scsi_cmnd accordingly 208 * zfcp_fc_evap_fcp_rsp - evaluate FCP RSP IU and update scsi_cmnd accordingly
215 * @fcp_rsp: FCP RSP IU to evaluate 209 * @fcp_rsp: FCP RSP IU to evaluate
216 * @scsi: SCSI command where to update status and sense buffer 210 * @scsi: SCSI command where to update status and sense buffer