These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / infiniband / ulp / srp / ib_srp.h
index e690847..f6af531 100644 (file)
@@ -54,7 +54,6 @@ enum {
        SRP_DLID_REDIRECT       = 2,
        SRP_STALE_CONN          = 3,
 
-       SRP_MAX_LUN             = 512,
        SRP_DEF_SG_TABLESIZE    = 12,
 
        SRP_DEFAULT_QUEUE_SIZE  = 1 << 6,
@@ -96,13 +95,14 @@ struct srp_device {
        struct list_head        dev_list;
        struct ib_device       *dev;
        struct ib_pd           *pd;
-       struct ib_mr           *mr;
+       struct ib_mr           *global_mr;
        u64                     mr_page_mask;
        int                     mr_page_size;
        int                     mr_max_size;
        int                     max_pages_per_mr;
        bool                    has_fmr;
        bool                    has_fr;
+       bool                    use_fmr;
        bool                    use_fast_reg;
 };
 
@@ -183,10 +183,10 @@ struct srp_target_port {
        spinlock_t              lock;
 
        /* read only in the hot path */
+       struct ib_mr            *global_mr;
        struct srp_rdma_ch      *ch;
        u32                     ch_count;
        u32                     lkey;
-       u32                     rkey;
        enum srp_target_state   state;
        unsigned int            max_iu_len;
        unsigned int            cmd_sg_cnt;
@@ -242,7 +242,6 @@ struct srp_iu {
 struct srp_fr_desc {
        struct list_head                entry;
        struct ib_mr                    *mr;
-       struct ib_fast_reg_page_list    *frpl;
 };
 
 /**
@@ -277,26 +276,33 @@ struct srp_fr_pool {
  * @npages:        Number of page addresses in the pages[] array.
  * @nmdesc:        Number of FMR or FR memory descriptors used for mapping.
  * @ndesc:         Number of SRP buffer descriptors that have been filled in.
- * @unmapped_sg:    First element of the sg-list that is mapped via FMR or FR.
- * @unmapped_index: Index of the first element mapped via FMR or FR.
- * @unmapped_addr:  DMA address of the first element mapped via FMR or FR.
  */
 struct srp_map_state {
        union {
-               struct ib_pool_fmr **next_fmr;
-               struct srp_fr_desc **next_fr;
+               struct {
+                       struct ib_pool_fmr **next;
+                       struct ib_pool_fmr **end;
+               } fmr;
+               struct {
+                       struct srp_fr_desc **next;
+                       struct srp_fr_desc **end;
+               } fr;
+               struct {
+                       void               **next;
+                       void               **end;
+               } gen;
        };
        struct srp_direct_buf  *desc;
-       u64                    *pages;
+       union {
+               u64                     *pages;
+               struct scatterlist      *sg;
+       };
        dma_addr_t              base_dma_addr;
        u32                     dma_len;
        u32                     total_len;
        unsigned int            npages;
        unsigned int            nmdesc;
        unsigned int            ndesc;
-       struct scatterlist     *unmapped_sg;
-       int                     unmapped_index;
-       dma_addr_t              unmapped_addr;
 };
 
 #endif /* IB_SRP_H */