Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c6af4042 authored by Martin K. Petersen's avatar Martin K. Petersen Committed by James Bottomley
Browse files

[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: default avatarMartin K. Petersen <martin.petersen@oracle.com>
Acked-by: default avatarIhab Hamadi <Ihab.Hamadi@Emulex.Com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
parent 6e883b0e
Loading
Loading
Loading
Loading
+3 −12
Original line number Diff line number Diff line
@@ -56,8 +56,6 @@ static char *dif_op_str[] = {
	"SCSI_PROT_WRITE_INSERT",
	"SCSI_PROT_READ_PASS",
	"SCSI_PROT_WRITE_PASS",
	"SCSI_PROT_READ_CONVERT",
	"SCSI_PROT_WRITE_CONVERT"
};
static void
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)
			ret_prof = LPFC_PROF_A1;
			break;

		case SCSI_PROT_READ_CONVERT:
		case SCSI_PROT_WRITE_CONVERT:
		case SCSI_PROT_READ_PASS:
		case SCSI_PROT_WRITE_PASS:
			ret_prof = LPFC_PROF_AST1;
			break;

		case SCSI_PROT_READ_PASS:
		case SCSI_PROT_WRITE_PASS:
		case SCSI_PROT_NORMAL:
		default:
			printk(KERN_ERR "Bad op/guard:%d/%d combination\n",
@@ -1157,8 +1153,6 @@ lpfc_sc_to_sli_prof(struct scsi_cmnd *sc)
			ret_prof = LPFC_PROF_C1;
			break;

		case SCSI_PROT_READ_CONVERT:
		case SCSI_PROT_WRITE_CONVERT:
		case SCSI_PROT_READ_INSERT:
		case SCSI_PROT_WRITE_STRIP:
		case SCSI_PROT_NORMAL:
@@ -1209,8 +1203,7 @@ lpfc_get_cmd_dif_parms(struct scsi_cmnd *sc, uint16_t *apptagmask,
	static int cnt;

	if (protcnt && (op == SCSI_PROT_WRITE_STRIP ||
				op == SCSI_PROT_WRITE_PASS ||
				op == SCSI_PROT_WRITE_CONVERT)) {
				op == SCSI_PROT_WRITE_PASS)) {

		cnt++;
		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)
	case SCSI_PROT_WRITE_STRIP:
	case SCSI_PROT_READ_PASS:
	case SCSI_PROT_WRITE_PASS:
	case SCSI_PROT_WRITE_CONVERT:
	case SCSI_PROT_READ_CONVERT:
		ret = LPFC_PG_TYPE_DIF_BUF;
		break;
	default:
+4 −16
Original line number Diff line number Diff line
@@ -364,15 +364,9 @@ void sd_dif_config_host(struct scsi_disk *sdkp)
 */
void sd_dif_op(struct scsi_cmnd *scmd, unsigned int dif, unsigned int dix, unsigned int type)
{
	int csum_convert, prot_op;
	int prot_op;

	prot_op = 0;

	/* Convert checksum? */
	if (scsi_host_get_guard(scmd->device->host) != SHOST_DIX_GUARD_CRC)
		csum_convert = 1;
	else
		csum_convert = 0;
	prot_op = SCSI_PROT_NORMAL;

	BUG_ON(dif && (scmd->cmnd[0] == READ_6 || scmd->cmnd[0] == WRITE_6));

@@ -382,9 +376,6 @@ void sd_dif_op(struct scsi_cmnd *scmd, unsigned int dif, unsigned int dix, unsig
	case READ_12:
	case READ_16:
		if (dif && dix)
			if (csum_convert)
				prot_op = SCSI_PROT_READ_CONVERT;
			else
			prot_op = SCSI_PROT_READ_PASS;
		else if (dif && !dix)
			prot_op = SCSI_PROT_READ_STRIP;
@@ -398,9 +389,6 @@ void sd_dif_op(struct scsi_cmnd *scmd, unsigned int dif, unsigned int dix, unsig
	case WRITE_12:
	case WRITE_16:
		if (dif && dix)
			if (csum_convert)
				prot_op = SCSI_PROT_WRITE_CONVERT;
			else
			prot_op = SCSI_PROT_WRITE_PASS;
		else if (dif && !dix)
			prot_op = SCSI_PROT_WRITE_INSERT;
+0 −4
Original line number Diff line number Diff line
@@ -229,10 +229,6 @@ enum scsi_prot_operations {
	/* OS-HBA: Protected, HBA-Target: Protected */
	SCSI_PROT_READ_PASS,
	SCSI_PROT_WRITE_PASS,

	/* OS-HBA: Protected, HBA-Target: Protected, checksum conversion */
	SCSI_PROT_READ_CONVERT,
	SCSI_PROT_WRITE_CONVERT,
};

static inline void scsi_set_prot_op(struct scsi_cmnd *scmd, unsigned char op)