Lines Matching refs:sig

375 	ctx->sig = kcalloc(1, sizeof(*ctx->sig), GFP_KERNEL);  in rdma_rw_ctx_signature_init()
376 if (!ctx->sig) { in rdma_rw_ctx_signature_init()
381 ret = rdma_rw_init_one_mr(qp, port_num, &ctx->sig->data, sg, sg_cnt, 0); in rdma_rw_ctx_signature_init()
385 prev_wr = &ctx->sig->data.reg_wr.wr; in rdma_rw_ctx_signature_init()
387 ret = rdma_rw_init_one_mr(qp, port_num, &ctx->sig->prot, in rdma_rw_ctx_signature_init()
393 if (ctx->sig->prot.inv_wr.next) in rdma_rw_ctx_signature_init()
394 prev_wr->next = &ctx->sig->prot.inv_wr; in rdma_rw_ctx_signature_init()
396 prev_wr->next = &ctx->sig->prot.reg_wr.wr; in rdma_rw_ctx_signature_init()
397 prev_wr = &ctx->sig->prot.reg_wr.wr; in rdma_rw_ctx_signature_init()
399 ctx->sig->sig_mr = ib_mr_pool_get(qp, &qp->sig_mrs); in rdma_rw_ctx_signature_init()
400 if (!ctx->sig->sig_mr) { in rdma_rw_ctx_signature_init()
405 if (ctx->sig->sig_mr->need_inval) { in rdma_rw_ctx_signature_init()
406 memset(&ctx->sig->sig_inv_wr, 0, sizeof(ctx->sig->sig_inv_wr)); in rdma_rw_ctx_signature_init()
408 ctx->sig->sig_inv_wr.opcode = IB_WR_LOCAL_INV; in rdma_rw_ctx_signature_init()
409 ctx->sig->sig_inv_wr.ex.invalidate_rkey = ctx->sig->sig_mr->rkey; in rdma_rw_ctx_signature_init()
411 prev_wr->next = &ctx->sig->sig_inv_wr; in rdma_rw_ctx_signature_init()
412 prev_wr = &ctx->sig->sig_inv_wr; in rdma_rw_ctx_signature_init()
415 ctx->sig->sig_wr.wr.opcode = IB_WR_REG_SIG_MR; in rdma_rw_ctx_signature_init()
416 ctx->sig->sig_wr.wr.wr_cqe = NULL; in rdma_rw_ctx_signature_init()
417 ctx->sig->sig_wr.wr.sg_list = &ctx->sig->data.sge; in rdma_rw_ctx_signature_init()
418 ctx->sig->sig_wr.wr.num_sge = 1; in rdma_rw_ctx_signature_init()
419 ctx->sig->sig_wr.access_flags = IB_ACCESS_LOCAL_WRITE; in rdma_rw_ctx_signature_init()
420 ctx->sig->sig_wr.sig_attrs = sig_attrs; in rdma_rw_ctx_signature_init()
421 ctx->sig->sig_wr.sig_mr = ctx->sig->sig_mr; in rdma_rw_ctx_signature_init()
423 ctx->sig->sig_wr.prot = &ctx->sig->prot.sge; in rdma_rw_ctx_signature_init()
424 prev_wr->next = &ctx->sig->sig_wr.wr; in rdma_rw_ctx_signature_init()
425 prev_wr = &ctx->sig->sig_wr.wr; in rdma_rw_ctx_signature_init()
428 ctx->sig->sig_sge.addr = 0; in rdma_rw_ctx_signature_init()
429 ctx->sig->sig_sge.length = ctx->sig->data.sge.length; in rdma_rw_ctx_signature_init()
431 ctx->sig->sig_sge.length += ctx->sig->prot.sge.length; in rdma_rw_ctx_signature_init()
433 rdma_wr = &ctx->sig->data.wr; in rdma_rw_ctx_signature_init()
434 rdma_wr->wr.sg_list = &ctx->sig->sig_sge; in rdma_rw_ctx_signature_init()
450 ib_mr_pool_put(qp, &qp->rdma_mrs, ctx->sig->prot.mr); in rdma_rw_ctx_signature_init()
452 ib_mr_pool_put(qp, &qp->rdma_mrs, ctx->sig->data.mr); in rdma_rw_ctx_signature_init()
454 kfree(ctx->sig); in rdma_rw_ctx_signature_init()
499 rdma_rw_update_lkey(&ctx->sig->data, true); in rdma_rw_ctx_wrs()
500 if (ctx->sig->prot.mr) in rdma_rw_ctx_wrs()
501 rdma_rw_update_lkey(&ctx->sig->prot, true); in rdma_rw_ctx_wrs()
503 ctx->sig->sig_mr->need_inval = true; in rdma_rw_ctx_wrs()
504 ib_update_fast_reg_key(ctx->sig->sig_mr, in rdma_rw_ctx_wrs()
505 ib_inc_rkey(ctx->sig->sig_mr->lkey)); in rdma_rw_ctx_wrs()
506 ctx->sig->sig_sge.lkey = ctx->sig->sig_mr->lkey; in rdma_rw_ctx_wrs()
508 if (ctx->sig->data.inv_wr.next) in rdma_rw_ctx_wrs()
509 first_wr = &ctx->sig->data.inv_wr; in rdma_rw_ctx_wrs()
511 first_wr = &ctx->sig->data.reg_wr.wr; in rdma_rw_ctx_wrs()
512 last_wr = &ctx->sig->data.wr.wr; in rdma_rw_ctx_wrs()
629 ib_mr_pool_put(qp, &qp->rdma_mrs, ctx->sig->data.mr); in rdma_rw_ctx_destroy_signature()
632 if (ctx->sig->prot.mr) { in rdma_rw_ctx_destroy_signature()
633 ib_mr_pool_put(qp, &qp->rdma_mrs, ctx->sig->prot.mr); in rdma_rw_ctx_destroy_signature()
637 ib_mr_pool_put(qp, &qp->sig_mrs, ctx->sig->sig_mr); in rdma_rw_ctx_destroy_signature()
638 kfree(ctx->sig); in rdma_rw_ctx_destroy_signature()