Lines Matching refs:sgl
540 sg_unmark_end(sgl_prev->sgt.sgl + sgl_prev->sgt.nents - 1); in af_alg_link_sg()
541 sg_chain(sgl_prev->sgt.sgl, sgl_prev->sgt.nents + 1, sgl_new->sgt.sgl); in af_alg_link_sg()
544 void af_alg_free_sg(struct af_alg_sgl *sgl) in af_alg_free_sg() argument
548 if (sgl->sgt.sgl) { in af_alg_free_sg()
549 if (sgl->need_unpin) in af_alg_free_sg()
550 for (i = 0; i < sgl->sgt.nents; i++) in af_alg_free_sg()
551 unpin_user_page(sg_page(&sgl->sgt.sgl[i])); in af_alg_free_sg()
552 if (sgl->sgt.sgl != sgl->sgl) in af_alg_free_sg()
553 kvfree(sgl->sgt.sgl); in af_alg_free_sg()
554 sgl->sgt.sgl = NULL; in af_alg_free_sg()
609 struct af_alg_tsgl *sgl; in af_alg_alloc_tsgl() local
612 sgl = list_entry(ctx->tsgl_list.prev, struct af_alg_tsgl, list); in af_alg_alloc_tsgl()
614 sg = sgl->sg; in af_alg_alloc_tsgl()
616 if (!sg || sgl->cur >= MAX_SGL_ENTS) { in af_alg_alloc_tsgl()
617 sgl = sock_kmalloc(sk, in af_alg_alloc_tsgl()
618 struct_size(sgl, sg, (MAX_SGL_ENTS + 1)), in af_alg_alloc_tsgl()
620 if (!sgl) in af_alg_alloc_tsgl()
623 sg_init_table(sgl->sg, MAX_SGL_ENTS + 1); in af_alg_alloc_tsgl()
624 sgl->cur = 0; in af_alg_alloc_tsgl()
627 sg_chain(sg, MAX_SGL_ENTS + 1, sgl->sg); in af_alg_alloc_tsgl()
629 list_add_tail(&sgl->list, &ctx->tsgl_list); in af_alg_alloc_tsgl()
650 const struct af_alg_tsgl *sgl; in af_alg_count_tsgl() local
657 list_for_each_entry(sgl, &ctx->tsgl_list, list) { in af_alg_count_tsgl()
658 const struct scatterlist *sg = sgl->sg; in af_alg_count_tsgl()
660 for (i = 0; i < sgl->cur; i++) { in af_alg_count_tsgl()
707 struct af_alg_tsgl *sgl; in af_alg_pull_tsgl() local
712 sgl = list_first_entry(&ctx->tsgl_list, struct af_alg_tsgl, in af_alg_pull_tsgl()
714 sg = sgl->sg; in af_alg_pull_tsgl()
716 for (i = 0; i < sgl->cur; i++) { in af_alg_pull_tsgl()
755 list_del(&sgl->list); in af_alg_pull_tsgl()
756 sock_kfree_s(sk, sgl, struct_size(sgl, sg, MAX_SGL_ENTS + 1)); in af_alg_pull_tsgl()
782 af_alg_free_sg(&rsgl->sgl); in af_alg_free_areq_sgls()
944 struct af_alg_tsgl *sgl; in af_alg_sendmsg() local
1006 sgl = list_entry(ctx->tsgl_list.prev, in af_alg_sendmsg()
1008 sg = sgl->sg + sgl->cur - 1; in af_alg_sendmsg()
1043 sgl = list_entry(ctx->tsgl_list.prev, struct af_alg_tsgl, in af_alg_sendmsg()
1045 sg = sgl->sg; in af_alg_sendmsg()
1046 if (sgl->cur) in af_alg_sendmsg()
1047 sg_unmark_end(sg + sgl->cur - 1); in af_alg_sendmsg()
1051 .sgl = sg, in af_alg_sendmsg()
1052 .nents = sgl->cur, in af_alg_sendmsg()
1053 .orig_nents = sgl->cur, in af_alg_sendmsg()
1057 MAX_SGL_ENTS - sgl->cur, 0); in af_alg_sendmsg()
1063 for (; sgl->cur < sgtable.nents; sgl->cur++) in af_alg_sendmsg()
1064 get_page(sg_page(&sg[sgl->cur])); in af_alg_sendmsg()
1072 unsigned int i = sgl->cur; in af_alg_sendmsg()
1098 sgl->cur++; in af_alg_sendmsg()
1099 } while (len && sgl->cur < MAX_SGL_ENTS); in af_alg_sendmsg()
1105 sg_mark_end(sg + sgl->cur - 1); in af_alg_sendmsg()
1221 areq->first_rsgl.sgl.sgt.sgl = areq->first_rsgl.sgl.sgl; in af_alg_alloc_areq()
1268 rsgl->sgl.need_unpin = in af_alg_get_rsgl()
1270 rsgl->sgl.sgt.sgl = rsgl->sgl.sgl; in af_alg_get_rsgl()
1271 rsgl->sgl.sgt.nents = 0; in af_alg_get_rsgl()
1272 rsgl->sgl.sgt.orig_nents = 0; in af_alg_get_rsgl()
1275 sg_init_table(rsgl->sgl.sgt.sgl, ALG_MAX_PAGES); in af_alg_get_rsgl()
1276 err = extract_iter_to_sg(&msg->msg_iter, seglen, &rsgl->sgl.sgt, in af_alg_get_rsgl()
1283 sg_mark_end(rsgl->sgl.sgt.sgl + rsgl->sgl.sgt.nents - 1); in af_alg_get_rsgl()
1287 af_alg_link_sg(&areq->last_rsgl->sgl, &rsgl->sgl); in af_alg_get_rsgl()