Skip to content

Commit

Permalink
net/mlx5e: Introduce create/destroy RSS indir table access functions
Browse files Browse the repository at this point in the history
Introduce access functions to create/destroy RSS indrection table
and use it in the Ethernet driver.

Signed-off-by: Achiad Shochat <achiad@mellanox.com>
Signed-off-by: Amir Vadai <amirv@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Achiad Shochat authored and David S. Miller committed Jul 30, 2015
1 parent 1f2a300 commit 1fc2273
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 17 deletions.
19 changes: 2 additions & 17 deletions drivers/net/ethernet/mellanox/mlx5/core/en_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1188,7 +1188,6 @@ static int mlx5e_open_rqt(struct mlx5e_priv *priv)
{
struct mlx5_core_dev *mdev = priv->mdev;
u32 *in;
u32 out[MLX5_ST_SZ_DW(create_rqt_out)];
void *rqtc;
int inlen;
int err;
Expand Down Expand Up @@ -1216,12 +1215,7 @@ static int mlx5e_open_rqt(struct mlx5e_priv *priv)
MLX5_SET(rqtc, rqtc, rq_num[i], priv->channel[ix]->rq.rqn);
}

MLX5_SET(create_rqt_in, in, opcode, MLX5_CMD_OP_CREATE_RQT);

memset(out, 0, sizeof(out));
err = mlx5_cmd_exec_check_status(mdev, in, inlen, out, sizeof(out));
if (!err)
priv->rqtn = MLX5_GET(create_rqt_out, out, rqtn);
err = mlx5_core_create_rqt(mdev, in, inlen, &priv->rqtn);

kvfree(in);

Expand All @@ -1230,16 +1224,7 @@ static int mlx5e_open_rqt(struct mlx5e_priv *priv)

static void mlx5e_close_rqt(struct mlx5e_priv *priv)
{
u32 in[MLX5_ST_SZ_DW(destroy_rqt_in)];
u32 out[MLX5_ST_SZ_DW(destroy_rqt_out)];

memset(in, 0, sizeof(in));

MLX5_SET(destroy_rqt_in, in, opcode, MLX5_CMD_OP_DESTROY_RQT);
MLX5_SET(destroy_rqt_in, in, rqtn, priv->rqtn);

mlx5_cmd_exec_check_status(priv->mdev, in, sizeof(in), out,
sizeof(out));
mlx5_core_destroy_rqt(priv->mdev, priv->rqtn);
}

static void mlx5e_build_tir_ctx(struct mlx5e_priv *priv, u32 *tirc, int tt)
Expand Down
29 changes: 29 additions & 0 deletions drivers/net/ethernet/mellanox/mlx5/core/transobj.c
Original file line number Diff line number Diff line change
Expand Up @@ -358,3 +358,32 @@ int mlx5_core_arm_xsrq(struct mlx5_core_dev *dev, u32 xsrqn, u16 lwm)
return mlx5_cmd_exec_check_status(dev, in, sizeof(in), out,
sizeof(out));
}

int mlx5_core_create_rqt(struct mlx5_core_dev *dev, u32 *in, int inlen,
u32 *rqtn)
{
u32 out[MLX5_ST_SZ_DW(create_rqt_out)];
int err;

MLX5_SET(create_rqt_in, in, opcode, MLX5_CMD_OP_CREATE_RQT);

memset(out, 0, sizeof(out));
err = mlx5_cmd_exec_check_status(dev, in, inlen, out, sizeof(out));
if (!err)
*rqtn = MLX5_GET(create_rqt_out, out, rqtn);

return err;
}

void mlx5_core_destroy_rqt(struct mlx5_core_dev *dev, u32 rqtn)
{
u32 in[MLX5_ST_SZ_DW(destroy_rqt_in)];
u32 out[MLX5_ST_SZ_DW(destroy_rqt_out)];

memset(in, 0, sizeof(in));

MLX5_SET(destroy_rqt_in, in, opcode, MLX5_CMD_OP_DESTROY_RQT);
MLX5_SET(destroy_rqt_in, in, rqtn, rqtn);

mlx5_cmd_exec_check_status(dev, in, sizeof(in), out, sizeof(out));
}
4 changes: 4 additions & 0 deletions drivers/net/ethernet/mellanox/mlx5/core/transobj.h
Original file line number Diff line number Diff line change
Expand Up @@ -61,4 +61,8 @@ int mlx5_core_destroy_xsrq(struct mlx5_core_dev *dev, u32 rmpn);
int mlx5_core_query_xsrq(struct mlx5_core_dev *dev, u32 rmpn, u32 *out);
int mlx5_core_arm_xsrq(struct mlx5_core_dev *dev, u32 rmpn, u16 lwm);

int mlx5_core_create_rqt(struct mlx5_core_dev *dev, u32 *in, int inlen,
u32 *rqtn);
void mlx5_core_destroy_rqt(struct mlx5_core_dev *dev, u32 rqtn);

#endif /* __TRANSOBJ_H__ */

0 comments on commit 1fc2273

Please sign in to comment.