OSDN Git Service

IB/mlx5, iser, isert: Add Signature API additions
[android-x86/kernel.git] / drivers / infiniband / ulp / isert / ib_isert.c
index 7309275..0bea577 100644 (file)
@@ -2609,51 +2609,39 @@ isert_fast_reg_mr(struct isert_conn *isert_conn,
        return ret;
 }
 
-static inline enum ib_t10_dif_type
-se2ib_prot_type(enum target_prot_type prot_type)
-{
-       switch (prot_type) {
-       case TARGET_DIF_TYPE0_PROT:
-               return IB_T10DIF_NONE;
-       case TARGET_DIF_TYPE1_PROT:
-               return IB_T10DIF_TYPE1;
-       case TARGET_DIF_TYPE2_PROT:
-               return IB_T10DIF_TYPE2;
-       case TARGET_DIF_TYPE3_PROT:
-               return IB_T10DIF_TYPE3;
-       default:
-               return IB_T10DIF_NONE;
-       }
-}
-
 static inline void
 isert_set_dif_domain(struct se_cmd *se_cmd, struct ib_sig_attrs *sig_attrs,
                     struct ib_sig_domain *domain)
 {
-       enum ib_t10_dif_type ib_prot_type = se2ib_prot_type(se_cmd->prot_type);
-
-       domain->sig.dif.type = ib_prot_type;
+       domain->sig_type = IB_SIG_TYPE_T10_DIF;
        domain->sig.dif.bg_type = IB_T10DIF_CRC;
        domain->sig.dif.pi_interval = se_cmd->se_dev->dev_attrib.block_size;
        domain->sig.dif.ref_tag = se_cmd->reftag_seed;
+       /*
+        * At the moment we hard code those, but if in the future
+        * the target core would like to use it, we will take it
+        * from se_cmd.
+        */
+       domain->sig.dif.apptag_check_mask = 0xffff;
+       domain->sig.dif.app_escape = true;
+       domain->sig.dif.ref_escape = true;
+       if (se_cmd->prot_type == TARGET_DIF_TYPE1_PROT ||
+           se_cmd->prot_type == TARGET_DIF_TYPE2_PROT)
+               domain->sig.dif.ref_remap = true;
 };
 
 static int
 isert_set_sig_attrs(struct se_cmd *se_cmd, struct ib_sig_attrs *sig_attrs)
 {
-
-       sig_attrs->mem.sig_type = IB_SIG_TYPE_T10_DIF;
-       sig_attrs->wire.sig_type = IB_SIG_TYPE_T10_DIF;
-
        switch (se_cmd->prot_op) {
        case TARGET_PROT_DIN_INSERT:
        case TARGET_PROT_DOUT_STRIP:
-               sig_attrs->mem.sig.dif.type = IB_T10DIF_NONE;
+               sig_attrs->mem.sig_type = IB_SIG_TYPE_NONE;
                isert_set_dif_domain(se_cmd, sig_attrs, &sig_attrs->wire);
                break;
        case TARGET_PROT_DOUT_INSERT:
        case TARGET_PROT_DIN_STRIP:
-               sig_attrs->wire.sig.dif.type = IB_T10DIF_NONE;
+               sig_attrs->wire.sig_type = IB_SIG_TYPE_NONE;
                isert_set_dif_domain(se_cmd, sig_attrs, &sig_attrs->mem);
                break;
        case TARGET_PROT_DIN_PASS: