aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSagi Grimberg <sagig@mellanox.com>2014-08-13 12:54:33 -0400
committerRoland Dreier <roland@purestorage.com>2014-10-09 03:10:53 -0400
commit92792c0a197db85e9d3039b59d2211ed0157e824 (patch)
treef9793d4bbeda1efe03f3b3a83f7c1d82c05eec59
parent142537f4e5f7ffd3e34b0c46646ac9cb5d986d06 (diff)
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>
-rw-r--r--drivers/infiniband/ulp/iser/iser_memory.c36
1 files changed, 18 insertions, 18 deletions
diff --git a/drivers/infiniband/ulp/iser/iser_memory.c b/drivers/infiniband/ulp/iser/iser_memory.c
index d4f12245867e..d9ed6234c505 100644
--- a/drivers/infiniband/ulp/iser/iser_memory.c
+++ b/drivers/infiniband/ulp/iser/iser_memory.c
@@ -457,44 +457,44 @@ scsi2ib_prot_type(unsigned char prot_type)
457 } 457 }
458} 458}
459 459
460static inline void
461iser_set_dif_domain(struct scsi_cmnd *sc, struct ib_sig_attrs *sig_attrs,
462 struct ib_sig_domain *domain)
463{
464 unsigned char scsi_ptype = scsi_get_prot_type(sc);
465
466 domain->sig.dif.type = scsi2ib_prot_type(scsi_ptype);
467 domain->sig.dif.pi_interval = sc->device->sector_size;
468 domain->sig.dif.ref_tag = scsi_get_lba(sc) & 0xffffffff;
469};
460 470
461static int 471static int
462iser_set_sig_attrs(struct scsi_cmnd *sc, struct ib_sig_attrs *sig_attrs) 472iser_set_sig_attrs(struct scsi_cmnd *sc, struct ib_sig_attrs *sig_attrs)
463{ 473{
464 unsigned char scsi_ptype = scsi_get_prot_type(sc);
465
466 sig_attrs->mem.sig_type = IB_SIG_TYPE_T10_DIF; 474 sig_attrs->mem.sig_type = IB_SIG_TYPE_T10_DIF;
467 sig_attrs->wire.sig_type = IB_SIG_TYPE_T10_DIF; 475 sig_attrs->wire.sig_type = IB_SIG_TYPE_T10_DIF;
468 sig_attrs->mem.sig.dif.pi_interval = sc->device->sector_size;
469 sig_attrs->wire.sig.dif.pi_interval = sc->device->sector_size;
470 476
471 switch (scsi_get_prot_op(sc)) { 477 switch (scsi_get_prot_op(sc)) {
472 case SCSI_PROT_WRITE_INSERT: 478 case SCSI_PROT_WRITE_INSERT:
473 case SCSI_PROT_READ_STRIP: 479 case SCSI_PROT_READ_STRIP:
474 sig_attrs->mem.sig.dif.type = IB_T10DIF_NONE; 480 sig_attrs->mem.sig.dif.type = IB_T10DIF_NONE;
475 sig_attrs->wire.sig.dif.type = scsi2ib_prot_type(scsi_ptype); 481 iser_set_dif_domain(sc, sig_attrs, &sig_attrs->wire);
476 sig_attrs->wire.sig.dif.bg_type = IB_T10DIF_CRC; 482 sig_attrs->wire.sig.dif.bg_type = IB_T10DIF_CRC;
477 sig_attrs->wire.sig.dif.ref_tag = scsi_get_lba(sc) &
478 0xffffffff;
479 break; 483 break;
480 case SCSI_PROT_READ_INSERT: 484 case SCSI_PROT_READ_INSERT:
481 case SCSI_PROT_WRITE_STRIP: 485 case SCSI_PROT_WRITE_STRIP:
482 sig_attrs->mem.sig.dif.type = scsi2ib_prot_type(scsi_ptype);
483 sig_attrs->mem.sig.dif.bg_type = IB_T10DIF_CRC;
484 sig_attrs->mem.sig.dif.ref_tag = scsi_get_lba(sc) &
485 0xffffffff;
486 sig_attrs->wire.sig.dif.type = IB_T10DIF_NONE; 486 sig_attrs->wire.sig.dif.type = IB_T10DIF_NONE;
487 iser_set_dif_domain(sc, sig_attrs, &sig_attrs->mem);
488 sig_attrs->mem.sig.dif.bg_type = iser_pi_guard ? IB_T10DIF_CSUM :
489 IB_T10DIF_CRC;
487 break; 490 break;
488 case SCSI_PROT_READ_PASS: 491 case SCSI_PROT_READ_PASS:
489 case SCSI_PROT_WRITE_PASS: 492 case SCSI_PROT_WRITE_PASS:
490 sig_attrs->mem.sig.dif.type = scsi2ib_prot_type(scsi_ptype); 493 iser_set_dif_domain(sc, sig_attrs, &sig_attrs->wire);
491 sig_attrs->mem.sig.dif.bg_type = IB_T10DIF_CRC;
492 sig_attrs->mem.sig.dif.ref_tag = scsi_get_lba(sc) &
493 0xffffffff;
494 sig_attrs->wire.sig.dif.type = scsi2ib_prot_type(scsi_ptype);
495 sig_attrs->wire.sig.dif.bg_type = IB_T10DIF_CRC; 494 sig_attrs->wire.sig.dif.bg_type = IB_T10DIF_CRC;
496 sig_attrs->wire.sig.dif.ref_tag = scsi_get_lba(sc) & 495 iser_set_dif_domain(sc, sig_attrs, &sig_attrs->mem);
497 0xffffffff; 496 sig_attrs->mem.sig.dif.bg_type = iser_pi_guard ? IB_T10DIF_CSUM :
497 IB_T10DIF_CRC;
498 break; 498 break;
499 default: 499 default:
500 iser_err("Unsupported PI operation %d\n", 500 iser_err("Unsupported PI operation %d\n",