Lines Matching refs:mr

89 	struct rdsv3_mr *mr;  in rdsv3_mr_tree_walk()  local
92 mr = avl_find(root, &key, &where); in rdsv3_mr_tree_walk()
93 if ((mr == NULL) && (insert != NULL)) { in rdsv3_mr_tree_walk()
99 return (mr); in rdsv3_mr_tree_walk()
106 rdsv3_destroy_mr(struct rdsv3_mr *mr) in rdsv3_destroy_mr() argument
108 struct rdsv3_sock *rs = mr->r_sock; in rdsv3_destroy_mr()
114 mr->r_key, atomic_get(&mr->r_refcount)); in rdsv3_destroy_mr()
116 if (test_and_set_bit(RDSV3_MR_DEAD, &mr->r_state)) in rdsv3_destroy_mr()
120 np = &mr->r_rb_node; in rdsv3_destroy_mr()
122 avl_remove(&rs->rs_rdma_keys, mr); in rdsv3_destroy_mr()
123 trans_private = mr->r_trans_private; in rdsv3_destroy_mr()
124 mr->r_trans_private = NULL; in rdsv3_destroy_mr()
128 mr->r_trans->free_mr(trans_private, mr->r_invalidate); in rdsv3_destroy_mr()
132 __rdsv3_put_mr_final(struct rdsv3_mr *mr) in __rdsv3_put_mr_final() argument
134 rdsv3_destroy_mr(mr); in __rdsv3_put_mr_final()
135 kmem_free(mr, sizeof (*mr)); in __rdsv3_put_mr_final()
145 struct rdsv3_mr *mr; in rdsv3_rdma_drop_keys() local
151 mr = __containerof(node, struct rdsv3_mr, r_rb_node); in rdsv3_rdma_drop_keys()
152 if (mr->r_trans == rs->rs_transport) in rdsv3_rdma_drop_keys()
153 mr->r_invalidate = 0; in rdsv3_rdma_drop_keys()
154 avl_remove(&rs->rs_rdma_keys, &mr->r_rb_node); in rdsv3_rdma_drop_keys()
155 RB_CLEAR_NODE(&mr->r_rb_node) in rdsv3_rdma_drop_keys()
157 rdsv3_destroy_mr(mr); in rdsv3_rdma_drop_keys()
158 rdsv3_mr_put(mr); in rdsv3_rdma_drop_keys()
171 struct rdsv3_mr *mr = NULL, *found; in __rdsv3_rdma_map() local
187 mr = kmem_zalloc(sizeof (struct rdsv3_mr), KM_NOSLEEP); in __rdsv3_rdma_map()
188 if (!mr) { in __rdsv3_rdma_map()
193 mr->r_refcount = 1; in __rdsv3_rdma_map()
194 RB_CLEAR_NODE(&mr->r_rb_node); in __rdsv3_rdma_map()
195 mr->r_trans = rs->rs_transport; in __rdsv3_rdma_map()
196 mr->r_sock = rs; in __rdsv3_rdma_map()
199 mr->r_use_once = 1; in __rdsv3_rdma_map()
201 mr->r_invalidate = 1; in __rdsv3_rdma_map()
203 mr->r_write = 1; in __rdsv3_rdma_map()
212 &mr->r_key); in __rdsv3_rdma_map()
219 mr->r_trans_private = trans_private; in __rdsv3_rdma_map()
227 cookie = rdsv3_rdma_make_cookie(mr->r_key, args->vec.addr & ~PAGEMASK); in __rdsv3_rdma_map()
246 mr, args->vec.addr, mr->r_key); in __rdsv3_rdma_map()
252 found = rdsv3_mr_tree_walk(&rs->rs_rdma_keys, mr->r_key, mr); in __rdsv3_rdma_map()
255 ASSERT(!(found && found != mr)); in __rdsv3_rdma_map()
258 atomic_inc_32(&mr->r_refcount); in __rdsv3_rdma_map()
259 *mr_ret = mr; in __rdsv3_rdma_map()
264 if (mr) in __rdsv3_rdma_map()
265 rdsv3_mr_put(mr); in __rdsv3_rdma_map()
325 struct rdsv3_mr *mr; in rdsv3_free_mr() local
353 mr = rdsv3_mr_tree_walk(&rs->rs_rdma_keys, in rdsv3_free_mr()
355 if (mr) { in rdsv3_free_mr()
356 avl_remove(&rs->rs_rdma_keys, &mr->r_rb_node); in rdsv3_free_mr()
357 RB_CLEAR_NODE(&mr->r_rb_node); in rdsv3_free_mr()
359 mr->r_invalidate = 1; in rdsv3_free_mr()
363 if (!mr) in rdsv3_free_mr()
371 rdsv3_destroy_mr(mr); in rdsv3_free_mr()
372 rdsv3_mr_put(mr); in rdsv3_free_mr()
384 struct rdsv3_mr *mr; in rdsv3_rdma_unuse() local
390 mr = rdsv3_mr_tree_walk(&rs->rs_rdma_keys, r_key, NULL); in rdsv3_rdma_unuse()
391 if (!mr) { in rdsv3_rdma_unuse()
398 if (mr->r_use_once || force) { in rdsv3_rdma_unuse()
399 avl_remove(&rs->rs_rdma_keys, &mr->r_rb_node); in rdsv3_rdma_unuse()
400 RB_CLEAR_NODE(&mr->r_rb_node); in rdsv3_rdma_unuse()
403 atomic_inc_32(&mr->r_refcount); in rdsv3_rdma_unuse()
412 if (mr->r_trans->sync_mr) in rdsv3_rdma_unuse()
413 mr->r_trans->sync_mr(mr->r_trans_private, DMA_FROM_DEVICE); in rdsv3_rdma_unuse()
420 rdsv3_destroy_mr(mr); in rdsv3_rdma_unuse()
421 rdsv3_mr_put(mr); in rdsv3_rdma_unuse()
618 struct rdsv3_mr *mr; in rdsv3_cmsg_rdma_dest() local
638 mr = rdsv3_mr_tree_walk(&rs->rs_rdma_keys, r_key, NULL); in rdsv3_cmsg_rdma_dest()
639 if (!mr) in rdsv3_cmsg_rdma_dest()
642 atomic_inc_32(&mr->r_refcount); in rdsv3_cmsg_rdma_dest()
645 if (mr) { in rdsv3_cmsg_rdma_dest()
646 mr->r_trans->sync_mr(mr->r_trans_private, DMA_TO_DEVICE); in rdsv3_cmsg_rdma_dest()
647 rm->m_rdma_mr = mr; in rdsv3_cmsg_rdma_dest()