> @@ -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

Reply via email to