aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/sd_dif.c
diff options
context:
space:
mode:
authorMartin K. Petersen <martin.petersen@oracle.com>2009-09-18 17:32:59 -0400
committerJames Bottomley <James.Bottomley@suse.de>2009-10-02 10:46:25 -0400
commitc6af404215bab0d333accbb497f835d10cb0050c (patch)
treefc58c360c3d678405b4bd38fd7894af9c8b91edd /drivers/scsi/sd_dif.c
parent6e883b0e42739aa560133cfaf41be1138c51a500 (diff)
[SCSI] Deprecate SCSI_PROT_*_CONVERT operations
The checksum format is orthogonal to whether the protection information is being passed on beyond the HBA or not. It is perfectly valid to use a non-T10 CRC with WRITE_STRIP and READ_INSERT. Consequently it no longer makes sense to explicitly refer to the conversion in the protection operation. Update sd_dif and lpfc accordingly. Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> Acked-by: Ihab Hamadi <Ihab.Hamadi@Emulex.Com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi/sd_dif.c')
-rw-r--r--drivers/scsi/sd_dif.c20
1 files changed, 4 insertions, 16 deletions
diff --git a/drivers/scsi/sd_dif.c b/drivers/scsi/sd_dif.c
index 82f14a9482d..84224dd21ac 100644
--- a/drivers/scsi/sd_dif.c
+++ b/drivers/scsi/sd_dif.c
@@ -364,15 +364,9 @@ void sd_dif_config_host(struct scsi_disk *sdkp)
364 */ 364 */
365void sd_dif_op(struct scsi_cmnd *scmd, unsigned int dif, unsigned int dix, unsigned int type) 365void sd_dif_op(struct scsi_cmnd *scmd, unsigned int dif, unsigned int dix, unsigned int type)
366{ 366{
367 int csum_convert, prot_op; 367 int prot_op;
368 368
369 prot_op = 0; 369 prot_op = SCSI_PROT_NORMAL;
370
371 /* Convert checksum? */
372 if (scsi_host_get_guard(scmd->device->host) != SHOST_DIX_GUARD_CRC)
373 csum_convert = 1;
374 else
375 csum_convert = 0;
376 370
377 BUG_ON(dif && (scmd->cmnd[0] == READ_6 || scmd->cmnd[0] == WRITE_6)); 371 BUG_ON(dif && (scmd->cmnd[0] == READ_6 || scmd->cmnd[0] == WRITE_6));
378 372
@@ -382,10 +376,7 @@ void sd_dif_op(struct scsi_cmnd *scmd, unsigned int dif, unsigned int dix, unsig
382 case READ_12: 376 case READ_12:
383 case READ_16: 377 case READ_16:
384 if (dif && dix) 378 if (dif && dix)
385 if (csum_convert) 379 prot_op = SCSI_PROT_READ_PASS;
386 prot_op = SCSI_PROT_READ_CONVERT;
387 else
388 prot_op = SCSI_PROT_READ_PASS;
389 else if (dif && !dix) 380 else if (dif && !dix)
390 prot_op = SCSI_PROT_READ_STRIP; 381 prot_op = SCSI_PROT_READ_STRIP;
391 else if (!dif && dix) 382 else if (!dif && dix)
@@ -398,10 +389,7 @@ void sd_dif_op(struct scsi_cmnd *scmd, unsigned int dif, unsigned int dix, unsig
398 case WRITE_12: 389 case WRITE_12:
399 case WRITE_16: 390 case WRITE_16:
400 if (dif && dix) 391 if (dif && dix)
401 if (csum_convert) 392 prot_op = SCSI_PROT_WRITE_PASS;
402 prot_op = SCSI_PROT_WRITE_CONVERT;
403 else
404 prot_op = SCSI_PROT_WRITE_PASS;
405 else if (dif && !dix) 393 else if (dif && !dix)
406 prot_op = SCSI_PROT_WRITE_INSERT; 394 prot_op = SCSI_PROT_WRITE_INSERT;
407 else if (!dif && dix) 395 else if (!dif && dix)