diff options
author | Christof Schmitt <christof.schmitt@de.ibm.com> | 2011-02-22 13:54:45 -0500 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2011-02-25 12:02:14 -0500 |
commit | 2443c8b23aea83d529868030e28f45a6fa6553b2 (patch) | |
tree | de381ef06c4ed3685b8fe843a16edb997affeadf /drivers/s390/scsi/zfcp_fc.h | |
parent | 259afe2ed92c179e0a85da10ca63bf927b9851ca (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.h | 22 |
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 | */ |
168 | static inline | 169 | static inline |
169 | void zfcp_fc_scsi_to_fcp(struct fcp_cmnd *fcp, struct scsi_cmnd *scsi) | 170 | void 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 | */ | ||
206 | static inline | ||
207 | void 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 |