diff options
Diffstat (limited to 'net/rds/ib.h')
-rw-r--r-- | net/rds/ib.h | 37 |
1 files changed, 14 insertions, 23 deletions
diff --git a/net/rds/ib.h b/net/rds/ib.h index b3fdebb57460..627fb79aee65 100644 --- a/net/rds/ib.h +++ b/net/rds/ib.h | |||
@@ -9,17 +9,12 @@ | |||
9 | #include "rds.h" | 9 | #include "rds.h" |
10 | #include "rdma_transport.h" | 10 | #include "rdma_transport.h" |
11 | 11 | ||
12 | #define RDS_FMR_1M_POOL_SIZE (8192 / 2) | ||
13 | #define RDS_FMR_1M_MSG_SIZE 256 | ||
14 | #define RDS_FMR_8K_MSG_SIZE 2 | ||
15 | #define RDS_MR_8K_SCALE (256 / (RDS_FMR_8K_MSG_SIZE + 1)) | ||
16 | #define RDS_FMR_8K_POOL_SIZE (RDS_MR_8K_SCALE * (8192 / 2)) | ||
17 | |||
18 | #define RDS_IB_MAX_SGE 8 | 12 | #define RDS_IB_MAX_SGE 8 |
19 | #define RDS_IB_RECV_SGE 2 | 13 | #define RDS_IB_RECV_SGE 2 |
20 | 14 | ||
21 | #define RDS_IB_DEFAULT_RECV_WR 1024 | 15 | #define RDS_IB_DEFAULT_RECV_WR 1024 |
22 | #define RDS_IB_DEFAULT_SEND_WR 256 | 16 | #define RDS_IB_DEFAULT_SEND_WR 256 |
17 | #define RDS_IB_DEFAULT_FR_WR 512 | ||
23 | 18 | ||
24 | #define RDS_IB_DEFAULT_RETRY_COUNT 2 | 19 | #define RDS_IB_DEFAULT_RETRY_COUNT 2 |
25 | 20 | ||
@@ -28,7 +23,6 @@ | |||
28 | #define RDS_IB_RECYCLE_BATCH_COUNT 32 | 23 | #define RDS_IB_RECYCLE_BATCH_COUNT 32 |
29 | 24 | ||
30 | #define RDS_IB_WC_MAX 32 | 25 | #define RDS_IB_WC_MAX 32 |
31 | #define RDS_IB_SEND_OP BIT_ULL(63) | ||
32 | 26 | ||
33 | extern struct rw_semaphore rds_ib_devices_lock; | 27 | extern struct rw_semaphore rds_ib_devices_lock; |
34 | extern struct list_head rds_ib_devices; | 28 | extern struct list_head rds_ib_devices; |
@@ -129,6 +123,9 @@ struct rds_ib_connection { | |||
129 | struct ib_wc i_send_wc[RDS_IB_WC_MAX]; | 123 | struct ib_wc i_send_wc[RDS_IB_WC_MAX]; |
130 | struct ib_wc i_recv_wc[RDS_IB_WC_MAX]; | 124 | struct ib_wc i_recv_wc[RDS_IB_WC_MAX]; |
131 | 125 | ||
126 | /* To control the number of wrs from fastreg */ | ||
127 | atomic_t i_fastreg_wrs; | ||
128 | |||
132 | /* interrupt handling */ | 129 | /* interrupt handling */ |
133 | struct tasklet_struct i_send_tasklet; | 130 | struct tasklet_struct i_send_tasklet; |
134 | struct tasklet_struct i_recv_tasklet; | 131 | struct tasklet_struct i_recv_tasklet; |
@@ -207,12 +204,16 @@ struct rds_ib_device { | |||
207 | struct list_head conn_list; | 204 | struct list_head conn_list; |
208 | struct ib_device *dev; | 205 | struct ib_device *dev; |
209 | struct ib_pd *pd; | 206 | struct ib_pd *pd; |
210 | unsigned int max_fmrs; | 207 | bool has_fmr; |
208 | bool has_fr; | ||
209 | bool use_fastreg; | ||
210 | |||
211 | unsigned int max_mrs; | ||
211 | struct rds_ib_mr_pool *mr_1m_pool; | 212 | struct rds_ib_mr_pool *mr_1m_pool; |
212 | struct rds_ib_mr_pool *mr_8k_pool; | 213 | struct rds_ib_mr_pool *mr_8k_pool; |
213 | unsigned int fmr_max_remaps; | 214 | unsigned int fmr_max_remaps; |
214 | unsigned int max_8k_fmrs; | 215 | unsigned int max_8k_mrs; |
215 | unsigned int max_1m_fmrs; | 216 | unsigned int max_1m_mrs; |
216 | int max_sge; | 217 | int max_sge; |
217 | unsigned int max_wrs; | 218 | unsigned int max_wrs; |
218 | unsigned int max_initiator_depth; | 219 | unsigned int max_initiator_depth; |
@@ -266,6 +267,8 @@ struct rds_ib_statistics { | |||
266 | uint64_t s_ib_rdma_mr_1m_pool_flush; | 267 | uint64_t s_ib_rdma_mr_1m_pool_flush; |
267 | uint64_t s_ib_rdma_mr_1m_pool_wait; | 268 | uint64_t s_ib_rdma_mr_1m_pool_wait; |
268 | uint64_t s_ib_rdma_mr_1m_pool_depleted; | 269 | uint64_t s_ib_rdma_mr_1m_pool_depleted; |
270 | uint64_t s_ib_rdma_mr_8k_reused; | ||
271 | uint64_t s_ib_rdma_mr_1m_reused; | ||
269 | uint64_t s_ib_atomic_cswp; | 272 | uint64_t s_ib_atomic_cswp; |
270 | uint64_t s_ib_atomic_fadd; | 273 | uint64_t s_ib_atomic_fadd; |
271 | }; | 274 | }; |
@@ -317,8 +320,6 @@ struct rds_ib_device *rds_ib_get_client_data(struct ib_device *device); | |||
317 | void rds_ib_dev_put(struct rds_ib_device *rds_ibdev); | 320 | void rds_ib_dev_put(struct rds_ib_device *rds_ibdev); |
318 | extern struct ib_client rds_ib_client; | 321 | extern struct ib_client rds_ib_client; |
319 | 322 | ||
320 | extern unsigned int rds_ib_fmr_1m_pool_size; | ||
321 | extern unsigned int rds_ib_fmr_8k_pool_size; | ||
322 | extern unsigned int rds_ib_retry_count; | 323 | extern unsigned int rds_ib_retry_count; |
323 | 324 | ||
324 | extern spinlock_t ib_nodev_conns_lock; | 325 | extern spinlock_t ib_nodev_conns_lock; |
@@ -348,17 +349,7 @@ int rds_ib_update_ipaddr(struct rds_ib_device *rds_ibdev, __be32 ipaddr); | |||
348 | void rds_ib_add_conn(struct rds_ib_device *rds_ibdev, struct rds_connection *conn); | 349 | void rds_ib_add_conn(struct rds_ib_device *rds_ibdev, struct rds_connection *conn); |
349 | void rds_ib_remove_conn(struct rds_ib_device *rds_ibdev, struct rds_connection *conn); | 350 | void rds_ib_remove_conn(struct rds_ib_device *rds_ibdev, struct rds_connection *conn); |
350 | void rds_ib_destroy_nodev_conns(void); | 351 | void rds_ib_destroy_nodev_conns(void); |
351 | struct rds_ib_mr_pool *rds_ib_create_mr_pool(struct rds_ib_device *rds_dev, | 352 | void rds_ib_mr_cqe_handler(struct rds_ib_connection *ic, struct ib_wc *wc); |
352 | int npages); | ||
353 | void rds_ib_get_mr_info(struct rds_ib_device *rds_ibdev, struct rds_info_rdma_connection *iinfo); | ||
354 | void rds_ib_destroy_mr_pool(struct rds_ib_mr_pool *); | ||
355 | void *rds_ib_get_mr(struct scatterlist *sg, unsigned long nents, | ||
356 | struct rds_sock *rs, u32 *key_ret); | ||
357 | void rds_ib_sync_mr(void *trans_private, int dir); | ||
358 | void rds_ib_free_mr(void *trans_private, int invalidate); | ||
359 | void rds_ib_flush_mrs(void); | ||
360 | int rds_ib_fmr_init(void); | ||
361 | void rds_ib_fmr_exit(void); | ||
362 | 353 | ||
363 | /* ib_recv.c */ | 354 | /* ib_recv.c */ |
364 | int rds_ib_recv_init(void); | 355 | int rds_ib_recv_init(void); |