IB/mlx4: Limit size of fast registration WRs
Fix the limit on the size of max fast registration WRs that can be posted to match hardware capabilities. Signed-off-by: Eli Cohen <eli@mellanox.co.il> Signed-off-by: Roland Dreier <rolandd@cisco.com>
This commit is contained in:
@@ -135,7 +135,7 @@ static int mlx4_ib_query_device(struct ib_device *ibdev,
|
|||||||
props->max_srq = dev->dev->caps.num_srqs - dev->dev->caps.reserved_srqs;
|
props->max_srq = dev->dev->caps.num_srqs - dev->dev->caps.reserved_srqs;
|
||||||
props->max_srq_wr = dev->dev->caps.max_srq_wqes - 1;
|
props->max_srq_wr = dev->dev->caps.max_srq_wqes - 1;
|
||||||
props->max_srq_sge = dev->dev->caps.max_srq_sge;
|
props->max_srq_sge = dev->dev->caps.max_srq_sge;
|
||||||
props->max_fast_reg_page_list_len = PAGE_SIZE / sizeof (u64);
|
props->max_fast_reg_page_list_len = MLX4_MAX_FAST_REG_PAGES;
|
||||||
props->local_ca_ack_delay = dev->dev->caps.local_ca_ack_delay;
|
props->local_ca_ack_delay = dev->dev->caps.local_ca_ack_delay;
|
||||||
props->atomic_cap = dev->dev->caps.flags & MLX4_DEV_CAP_FLAG_ATOMIC ?
|
props->atomic_cap = dev->dev->caps.flags & MLX4_DEV_CAP_FLAG_ATOMIC ?
|
||||||
IB_ATOMIC_HCA : IB_ATOMIC_NONE;
|
IB_ATOMIC_HCA : IB_ATOMIC_NONE;
|
||||||
|
@@ -226,7 +226,7 @@ struct ib_fast_reg_page_list *mlx4_ib_alloc_fast_reg_page_list(struct ib_device
|
|||||||
struct mlx4_ib_fast_reg_page_list *mfrpl;
|
struct mlx4_ib_fast_reg_page_list *mfrpl;
|
||||||
int size = page_list_len * sizeof (u64);
|
int size = page_list_len * sizeof (u64);
|
||||||
|
|
||||||
if (size > PAGE_SIZE)
|
if (page_list_len > MLX4_MAX_FAST_REG_PAGES)
|
||||||
return ERR_PTR(-EINVAL);
|
return ERR_PTR(-EINVAL);
|
||||||
|
|
||||||
mfrpl = kmalloc(sizeof *mfrpl, GFP_KERNEL);
|
mfrpl = kmalloc(sizeof *mfrpl, GFP_KERNEL);
|
||||||
|
@@ -171,6 +171,10 @@ enum {
|
|||||||
MLX4_NUM_FEXCH = 64 * 1024,
|
MLX4_NUM_FEXCH = 64 * 1024,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum {
|
||||||
|
MLX4_MAX_FAST_REG_PAGES = 511,
|
||||||
|
};
|
||||||
|
|
||||||
static inline u64 mlx4_fw_ver(u64 major, u64 minor, u64 subminor)
|
static inline u64 mlx4_fw_ver(u64 major, u64 minor, u64 subminor)
|
||||||
{
|
{
|
||||||
return (major << 32) | (minor << 16) | subminor;
|
return (major << 32) | (minor << 16) | subminor;
|
||||||
|
Reference in New Issue
Block a user