Lines Matching refs:dmb_node

57 	struct smc_lo_dmb_node *dmb_node, *tmp_node;  in smc_lo_register_dmb()  local
69 dmb_node = kzalloc(sizeof(*dmb_node), GFP_KERNEL); in smc_lo_register_dmb()
70 if (!dmb_node) { in smc_lo_register_dmb()
75 dmb_node->sba_idx = sba_idx; in smc_lo_register_dmb()
76 dmb_node->len = dmb->dmb_len; in smc_lo_register_dmb()
77 dmb_node->cpu_addr = kzalloc(dmb_node->len, GFP_KERNEL | in smc_lo_register_dmb()
80 if (!dmb_node->cpu_addr) { in smc_lo_register_dmb()
84 dmb_node->dma_addr = SMC_DMA_ADDR_INVALID; in smc_lo_register_dmb()
85 refcount_set(&dmb_node->refcnt, 1); in smc_lo_register_dmb()
89 get_random_bytes(&dmb_node->token, sizeof(dmb_node->token)); in smc_lo_register_dmb()
91 hash_for_each_possible(ldev->dmb_ht, tmp_node, list, dmb_node->token) { in smc_lo_register_dmb()
92 if (tmp_node->token == dmb_node->token) { in smc_lo_register_dmb()
97 hash_add(ldev->dmb_ht, &dmb_node->list, dmb_node->token); in smc_lo_register_dmb()
101 dmb->sba_idx = dmb_node->sba_idx; in smc_lo_register_dmb()
102 dmb->dmb_tok = dmb_node->token; in smc_lo_register_dmb()
103 dmb->cpu_addr = dmb_node->cpu_addr; in smc_lo_register_dmb()
104 dmb->dma_addr = dmb_node->dma_addr; in smc_lo_register_dmb()
105 dmb->dmb_len = dmb_node->len; in smc_lo_register_dmb()
110 kfree(dmb_node); in smc_lo_register_dmb()
117 struct smc_lo_dmb_node *dmb_node) in __smc_lo_unregister_dmb() argument
121 hash_del(&dmb_node->list); in __smc_lo_unregister_dmb()
124 clear_bit(dmb_node->sba_idx, ldev->sba_idx_mask); in __smc_lo_unregister_dmb()
125 kvfree(dmb_node->cpu_addr); in __smc_lo_unregister_dmb()
126 kfree(dmb_node); in __smc_lo_unregister_dmb()
134 struct smc_lo_dmb_node *dmb_node = NULL, *tmp_node; in smc_lo_unregister_dmb() local
141 dmb_node = tmp_node; in smc_lo_unregister_dmb()
145 if (!dmb_node) { in smc_lo_unregister_dmb()
151 if (refcount_dec_and_test(&dmb_node->refcnt)) in smc_lo_unregister_dmb()
152 __smc_lo_unregister_dmb(ldev, dmb_node); in smc_lo_unregister_dmb()
163 struct smc_lo_dmb_node *dmb_node = NULL, *tmp_node; in smc_lo_attach_dmb() local
170 dmb_node = tmp_node; in smc_lo_attach_dmb()
174 if (!dmb_node) { in smc_lo_attach_dmb()
180 if (!refcount_inc_not_zero(&dmb_node->refcnt)) in smc_lo_attach_dmb()
187 dmb->sba_idx = dmb_node->sba_idx; in smc_lo_attach_dmb()
188 dmb->dmb_tok = dmb_node->token; in smc_lo_attach_dmb()
189 dmb->cpu_addr = dmb_node->cpu_addr; in smc_lo_attach_dmb()
190 dmb->dma_addr = dmb_node->dma_addr; in smc_lo_attach_dmb()
191 dmb->dmb_len = dmb_node->len; in smc_lo_attach_dmb()
197 struct smc_lo_dmb_node *dmb_node = NULL, *tmp_node; in smc_lo_detach_dmb() local
204 dmb_node = tmp_node; in smc_lo_detach_dmb()
208 if (!dmb_node) { in smc_lo_detach_dmb()
214 if (refcount_dec_and_test(&dmb_node->refcnt)) in smc_lo_detach_dmb()
215 __smc_lo_unregister_dmb(ldev, dmb_node); in smc_lo_detach_dmb()