> @@ -2585,11 +2517,9 @@ isert_fast_reg_mr(struct isert_conn *isert_conn, > struct isert_device *device = isert_conn->device; > struct ib_device *ib_dev = device->ib_device; > struct ib_mr *mr; > struct ib_send_wr fr_wr, inv_wr; > struct ib_send_wr *bad_wr, *wr = NULL; > + int ret; > > if (mem->dma_nents == 1) { > sge->lkey = device->mr->lkey; > @@ -2600,40 +2530,32 @@ isert_fast_reg_mr(struct isert_conn *isert_conn, > return 0; > } > > + if (ind == ISERT_DATA_KEY_VALID) > /* Registering data buffer */ > mr = fr_desc->data_mr; > + else > /* Registering protection buffer */ > mr = fr_desc->pi_ctx->prot_mr; > > if (!(fr_desc->ind & ind)) { > isert_inv_rkey(&inv_wr, mr); > wr = &inv_wr; > } > > + ret = ib_map_mr_sg(mr, mem->sg, mem->nents, IB_ACCESS_LOCAL_WRITE); > + if (ret) { > + isert_err("failed to map sg %p with %d entries\n", > + mem->sg, mem->dma_nents); > + return ret; > + } > + > + isert_dbg("Use fr_desc %p sg_nents %d offset %u\n", > + fr_desc, mem->nents, mem->offset); > + > /* Prepare FASTREG WR */ > memset(&fr_wr, 0, sizeof(fr_wr)); > + ib_set_fastreg_wr(mr, mr->lkey, ISER_FASTREG_LI_WRID, > + false, &fr_wr);
Shouldn't ib_set_fastreg_wr take care of this memset? Also it seems instead of the singalled flag to it we might just set that or other flags later if we really want to. > struct pi_context { > struct ib_mr *prot_mr; > - struct ib_fast_reg_page_list *prot_frpl; > struct ib_mr *sig_mr; > }; > > struct fast_reg_descriptor { > struct list_head list; > struct ib_mr *data_mr; > - struct ib_fast_reg_page_list *data_frpl; > u8 ind; > struct pi_context *pi_ctx; As a follow on it might be worth to just kill off the separate pi_context structure here. -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html