aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/sd_dif.c
diff options
context:
space:
mode:
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 82f14a9482d0..84224dd21acf 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)