aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEran Ben Elisha <eranbe@mellanox.com>2017-12-26 08:17:05 -0500
committerSaeed Mahameed <saeedm@mellanox.com>2018-03-27 20:17:28 -0400
commit2816077127230ef52cc7497903e71def45747611 (patch)
treeb96121aab436892a5e47c93ef81bd6fd9b4c94c3
parentbfc647d52e67dc756c605e9a50d45b71054c2533 (diff)
mlx5_{ib,core}: Add query SQ state helper function
Move query SQ state function from mlx5_ib to mlx5_core in order to have it in shared code. It will be used in a downstream patch from mlx5e. Signed-off-by: Eran Ben Elisha <eranbe@mellanox.com> Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
-rw-r--r--drivers/infiniband/hw/mlx5/qp.c14
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/transobj.c25
-rw-r--r--include/linux/mlx5/transobj.h1
3 files changed, 27 insertions, 13 deletions
diff --git a/drivers/infiniband/hw/mlx5/qp.c b/drivers/infiniband/hw/mlx5/qp.c
index 85c612ac547a..0d0b0b8dad98 100644
--- a/drivers/infiniband/hw/mlx5/qp.c
+++ b/drivers/infiniband/hw/mlx5/qp.c
@@ -4739,26 +4739,14 @@ static int query_raw_packet_qp_sq_state(struct mlx5_ib_dev *dev,
4739 struct mlx5_ib_sq *sq, 4739 struct mlx5_ib_sq *sq,
4740 u8 *sq_state) 4740 u8 *sq_state)
4741{ 4741{
4742 void *out;
4743 void *sqc;
4744 int inlen;
4745 int err; 4742 int err;
4746 4743
4747 inlen = MLX5_ST_SZ_BYTES(query_sq_out); 4744 err = mlx5_core_query_sq_state(dev->mdev, sq->base.mqp.qpn, sq_state);
4748 out = kvzalloc(inlen, GFP_KERNEL);
4749 if (!out)
4750 return -ENOMEM;
4751
4752 err = mlx5_core_query_sq(dev->mdev, sq->base.mqp.qpn, out);
4753 if (err) 4745 if (err)
4754 goto out; 4746 goto out;
4755
4756 sqc = MLX5_ADDR_OF(query_sq_out, out, sq_context);
4757 *sq_state = MLX5_GET(sqc, sqc, state);
4758 sq->state = *sq_state; 4747 sq->state = *sq_state;
4759 4748
4760out: 4749out:
4761 kvfree(out);
4762 return err; 4750 return err;
4763} 4751}
4764 4752
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/transobj.c b/drivers/net/ethernet/mellanox/mlx5/core/transobj.c
index 9e38343a951f..c64957b5ef47 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/transobj.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/transobj.c
@@ -157,6 +157,31 @@ int mlx5_core_query_sq(struct mlx5_core_dev *dev, u32 sqn, u32 *out)
157} 157}
158EXPORT_SYMBOL(mlx5_core_query_sq); 158EXPORT_SYMBOL(mlx5_core_query_sq);
159 159
160int mlx5_core_query_sq_state(struct mlx5_core_dev *dev, u32 sqn, u8 *state)
161{
162 void *out;
163 void *sqc;
164 int inlen;
165 int err;
166
167 inlen = MLX5_ST_SZ_BYTES(query_sq_out);
168 out = kvzalloc(inlen, GFP_KERNEL);
169 if (!out)
170 return -ENOMEM;
171
172 err = mlx5_core_query_sq(dev, sqn, out);
173 if (err)
174 goto out;
175
176 sqc = MLX5_ADDR_OF(query_sq_out, out, sq_context);
177 *state = MLX5_GET(sqc, sqc, state);
178
179out:
180 kvfree(out);
181 return err;
182}
183EXPORT_SYMBOL_GPL(mlx5_core_query_sq_state);
184
160int mlx5_core_create_tir(struct mlx5_core_dev *dev, u32 *in, int inlen, 185int mlx5_core_create_tir(struct mlx5_core_dev *dev, u32 *in, int inlen,
161 u32 *tirn) 186 u32 *tirn)
162{ 187{
diff --git a/include/linux/mlx5/transobj.h b/include/linux/mlx5/transobj.h
index 7e8f281f8c00..80d7aa8b2831 100644
--- a/include/linux/mlx5/transobj.h
+++ b/include/linux/mlx5/transobj.h
@@ -47,6 +47,7 @@ int mlx5_core_create_sq(struct mlx5_core_dev *dev, u32 *in, int inlen,
47int mlx5_core_modify_sq(struct mlx5_core_dev *dev, u32 sqn, u32 *in, int inlen); 47int mlx5_core_modify_sq(struct mlx5_core_dev *dev, u32 sqn, u32 *in, int inlen);
48void mlx5_core_destroy_sq(struct mlx5_core_dev *dev, u32 sqn); 48void mlx5_core_destroy_sq(struct mlx5_core_dev *dev, u32 sqn);
49int mlx5_core_query_sq(struct mlx5_core_dev *dev, u32 sqn, u32 *out); 49int mlx5_core_query_sq(struct mlx5_core_dev *dev, u32 sqn, u32 *out);
50int mlx5_core_query_sq_state(struct mlx5_core_dev *dev, u32 sqn, u8 *state);
50int mlx5_core_create_tir(struct mlx5_core_dev *dev, u32 *in, int inlen, 51int mlx5_core_create_tir(struct mlx5_core_dev *dev, u32 *in, int inlen,
51 u32 *tirn); 52 u32 *tirn);
52int mlx5_core_modify_tir(struct mlx5_core_dev *dev, u32 tirn, u32 *in, 53int mlx5_core_modify_tir(struct mlx5_core_dev *dev, u32 tirn, u32 *in,