diff options
Diffstat (limited to 'drivers/infiniband/hw/mlx5/main.c')
| -rw-r--r-- | drivers/infiniband/hw/mlx5/main.c | 16 | 
1 files changed, 10 insertions, 6 deletions
diff --git a/drivers/infiniband/hw/mlx5/main.c b/drivers/infiniband/hw/mlx5/main.c index 3f831de9a4d8..b1a6cb3a2809 100644 --- a/drivers/infiniband/hw/mlx5/main.c +++ b/drivers/infiniband/hw/mlx5/main.c @@ -164,6 +164,7 @@ int mlx5_vector2eqn(struct mlx5_ib_dev *dev, int vector, int *eqn, int *irqn)  static int alloc_comp_eqs(struct mlx5_ib_dev *dev)  {  	struct mlx5_eq_table *table = &dev->mdev.priv.eq_table; +	char name[MLX5_MAX_EQ_NAME];  	struct mlx5_eq *eq, *n;  	int ncomp_vec;  	int nent; @@ -180,11 +181,10 @@ static int alloc_comp_eqs(struct mlx5_ib_dev *dev)  			goto clean;  		} -		snprintf(eq->name, MLX5_MAX_EQ_NAME, "mlx5_comp%d", i); +		snprintf(name, MLX5_MAX_EQ_NAME, "mlx5_comp%d", i);  		err = mlx5_create_map_eq(&dev->mdev, eq,  					 i + MLX5_EQ_VEC_COMP_BASE, nent, 0, -					 eq->name, -					 &dev->mdev.priv.uuari.uars[0]); +					 name, &dev->mdev.priv.uuari.uars[0]);  		if (err) {  			kfree(eq);  			goto clean; @@ -301,9 +301,8 @@ static int mlx5_ib_query_device(struct ib_device *ibdev,  	props->max_srq_sge	   = max_rq_sg - 1;  	props->max_fast_reg_page_list_len = (unsigned int)-1;  	props->local_ca_ack_delay  = dev->mdev.caps.local_ca_ack_delay; -	props->atomic_cap	   = dev->mdev.caps.flags & MLX5_DEV_CAP_FLAG_ATOMIC ? -		IB_ATOMIC_HCA : IB_ATOMIC_NONE; -	props->masked_atomic_cap   = IB_ATOMIC_HCA; +	props->atomic_cap	   = IB_ATOMIC_NONE; +	props->masked_atomic_cap   = IB_ATOMIC_NONE;  	props->max_pkeys	   = be16_to_cpup((__be16 *)(out_mad->data + 28));  	props->max_mcast_grp	   = 1 << dev->mdev.caps.log_max_mcg;  	props->max_mcast_qp_attach = dev->mdev.caps.max_qp_mcg; @@ -1006,6 +1005,11 @@ static void mlx5_ib_event(struct mlx5_core_dev *dev, enum mlx5_dev_event event,  	ibev.device	      = &ibdev->ib_dev;  	ibev.element.port_num = port; +	if (port < 1 || port > ibdev->num_ports) { +		mlx5_ib_warn(ibdev, "warning: event on port %d\n", port); +		return; +	} +  	if (ibdev->ib_active)  		ib_dispatch_event(&ibev);  }  | 
