aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/hw/ipath/ipath_verbs.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/infiniband/hw/ipath/ipath_verbs.h')
-rw-r--r--drivers/infiniband/hw/ipath/ipath_verbs.h18
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
222struct ipath_mregion { 222struct 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
635int ipath_destroy_qp(struct ib_qp *ibqp); 641int ipath_destroy_qp(struct ib_qp *ibqp);
636 642
643void ipath_error_qp(struct ipath_qp *qp, enum ib_wc_status err);
644
637int ipath_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr, 645int 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
654void ipath_cq_enter(struct ipath_cq *cq, struct ib_wc *entry, int sig); 662void ipath_cq_enter(struct ipath_cq *cq, struct ib_wc *entry, int sig);
655 663
656int ipath_rkey_ok(struct ipath_ibdev *dev, struct ipath_sge_state *ss,
657 u32 len, u64 vaddr, u32 rkey, int acc);
658
659int ipath_lkey_ok(struct ipath_lkey_table *rkt, struct ipath_sge *isge,
660 struct ib_sge *sge, int acc);
661
662void ipath_copy_sge(struct ipath_sge_state *ss, void *data, u32 length); 664void ipath_copy_sge(struct ipath_sge_state *ss, void *data, u32 length);
663 665
664void ipath_skip_sge(struct ipath_sge_state *ss, u32 length); 666void 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
684void ipath_free_lkey(struct ipath_lkey_table *rkt, u32 lkey); 686void ipath_free_lkey(struct ipath_lkey_table *rkt, u32 lkey);
685 687
686int ipath_lkey_ok(struct ipath_lkey_table *rkt, struct ipath_sge *isge, 688int 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
689int ipath_rkey_ok(struct ipath_ibdev *dev, struct ipath_sge_state *ss, 691int 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
692int ipath_post_srq_receive(struct ib_srq *ibsrq, struct ib_recv_wr *wr, 694int ipath_post_srq_receive(struct ib_srq *ibsrq, struct ib_recv_wr *wr,