smbdirect_mr 2270 fs/cifs/smbdirect.c struct smbd_mr *smbdirect_mr; smbdirect_mr 2273 fs/cifs/smbdirect.c list_for_each_entry(smbdirect_mr, &info->mr_list, list) { smbdirect_mr 2274 fs/cifs/smbdirect.c if (smbdirect_mr->state == MR_ERROR) { smbdirect_mr 2277 fs/cifs/smbdirect.c rc = ib_dereg_mr(smbdirect_mr->mr); smbdirect_mr 2286 fs/cifs/smbdirect.c smbdirect_mr->mr = ib_alloc_mr( smbdirect_mr 2289 fs/cifs/smbdirect.c if (IS_ERR(smbdirect_mr->mr)) { smbdirect_mr 2302 fs/cifs/smbdirect.c smbdirect_mr->state = MR_READY; smbdirect_mr 2341 fs/cifs/smbdirect.c struct smbd_mr *smbdirect_mr, *tmp; smbdirect_mr 2351 fs/cifs/smbdirect.c smbdirect_mr = kzalloc(sizeof(*smbdirect_mr), GFP_KERNEL); smbdirect_mr 2352 fs/cifs/smbdirect.c if (!smbdirect_mr) smbdirect_mr 2354 fs/cifs/smbdirect.c smbdirect_mr->mr = ib_alloc_mr(info->pd, info->mr_type, smbdirect_mr 2356 fs/cifs/smbdirect.c if (IS_ERR(smbdirect_mr->mr)) { smbdirect_mr 2362 fs/cifs/smbdirect.c smbdirect_mr->sgl = kcalloc( smbdirect_mr 2366 fs/cifs/smbdirect.c if (!smbdirect_mr->sgl) { smbdirect_mr 2368 fs/cifs/smbdirect.c ib_dereg_mr(smbdirect_mr->mr); smbdirect_mr 2371 fs/cifs/smbdirect.c smbdirect_mr->state = MR_READY; smbdirect_mr 2372 fs/cifs/smbdirect.c smbdirect_mr->conn = info; smbdirect_mr 2374 fs/cifs/smbdirect.c list_add_tail(&smbdirect_mr->list, &info->mr_list); smbdirect_mr 2381 fs/cifs/smbdirect.c kfree(smbdirect_mr); smbdirect_mr 2383 fs/cifs/smbdirect.c list_for_each_entry_safe(smbdirect_mr, tmp, &info->mr_list, list) { smbdirect_mr 2384 fs/cifs/smbdirect.c ib_dereg_mr(smbdirect_mr->mr); smbdirect_mr 2385 fs/cifs/smbdirect.c kfree(smbdirect_mr->sgl); smbdirect_mr 2386 fs/cifs/smbdirect.c kfree(smbdirect_mr); smbdirect_mr 2450 fs/cifs/smbdirect.c struct smbd_mr *smbdirect_mr; smbdirect_mr 2461 fs/cifs/smbdirect.c smbdirect_mr = get_mr(info); smbdirect_mr 2462 fs/cifs/smbdirect.c if (!smbdirect_mr) { smbdirect_mr 2466 fs/cifs/smbdirect.c smbdirect_mr->need_invalidate = need_invalidate; smbdirect_mr 2467 fs/cifs/smbdirect.c smbdirect_mr->sgl_count = num_pages; smbdirect_mr 2468 fs/cifs/smbdirect.c sg_init_table(smbdirect_mr->sgl, num_pages); smbdirect_mr 2474 fs/cifs/smbdirect.c sg_set_page(&smbdirect_mr->sgl[0], pages[0], tailsz, offset); smbdirect_mr 2480 fs/cifs/smbdirect.c &smbdirect_mr->sgl[0], pages[0], PAGE_SIZE - offset, offset); smbdirect_mr 2483 fs/cifs/smbdirect.c sg_set_page(&smbdirect_mr->sgl[i], pages[i], PAGE_SIZE, 0); smbdirect_mr 2486 fs/cifs/smbdirect.c sg_set_page(&smbdirect_mr->sgl[i], pages[i], smbdirect_mr 2491 fs/cifs/smbdirect.c smbdirect_mr->dir = dir; smbdirect_mr 2492 fs/cifs/smbdirect.c rc = ib_dma_map_sg(info->id->device, smbdirect_mr->sgl, num_pages, dir); smbdirect_mr 2499 fs/cifs/smbdirect.c rc = ib_map_mr_sg(smbdirect_mr->mr, smbdirect_mr->sgl, num_pages, smbdirect_mr 2508 fs/cifs/smbdirect.c ib_update_fast_reg_key(smbdirect_mr->mr, smbdirect_mr 2509 fs/cifs/smbdirect.c ib_inc_rkey(smbdirect_mr->mr->rkey)); smbdirect_mr 2510 fs/cifs/smbdirect.c reg_wr = &smbdirect_mr->wr; smbdirect_mr 2512 fs/cifs/smbdirect.c smbdirect_mr->cqe.done = register_mr_done; smbdirect_mr 2513 fs/cifs/smbdirect.c reg_wr->wr.wr_cqe = &smbdirect_mr->cqe; smbdirect_mr 2516 fs/cifs/smbdirect.c reg_wr->mr = smbdirect_mr->mr; smbdirect_mr 2517 fs/cifs/smbdirect.c reg_wr->key = smbdirect_mr->mr->rkey; smbdirect_mr 2529 fs/cifs/smbdirect.c return smbdirect_mr; smbdirect_mr 2536 fs/cifs/smbdirect.c ib_dma_unmap_sg(info->id->device, smbdirect_mr->sgl, smbdirect_mr 2537 fs/cifs/smbdirect.c smbdirect_mr->sgl_count, smbdirect_mr->dir); smbdirect_mr 2540 fs/cifs/smbdirect.c smbdirect_mr->state = MR_ERROR; smbdirect_mr 2551 fs/cifs/smbdirect.c struct smbd_mr *smbdirect_mr; smbdirect_mr 2555 fs/cifs/smbdirect.c smbdirect_mr = container_of(cqe, struct smbd_mr, cqe); smbdirect_mr 2556 fs/cifs/smbdirect.c smbdirect_mr->state = MR_INVALIDATED; smbdirect_mr 2559 fs/cifs/smbdirect.c smbdirect_mr->state = MR_ERROR; smbdirect_mr 2561 fs/cifs/smbdirect.c complete(&smbdirect_mr->invalidate_done); smbdirect_mr 2570 fs/cifs/smbdirect.c int smbd_deregister_mr(struct smbd_mr *smbdirect_mr) smbdirect_mr 2573 fs/cifs/smbdirect.c struct smbd_connection *info = smbdirect_mr->conn; smbdirect_mr 2576 fs/cifs/smbdirect.c if (smbdirect_mr->need_invalidate) { smbdirect_mr 2578 fs/cifs/smbdirect.c wr = &smbdirect_mr->inv_wr; smbdirect_mr 2580 fs/cifs/smbdirect.c smbdirect_mr->cqe.done = local_inv_done; smbdirect_mr 2581 fs/cifs/smbdirect.c wr->wr_cqe = &smbdirect_mr->cqe; smbdirect_mr 2583 fs/cifs/smbdirect.c wr->ex.invalidate_rkey = smbdirect_mr->mr->rkey; smbdirect_mr 2586 fs/cifs/smbdirect.c init_completion(&smbdirect_mr->invalidate_done); smbdirect_mr 2593 fs/cifs/smbdirect.c wait_for_completion(&smbdirect_mr->invalidate_done); smbdirect_mr 2594 fs/cifs/smbdirect.c smbdirect_mr->need_invalidate = false; smbdirect_mr 2600 fs/cifs/smbdirect.c smbdirect_mr->state = MR_INVALIDATED; smbdirect_mr 2602 fs/cifs/smbdirect.c if (smbdirect_mr->state == MR_INVALIDATED) { smbdirect_mr 2604 fs/cifs/smbdirect.c info->id->device, smbdirect_mr->sgl, smbdirect_mr 2605 fs/cifs/smbdirect.c smbdirect_mr->sgl_count, smbdirect_mr 2606 fs/cifs/smbdirect.c smbdirect_mr->dir); smbdirect_mr 2607 fs/cifs/smbdirect.c smbdirect_mr->state = MR_READY;