net/mlx5: DR, Fix invalid EQ vector number on CQ creation
authorAlex Vesker <valex@mellanox.com>
Mon, 4 Nov 2019 09:59:21 +0000 (11:59 +0200)
committerSaeed Mahameed <saeedm@mellanox.com>
Wed, 20 Nov 2019 20:33:05 +0000 (12:33 -0800)
When creating a CQ, the CPU id is used for the vector value.
This would fail in-case the CPU id was higher than the maximum
vector value.

Fixes: 297cccebdc5a ("net/mlx5: DR, Expose an internal API to issue RDMA operations")
Signed-off-by: Alex Vesker <valex@mellanox.com>
Reviewed-by: Tariq Toukan <tariqt@mellanox.com>
Reviewed-by: Erez Shitrit <erezsh@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c

index 5df8436b2ae3fd56abe3bcdfb4a0355b3c590787..51803eef13ddc5cc59453d671e9be53603187fd3 100644 (file)
@@ -700,6 +700,7 @@ static struct mlx5dr_cq *dr_create_cq(struct mlx5_core_dev *mdev,
        unsigned int irqn;
        void *cqc, *in;
        __be64 *pas;
+       int vector;
        u32 i;
 
        cq = kzalloc(sizeof(*cq), GFP_KERNEL);
@@ -728,7 +729,8 @@ static struct mlx5dr_cq *dr_create_cq(struct mlx5_core_dev *mdev,
        if (!in)
                goto err_cqwq;
 
-       err = mlx5_vector2eqn(mdev, smp_processor_id(), &eqn, &irqn);
+       vector = smp_processor_id() % mlx5_comp_vectors_count(mdev);
+       err = mlx5_vector2eqn(mdev, vector, &eqn, &irqn);
        if (err) {
                kvfree(in);
                goto err_cqwq;