diff options
Diffstat (limited to 'drivers/infiniband/hw/ipath/ipath_verbs.h')
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_verbs.h | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/drivers/infiniband/hw/ipath/ipath_verbs.h b/drivers/infiniband/hw/ipath/ipath_verbs.h index 09bbb3f9a217..8039f6e5f0c8 100644 --- a/drivers/infiniband/hw/ipath/ipath_verbs.h +++ b/drivers/infiniband/hw/ipath/ipath_verbs.h | |||
@@ -220,6 +220,7 @@ struct ipath_segarray { | |||
220 | }; | 220 | }; |
221 | 221 | ||
222 | struct ipath_mregion { | 222 | struct ipath_mregion { |
223 | struct ib_pd *pd; /* shares refcnt of ibmr.pd */ | ||
223 | u64 user_base; /* User's address for this region */ | 224 | u64 user_base; /* User's address for this region */ |
224 | u64 iova; /* IB start address of this region */ | 225 | u64 iova; /* IB start address of this region */ |
225 | size_t length; | 226 | size_t length; |
@@ -364,12 +365,14 @@ struct ipath_qp { | |||
364 | u8 r_min_rnr_timer; /* retry timeout value for RNR NAKs */ | 365 | u8 r_min_rnr_timer; /* retry timeout value for RNR NAKs */ |
365 | u8 r_reuse_sge; /* for UC receive errors */ | 366 | u8 r_reuse_sge; /* for UC receive errors */ |
366 | u8 r_sge_inx; /* current index into sg_list */ | 367 | u8 r_sge_inx; /* current index into sg_list */ |
368 | u8 r_wrid_valid; /* r_wrid set but CQ entry not yet made */ | ||
367 | u8 qp_access_flags; | 369 | u8 qp_access_flags; |
368 | u8 s_max_sge; /* size of s_wq->sg_list */ | 370 | u8 s_max_sge; /* size of s_wq->sg_list */ |
369 | u8 s_retry_cnt; /* number of times to retry */ | 371 | u8 s_retry_cnt; /* number of times to retry */ |
370 | u8 s_rnr_retry_cnt; | 372 | u8 s_rnr_retry_cnt; |
371 | u8 s_retry; /* requester retry counter */ | 373 | u8 s_retry; /* requester retry counter */ |
372 | u8 s_rnr_retry; /* requester RNR retry counter */ | 374 | u8 s_rnr_retry; /* requester RNR retry counter */ |
375 | u8 s_wait_credit; /* limit number of unacked packets sent */ | ||
373 | u8 s_pkey_index; /* PKEY index to use */ | 376 | u8 s_pkey_index; /* PKEY index to use */ |
374 | u8 timeout; /* Timeout for this QP */ | 377 | u8 timeout; /* Timeout for this QP */ |
375 | enum ib_mtu path_mtu; | 378 | enum ib_mtu path_mtu; |
@@ -393,6 +396,8 @@ struct ipath_qp { | |||
393 | #define IPATH_S_BUSY 0 | 396 | #define IPATH_S_BUSY 0 |
394 | #define IPATH_S_SIGNAL_REQ_WR 1 | 397 | #define IPATH_S_SIGNAL_REQ_WR 1 |
395 | 398 | ||
399 | #define IPATH_PSN_CREDIT 2048 | ||
400 | |||
396 | /* | 401 | /* |
397 | * Since struct ipath_swqe is not a fixed size, we can't simply index into | 402 | * Since struct ipath_swqe is not a fixed size, we can't simply index into |
398 | * struct ipath_qp.s_wq. This function does the array index computation. | 403 | * struct ipath_qp.s_wq. This function does the array index computation. |
@@ -521,6 +526,7 @@ struct ipath_ibdev { | |||
521 | u32 n_rnr_naks; | 526 | u32 n_rnr_naks; |
522 | u32 n_other_naks; | 527 | u32 n_other_naks; |
523 | u32 n_timeouts; | 528 | u32 n_timeouts; |
529 | u32 n_rc_stalls; | ||
524 | u32 n_pkt_drops; | 530 | u32 n_pkt_drops; |
525 | u32 n_vl15_dropped; | 531 | u32 n_vl15_dropped; |
526 | u32 n_wqe_errs; | 532 | u32 n_wqe_errs; |
@@ -634,6 +640,8 @@ struct ib_qp *ipath_create_qp(struct ib_pd *ibpd, | |||
634 | 640 | ||
635 | int ipath_destroy_qp(struct ib_qp *ibqp); | 641 | int ipath_destroy_qp(struct ib_qp *ibqp); |
636 | 642 | ||
643 | void ipath_error_qp(struct ipath_qp *qp, enum ib_wc_status err); | ||
644 | |||
637 | int ipath_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr, | 645 | int ipath_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr, |
638 | int attr_mask, struct ib_udata *udata); | 646 | int attr_mask, struct ib_udata *udata); |
639 | 647 | ||
@@ -653,12 +661,6 @@ int ipath_verbs_send(struct ipath_devdata *dd, u32 hdrwords, | |||
653 | 661 | ||
654 | void ipath_cq_enter(struct ipath_cq *cq, struct ib_wc *entry, int sig); | 662 | void ipath_cq_enter(struct ipath_cq *cq, struct ib_wc *entry, int sig); |
655 | 663 | ||
656 | int ipath_rkey_ok(struct ipath_ibdev *dev, struct ipath_sge_state *ss, | ||
657 | u32 len, u64 vaddr, u32 rkey, int acc); | ||
658 | |||
659 | int ipath_lkey_ok(struct ipath_lkey_table *rkt, struct ipath_sge *isge, | ||
660 | struct ib_sge *sge, int acc); | ||
661 | |||
662 | void ipath_copy_sge(struct ipath_sge_state *ss, void *data, u32 length); | 664 | void ipath_copy_sge(struct ipath_sge_state *ss, void *data, u32 length); |
663 | 665 | ||
664 | void ipath_skip_sge(struct ipath_sge_state *ss, u32 length); | 666 | void ipath_skip_sge(struct ipath_sge_state *ss, u32 length); |
@@ -683,10 +685,10 @@ int ipath_alloc_lkey(struct ipath_lkey_table *rkt, | |||
683 | 685 | ||
684 | void ipath_free_lkey(struct ipath_lkey_table *rkt, u32 lkey); | 686 | void ipath_free_lkey(struct ipath_lkey_table *rkt, u32 lkey); |
685 | 687 | ||
686 | int ipath_lkey_ok(struct ipath_lkey_table *rkt, struct ipath_sge *isge, | 688 | int ipath_lkey_ok(struct ipath_qp *qp, struct ipath_sge *isge, |
687 | struct ib_sge *sge, int acc); | 689 | struct ib_sge *sge, int acc); |
688 | 690 | ||
689 | int ipath_rkey_ok(struct ipath_ibdev *dev, struct ipath_sge_state *ss, | 691 | int ipath_rkey_ok(struct ipath_qp *qp, struct ipath_sge_state *ss, |
690 | u32 len, u64 vaddr, u32 rkey, int acc); | 692 | u32 len, u64 vaddr, u32 rkey, int acc); |
691 | 693 | ||
692 | int ipath_post_srq_receive(struct ib_srq *ibsrq, struct ib_recv_wr *wr, | 694 | int ipath_post_srq_receive(struct ib_srq *ibsrq, struct ib_recv_wr *wr, |