@@ -161,6 +161,49 @@ static struct net_device *pvrdma_get_netdev(struct ib_device *ibdev,
161
161
return netdev ;
162
162
}
163
163
164
+ static const struct ib_device_ops pvrdma_dev_ops = {
165
+ .add_gid = pvrdma_add_gid ,
166
+ .alloc_mr = pvrdma_alloc_mr ,
167
+ .alloc_pd = pvrdma_alloc_pd ,
168
+ .alloc_ucontext = pvrdma_alloc_ucontext ,
169
+ .create_ah = pvrdma_create_ah ,
170
+ .create_cq = pvrdma_create_cq ,
171
+ .create_qp = pvrdma_create_qp ,
172
+ .dealloc_pd = pvrdma_dealloc_pd ,
173
+ .dealloc_ucontext = pvrdma_dealloc_ucontext ,
174
+ .del_gid = pvrdma_del_gid ,
175
+ .dereg_mr = pvrdma_dereg_mr ,
176
+ .destroy_ah = pvrdma_destroy_ah ,
177
+ .destroy_cq = pvrdma_destroy_cq ,
178
+ .destroy_qp = pvrdma_destroy_qp ,
179
+ .get_dev_fw_str = pvrdma_get_fw_ver_str ,
180
+ .get_dma_mr = pvrdma_get_dma_mr ,
181
+ .get_link_layer = pvrdma_port_link_layer ,
182
+ .get_netdev = pvrdma_get_netdev ,
183
+ .get_port_immutable = pvrdma_port_immutable ,
184
+ .map_mr_sg = pvrdma_map_mr_sg ,
185
+ .mmap = pvrdma_mmap ,
186
+ .modify_port = pvrdma_modify_port ,
187
+ .modify_qp = pvrdma_modify_qp ,
188
+ .poll_cq = pvrdma_poll_cq ,
189
+ .post_recv = pvrdma_post_recv ,
190
+ .post_send = pvrdma_post_send ,
191
+ .query_device = pvrdma_query_device ,
192
+ .query_gid = pvrdma_query_gid ,
193
+ .query_pkey = pvrdma_query_pkey ,
194
+ .query_port = pvrdma_query_port ,
195
+ .query_qp = pvrdma_query_qp ,
196
+ .reg_user_mr = pvrdma_reg_user_mr ,
197
+ .req_notify_cq = pvrdma_req_notify_cq ,
198
+ };
199
+
200
+ static const struct ib_device_ops pvrdma_dev_srq_ops = {
201
+ .create_srq = pvrdma_create_srq ,
202
+ .destroy_srq = pvrdma_destroy_srq ,
203
+ .modify_srq = pvrdma_modify_srq ,
204
+ .query_srq = pvrdma_query_srq ,
205
+ };
206
+
164
207
static int pvrdma_register_device (struct pvrdma_dev * dev )
165
208
{
166
209
int ret = -1 ;
@@ -197,39 +240,7 @@ static int pvrdma_register_device(struct pvrdma_dev *dev)
197
240
dev -> ib_dev .node_type = RDMA_NODE_IB_CA ;
198
241
dev -> ib_dev .phys_port_cnt = dev -> dsr -> caps .phys_port_cnt ;
199
242
200
- dev -> ib_dev .query_device = pvrdma_query_device ;
201
- dev -> ib_dev .query_port = pvrdma_query_port ;
202
- dev -> ib_dev .query_gid = pvrdma_query_gid ;
203
- dev -> ib_dev .query_pkey = pvrdma_query_pkey ;
204
- dev -> ib_dev .modify_port = pvrdma_modify_port ;
205
- dev -> ib_dev .alloc_ucontext = pvrdma_alloc_ucontext ;
206
- dev -> ib_dev .dealloc_ucontext = pvrdma_dealloc_ucontext ;
207
- dev -> ib_dev .mmap = pvrdma_mmap ;
208
- dev -> ib_dev .alloc_pd = pvrdma_alloc_pd ;
209
- dev -> ib_dev .dealloc_pd = pvrdma_dealloc_pd ;
210
- dev -> ib_dev .create_ah = pvrdma_create_ah ;
211
- dev -> ib_dev .destroy_ah = pvrdma_destroy_ah ;
212
- dev -> ib_dev .create_qp = pvrdma_create_qp ;
213
- dev -> ib_dev .modify_qp = pvrdma_modify_qp ;
214
- dev -> ib_dev .query_qp = pvrdma_query_qp ;
215
- dev -> ib_dev .destroy_qp = pvrdma_destroy_qp ;
216
- dev -> ib_dev .post_send = pvrdma_post_send ;
217
- dev -> ib_dev .post_recv = pvrdma_post_recv ;
218
- dev -> ib_dev .create_cq = pvrdma_create_cq ;
219
- dev -> ib_dev .destroy_cq = pvrdma_destroy_cq ;
220
- dev -> ib_dev .poll_cq = pvrdma_poll_cq ;
221
- dev -> ib_dev .req_notify_cq = pvrdma_req_notify_cq ;
222
- dev -> ib_dev .get_dma_mr = pvrdma_get_dma_mr ;
223
- dev -> ib_dev .reg_user_mr = pvrdma_reg_user_mr ;
224
- dev -> ib_dev .dereg_mr = pvrdma_dereg_mr ;
225
- dev -> ib_dev .alloc_mr = pvrdma_alloc_mr ;
226
- dev -> ib_dev .map_mr_sg = pvrdma_map_mr_sg ;
227
- dev -> ib_dev .add_gid = pvrdma_add_gid ;
228
- dev -> ib_dev .del_gid = pvrdma_del_gid ;
229
- dev -> ib_dev .get_netdev = pvrdma_get_netdev ;
230
- dev -> ib_dev .get_port_immutable = pvrdma_port_immutable ;
231
- dev -> ib_dev .get_link_layer = pvrdma_port_link_layer ;
232
- dev -> ib_dev .get_dev_fw_str = pvrdma_get_fw_ver_str ;
243
+ ib_set_device_ops (& dev -> ib_dev , & pvrdma_dev_ops );
233
244
234
245
mutex_init (& dev -> port_mutex );
235
246
spin_lock_init (& dev -> desc_lock );
@@ -255,10 +266,7 @@ static int pvrdma_register_device(struct pvrdma_dev *dev)
255
266
(1ull << IB_USER_VERBS_CMD_DESTROY_SRQ ) |
256
267
(1ull << IB_USER_VERBS_CMD_POST_SRQ_RECV );
257
268
258
- dev -> ib_dev .create_srq = pvrdma_create_srq ;
259
- dev -> ib_dev .modify_srq = pvrdma_modify_srq ;
260
- dev -> ib_dev .query_srq = pvrdma_query_srq ;
261
- dev -> ib_dev .destroy_srq = pvrdma_destroy_srq ;
269
+ ib_set_device_ops (& dev -> ib_dev , & pvrdma_dev_srq_ops );
262
270
263
271
dev -> srq_tbl = kcalloc (dev -> dsr -> caps .max_srq ,
264
272
sizeof (struct pvrdma_srq * ),
0 commit comments