Lines Matching refs:sgl
539 sg_unmark_end(sgl_prev->sgt.sgl + sgl_prev->sgt.nents - 1); in af_alg_link_sg()
540 sg_chain(sgl_prev->sgt.sgl, sgl_prev->sgt.nents + 1, sgl_new->sgt.sgl); in af_alg_link_sg()
543 void af_alg_free_sg(struct af_alg_sgl *sgl) in af_alg_free_sg() argument
547 if (sgl->sgt.sgl) { in af_alg_free_sg()
548 if (sgl->need_unpin) in af_alg_free_sg()
549 for (i = 0; i < sgl->sgt.nents; i++) in af_alg_free_sg()
550 unpin_user_page(sg_page(&sgl->sgt.sgl[i])); in af_alg_free_sg()
551 if (sgl->sgt.sgl != sgl->sgl) in af_alg_free_sg()
552 kvfree(sgl->sgt.sgl); in af_alg_free_sg()
553 sgl->sgt.sgl = NULL; in af_alg_free_sg()
608 struct af_alg_tsgl *sgl; in af_alg_alloc_tsgl() local
611 sgl = list_entry(ctx->tsgl_list.prev, struct af_alg_tsgl, list); in af_alg_alloc_tsgl()
613 sg = sgl->sg; in af_alg_alloc_tsgl()
615 if (!sg || sgl->cur >= MAX_SGL_ENTS) { in af_alg_alloc_tsgl()
616 sgl = sock_kmalloc(sk, in af_alg_alloc_tsgl()
617 struct_size(sgl, sg, (MAX_SGL_ENTS + 1)), in af_alg_alloc_tsgl()
619 if (!sgl) in af_alg_alloc_tsgl()
622 sg_init_table(sgl->sg, MAX_SGL_ENTS + 1); in af_alg_alloc_tsgl()
623 sgl->cur = 0; in af_alg_alloc_tsgl()
626 sg_chain(sg, MAX_SGL_ENTS + 1, sgl->sg); in af_alg_alloc_tsgl()
628 list_add_tail(&sgl->list, &ctx->tsgl_list); in af_alg_alloc_tsgl()
649 const struct af_alg_tsgl *sgl; in af_alg_count_tsgl() local
656 list_for_each_entry(sgl, &ctx->tsgl_list, list) { in af_alg_count_tsgl()
657 const struct scatterlist *sg = sgl->sg; in af_alg_count_tsgl()
659 for (i = 0; i < sgl->cur; i++) { in af_alg_count_tsgl()
706 struct af_alg_tsgl *sgl; in af_alg_pull_tsgl() local
711 sgl = list_first_entry(&ctx->tsgl_list, struct af_alg_tsgl, in af_alg_pull_tsgl()
713 sg = sgl->sg; in af_alg_pull_tsgl()
715 for (i = 0; i < sgl->cur; i++) { in af_alg_pull_tsgl()
754 list_del(&sgl->list); in af_alg_pull_tsgl()
755 sock_kfree_s(sk, sgl, struct_size(sgl, sg, MAX_SGL_ENTS + 1)); in af_alg_pull_tsgl()
781 af_alg_free_sg(&rsgl->sgl); in af_alg_free_areq_sgls()
943 struct af_alg_tsgl *sgl; in af_alg_sendmsg() local
999 sgl = list_entry(ctx->tsgl_list.prev, in af_alg_sendmsg()
1001 sg = sgl->sg + sgl->cur - 1; in af_alg_sendmsg()
1034 sgl = list_entry(ctx->tsgl_list.prev, struct af_alg_tsgl, in af_alg_sendmsg()
1036 sg = sgl->sg; in af_alg_sendmsg()
1037 if (sgl->cur) in af_alg_sendmsg()
1038 sg_unmark_end(sg + sgl->cur - 1); in af_alg_sendmsg()
1042 .sgl = sg, in af_alg_sendmsg()
1043 .nents = sgl->cur, in af_alg_sendmsg()
1044 .orig_nents = sgl->cur, in af_alg_sendmsg()
1048 MAX_SGL_ENTS - sgl->cur, 0); in af_alg_sendmsg()
1054 for (; sgl->cur < sgtable.nents; sgl->cur++) in af_alg_sendmsg()
1055 get_page(sg_page(&sg[sgl->cur])); in af_alg_sendmsg()
1064 unsigned int i = sgl->cur; in af_alg_sendmsg()
1090 sgl->cur++; in af_alg_sendmsg()
1091 } while (len && sgl->cur < MAX_SGL_ENTS); in af_alg_sendmsg()
1097 sg_mark_end(sg + sgl->cur - 1); in af_alg_sendmsg()
1198 areq->first_rsgl.sgl.sgt.sgl = areq->first_rsgl.sgl.sgl; in af_alg_alloc_areq()
1248 rsgl->sgl.need_unpin = in af_alg_get_rsgl()
1250 rsgl->sgl.sgt.sgl = rsgl->sgl.sgl; in af_alg_get_rsgl()
1251 rsgl->sgl.sgt.nents = 0; in af_alg_get_rsgl()
1252 rsgl->sgl.sgt.orig_nents = 0; in af_alg_get_rsgl()
1255 sg_init_table(rsgl->sgl.sgt.sgl, ALG_MAX_PAGES); in af_alg_get_rsgl()
1256 err = extract_iter_to_sg(&msg->msg_iter, seglen, &rsgl->sgl.sgt, in af_alg_get_rsgl()
1263 sg_mark_end(rsgl->sgl.sgt.sgl + rsgl->sgl.sgt.nents - 1); in af_alg_get_rsgl()
1267 af_alg_link_sg(&areq->last_rsgl->sgl, &rsgl->sgl); in af_alg_get_rsgl()