mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-01 18:24:23 +08:00
IB/rxe: Refactor lookup memory function
Consolidate all error checks under single if() condition and use helper unlikely() macro for them, in addition drop unneeded goto labels. rxe_pool_get_index() already provides RB tree based efficient lookup. Avoid doing extra checks for error cases which are rare and already covered by rxe_pool_get_index(). Signed-off-by: Parav Pandit <parav@mellanox.com> Reviewed-by: Daniel Jurgens <danielj@mellanox.com> Signed-off-by: Leon Romanovsky <leonro@mellanox.com> Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
parent
536a631d1e
commit
1703129ed2
@ -573,33 +573,20 @@ struct rxe_mem *lookup_mem(struct rxe_pd *pd, int access, u32 key,
|
||||
struct rxe_dev *rxe = to_rdev(pd->ibpd.device);
|
||||
int index = key >> 8;
|
||||
|
||||
if (index >= RXE_MIN_MR_INDEX && index <= RXE_MAX_MR_INDEX) {
|
||||
mem = rxe_pool_get_index(&rxe->mr_pool, index);
|
||||
if (!mem)
|
||||
goto err1;
|
||||
} else {
|
||||
goto err1;
|
||||
mem = rxe_pool_get_index(&rxe->mr_pool, index);
|
||||
if (!mem)
|
||||
return NULL;
|
||||
|
||||
if (unlikely((type == lookup_local && mem->lkey != key) ||
|
||||
(type == lookup_remote && mem->rkey != key) ||
|
||||
mem->pd != pd ||
|
||||
(access && !(access & mem->access)) ||
|
||||
mem->state != RXE_MEM_STATE_VALID)) {
|
||||
rxe_drop_ref(mem);
|
||||
mem = NULL;
|
||||
}
|
||||
|
||||
if ((type == lookup_local && mem->lkey != key) ||
|
||||
(type == lookup_remote && mem->rkey != key))
|
||||
goto err2;
|
||||
|
||||
if (mem->pd != pd)
|
||||
goto err2;
|
||||
|
||||
if (access && !(access & mem->access))
|
||||
goto err2;
|
||||
|
||||
if (mem->state != RXE_MEM_STATE_VALID)
|
||||
goto err2;
|
||||
|
||||
return mem;
|
||||
|
||||
err2:
|
||||
rxe_drop_ref(mem);
|
||||
err1:
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int rxe_mem_map_pages(struct rxe_dev *rxe, struct rxe_mem *mem,
|
||||
|
Loading…
Reference in New Issue
Block a user