49
49
# define RPCDBG_FACILITY RPCDBG_TRANS
50
50
#endif
51
51
52
+ static void frwr_cid_init (struct rpcrdma_ep * ep ,
53
+ struct rpcrdma_mr * mr )
54
+ {
55
+ struct rpc_rdma_cid * cid = & mr -> mr_cid ;
56
+
57
+ cid -> ci_queue_id = ep -> re_attr .send_cq -> res .id ;
58
+ cid -> ci_completion_id = mr -> frwr .fr_mr -> res .id ;
59
+ }
60
+
52
61
static void frwr_mr_unmap (struct rpcrdma_xprt * r_xprt , struct rpcrdma_mr * mr )
53
62
{
54
63
if (mr -> mr_device ) {
@@ -134,6 +143,7 @@ int frwr_mr_init(struct rpcrdma_xprt *r_xprt, struct rpcrdma_mr *mr)
134
143
mr -> mr_device = NULL ;
135
144
INIT_LIST_HEAD (& mr -> mr_list );
136
145
init_completion (& mr -> frwr .fr_linv_done );
146
+ frwr_cid_init (ep , mr );
137
147
138
148
sg_init_table (sg , depth );
139
149
mr -> mr_sg = sg ;
@@ -358,22 +368,14 @@ static void frwr_wc_fastreg(struct ib_cq *cq, struct ib_wc *wc)
358
368
struct ib_cqe * cqe = wc -> wr_cqe ;
359
369
struct rpcrdma_frwr * frwr =
360
370
container_of (cqe , struct rpcrdma_frwr , fr_cqe );
371
+ struct rpcrdma_mr * mr = container_of (frwr , struct rpcrdma_mr , frwr );
361
372
362
373
/* WARNING: Only wr_cqe and status are reliable at this point */
363
- trace_xprtrdma_wc_fastreg (wc , & frwr -> fr_cid );
374
+ trace_xprtrdma_wc_fastreg (wc , & mr -> mr_cid );
364
375
365
376
rpcrdma_flush_disconnect (cq -> cq_context , wc );
366
377
}
367
378
368
- static void frwr_cid_init (struct rpcrdma_ep * ep ,
369
- struct rpcrdma_frwr * frwr )
370
- {
371
- struct rpc_rdma_cid * cid = & frwr -> fr_cid ;
372
-
373
- cid -> ci_queue_id = ep -> re_attr .send_cq -> res .id ;
374
- cid -> ci_completion_id = frwr -> fr_mr -> res .id ;
375
- }
376
-
377
379
/**
378
380
* frwr_send - post Send WRs containing the RPC Call message
379
381
* @r_xprt: controlling transport instance
@@ -404,7 +406,6 @@ int frwr_send(struct rpcrdma_xprt *r_xprt, struct rpcrdma_req *req)
404
406
frwr = & mr -> frwr ;
405
407
406
408
frwr -> fr_cqe .done = frwr_wc_fastreg ;
407
- frwr_cid_init (ep , frwr );
408
409
frwr -> fr_regwr .wr .next = post_wr ;
409
410
frwr -> fr_regwr .wr .wr_cqe = & frwr -> fr_cqe ;
410
411
frwr -> fr_regwr .wr .num_sge = 0 ;
@@ -467,7 +468,7 @@ static void frwr_wc_localinv(struct ib_cq *cq, struct ib_wc *wc)
467
468
struct rpcrdma_mr * mr = container_of (frwr , struct rpcrdma_mr , frwr );
468
469
469
470
/* WARNING: Only wr_cqe and status are reliable at this point */
470
- trace_xprtrdma_wc_li (wc , & frwr -> fr_cid );
471
+ trace_xprtrdma_wc_li (wc , & mr -> mr_cid );
471
472
frwr_mr_done (wc , mr );
472
473
473
474
rpcrdma_flush_disconnect (cq -> cq_context , wc );
@@ -488,7 +489,7 @@ static void frwr_wc_localinv_wake(struct ib_cq *cq, struct ib_wc *wc)
488
489
struct rpcrdma_mr * mr = container_of (frwr , struct rpcrdma_mr , frwr );
489
490
490
491
/* WARNING: Only wr_cqe and status are reliable at this point */
491
- trace_xprtrdma_wc_li_wake (wc , & frwr -> fr_cid );
492
+ trace_xprtrdma_wc_li_wake (wc , & mr -> mr_cid );
492
493
frwr_mr_done (wc , mr );
493
494
complete (& frwr -> fr_linv_done );
494
495
@@ -529,7 +530,6 @@ void frwr_unmap_sync(struct rpcrdma_xprt *r_xprt, struct rpcrdma_req *req)
529
530
530
531
frwr = & mr -> frwr ;
531
532
frwr -> fr_cqe .done = frwr_wc_localinv ;
532
- frwr_cid_init (ep , frwr );
533
533
last = & frwr -> fr_invwr ;
534
534
last -> next = NULL ;
535
535
last -> wr_cqe = & frwr -> fr_cqe ;
@@ -585,7 +585,7 @@ static void frwr_wc_localinv_done(struct ib_cq *cq, struct ib_wc *wc)
585
585
struct rpcrdma_rep * rep ;
586
586
587
587
/* WARNING: Only wr_cqe and status are reliable at this point */
588
- trace_xprtrdma_wc_li_done (wc , & frwr -> fr_cid );
588
+ trace_xprtrdma_wc_li_done (wc , & mr -> mr_cid );
589
589
590
590
/* Ensure that @rep is generated before the MR is released */
591
591
rep = mr -> mr_req -> rl_reply ;
@@ -631,7 +631,6 @@ void frwr_unmap_async(struct rpcrdma_xprt *r_xprt, struct rpcrdma_req *req)
631
631
632
632
frwr = & mr -> frwr ;
633
633
frwr -> fr_cqe .done = frwr_wc_localinv ;
634
- frwr_cid_init (ep , frwr );
635
634
last = & frwr -> fr_invwr ;
636
635
last -> next = NULL ;
637
636
last -> wr_cqe = & frwr -> fr_cqe ;
0 commit comments