• Jason Gunthorpe's avatar
    RDMA/mlx5: Rework implicit_mr_get_data · 3d5f3c54
    Jason Gunthorpe authored
    This function is intended to loop across each MTT chunk in the implicit
    parent that intersects the range [io_virt, io_virt+bnct).  But it is has a
    confusing construction, so:
    
    - Consistently use imr and odp_imr to refer to the implicit parent
      to avoid confusion with the normal mr and odp of the child
    - Directly compute the inclusive start/end indexes by shifting. This is
      clearer to understand the intent and avoids any errors from unaligned
      values of addr
    - Iterate directly over the range of MTT indexes, do not make a loop
      out of goto
    - Follow 'success oriented flow', with goto error unwind
    - Directly calculate the range of idx's that need update_xlt
    - Ensure that any leaf MR added to the interval tree always results in an
      update to the XLT
    
    Link: https://lore.kernel.org/r/20191009160934.3143-6-jgg@ziepe.caReviewed-by: default avatarArtemy Kovalyov <artemyko@mellanox.com>
    Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
    3d5f3c54
odp.c 45.8 KB