Lines Matching refs:buf_desc

43 			 struct smc_buf_desc *buf_desc);
363 struct smc_buf_desc *buf_desc) in smcr_buf_free() argument
368 if (buf_desc->mr_rx[SMC_SINGLE_LINK]) in smcr_buf_free()
370 buf_desc->mr_rx[SMC_SINGLE_LINK]); in smcr_buf_free()
371 smc_ib_buf_unmap_sg(lnk->smcibdev, buf_desc, in smcr_buf_free()
374 smc_ib_buf_unmap_sg(lnk->smcibdev, buf_desc, in smcr_buf_free()
377 sg_free_table(&buf_desc->sgt[SMC_SINGLE_LINK]); in smcr_buf_free()
378 if (buf_desc->pages) in smcr_buf_free()
379 __free_pages(buf_desc->pages, buf_desc->order); in smcr_buf_free()
380 kfree(buf_desc); in smcr_buf_free()
384 struct smc_buf_desc *buf_desc) in smcd_buf_free() argument
388 buf_desc->len += sizeof(struct smcd_cdc_msg); in smcd_buf_free()
389 smc_ism_unregister_dmb(lgr->smcd, buf_desc); in smcd_buf_free()
391 kfree(buf_desc->cpu_addr); in smcd_buf_free()
393 kfree(buf_desc); in smcd_buf_free()
397 struct smc_buf_desc *buf_desc) in smc_buf_free() argument
400 smcd_buf_free(lgr, is_rmb, buf_desc); in smc_buf_free()
402 smcr_buf_free(lgr, is_rmb, buf_desc); in smc_buf_free()
407 struct smc_buf_desc *buf_desc, *bf_desc; in __smc_lgr_free_bufs() local
416 list_for_each_entry_safe(buf_desc, bf_desc, buf_list, in __smc_lgr_free_bufs()
418 list_del(&buf_desc->list); in __smc_lgr_free_bufs()
419 smc_buf_free(lgr, is_rmb, buf_desc); in __smc_lgr_free_bufs()
737 struct smc_buf_desc *buf_desc; in smcr_new_buf_create() local
742 buf_desc = kzalloc(sizeof(*buf_desc), GFP_KERNEL); in smcr_new_buf_create()
743 if (!buf_desc) in smcr_new_buf_create()
746 buf_desc->order = get_order(bufsize); in smcr_new_buf_create()
747 buf_desc->pages = alloc_pages(GFP_KERNEL | __GFP_NOWARN | in smcr_new_buf_create()
750 buf_desc->order); in smcr_new_buf_create()
751 if (!buf_desc->pages) { in smcr_new_buf_create()
752 kfree(buf_desc); in smcr_new_buf_create()
755 buf_desc->cpu_addr = (void *)page_address(buf_desc->pages); in smcr_new_buf_create()
759 rc = sg_alloc_table(&buf_desc->sgt[SMC_SINGLE_LINK], 1, in smcr_new_buf_create()
762 smc_buf_free(lgr, is_rmb, buf_desc); in smcr_new_buf_create()
765 sg_set_buf(buf_desc->sgt[SMC_SINGLE_LINK].sgl, in smcr_new_buf_create()
766 buf_desc->cpu_addr, bufsize); in smcr_new_buf_create()
769 rc = smc_ib_buf_map_sg(lnk->smcibdev, buf_desc, in smcr_new_buf_create()
773 smc_buf_free(lgr, is_rmb, buf_desc); in smcr_new_buf_create()
782 buf_desc); in smcr_new_buf_create()
784 smc_buf_free(lgr, is_rmb, buf_desc); in smcr_new_buf_create()
789 buf_desc->len = bufsize; in smcr_new_buf_create()
790 return buf_desc; in smcr_new_buf_create()
798 struct smc_buf_desc *buf_desc; in smcd_new_buf_create() local
805 buf_desc = kzalloc(sizeof(*buf_desc), GFP_KERNEL); in smcd_new_buf_create()
806 if (!buf_desc) in smcd_new_buf_create()
809 rc = smc_ism_register_dmb(lgr, bufsize, buf_desc); in smcd_new_buf_create()
811 kfree(buf_desc); in smcd_new_buf_create()
814 buf_desc->pages = virt_to_page(buf_desc->cpu_addr); in smcd_new_buf_create()
816 buf_desc->len = bufsize - sizeof(struct smcd_cdc_msg); in smcd_new_buf_create()
818 buf_desc->cpu_addr = kzalloc(bufsize, GFP_KERNEL | in smcd_new_buf_create()
821 if (!buf_desc->cpu_addr) { in smcd_new_buf_create()
822 kfree(buf_desc); in smcd_new_buf_create()
825 buf_desc->len = bufsize; in smcd_new_buf_create()
827 return buf_desc; in smcd_new_buf_create()
832 struct smc_buf_desc *buf_desc = ERR_PTR(-ENOMEM); in __smc_buf_create() local
862 buf_desc = smc_buf_get_slot(bufsize_short, lock, buf_list); in __smc_buf_create()
863 if (buf_desc) { in __smc_buf_create()
864 memset(buf_desc->cpu_addr, 0, bufsize); in __smc_buf_create()
869 buf_desc = smcd_new_buf_create(lgr, is_rmb, bufsize); in __smc_buf_create()
871 buf_desc = smcr_new_buf_create(lgr, is_rmb, bufsize); in __smc_buf_create()
873 if (PTR_ERR(buf_desc) == -ENOMEM) in __smc_buf_create()
875 if (IS_ERR(buf_desc)) in __smc_buf_create()
878 buf_desc->used = 1; in __smc_buf_create()
880 list_add(&buf_desc->list, buf_list); in __smc_buf_create()
885 if (IS_ERR(buf_desc)) in __smc_buf_create()
889 conn->rmb_desc = buf_desc; in __smc_buf_create()
894 smc_rmb_wnd_update_limit(buf_desc->len); in __smc_buf_create()
898 conn->sndbuf_desc = buf_desc; in __smc_buf_create()