Commit 071c7783 authored by Roland Dreier's avatar Roland Dreier

Merge branch 'external-indirect' of...

Merge branch 'external-indirect' of git://git.kernel.org/pub/scm/linux/kernel/git/dad/srp-initiator into srp
parents 7b7adc4a be8b9814
This diff is collapsed.
...@@ -69,9 +69,13 @@ enum { ...@@ -69,9 +69,13 @@ enum {
SRP_TAG_NO_REQ = ~0U, SRP_TAG_NO_REQ = ~0U,
SRP_TAG_TSK_MGMT = 1U << 31, SRP_TAG_TSK_MGMT = 1U << 31,
SRP_FMR_SIZE = 256, SRP_FMR_SIZE = 512,
SRP_FMR_MIN_SIZE = 128,
SRP_FMR_POOL_SIZE = 1024, SRP_FMR_POOL_SIZE = 1024,
SRP_FMR_DIRTY_SIZE = SRP_FMR_POOL_SIZE / 4 SRP_FMR_DIRTY_SIZE = SRP_FMR_POOL_SIZE / 4,
SRP_MAP_ALLOW_FMR = 0,
SRP_MAP_NO_FMR = 1,
}; };
enum srp_target_state { enum srp_target_state {
...@@ -93,9 +97,9 @@ struct srp_device { ...@@ -93,9 +97,9 @@ struct srp_device {
struct ib_pd *pd; struct ib_pd *pd;
struct ib_mr *mr; struct ib_mr *mr;
struct ib_fmr_pool *fmr_pool; struct ib_fmr_pool *fmr_pool;
int fmr_page_shift;
int fmr_page_size;
u64 fmr_page_mask; u64 fmr_page_mask;
int fmr_page_size;
int fmr_max_size;
}; };
struct srp_host { struct srp_host {
...@@ -112,7 +116,11 @@ struct srp_request { ...@@ -112,7 +116,11 @@ struct srp_request {
struct list_head list; struct list_head list;
struct scsi_cmnd *scmnd; struct scsi_cmnd *scmnd;
struct srp_iu *cmd; struct srp_iu *cmd;
struct ib_pool_fmr *fmr; struct ib_pool_fmr **fmr_list;
u64 *map_page;
struct srp_direct_buf *indirect_desc;
dma_addr_t indirect_dma_addr;
short nfmr;
short index; short index;
}; };
...@@ -130,6 +138,10 @@ struct srp_target_port { ...@@ -130,6 +138,10 @@ struct srp_target_port {
u32 lkey; u32 lkey;
u32 rkey; u32 rkey;
enum srp_target_state state; enum srp_target_state state;
unsigned int max_iu_len;
unsigned int cmd_sg_cnt;
unsigned int indirect_size;
bool allow_ext_sg;
/* Everything above this point is used in the hot path of /* Everything above this point is used in the hot path of
* command processing. Try to keep them packed into cachelines. * command processing. Try to keep them packed into cachelines.
...@@ -144,6 +156,7 @@ struct srp_target_port { ...@@ -144,6 +156,7 @@ struct srp_target_port {
struct Scsi_Host *scsi_host; struct Scsi_Host *scsi_host;
char target_name[32]; char target_name[32];
unsigned int scsi_id; unsigned int scsi_id;
unsigned int sg_tablesize;
struct ib_sa_path_rec path; struct ib_sa_path_rec path;
__be16 orig_dgid[8]; __be16 orig_dgid[8];
...@@ -179,4 +192,19 @@ struct srp_iu { ...@@ -179,4 +192,19 @@ struct srp_iu {
enum dma_data_direction direction; enum dma_data_direction direction;
}; };
struct srp_map_state {
struct ib_pool_fmr **next_fmr;
struct srp_direct_buf *desc;
u64 *pages;
dma_addr_t base_dma_addr;
u32 fmr_len;
u32 total_len;
unsigned int npages;
unsigned int nfmr;
unsigned int ndesc;
struct scatterlist *unmapped_sg;
int unmapped_index;
dma_addr_t unmapped_addr;
};
#endif /* IB_SRP_H */ #endif /* IB_SRP_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment