aboutsummaryrefslogtreecommitdiffstats
path: root/net/rds/ib.h
diff options
context:
space:
mode:
Diffstat (limited to 'net/rds/ib.h')
-rw-r--r--net/rds/ib.h37
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
33extern struct rw_semaphore rds_ib_devices_lock; 27extern struct rw_semaphore rds_ib_devices_lock;
34extern struct list_head rds_ib_devices; 28extern 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);
317void rds_ib_dev_put(struct rds_ib_device *rds_ibdev); 320void rds_ib_dev_put(struct rds_ib_device *rds_ibdev);
318extern struct ib_client rds_ib_client; 321extern struct ib_client rds_ib_client;
319 322
320extern unsigned int rds_ib_fmr_1m_pool_size;
321extern unsigned int rds_ib_fmr_8k_pool_size;
322extern unsigned int rds_ib_retry_count; 323extern unsigned int rds_ib_retry_count;
323 324
324extern spinlock_t ib_nodev_conns_lock; 325extern spinlock_t ib_nodev_conns_lock;
@@ -348,17 +349,7 @@ int rds_ib_update_ipaddr(struct rds_ib_device *rds_ibdev, __be32 ipaddr);
348void rds_ib_add_conn(struct rds_ib_device *rds_ibdev, struct rds_connection *conn); 349void rds_ib_add_conn(struct rds_ib_device *rds_ibdev, struct rds_connection *conn);
349void rds_ib_remove_conn(struct rds_ib_device *rds_ibdev, struct rds_connection *conn); 350void rds_ib_remove_conn(struct rds_ib_device *rds_ibdev, struct rds_connection *conn);
350void rds_ib_destroy_nodev_conns(void); 351void rds_ib_destroy_nodev_conns(void);
351struct rds_ib_mr_pool *rds_ib_create_mr_pool(struct rds_ib_device *rds_dev, 352void rds_ib_mr_cqe_handler(struct rds_ib_connection *ic, struct ib_wc *wc);
352 int npages);
353void rds_ib_get_mr_info(struct rds_ib_device *rds_ibdev, struct rds_info_rdma_connection *iinfo);
354void rds_ib_destroy_mr_pool(struct rds_ib_mr_pool *);
355void *rds_ib_get_mr(struct scatterlist *sg, unsigned long nents,
356 struct rds_sock *rs, u32 *key_ret);
357void rds_ib_sync_mr(void *trans_private, int dir);
358void rds_ib_free_mr(void *trans_private, int invalidate);
359void rds_ib_flush_mrs(void);
360int rds_ib_fmr_init(void);
361void rds_ib_fmr_exit(void);
362 353
363/* ib_recv.c */ 354/* ib_recv.c */
364int rds_ib_recv_init(void); 355int rds_ib_recv_init(void);