diff options
author | Eran Ben Elisha <eranbe@mellanox.com> | 2017-12-26 08:17:05 -0500 |
---|---|---|
committer | Saeed Mahameed <saeedm@mellanox.com> | 2018-03-27 20:17:28 -0400 |
commit | 2816077127230ef52cc7497903e71def45747611 (patch) | |
tree | b96121aab436892a5e47c93ef81bd6fd9b4c94c3 | |
parent | bfc647d52e67dc756c605e9a50d45b71054c2533 (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.c | 14 | ||||
-rw-r--r-- | drivers/net/ethernet/mellanox/mlx5/core/transobj.c | 25 | ||||
-rw-r--r-- | include/linux/mlx5/transobj.h | 1 |
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 | ||
4760 | out: | 4749 | out: |
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 | } |
158 | EXPORT_SYMBOL(mlx5_core_query_sq); | 158 | EXPORT_SYMBOL(mlx5_core_query_sq); |
159 | 159 | ||
160 | int 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 | |||
179 | out: | ||
180 | kvfree(out); | ||
181 | return err; | ||
182 | } | ||
183 | EXPORT_SYMBOL_GPL(mlx5_core_query_sq_state); | ||
184 | |||
160 | int mlx5_core_create_tir(struct mlx5_core_dev *dev, u32 *in, int inlen, | 185 | int 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, | |||
47 | int mlx5_core_modify_sq(struct mlx5_core_dev *dev, u32 sqn, u32 *in, int inlen); | 47 | int mlx5_core_modify_sq(struct mlx5_core_dev *dev, u32 sqn, u32 *in, int inlen); |
48 | void mlx5_core_destroy_sq(struct mlx5_core_dev *dev, u32 sqn); | 48 | void mlx5_core_destroy_sq(struct mlx5_core_dev *dev, u32 sqn); |
49 | int mlx5_core_query_sq(struct mlx5_core_dev *dev, u32 sqn, u32 *out); | 49 | int mlx5_core_query_sq(struct mlx5_core_dev *dev, u32 sqn, u32 *out); |
50 | int mlx5_core_query_sq_state(struct mlx5_core_dev *dev, u32 sqn, u8 *state); | ||
50 | int mlx5_core_create_tir(struct mlx5_core_dev *dev, u32 *in, int inlen, | 51 | int mlx5_core_create_tir(struct mlx5_core_dev *dev, u32 *in, int inlen, |
51 | u32 *tirn); | 52 | u32 *tirn); |
52 | int mlx5_core_modify_tir(struct mlx5_core_dev *dev, u32 tirn, u32 *in, | 53 | int mlx5_core_modify_tir(struct mlx5_core_dev *dev, u32 tirn, u32 *in, |