mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-28 11:18:45 +07:00
IB/iser: Centralize ib_sig_domain settings
Later there will be more parameters to set, so we want to do it in a centralized place. This patch does not change any functionality. Signed-off-by: Sagi Grimberg <sagig@mellanox.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
This commit is contained in:
parent
142537f4e5
commit
92792c0a19
@ -457,44 +457,44 @@ scsi2ib_prot_type(unsigned char prot_type)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
iser_set_dif_domain(struct scsi_cmnd *sc, struct ib_sig_attrs *sig_attrs,
|
||||||
|
struct ib_sig_domain *domain)
|
||||||
|
{
|
||||||
|
unsigned char scsi_ptype = scsi_get_prot_type(sc);
|
||||||
|
|
||||||
|
domain->sig.dif.type = scsi2ib_prot_type(scsi_ptype);
|
||||||
|
domain->sig.dif.pi_interval = sc->device->sector_size;
|
||||||
|
domain->sig.dif.ref_tag = scsi_get_lba(sc) & 0xffffffff;
|
||||||
|
};
|
||||||
|
|
||||||
static int
|
static int
|
||||||
iser_set_sig_attrs(struct scsi_cmnd *sc, struct ib_sig_attrs *sig_attrs)
|
iser_set_sig_attrs(struct scsi_cmnd *sc, struct ib_sig_attrs *sig_attrs)
|
||||||
{
|
{
|
||||||
unsigned char scsi_ptype = scsi_get_prot_type(sc);
|
|
||||||
|
|
||||||
sig_attrs->mem.sig_type = IB_SIG_TYPE_T10_DIF;
|
sig_attrs->mem.sig_type = IB_SIG_TYPE_T10_DIF;
|
||||||
sig_attrs->wire.sig_type = IB_SIG_TYPE_T10_DIF;
|
sig_attrs->wire.sig_type = IB_SIG_TYPE_T10_DIF;
|
||||||
sig_attrs->mem.sig.dif.pi_interval = sc->device->sector_size;
|
|
||||||
sig_attrs->wire.sig.dif.pi_interval = sc->device->sector_size;
|
|
||||||
|
|
||||||
switch (scsi_get_prot_op(sc)) {
|
switch (scsi_get_prot_op(sc)) {
|
||||||
case SCSI_PROT_WRITE_INSERT:
|
case SCSI_PROT_WRITE_INSERT:
|
||||||
case SCSI_PROT_READ_STRIP:
|
case SCSI_PROT_READ_STRIP:
|
||||||
sig_attrs->mem.sig.dif.type = IB_T10DIF_NONE;
|
sig_attrs->mem.sig.dif.type = IB_T10DIF_NONE;
|
||||||
sig_attrs->wire.sig.dif.type = scsi2ib_prot_type(scsi_ptype);
|
iser_set_dif_domain(sc, sig_attrs, &sig_attrs->wire);
|
||||||
sig_attrs->wire.sig.dif.bg_type = IB_T10DIF_CRC;
|
sig_attrs->wire.sig.dif.bg_type = IB_T10DIF_CRC;
|
||||||
sig_attrs->wire.sig.dif.ref_tag = scsi_get_lba(sc) &
|
|
||||||
0xffffffff;
|
|
||||||
break;
|
break;
|
||||||
case SCSI_PROT_READ_INSERT:
|
case SCSI_PROT_READ_INSERT:
|
||||||
case SCSI_PROT_WRITE_STRIP:
|
case SCSI_PROT_WRITE_STRIP:
|
||||||
sig_attrs->mem.sig.dif.type = scsi2ib_prot_type(scsi_ptype);
|
|
||||||
sig_attrs->mem.sig.dif.bg_type = IB_T10DIF_CRC;
|
|
||||||
sig_attrs->mem.sig.dif.ref_tag = scsi_get_lba(sc) &
|
|
||||||
0xffffffff;
|
|
||||||
sig_attrs->wire.sig.dif.type = IB_T10DIF_NONE;
|
sig_attrs->wire.sig.dif.type = IB_T10DIF_NONE;
|
||||||
|
iser_set_dif_domain(sc, sig_attrs, &sig_attrs->mem);
|
||||||
|
sig_attrs->mem.sig.dif.bg_type = iser_pi_guard ? IB_T10DIF_CSUM :
|
||||||
|
IB_T10DIF_CRC;
|
||||||
break;
|
break;
|
||||||
case SCSI_PROT_READ_PASS:
|
case SCSI_PROT_READ_PASS:
|
||||||
case SCSI_PROT_WRITE_PASS:
|
case SCSI_PROT_WRITE_PASS:
|
||||||
sig_attrs->mem.sig.dif.type = scsi2ib_prot_type(scsi_ptype);
|
iser_set_dif_domain(sc, sig_attrs, &sig_attrs->wire);
|
||||||
sig_attrs->mem.sig.dif.bg_type = IB_T10DIF_CRC;
|
|
||||||
sig_attrs->mem.sig.dif.ref_tag = scsi_get_lba(sc) &
|
|
||||||
0xffffffff;
|
|
||||||
sig_attrs->wire.sig.dif.type = scsi2ib_prot_type(scsi_ptype);
|
|
||||||
sig_attrs->wire.sig.dif.bg_type = IB_T10DIF_CRC;
|
sig_attrs->wire.sig.dif.bg_type = IB_T10DIF_CRC;
|
||||||
sig_attrs->wire.sig.dif.ref_tag = scsi_get_lba(sc) &
|
iser_set_dif_domain(sc, sig_attrs, &sig_attrs->mem);
|
||||||
0xffffffff;
|
sig_attrs->mem.sig.dif.bg_type = iser_pi_guard ? IB_T10DIF_CSUM :
|
||||||
|
IB_T10DIF_CRC;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
iser_err("Unsupported PI operation %d\n",
|
iser_err("Unsupported PI operation %d\n",
|
||||||
|
Loading…
Reference in New Issue
Block a user