Merge remote-tracking branch 'sound-asoc/for-next'
[deliverable/linux.git] / drivers / net / ethernet / mellanox / mlx5 / core / debugfs.c
index 5210d92e6bc7252a4989082e17ac1953490b4af9..e94a9532e21873c302011ecd1ce2c07adb459121 100644 (file)
@@ -277,24 +277,28 @@ void mlx5_cq_debugfs_cleanup(struct mlx5_core_dev *dev)
 static u64 qp_read_field(struct mlx5_core_dev *dev, struct mlx5_core_qp *qp,
                         int index, int *is_str)
 {
-       struct mlx5_query_qp_mbox_out *out;
+       int outlen = MLX5_ST_SZ_BYTES(query_qp_out);
        struct mlx5_qp_context *ctx;
        u64 param = 0;
+       u32 *out;
        int err;
        int no_sq;
 
-       out = kzalloc(sizeof(*out), GFP_KERNEL);
+       out = kzalloc(outlen, GFP_KERNEL);
        if (!out)
                return param;
 
-       err = mlx5_core_qp_query(dev, qp, out, sizeof(*out));
+       err = mlx5_core_qp_query(dev, qp, out, outlen);
        if (err) {
-               mlx5_core_warn(dev, "failed to query qp\n");
+               mlx5_core_warn(dev, "failed to query qp err=%d\n", err);
                goto out;
        }
 
        *is_str = 0;
-       ctx = &out->ctx;
+
+       /* FIXME: use MLX5_GET rather than mlx5_qp_context manual struct */
+       ctx = (struct mlx5_qp_context *)MLX5_ADDR_OF(query_qp_out, out, qpc);
+
        switch (index) {
        case QP_PID:
                param = qp->pid;
@@ -358,32 +362,32 @@ out:
 static u64 eq_read_field(struct mlx5_core_dev *dev, struct mlx5_eq *eq,
                         int index)
 {
-       struct mlx5_query_eq_mbox_out *out;
-       struct mlx5_eq_context *ctx;
+       int outlen = MLX5_ST_SZ_BYTES(query_eq_out);
        u64 param = 0;
+       void *ctx;
+       u32 *out;
        int err;
 
-       out = kzalloc(sizeof(*out), GFP_KERNEL);
+       out = kzalloc(outlen, GFP_KERNEL);
        if (!out)
                return param;
 
-       ctx = &out->ctx;
-
-       err = mlx5_core_eq_query(dev, eq, out, sizeof(*out));
+       err = mlx5_core_eq_query(dev, eq, out, outlen);
        if (err) {
                mlx5_core_warn(dev, "failed to query eq\n");
                goto out;
        }
+       ctx = MLX5_ADDR_OF(query_eq_out, out, eq_context_entry);
 
        switch (index) {
        case EQ_NUM_EQES:
-               param = 1 << ((be32_to_cpu(ctx->log_sz_usr_page) >> 24) & 0x1f);
+               param = 1 << MLX5_GET(eqc, ctx, log_eq_size);
                break;
        case EQ_INTR:
-               param = ctx->intr;
+               param = MLX5_GET(eqc, ctx, intr);
                break;
        case EQ_LOG_PG_SZ:
-               param = (ctx->log_page_size & 0x1f) + 12;
+               param = MLX5_GET(eqc, ctx, log_page_size) + 12;
                break;
        }
 
@@ -395,37 +399,37 @@ out:
 static u64 cq_read_field(struct mlx5_core_dev *dev, struct mlx5_core_cq *cq,
                         int index)
 {
-       struct mlx5_query_cq_mbox_out *out;
-       struct mlx5_cq_context *ctx;
+       int outlen = MLX5_ST_SZ_BYTES(query_cq_out);
        u64 param = 0;
+       void *ctx;
+       u32 *out;
        int err;
 
-       out = kzalloc(sizeof(*out), GFP_KERNEL);
+       out = mlx5_vzalloc(outlen);
        if (!out)
                return param;
 
-       ctx = &out->ctx;
-
-       err = mlx5_core_query_cq(dev, cq, out);
+       err = mlx5_core_query_cq(dev, cq, out, outlen);
        if (err) {
                mlx5_core_warn(dev, "failed to query cq\n");
                goto out;
        }
+       ctx = MLX5_ADDR_OF(query_cq_out, out, cq_context);
 
        switch (index) {
        case CQ_PID:
                param = cq->pid;
                break;
        case CQ_NUM_CQES:
-               param = 1 << ((be32_to_cpu(ctx->log_sz_usr_page) >> 24) & 0x1f);
+               param = 1 << MLX5_GET(cqc, ctx, log_cq_size);
                break;
        case CQ_LOG_PG_SZ:
-               param = (ctx->log_pg_sz & 0x1f) + 12;
+               param = MLX5_GET(cqc, ctx, log_page_size);
                break;
        }
 
 out:
-       kfree(out);
+       kvfree(out);
        return param;
 }
 
This page took 0.027666 seconds and 5 git commands to generate.