diff options
| -rw-r--r-- | drivers/scsi/lpfc/lpfc_scsi.c | 15 | ||||
| -rw-r--r-- | drivers/scsi/sd_dif.c | 20 | ||||
| -rw-r--r-- | include/scsi/scsi_cmnd.h | 4 |
3 files changed, 7 insertions, 32 deletions
diff --git a/drivers/scsi/lpfc/lpfc_scsi.c b/drivers/scsi/lpfc/lpfc_scsi.c index 61d089703806..c88f59f0ce30 100644 --- a/drivers/scsi/lpfc/lpfc_scsi.c +++ b/drivers/scsi/lpfc/lpfc_scsi.c | |||
| @@ -56,8 +56,6 @@ static char *dif_op_str[] = { | |||
| 56 | "SCSI_PROT_WRITE_INSERT", | 56 | "SCSI_PROT_WRITE_INSERT", |
| 57 | "SCSI_PROT_READ_PASS", | 57 | "SCSI_PROT_READ_PASS", |
| 58 | "SCSI_PROT_WRITE_PASS", | 58 | "SCSI_PROT_WRITE_PASS", |
| 59 | "SCSI_PROT_READ_CONVERT", | ||
| 60 | "SCSI_PROT_WRITE_CONVERT" | ||
| 61 | }; | 59 | }; |
| 62 | static void | 60 | static void |
| 63 | lpfc_release_scsi_buf_s4(struct lpfc_hba *phba, struct lpfc_scsi_buf *psb); | 61 | lpfc_release_scsi_buf_s4(struct lpfc_hba *phba, struct lpfc_scsi_buf *psb); |
| @@ -1131,13 +1129,11 @@ lpfc_sc_to_sli_prof(struct scsi_cmnd *sc) | |||
| 1131 | ret_prof = LPFC_PROF_A1; | 1129 | ret_prof = LPFC_PROF_A1; |
| 1132 | break; | 1130 | break; |
| 1133 | 1131 | ||
| 1134 | case SCSI_PROT_READ_CONVERT: | 1132 | case SCSI_PROT_READ_PASS: |
| 1135 | case SCSI_PROT_WRITE_CONVERT: | 1133 | case SCSI_PROT_WRITE_PASS: |
| 1136 | ret_prof = LPFC_PROF_AST1; | 1134 | ret_prof = LPFC_PROF_AST1; |
| 1137 | break; | 1135 | break; |
| 1138 | 1136 | ||
| 1139 | case SCSI_PROT_READ_PASS: | ||
| 1140 | case SCSI_PROT_WRITE_PASS: | ||
| 1141 | case SCSI_PROT_NORMAL: | 1137 | case SCSI_PROT_NORMAL: |
| 1142 | default: | 1138 | default: |
| 1143 | printk(KERN_ERR "Bad op/guard:%d/%d combination\n", | 1139 | printk(KERN_ERR "Bad op/guard:%d/%d combination\n", |
| @@ -1157,8 +1153,6 @@ lpfc_sc_to_sli_prof(struct scsi_cmnd *sc) | |||
| 1157 | ret_prof = LPFC_PROF_C1; | 1153 | ret_prof = LPFC_PROF_C1; |
| 1158 | break; | 1154 | break; |
| 1159 | 1155 | ||
| 1160 | case SCSI_PROT_READ_CONVERT: | ||
| 1161 | case SCSI_PROT_WRITE_CONVERT: | ||
| 1162 | case SCSI_PROT_READ_INSERT: | 1156 | case SCSI_PROT_READ_INSERT: |
| 1163 | case SCSI_PROT_WRITE_STRIP: | 1157 | case SCSI_PROT_WRITE_STRIP: |
| 1164 | case SCSI_PROT_NORMAL: | 1158 | case SCSI_PROT_NORMAL: |
| @@ -1209,8 +1203,7 @@ lpfc_get_cmd_dif_parms(struct scsi_cmnd *sc, uint16_t *apptagmask, | |||
| 1209 | static int cnt; | 1203 | static int cnt; |
| 1210 | 1204 | ||
| 1211 | if (protcnt && (op == SCSI_PROT_WRITE_STRIP || | 1205 | if (protcnt && (op == SCSI_PROT_WRITE_STRIP || |
| 1212 | op == SCSI_PROT_WRITE_PASS || | 1206 | op == SCSI_PROT_WRITE_PASS)) { |
| 1213 | op == SCSI_PROT_WRITE_CONVERT)) { | ||
| 1214 | 1207 | ||
| 1215 | cnt++; | 1208 | cnt++; |
| 1216 | spt = page_address(sg_page(scsi_prot_sglist(sc))) + | 1209 | spt = page_address(sg_page(scsi_prot_sglist(sc))) + |
| @@ -1501,8 +1494,6 @@ lpfc_prot_group_type(struct lpfc_hba *phba, struct scsi_cmnd *sc) | |||
| 1501 | case SCSI_PROT_WRITE_STRIP: | 1494 | case SCSI_PROT_WRITE_STRIP: |
| 1502 | case SCSI_PROT_READ_PASS: | 1495 | case SCSI_PROT_READ_PASS: |
| 1503 | case SCSI_PROT_WRITE_PASS: | 1496 | case SCSI_PROT_WRITE_PASS: |
| 1504 | case SCSI_PROT_WRITE_CONVERT: | ||
| 1505 | case SCSI_PROT_READ_CONVERT: | ||
| 1506 | ret = LPFC_PG_TYPE_DIF_BUF; | 1497 | ret = LPFC_PG_TYPE_DIF_BUF; |
| 1507 | break; | 1498 | break; |
| 1508 | default: | 1499 | default: |
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 | */ |
| 365 | void sd_dif_op(struct scsi_cmnd *scmd, unsigned int dif, unsigned int dix, unsigned int type) | 365 | void 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) |
diff --git a/include/scsi/scsi_cmnd.h b/include/scsi/scsi_cmnd.h index 3878d1dc7f59..a5e885a111df 100644 --- a/include/scsi/scsi_cmnd.h +++ b/include/scsi/scsi_cmnd.h | |||
| @@ -229,10 +229,6 @@ enum scsi_prot_operations { | |||
| 229 | /* OS-HBA: Protected, HBA-Target: Protected */ | 229 | /* OS-HBA: Protected, HBA-Target: Protected */ |
| 230 | SCSI_PROT_READ_PASS, | 230 | SCSI_PROT_READ_PASS, |
| 231 | SCSI_PROT_WRITE_PASS, | 231 | SCSI_PROT_WRITE_PASS, |
| 232 | |||
| 233 | /* OS-HBA: Protected, HBA-Target: Protected, checksum conversion */ | ||
| 234 | SCSI_PROT_READ_CONVERT, | ||
| 235 | SCSI_PROT_WRITE_CONVERT, | ||
| 236 | }; | 232 | }; |
| 237 | 233 | ||
| 238 | static inline void scsi_set_prot_op(struct scsi_cmnd *scmd, unsigned char op) | 234 | static inline void scsi_set_prot_op(struct scsi_cmnd *scmd, unsigned char op) |
