IB/iser: Replace fastreg descriptor valid bool with indicators container
authorSagi Grimberg <sagig@mellanox.com>
Wed, 5 Mar 2014 17:43:43 +0000 (19:43 +0200)
committerRoland Dreier <roland@purestorage.com>
Tue, 18 Mar 2014 05:33:57 +0000 (22:33 -0700)
In T10-PI support we will have memory keys for protection buffers and
signature transactions.  We prefer to compact indicators rather than
keeping multiple bools.

This commit does not change any functionality.

Signed-off-by: Sagi Grimberg <sagig@mellanox.com>
Signed-off-by: Alex Tabachnik <alext@mellanox.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
drivers/infiniband/ulp/iser/iscsi_iser.h
drivers/infiniband/ulp/iser/iser_memory.c
drivers/infiniband/ulp/iser/iser_verbs.c

index b4290f5..5660714 100644 (file)
@@ -280,13 +280,17 @@ struct iser_device {
                                                            enum iser_data_dir cmd_dir);
 };
 
+enum iser_reg_indicator {
+       ISER_DATA_KEY_VALID = 1 << 0,
+};
+
 struct fast_reg_descriptor {
        struct list_head                  list;
        /* For fast registration - FRWR */
        struct ib_mr                     *data_mr;
        struct ib_fast_reg_page_list     *data_frpl;
-       /* Valid for fast registration flag */
-       bool                              valid;
+       /* registration indicators container */
+       u8                                reg_indicators;
 };
 
 struct iser_conn {
index d25587e..a7a0d3e 100644 (file)
@@ -479,7 +479,7 @@ static int iser_fast_reg_mr(struct iscsi_iser_task *iser_task,
                return -EINVAL;
        }
 
-       if (!desc->valid) {
+       if (!(desc->reg_indicators & ISER_DATA_KEY_VALID)) {
                memset(&inv_wr, 0, sizeof(inv_wr));
                inv_wr.wr_id = ISER_FASTREG_LI_WRID;
                inv_wr.opcode = IB_WR_LOCAL_INV;
@@ -514,7 +514,7 @@ static int iser_fast_reg_mr(struct iscsi_iser_task *iser_task,
                iser_err("fast registration failed, ret:%d\n", ret);
                return ret;
        }
-       desc->valid = false;
+       desc->reg_indicators &= ~ISER_DATA_KEY_VALID;
 
        sge->lkey = desc->data_mr->lkey;
        sge->addr = desc->data_frpl->page_list[0] + offset;
index 95fcfca..6a5f424 100644 (file)
@@ -296,7 +296,7 @@ iser_create_fastreg_desc(struct ib_device *ib_device, struct ib_pd *pd,
        }
        iser_info("Create fr_desc %p page_list %p\n",
                  desc, desc->data_frpl->page_list);
-       desc->valid = true;
+       desc->reg_indicators |= ISER_DATA_KEY_VALID;
 
        return 0;