diff options
Diffstat (limited to 'drivers/infiniband/hw/ehca/ehca_classes.h')
-rw-r--r-- | drivers/infiniband/hw/ehca/ehca_classes.h | 41 |
1 files changed, 26 insertions, 15 deletions
diff --git a/drivers/infiniband/hw/ehca/ehca_classes.h b/drivers/infiniband/hw/ehca/ehca_classes.h index 63b8b9f7c4fc..3725aa8664d9 100644 --- a/drivers/infiniband/hw/ehca/ehca_classes.h +++ b/drivers/infiniband/hw/ehca/ehca_classes.h | |||
@@ -43,7 +43,6 @@ | |||
43 | #ifndef __EHCA_CLASSES_H__ | 43 | #ifndef __EHCA_CLASSES_H__ |
44 | #define __EHCA_CLASSES_H__ | 44 | #define __EHCA_CLASSES_H__ |
45 | 45 | ||
46 | |||
47 | struct ehca_module; | 46 | struct ehca_module; |
48 | struct ehca_qp; | 47 | struct ehca_qp; |
49 | struct ehca_cq; | 48 | struct ehca_cq; |
@@ -129,6 +128,10 @@ struct ehca_pd { | |||
129 | struct ib_pd ib_pd; | 128 | struct ib_pd ib_pd; |
130 | struct ipz_pd fw_pd; | 129 | struct ipz_pd fw_pd; |
131 | u32 ownpid; | 130 | u32 ownpid; |
131 | /* small queue mgmt */ | ||
132 | struct mutex lock; | ||
133 | struct list_head free[2]; | ||
134 | struct list_head full[2]; | ||
132 | }; | 135 | }; |
133 | 136 | ||
134 | enum ehca_ext_qp_type { | 137 | enum ehca_ext_qp_type { |
@@ -307,6 +310,8 @@ int ehca_init_av_cache(void); | |||
307 | void ehca_cleanup_av_cache(void); | 310 | void ehca_cleanup_av_cache(void); |
308 | int ehca_init_mrmw_cache(void); | 311 | int ehca_init_mrmw_cache(void); |
309 | void ehca_cleanup_mrmw_cache(void); | 312 | void ehca_cleanup_mrmw_cache(void); |
313 | int ehca_init_small_qp_cache(void); | ||
314 | void ehca_cleanup_small_qp_cache(void); | ||
310 | 315 | ||
311 | extern rwlock_t ehca_qp_idr_lock; | 316 | extern rwlock_t ehca_qp_idr_lock; |
312 | extern rwlock_t ehca_cq_idr_lock; | 317 | extern rwlock_t ehca_cq_idr_lock; |
@@ -324,7 +329,7 @@ struct ipzu_queue_resp { | |||
324 | u32 queue_length; /* queue length allocated in bytes */ | 329 | u32 queue_length; /* queue length allocated in bytes */ |
325 | u32 pagesize; | 330 | u32 pagesize; |
326 | u32 toggle_state; | 331 | u32 toggle_state; |
327 | u32 dummy; /* padding for 8 byte alignment */ | 332 | u32 offset; /* save offset within a page for small_qp */ |
328 | }; | 333 | }; |
329 | 334 | ||
330 | struct ehca_create_cq_resp { | 335 | struct ehca_create_cq_resp { |
@@ -366,15 +371,29 @@ enum ehca_ll_comp_flags { | |||
366 | LLQP_COMP_MASK = 0x60, | 371 | LLQP_COMP_MASK = 0x60, |
367 | }; | 372 | }; |
368 | 373 | ||
374 | struct ehca_alloc_queue_parms { | ||
375 | /* input parameters */ | ||
376 | int max_wr; | ||
377 | int max_sge; | ||
378 | int page_size; | ||
379 | int is_small; | ||
380 | |||
381 | /* output parameters */ | ||
382 | u16 act_nr_wqes; | ||
383 | u8 act_nr_sges; | ||
384 | u32 queue_size; /* bytes for small queues, pages otherwise */ | ||
385 | }; | ||
386 | |||
369 | struct ehca_alloc_qp_parms { | 387 | struct ehca_alloc_qp_parms { |
370 | /* input parameters */ | 388 | struct ehca_alloc_queue_parms squeue; |
389 | struct ehca_alloc_queue_parms rqueue; | ||
390 | |||
391 | /* input parameters */ | ||
371 | enum ehca_service_type servicetype; | 392 | enum ehca_service_type servicetype; |
393 | int qp_storage; | ||
372 | int sigtype; | 394 | int sigtype; |
373 | enum ehca_ext_qp_type ext_type; | 395 | enum ehca_ext_qp_type ext_type; |
374 | enum ehca_ll_comp_flags ll_comp_flags; | 396 | enum ehca_ll_comp_flags ll_comp_flags; |
375 | |||
376 | int max_send_wr, max_recv_wr; | ||
377 | int max_send_sge, max_recv_sge; | ||
378 | int ud_av_l_key_ctl; | 397 | int ud_av_l_key_ctl; |
379 | 398 | ||
380 | u32 token; | 399 | u32 token; |
@@ -384,18 +403,10 @@ struct ehca_alloc_qp_parms { | |||
384 | 403 | ||
385 | u32 srq_qpn, srq_token, srq_limit; | 404 | u32 srq_qpn, srq_token, srq_limit; |
386 | 405 | ||
387 | /* output parameters */ | 406 | /* output parameters */ |
388 | u32 real_qp_num; | 407 | u32 real_qp_num; |
389 | struct ipz_qp_handle qp_handle; | 408 | struct ipz_qp_handle qp_handle; |
390 | struct h_galpas galpas; | 409 | struct h_galpas galpas; |
391 | |||
392 | u16 act_nr_send_wqes; | ||
393 | u16 act_nr_recv_wqes; | ||
394 | u8 act_nr_recv_sges; | ||
395 | u8 act_nr_send_sges; | ||
396 | |||
397 | u32 nr_rq_pages; | ||
398 | u32 nr_sq_pages; | ||
399 | }; | 410 | }; |
400 | 411 | ||
401 | int ehca_cq_assign_qp(struct ehca_cq *cq, struct ehca_qp *qp); | 412 | int ehca_cq_assign_qp(struct ehca_cq *cq, struct ehca_qp *qp); |