1 /* QLogic qedr NIC Driver
2 * Copyright (c) 2015-2016 QLogic Corporation
4 * This software is available to you under a choice of one of two
5 * licenses. You may choose to be licensed under the terms of the GNU
6 * General Public License (GPL) Version 2, available from the file
7 * COPYING in the main directory of this source tree, or the
8 * OpenIB.org BSD license below:
10 * Redistribution and use in source and binary forms, with or
11 * without modification, are permitted provided that the following
14 * - Redistributions of source code must retain the above
15 * copyright notice, this list of conditions and the following
18 * - Redistributions in binary form must reproduce the above
19 * copyright notice, this list of conditions and the following
20 * disclaimer in the documentation and /or other materials
21 * provided with the distribution.
23 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
27 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
28 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
29 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
32 #ifndef __QEDR_VERBS_H__
33 #define __QEDR_VERBS_H__
35 int qedr_query_device(struct ib_device
*ibdev
,
36 struct ib_device_attr
*attr
, struct ib_udata
*udata
);
37 int qedr_query_port(struct ib_device
*, u8 port
, struct ib_port_attr
*props
);
38 int qedr_modify_port(struct ib_device
*, u8 port
, int mask
,
39 struct ib_port_modify
*props
);
41 int qedr_query_gid(struct ib_device
*, u8 port
, int index
, union ib_gid
*gid
);
43 int qedr_query_pkey(struct ib_device
*, u8 port
, u16 index
, u16
*pkey
);
45 struct ib_ucontext
*qedr_alloc_ucontext(struct ib_device
*, struct ib_udata
*);
46 int qedr_dealloc_ucontext(struct ib_ucontext
*);
48 int qedr_mmap(struct ib_ucontext
*, struct vm_area_struct
*vma
);
49 int qedr_del_gid(struct ib_device
*device
, u8 port_num
,
50 unsigned int index
, void **context
);
51 int qedr_add_gid(struct ib_device
*device
, u8 port_num
,
52 unsigned int index
, const union ib_gid
*gid
,
53 const struct ib_gid_attr
*attr
, void **context
);
54 struct ib_pd
*qedr_alloc_pd(struct ib_device
*,
55 struct ib_ucontext
*, struct ib_udata
*);
56 int qedr_dealloc_pd(struct ib_pd
*pd
);
58 struct ib_cq
*qedr_create_cq(struct ib_device
*ibdev
,
59 const struct ib_cq_init_attr
*attr
,
60 struct ib_ucontext
*ib_ctx
,
61 struct ib_udata
*udata
);
62 int qedr_resize_cq(struct ib_cq
*, int cqe
, struct ib_udata
*);
63 int qedr_destroy_cq(struct ib_cq
*);
64 int qedr_arm_cq(struct ib_cq
*ibcq
, enum ib_cq_notify_flags flags
);
65 struct ib_qp
*qedr_create_qp(struct ib_pd
*, struct ib_qp_init_attr
*attrs
,
67 int qedr_modify_qp(struct ib_qp
*, struct ib_qp_attr
*attr
,
68 int attr_mask
, struct ib_udata
*udata
);
69 int qedr_query_qp(struct ib_qp
*, struct ib_qp_attr
*qp_attr
,
70 int qp_attr_mask
, struct ib_qp_init_attr
*);
71 int qedr_destroy_qp(struct ib_qp
*ibqp
);
73 struct ib_ah
*qedr_create_ah(struct ib_pd
*ibpd
, struct ib_ah_attr
*attr
);
74 int qedr_destroy_ah(struct ib_ah
*ibah
);
76 int qedr_dereg_mr(struct ib_mr
*);
77 struct ib_mr
*qedr_get_dma_mr(struct ib_pd
*, int acc
);
79 struct ib_mr
*qedr_reg_user_mr(struct ib_pd
*, u64 start
, u64 length
,
80 u64 virt
, int acc
, struct ib_udata
*);
82 int qedr_map_mr_sg(struct ib_mr
*ibmr
, struct scatterlist
*sg
,
83 int sg_nents
, unsigned int *sg_offset
);
85 struct ib_mr
*qedr_alloc_mr(struct ib_pd
*pd
, enum ib_mr_type mr_type
,
87 int qedr_poll_cq(struct ib_cq
*, int num_entries
, struct ib_wc
*wc
);
88 int qedr_post_send(struct ib_qp
*, struct ib_send_wr
*,
89 struct ib_send_wr
**bad_wr
);
90 int qedr_post_recv(struct ib_qp
*, struct ib_recv_wr
*,
91 struct ib_recv_wr
**bad_wr
);
92 int qedr_process_mad(struct ib_device
*ibdev
, int process_mad_flags
,
93 u8 port_num
, const struct ib_wc
*in_wc
,
94 const struct ib_grh
*in_grh
,
95 const struct ib_mad_hdr
*in_mad
,
96 size_t in_mad_size
, struct ib_mad_hdr
*out_mad
,
97 size_t *out_mad_size
, u16
*out_mad_pkey_index
);
99 int qedr_port_immutable(struct ib_device
*ibdev
, u8 port_num
,
100 struct ib_port_immutable
*immutable
);