Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
[linux.git] / drivers / infiniband / ulp / isert / ib_isert.h
index f6ae7f5dd4082768f3b6f0dfb36c1d45506b5eb6..4c072ae34c01a3021e57cb5378a3949b97d0876c 100644 (file)
@@ -50,11 +50,35 @@ struct iser_tx_desc {
        struct ib_send_wr send_wr;
 } __packed;
 
+enum isert_indicator {
+       ISERT_PROTECTED         = 1 << 0,
+       ISERT_DATA_KEY_VALID    = 1 << 1,
+       ISERT_PROT_KEY_VALID    = 1 << 2,
+       ISERT_SIG_KEY_VALID     = 1 << 3,
+};
+
+struct pi_context {
+       struct ib_mr                   *prot_mr;
+       struct ib_fast_reg_page_list   *prot_frpl;
+       struct ib_mr                   *sig_mr;
+};
+
 struct fast_reg_descriptor {
-       struct list_head        list;
-       struct ib_mr            *data_mr;
-       struct ib_fast_reg_page_list    *data_frpl;
-       bool                    valid;
+       struct list_head                list;
+       struct ib_mr                   *data_mr;
+       struct ib_fast_reg_page_list   *data_frpl;
+       u8                              ind;
+       struct pi_context              *pi_ctx;
+};
+
+struct isert_data_buf {
+       struct scatterlist     *sg;
+       int                     nents;
+       u32                     sg_off;
+       u32                     len; /* cur_rdma_length */
+       u32                     offset;
+       unsigned int            dma_nents;
+       enum dma_data_direction dma_dir;
 };
 
 struct isert_rdma_wr {
@@ -63,12 +87,11 @@ struct isert_rdma_wr {
        enum iser_ib_op_code    iser_ib_op;
        struct ib_sge           *ib_sge;
        struct ib_sge           s_ib_sge;
-       int                     num_sge;
-       struct scatterlist      *sge;
        int                     send_wr_num;
        struct ib_send_wr       *send_wr;
        struct ib_send_wr       s_send_wr;
-       u32                     cur_rdma_length;
+       struct isert_data_buf   data;
+       struct isert_data_buf   prot;
        struct fast_reg_descriptor *fr_desc;
 };
 
@@ -141,6 +164,7 @@ struct isert_cq_desc {
 
 struct isert_device {
        int                     use_fastreg;
+       bool                    pi_capable;
        int                     cqs_used;
        int                     refcount;
        int                     cq_active_qps[ISERT_MAX_CQ];