0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032 #ifndef __QEDR_VERBS_H__
0033 #define __QEDR_VERBS_H__
0034
0035 int qedr_query_device(struct ib_device *ibdev,
0036 struct ib_device_attr *attr, struct ib_udata *udata);
0037 int qedr_query_port(struct ib_device *ibdev, u32 port,
0038 struct ib_port_attr *props);
0039
0040 int qedr_iw_query_gid(struct ib_device *ibdev, u32 port,
0041 int index, union ib_gid *gid);
0042
0043 int qedr_query_pkey(struct ib_device *ibdev, u32 port, u16 index, u16 *pkey);
0044
0045 int qedr_alloc_ucontext(struct ib_ucontext *uctx, struct ib_udata *udata);
0046 void qedr_dealloc_ucontext(struct ib_ucontext *uctx);
0047
0048 int qedr_mmap(struct ib_ucontext *ucontext, struct vm_area_struct *vma);
0049 void qedr_mmap_free(struct rdma_user_mmap_entry *rdma_entry);
0050 int qedr_alloc_pd(struct ib_pd *pd, struct ib_udata *udata);
0051 int qedr_dealloc_pd(struct ib_pd *pd, struct ib_udata *udata);
0052 int qedr_alloc_xrcd(struct ib_xrcd *ibxrcd, struct ib_udata *udata);
0053 int qedr_dealloc_xrcd(struct ib_xrcd *ibxrcd, struct ib_udata *udata);
0054 int qedr_create_cq(struct ib_cq *ibcq, const struct ib_cq_init_attr *attr,
0055 struct ib_udata *udata);
0056 int qedr_destroy_cq(struct ib_cq *ibcq, struct ib_udata *udata);
0057 int qedr_arm_cq(struct ib_cq *ibcq, enum ib_cq_notify_flags flags);
0058 int qedr_create_qp(struct ib_qp *qp, struct ib_qp_init_attr *attrs,
0059 struct ib_udata *udata);
0060 int qedr_modify_qp(struct ib_qp *, struct ib_qp_attr *attr,
0061 int attr_mask, struct ib_udata *udata);
0062 int qedr_query_qp(struct ib_qp *, struct ib_qp_attr *qp_attr,
0063 int qp_attr_mask, struct ib_qp_init_attr *);
0064 int qedr_destroy_qp(struct ib_qp *ibqp, struct ib_udata *udata);
0065
0066 int qedr_create_srq(struct ib_srq *ibsrq, struct ib_srq_init_attr *attr,
0067 struct ib_udata *udata);
0068 int qedr_modify_srq(struct ib_srq *ibsrq, struct ib_srq_attr *attr,
0069 enum ib_srq_attr_mask attr_mask, struct ib_udata *udata);
0070 int qedr_query_srq(struct ib_srq *ibsrq, struct ib_srq_attr *attr);
0071 int qedr_destroy_srq(struct ib_srq *ibsrq, struct ib_udata *udata);
0072 int qedr_post_srq_recv(struct ib_srq *ibsrq, const struct ib_recv_wr *wr,
0073 const struct ib_recv_wr **bad_recv_wr);
0074 int qedr_create_ah(struct ib_ah *ibah, struct rdma_ah_init_attr *init_attr,
0075 struct ib_udata *udata);
0076 int qedr_destroy_ah(struct ib_ah *ibah, u32 flags);
0077
0078 int qedr_dereg_mr(struct ib_mr *ib_mr, struct ib_udata *udata);
0079 struct ib_mr *qedr_get_dma_mr(struct ib_pd *, int acc);
0080
0081 struct ib_mr *qedr_reg_user_mr(struct ib_pd *, u64 start, u64 length,
0082 u64 virt, int acc, struct ib_udata *);
0083
0084 int qedr_map_mr_sg(struct ib_mr *ibmr, struct scatterlist *sg,
0085 int sg_nents, unsigned int *sg_offset);
0086
0087 struct ib_mr *qedr_alloc_mr(struct ib_pd *pd, enum ib_mr_type mr_type,
0088 u32 max_num_sg);
0089 int qedr_poll_cq(struct ib_cq *, int num_entries, struct ib_wc *wc);
0090 int qedr_post_send(struct ib_qp *, const struct ib_send_wr *,
0091 const struct ib_send_wr **bad_wr);
0092 int qedr_post_recv(struct ib_qp *, const struct ib_recv_wr *,
0093 const struct ib_recv_wr **bad_wr);
0094 int qedr_process_mad(struct ib_device *ibdev, int process_mad_flags,
0095 u32 port_num, const struct ib_wc *in_wc,
0096 const struct ib_grh *in_grh, const struct ib_mad *in_mad,
0097 struct ib_mad *out_mad, size_t *out_mad_size,
0098 u16 *out_mad_pkey_index);
0099
0100 int qedr_port_immutable(struct ib_device *ibdev, u32 port_num,
0101 struct ib_port_immutable *immutable);
0102 #endif