diff options
| author | David S. Miller <davem@davemloft.net> | 2015-01-02 15:41:33 -0500 | 
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2015-01-02 15:41:33 -0500 | 
| commit | 2b972acbe5dccbba0e6dc74b51b3d4cfb2f11e5c (patch) | |
| tree | 21c623ec85ad80b7c88c5986972c1d519112eb05 | |
| parent | 7824acd92494cf21229ea5313e525fa20927ba26 (diff) | |
| parent | d0d012509f2ecee9af1857ccacac33b2266c6ce8 (diff) | |
Merge branch 'mlx4-net'
Or Gerlitz says:
====================
mlx4 driver fixes for 3.19-rc2
Please push Maor's patch to -stable >= 3.17
Jack's fixes error-flow issues introduced in 3.19-rc1, no need for -stable.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
| -rw-r--r-- | drivers/net/ethernet/mellanox/mlx4/main.c | 13 | ||||
| -rw-r--r-- | drivers/net/ethernet/mellanox/mlx4/mr.c | 9 | 
2 files changed, 9 insertions, 13 deletions
| diff --git a/drivers/net/ethernet/mellanox/mlx4/main.c b/drivers/net/ethernet/mellanox/mlx4/main.c index 943cbd47d832..03e9eb0dc761 100644 --- a/drivers/net/ethernet/mellanox/mlx4/main.c +++ b/drivers/net/ethernet/mellanox/mlx4/main.c @@ -1829,7 +1829,7 @@ static int mlx4_init_hca(struct mlx4_dev *dev)  		err = mlx4_dev_cap(dev, &dev_cap);  		if (err) {  			mlx4_err(dev, "QUERY_DEV_CAP command failed, aborting\n"); -			goto err_stop_fw; +			return err;  		}  		choose_steering_mode(dev, &dev_cap); @@ -1860,7 +1860,7 @@ static int mlx4_init_hca(struct mlx4_dev *dev)  					     &init_hca);  		if ((long long) icm_size < 0) {  			err = icm_size; -			goto err_stop_fw; +			return err;  		}  		dev->caps.max_fmr_maps = (1 << (32 - ilog2(dev->caps.num_mpts))) - 1; @@ -1874,7 +1874,7 @@ static int mlx4_init_hca(struct mlx4_dev *dev)  		err = mlx4_init_icm(dev, &dev_cap, &init_hca, icm_size);  		if (err) -			goto err_stop_fw; +			return err;  		err = mlx4_INIT_HCA(dev, &init_hca);  		if (err) { @@ -1886,7 +1886,7 @@ static int mlx4_init_hca(struct mlx4_dev *dev)  			err = mlx4_query_func(dev, &dev_cap);  			if (err < 0) {  				mlx4_err(dev, "QUERY_FUNC command failed, aborting.\n"); -				goto err_stop_fw; +				goto err_close;  			} else if (err & MLX4_QUERY_FUNC_NUM_SYS_EQS) {  				dev->caps.num_eqs = dev_cap.max_eqs;  				dev->caps.reserved_eqs = dev_cap.reserved_eqs; @@ -2006,11 +2006,6 @@ err_free_icm:  	if (!mlx4_is_slave(dev))  		mlx4_free_icms(dev); -err_stop_fw: -	if (!mlx4_is_slave(dev)) { -		mlx4_UNMAP_FA(dev); -		mlx4_free_icm(dev, priv->fw.fw_icm, 0); -	}  	return err;  } diff --git a/drivers/net/ethernet/mellanox/mlx4/mr.c b/drivers/net/ethernet/mellanox/mlx4/mr.c index d6f549685c0f..7094a9c70fd5 100644 --- a/drivers/net/ethernet/mellanox/mlx4/mr.c +++ b/drivers/net/ethernet/mellanox/mlx4/mr.c @@ -584,6 +584,7 @@ EXPORT_SYMBOL_GPL(mlx4_mr_free);  void mlx4_mr_rereg_mem_cleanup(struct mlx4_dev *dev, struct mlx4_mr *mr)  {  	mlx4_mtt_cleanup(dev, &mr->mtt); +	mr->mtt.order = -1;  }  EXPORT_SYMBOL_GPL(mlx4_mr_rereg_mem_cleanup); @@ -593,14 +594,14 @@ int mlx4_mr_rereg_mem_write(struct mlx4_dev *dev, struct mlx4_mr *mr,  {  	int err; -	mpt_entry->start       = cpu_to_be64(iova); -	mpt_entry->length      = cpu_to_be64(size); -	mpt_entry->entity_size = cpu_to_be32(page_shift); -  	err = mlx4_mtt_init(dev, npages, page_shift, &mr->mtt);  	if (err)  		return err; +	mpt_entry->start       = cpu_to_be64(mr->iova); +	mpt_entry->length      = cpu_to_be64(mr->size); +	mpt_entry->entity_size = cpu_to_be32(mr->mtt.page_shift); +  	mpt_entry->pd_flags &= cpu_to_be32(MLX4_MPT_PD_MASK |  					   MLX4_MPT_PD_FLAG_EN_INV);  	mpt_entry->flags    &= cpu_to_be32(MLX4_MPT_FLAG_FREE | | 
