1fa790ea9SDavid C Somayajulu /* 2fa790ea9SDavid C Somayajulu * Copyright (c) 2018-2019 Cavium, Inc. 3fa790ea9SDavid C Somayajulu * All rights reserved. 4fa790ea9SDavid C Somayajulu * 5fa790ea9SDavid C Somayajulu * Redistribution and use in source and binary forms, with or without 6fa790ea9SDavid C Somayajulu * modification, are permitted provided that the following conditions 7fa790ea9SDavid C Somayajulu * are met: 8fa790ea9SDavid C Somayajulu * 9fa790ea9SDavid C Somayajulu * 1. Redistributions of source code must retain the above copyright 10fa790ea9SDavid C Somayajulu * notice, this list of conditions and the following disclaimer. 11fa790ea9SDavid C Somayajulu * 2. Redistributions in binary form must reproduce the above copyright 12fa790ea9SDavid C Somayajulu * notice, this list of conditions and the following disclaimer in the 13fa790ea9SDavid C Somayajulu * documentation and/or other materials provided with the distribution. 14fa790ea9SDavid C Somayajulu * 15fa790ea9SDavid C Somayajulu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 16fa790ea9SDavid C Somayajulu * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17fa790ea9SDavid C Somayajulu * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18fa790ea9SDavid C Somayajulu * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 19fa790ea9SDavid C Somayajulu * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 20fa790ea9SDavid C Somayajulu * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 21fa790ea9SDavid C Somayajulu * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 22fa790ea9SDavid C Somayajulu * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 23fa790ea9SDavid C Somayajulu * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 24fa790ea9SDavid C Somayajulu * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25fa790ea9SDavid C Somayajulu * POSSIBILITY OF SUCH DAMAGE. 26fa790ea9SDavid C Somayajulu * 27fa790ea9SDavid C Somayajulu */ 28fa790ea9SDavid C Somayajulu 29fa790ea9SDavid C Somayajulu #ifndef __QLNXR_VERBS_H__ 30fa790ea9SDavid C Somayajulu #define __QLNXR_VERBS_H__ 31fa790ea9SDavid C Somayajulu 32fa790ea9SDavid C Somayajulu extern int qlnxr_iw_query_gid(struct ib_device *, 33fa790ea9SDavid C Somayajulu uint8_t port, 34fa790ea9SDavid C Somayajulu int index, 35fa790ea9SDavid C Somayajulu union ib_gid *gid); 36fa790ea9SDavid C Somayajulu 37fa790ea9SDavid C Somayajulu extern int qlnxr_query_gid(struct ib_device *, 38fa790ea9SDavid C Somayajulu u8 port, 39fa790ea9SDavid C Somayajulu int index, 40fa790ea9SDavid C Somayajulu union ib_gid *gid); 41fa790ea9SDavid C Somayajulu 42*b633e08cSHans Petter Selasky extern int qlnxr_create_srq(struct ib_srq *ibsrq, 43fa790ea9SDavid C Somayajulu struct ib_srq_init_attr *, 44fa790ea9SDavid C Somayajulu struct ib_udata *); 45fa790ea9SDavid C Somayajulu 46*b633e08cSHans Petter Selasky extern void qlnxr_destroy_srq(struct ib_srq *, 47*b633e08cSHans Petter Selasky struct ib_udata *); 48fa790ea9SDavid C Somayajulu 49fa790ea9SDavid C Somayajulu extern int qlnxr_modify_srq(struct ib_srq *, 50fa790ea9SDavid C Somayajulu struct ib_srq_attr *, 51fa790ea9SDavid C Somayajulu enum ib_srq_attr_mask, 52fa790ea9SDavid C Somayajulu struct ib_udata *); 53fa790ea9SDavid C Somayajulu 54fa790ea9SDavid C Somayajulu extern int qlnxr_query_srq(struct ib_srq *, 55fa790ea9SDavid C Somayajulu struct ib_srq_attr *); 56fa790ea9SDavid C Somayajulu 57fa790ea9SDavid C Somayajulu extern int qlnxr_post_srq_recv(struct ib_srq *, 58c3987b8eSHans Petter Selasky const struct ib_recv_wr *, 59c3987b8eSHans Petter Selasky const struct ib_recv_wr **bad_recv_wr); 60fa790ea9SDavid C Somayajulu 61fa790ea9SDavid C Somayajulu extern int qlnxr_query_device(struct ib_device *, struct ib_device_attr *, 62fa790ea9SDavid C Somayajulu struct ib_udata *); 63fa790ea9SDavid C Somayajulu extern int qlnxr_get_port_immutable(struct ib_device *ibdev, u8 port_num, 64fa790ea9SDavid C Somayajulu struct ib_port_immutable *immutable); 65fa790ea9SDavid C Somayajulu 66fa790ea9SDavid C Somayajulu extern int qlnxr_query_port(struct ib_device *, 67fa790ea9SDavid C Somayajulu u8 port, 68fa790ea9SDavid C Somayajulu struct ib_port_attr *props); 69fa790ea9SDavid C Somayajulu 70fa790ea9SDavid C Somayajulu extern int qlnxr_modify_port(struct ib_device *, 71fa790ea9SDavid C Somayajulu u8 port, 72fa790ea9SDavid C Somayajulu int mask, 73fa790ea9SDavid C Somayajulu struct ib_port_modify *props); 74fa790ea9SDavid C Somayajulu 75fa790ea9SDavid C Somayajulu extern enum rdma_link_layer qlnxr_link_layer(struct ib_device *device, 76fa790ea9SDavid C Somayajulu uint8_t port_num); 77fa790ea9SDavid C Somayajulu 78*b633e08cSHans Petter Selasky extern int qlnxr_alloc_pd(struct ib_pd *ibpd, struct ib_udata *); 79fa790ea9SDavid C Somayajulu 80*b633e08cSHans Petter Selasky extern void qlnxr_dealloc_pd(struct ib_pd *pd, struct ib_udata *udata); 81fa790ea9SDavid C Somayajulu 82*b633e08cSHans Petter Selasky extern int qlnxr_create_cq(struct ib_cq *ibcq, 83fa790ea9SDavid C Somayajulu const struct ib_cq_init_attr *attr, 84fa790ea9SDavid C Somayajulu struct ib_udata *udata); 85fa790ea9SDavid C Somayajulu 86*b633e08cSHans Petter Selasky extern void qlnxr_destroy_cq(struct ib_cq *, struct ib_udata *); 87fa790ea9SDavid C Somayajulu 88fa790ea9SDavid C Somayajulu extern int qlnxr_resize_cq(struct ib_cq *, 89fa790ea9SDavid C Somayajulu int cqe, 90fa790ea9SDavid C Somayajulu struct ib_udata *); 91fa790ea9SDavid C Somayajulu 92fa790ea9SDavid C Somayajulu extern int qlnxr_poll_cq(struct ib_cq *, 93fa790ea9SDavid C Somayajulu int num_entries, 94fa790ea9SDavid C Somayajulu struct ib_wc *wc); 95fa790ea9SDavid C Somayajulu 96fa790ea9SDavid C Somayajulu extern struct ib_qp *qlnxr_create_qp(struct ib_pd *, 97fa790ea9SDavid C Somayajulu struct ib_qp_init_attr *attrs, 98fa790ea9SDavid C Somayajulu struct ib_udata *); 99fa790ea9SDavid C Somayajulu 100fa790ea9SDavid C Somayajulu extern int qlnxr_modify_qp(struct ib_qp *, 101fa790ea9SDavid C Somayajulu struct ib_qp_attr *attr, 102fa790ea9SDavid C Somayajulu int attr_mask, 103fa790ea9SDavid C Somayajulu struct ib_udata *udata); 104fa790ea9SDavid C Somayajulu 105fa790ea9SDavid C Somayajulu extern int qlnxr_query_qp(struct ib_qp *, 106fa790ea9SDavid C Somayajulu struct ib_qp_attr *qp_attr, 107fa790ea9SDavid C Somayajulu int qp_attr_mask, 108fa790ea9SDavid C Somayajulu struct ib_qp_init_attr *); 109fa790ea9SDavid C Somayajulu 110*b633e08cSHans Petter Selasky extern int qlnxr_destroy_qp(struct ib_qp *, struct ib_udata *); 111fa790ea9SDavid C Somayajulu 112fa790ea9SDavid C Somayajulu extern int qlnxr_query_pkey(struct ib_device *, 113fa790ea9SDavid C Somayajulu u8 port, 114fa790ea9SDavid C Somayajulu u16 index, 115fa790ea9SDavid C Somayajulu u16 *pkey); 116fa790ea9SDavid C Somayajulu 117*b633e08cSHans Petter Selasky extern int qlnxr_create_ah(struct ib_ah *ibah, 118*b633e08cSHans Petter Selasky struct ib_ah_attr *attr, u32 flags, 119*b633e08cSHans Petter Selasky struct ib_udata *udata); 120*b633e08cSHans Petter Selasky extern void qlnxr_destroy_ah(struct ib_ah *ibah, u32 flags); 121fa790ea9SDavid C Somayajulu 122fa790ea9SDavid C Somayajulu extern int qlnxr_query_ah(struct ib_ah *ibah, 123fa790ea9SDavid C Somayajulu struct ib_ah_attr *attr); 124fa790ea9SDavid C Somayajulu 125fa790ea9SDavid C Somayajulu extern int qlnxr_modify_ah(struct ib_ah *ibah, 126fa790ea9SDavid C Somayajulu struct ib_ah_attr *attr); 127fa790ea9SDavid C Somayajulu 128fa790ea9SDavid C Somayajulu extern int qlnxr_process_mad(struct ib_device *ibdev, 129fa790ea9SDavid C Somayajulu int process_mad_flags, 130fa790ea9SDavid C Somayajulu u8 port_num, 131fa790ea9SDavid C Somayajulu const struct ib_wc *in_wc, 132fa790ea9SDavid C Somayajulu const struct ib_grh *in_grh, 133fa790ea9SDavid C Somayajulu const struct ib_mad_hdr *mad_hdr, 134fa790ea9SDavid C Somayajulu size_t in_mad_size, 135fa790ea9SDavid C Somayajulu struct ib_mad_hdr *out_mad, 136fa790ea9SDavid C Somayajulu size_t *out_mad_size, 137fa790ea9SDavid C Somayajulu u16 *out_mad_pkey_index); 138fa790ea9SDavid C Somayajulu 139fa790ea9SDavid C Somayajulu extern int qlnxr_post_send(struct ib_qp *, 140c3987b8eSHans Petter Selasky const struct ib_send_wr *, 141c3987b8eSHans Petter Selasky const struct ib_send_wr **bad_wr); 142fa790ea9SDavid C Somayajulu 143fa790ea9SDavid C Somayajulu extern int qlnxr_post_recv(struct ib_qp *, 144c3987b8eSHans Petter Selasky const struct ib_recv_wr *, 145c3987b8eSHans Petter Selasky const struct ib_recv_wr **bad_wr); 146fa790ea9SDavid C Somayajulu 147fa790ea9SDavid C Somayajulu extern int qlnxr_arm_cq(struct ib_cq *, 148fa790ea9SDavid C Somayajulu enum ib_cq_notify_flags flags); 149fa790ea9SDavid C Somayajulu 150fa790ea9SDavid C Somayajulu extern struct ib_mr *qlnxr_get_dma_mr(struct ib_pd *, 151fa790ea9SDavid C Somayajulu int acc); 152fa790ea9SDavid C Somayajulu 153*b633e08cSHans Petter Selasky extern int qlnxr_dereg_mr(struct ib_mr *, struct ib_udata *); 154fa790ea9SDavid C Somayajulu 155fa790ea9SDavid C Somayajulu extern struct ib_mr *qlnxr_reg_user_mr(struct ib_pd *, 156fa790ea9SDavid C Somayajulu u64 start, 157fa790ea9SDavid C Somayajulu u64 length, 158fa790ea9SDavid C Somayajulu u64 virt, 159fa790ea9SDavid C Somayajulu int acc, 160fa790ea9SDavid C Somayajulu struct ib_udata *); 161fa790ea9SDavid C Somayajulu 162fa790ea9SDavid C Somayajulu extern struct ib_mr *qlnxr_alloc_mr(struct ib_pd *pd, 163*b633e08cSHans Petter Selasky enum ib_mr_type mr_type, u32 max_num_sg, 164*b633e08cSHans Petter Selasky struct ib_udata *udata); 165*b633e08cSHans Petter Selasky 166fa790ea9SDavid C Somayajulu extern int qlnxr_map_mr_sg(struct ib_mr *mr, struct scatterlist *sg, 167fa790ea9SDavid C Somayajulu int sg_nents, unsigned int *sg_offset); 168fa790ea9SDavid C Somayajulu 169*b633e08cSHans Petter Selasky extern int qlnxr_alloc_ucontext(struct ib_ucontext *uctx, 170fa790ea9SDavid C Somayajulu struct ib_udata *udata); 171fa790ea9SDavid C Somayajulu 172*b633e08cSHans Petter Selasky extern void qlnxr_dealloc_ucontext(struct ib_ucontext *ibctx); 173fa790ea9SDavid C Somayajulu 174fa790ea9SDavid C Somayajulu extern int qlnxr_mmap(struct ib_ucontext *, struct vm_area_struct *vma); 175fa790ea9SDavid C Somayajulu 176fa790ea9SDavid C Somayajulu extern int qlnxr_iw_connect(struct iw_cm_id *cm_id, 177fa790ea9SDavid C Somayajulu struct iw_cm_conn_param *conn_param); 178fa790ea9SDavid C Somayajulu 179fa790ea9SDavid C Somayajulu extern int qlnxr_iw_create_listen(struct iw_cm_id *cm_id, int backlog); 180fa790ea9SDavid C Somayajulu 181fa790ea9SDavid C Somayajulu void qlnxr_iw_destroy_listen(struct iw_cm_id *cm_id); 182fa790ea9SDavid C Somayajulu 183fa790ea9SDavid C Somayajulu extern int qlnxr_iw_accept(struct iw_cm_id *cm_id, 184fa790ea9SDavid C Somayajulu struct iw_cm_conn_param *conn_param); 185fa790ea9SDavid C Somayajulu 186fa790ea9SDavid C Somayajulu extern int qlnxr_iw_reject(struct iw_cm_id *cm_id, const void *pdata, u8 pdata_len); 187fa790ea9SDavid C Somayajulu 188fa790ea9SDavid C Somayajulu extern void qlnxr_iw_qp_add_ref(struct ib_qp *qp); 189fa790ea9SDavid C Somayajulu 190fa790ea9SDavid C Somayajulu extern void qlnxr_iw_qp_rem_ref(struct ib_qp *qp); 191fa790ea9SDavid C Somayajulu 192fa790ea9SDavid C Somayajulu extern struct ib_qp *qlnxr_iw_get_qp(struct ib_device *dev, int qpn); 193fa790ea9SDavid C Somayajulu 194fa790ea9SDavid C Somayajulu #endif /* #ifndef __QLNXR_VERBS_H__ */ 195