IB/mthca: Fix max_sge value returned by query_device
authorRoland Dreier <rolandd@cisco.com>
Fri, 16 May 2008 21:58:44 +0000 (14:58 -0700)
committerRoland Dreier <rolandd@cisco.com>
Fri, 16 May 2008 21:58:44 +0000 (14:58 -0700)
commit12103dca52e79e23afe2fbcaf3d9e7fc9ceb6b18
tree91c8f6f489e8e47a926c0bf6337660894b6a2e50
parent21609ae3efa42f4118ce741f7e55d66d716cb17c
IB/mthca: Fix max_sge value returned by query_device

The mthca driver returns the maximum number of scatter/gather entries
returned by the firmware as the max_sge value when device properties
are queried.  However, the firmware also reports a limit on the
maximum descriptor size allowed, and because mthca takes into account
the worst case send request overhead when checking whether to allow a
QP to be created, the largest number of scatter/gather entries that
can be used with mthca may be limited by the maximum descriptor size
rather than just by the actual s/g entry limit.

This means that applications cannot actually create QPs with
max_send_sge equal to the limit returned by ib_query_device().  Fix
this by checking if the maximum descriptor size imposes a lower limit
and if so returning that lower limit.

Signed-off-by: Roland Dreier <rolandd@cisco.com>
drivers/infiniband/hw/mthca/mthca_main.c