Lines Matching refs:buf_desc

43 			 struct smc_buf_desc *buf_desc);
342 struct smc_buf_desc *buf_desc) in smcr_buf_free() argument
347 if (buf_desc->mr_rx[SMC_SINGLE_LINK]) in smcr_buf_free()
349 buf_desc->mr_rx[SMC_SINGLE_LINK]); in smcr_buf_free()
350 smc_ib_buf_unmap_sg(lnk->smcibdev, buf_desc, in smcr_buf_free()
353 smc_ib_buf_unmap_sg(lnk->smcibdev, buf_desc, in smcr_buf_free()
356 sg_free_table(&buf_desc->sgt[SMC_SINGLE_LINK]); in smcr_buf_free()
357 if (buf_desc->pages) in smcr_buf_free()
358 __free_pages(buf_desc->pages, buf_desc->order); in smcr_buf_free()
359 kfree(buf_desc); in smcr_buf_free()
363 struct smc_buf_desc *buf_desc) in smcd_buf_free() argument
367 buf_desc->len += sizeof(struct smcd_cdc_msg); in smcd_buf_free()
368 smc_ism_unregister_dmb(lgr->smcd, buf_desc); in smcd_buf_free()
370 kfree(buf_desc->cpu_addr); in smcd_buf_free()
372 kfree(buf_desc); in smcd_buf_free()
376 struct smc_buf_desc *buf_desc) in smc_buf_free() argument
379 smcd_buf_free(lgr, is_rmb, buf_desc); in smc_buf_free()
381 smcr_buf_free(lgr, is_rmb, buf_desc); in smc_buf_free()
386 struct smc_buf_desc *buf_desc, *bf_desc; in __smc_lgr_free_bufs() local
395 list_for_each_entry_safe(buf_desc, bf_desc, buf_list, in __smc_lgr_free_bufs()
397 list_del(&buf_desc->list); in __smc_lgr_free_bufs()
398 smc_buf_free(lgr, is_rmb, buf_desc); in __smc_lgr_free_bufs()
714 struct smc_buf_desc *buf_desc; in smcr_new_buf_create() local
719 buf_desc = kzalloc(sizeof(*buf_desc), GFP_KERNEL); in smcr_new_buf_create()
720 if (!buf_desc) in smcr_new_buf_create()
723 buf_desc->order = get_order(bufsize); in smcr_new_buf_create()
724 buf_desc->pages = alloc_pages(GFP_KERNEL | __GFP_NOWARN | in smcr_new_buf_create()
727 buf_desc->order); in smcr_new_buf_create()
728 if (!buf_desc->pages) { in smcr_new_buf_create()
729 kfree(buf_desc); in smcr_new_buf_create()
732 buf_desc->cpu_addr = (void *)page_address(buf_desc->pages); in smcr_new_buf_create()
736 rc = sg_alloc_table(&buf_desc->sgt[SMC_SINGLE_LINK], 1, in smcr_new_buf_create()
739 smc_buf_free(lgr, is_rmb, buf_desc); in smcr_new_buf_create()
742 sg_set_buf(buf_desc->sgt[SMC_SINGLE_LINK].sgl, in smcr_new_buf_create()
743 buf_desc->cpu_addr, bufsize); in smcr_new_buf_create()
746 rc = smc_ib_buf_map_sg(lnk->smcibdev, buf_desc, in smcr_new_buf_create()
750 smc_buf_free(lgr, is_rmb, buf_desc); in smcr_new_buf_create()
759 buf_desc); in smcr_new_buf_create()
761 smc_buf_free(lgr, is_rmb, buf_desc); in smcr_new_buf_create()
766 buf_desc->len = bufsize; in smcr_new_buf_create()
767 return buf_desc; in smcr_new_buf_create()
775 struct smc_buf_desc *buf_desc; in smcd_new_buf_create() local
782 buf_desc = kzalloc(sizeof(*buf_desc), GFP_KERNEL); in smcd_new_buf_create()
783 if (!buf_desc) in smcd_new_buf_create()
786 rc = smc_ism_register_dmb(lgr, bufsize, buf_desc); in smcd_new_buf_create()
788 kfree(buf_desc); in smcd_new_buf_create()
791 buf_desc->pages = virt_to_page(buf_desc->cpu_addr); in smcd_new_buf_create()
793 buf_desc->len = bufsize - sizeof(struct smcd_cdc_msg); in smcd_new_buf_create()
795 buf_desc->cpu_addr = kzalloc(bufsize, GFP_KERNEL | in smcd_new_buf_create()
798 if (!buf_desc->cpu_addr) { in smcd_new_buf_create()
799 kfree(buf_desc); in smcd_new_buf_create()
802 buf_desc->len = bufsize; in smcd_new_buf_create()
804 return buf_desc; in smcd_new_buf_create()
809 struct smc_buf_desc *buf_desc = ERR_PTR(-ENOMEM); in __smc_buf_create() local
839 buf_desc = smc_buf_get_slot(bufsize_short, lock, buf_list); in __smc_buf_create()
840 if (buf_desc) { in __smc_buf_create()
841 memset(buf_desc->cpu_addr, 0, bufsize); in __smc_buf_create()
846 buf_desc = smcd_new_buf_create(lgr, is_rmb, bufsize); in __smc_buf_create()
848 buf_desc = smcr_new_buf_create(lgr, is_rmb, bufsize); in __smc_buf_create()
850 if (PTR_ERR(buf_desc) == -ENOMEM) in __smc_buf_create()
852 if (IS_ERR(buf_desc)) in __smc_buf_create()
855 buf_desc->used = 1; in __smc_buf_create()
857 list_add(&buf_desc->list, buf_list); in __smc_buf_create()
862 if (IS_ERR(buf_desc)) in __smc_buf_create()
866 conn->rmb_desc = buf_desc; in __smc_buf_create()
871 smc_rmb_wnd_update_limit(buf_desc->len); in __smc_buf_create()
875 conn->sndbuf_desc = buf_desc; in __smc_buf_create()