IB/mlx5: Fix binary compatibility with libmlx5
authorEli Cohen <eli@dev.mellanox.co.il>
Thu, 30 Jan 2014 11:49:48 +0000 (13:49 +0200)
committerRoland Dreier <roland@purestorage.com>
Fri, 7 Feb 2014 07:00:48 +0000 (23:00 -0800)
commit78c0f98cc9dd46824fa66f35f14ea24ba733d145
tree16954ba1b3c48438748dcb954c01695eb3902005
parent9e65dc371b5c8d7476c81353137efc13cc1bdabd
IB/mlx5: Fix binary compatibility with libmlx5

Commit c1be5232d21d ("Fix micro UAR allocator") broke binary compatibility
between libmlx5 and mlx5_ib since it defines a different value to the number
of micro UARs per page, leading to wrong calculation in libmlx5. This patch
defines struct mlx5_ib_alloc_ucontext_req_v2 as an extension to struct
mlx5_ib_alloc_ucontext_req.  The extended size is determined in mlx5_ib_alloc_ucontext()
and in case of old library we use uuarn 0 which works fine -- this is
acheived due to create_user_qp() falling back from high to medium then to
low class where low class will return 0.  For new libraries we use the
more sophisticated allocation algorithm.

Signed-off-by: Eli Cohen <eli@mellanox.com>
Reviewed-by: Yann Droneaud <ydroneaud@opteya.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
drivers/infiniband/hw/mlx5/main.c
drivers/infiniband/hw/mlx5/qp.c
drivers/infiniband/hw/mlx5/user.h
include/linux/mlx5/driver.h