Commit 14a70046 authored by Thomas Gleixner's avatar Thomas Gleixner Committed by John Stultz

net: mlx5: Use ktime_get_ns()

This code is beyond silly:

     struct timespec ts = ktime_get_ts();
     ktime_t ktime = timespec_to_ktime(ts);

Further down the code builds the delta of two ktime_t values and
converts the result to nanoseconds.

Use ktime_get_ns() and replace all the nonsense.
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Cc: Eli Cohen <eli@mellanox.com>
Signed-off-by: default avatarJohn Stultz <john.stultz@linaro.org>
parent 6d9b757c
...@@ -548,7 +548,7 @@ static void cmd_work_handler(struct work_struct *work) ...@@ -548,7 +548,7 @@ static void cmd_work_handler(struct work_struct *work)
lay->status_own = CMD_OWNER_HW; lay->status_own = CMD_OWNER_HW;
set_signature(ent, !cmd->checksum_disabled); set_signature(ent, !cmd->checksum_disabled);
dump_command(dev, ent, 1); dump_command(dev, ent, 1);
ktime_get_ts(&ent->ts1); ent->ts1 = ktime_get_ns();
/* ring doorbell after the descriptor is valid */ /* ring doorbell after the descriptor is valid */
wmb(); wmb();
...@@ -637,7 +637,6 @@ static int mlx5_cmd_invoke(struct mlx5_core_dev *dev, struct mlx5_cmd_msg *in, ...@@ -637,7 +637,6 @@ static int mlx5_cmd_invoke(struct mlx5_core_dev *dev, struct mlx5_cmd_msg *in,
{ {
struct mlx5_cmd *cmd = &dev->cmd; struct mlx5_cmd *cmd = &dev->cmd;
struct mlx5_cmd_work_ent *ent; struct mlx5_cmd_work_ent *ent;
ktime_t t1, t2, delta;
struct mlx5_cmd_stats *stats; struct mlx5_cmd_stats *stats;
int err = 0; int err = 0;
s64 ds; s64 ds;
...@@ -668,10 +667,7 @@ static int mlx5_cmd_invoke(struct mlx5_core_dev *dev, struct mlx5_cmd_msg *in, ...@@ -668,10 +667,7 @@ static int mlx5_cmd_invoke(struct mlx5_core_dev *dev, struct mlx5_cmd_msg *in,
if (err == -ETIMEDOUT) if (err == -ETIMEDOUT)
goto out; goto out;
t1 = timespec_to_ktime(ent->ts1); ds = ent->ts2 - ent->ts1;
t2 = timespec_to_ktime(ent->ts2);
delta = ktime_sub(t2, t1);
ds = ktime_to_ns(delta);
op = be16_to_cpu(((struct mlx5_inbox_hdr *)in->first.data)->opcode); op = be16_to_cpu(((struct mlx5_inbox_hdr *)in->first.data)->opcode);
if (op < ARRAY_SIZE(cmd->stats)) { if (op < ARRAY_SIZE(cmd->stats)) {
stats = &cmd->stats[op]; stats = &cmd->stats[op];
...@@ -1135,7 +1131,6 @@ void mlx5_cmd_comp_handler(struct mlx5_core_dev *dev, unsigned long vector) ...@@ -1135,7 +1131,6 @@ void mlx5_cmd_comp_handler(struct mlx5_core_dev *dev, unsigned long vector)
void *context; void *context;
int err; int err;
int i; int i;
ktime_t t1, t2, delta;
s64 ds; s64 ds;
struct mlx5_cmd_stats *stats; struct mlx5_cmd_stats *stats;
unsigned long flags; unsigned long flags;
...@@ -1149,7 +1144,7 @@ void mlx5_cmd_comp_handler(struct mlx5_core_dev *dev, unsigned long vector) ...@@ -1149,7 +1144,7 @@ void mlx5_cmd_comp_handler(struct mlx5_core_dev *dev, unsigned long vector)
sem = &cmd->pages_sem; sem = &cmd->pages_sem;
else else
sem = &cmd->sem; sem = &cmd->sem;
ktime_get_ts(&ent->ts2); ent->ts2 = ktime_get_ns();
memcpy(ent->out->first.data, ent->lay->out, sizeof(ent->lay->out)); memcpy(ent->out->first.data, ent->lay->out, sizeof(ent->lay->out));
dump_command(dev, ent, 0); dump_command(dev, ent, 0);
if (!ent->ret) { if (!ent->ret) {
...@@ -1163,10 +1158,7 @@ void mlx5_cmd_comp_handler(struct mlx5_core_dev *dev, unsigned long vector) ...@@ -1163,10 +1158,7 @@ void mlx5_cmd_comp_handler(struct mlx5_core_dev *dev, unsigned long vector)
} }
free_ent(cmd, ent->idx); free_ent(cmd, ent->idx);
if (ent->callback) { if (ent->callback) {
t1 = timespec_to_ktime(ent->ts1); ds = ent->ts2 - ent->ts1;
t2 = timespec_to_ktime(ent->ts2);
delta = ktime_sub(t2, t1);
ds = ktime_to_ns(delta);
if (ent->op < ARRAY_SIZE(cmd->stats)) { if (ent->op < ARRAY_SIZE(cmd->stats)) {
stats = &cmd->stats[ent->op]; stats = &cmd->stats[ent->op];
spin_lock_irqsave(&stats->lock, flags); spin_lock_irqsave(&stats->lock, flags);
......
...@@ -604,8 +604,8 @@ struct mlx5_cmd_work_ent { ...@@ -604,8 +604,8 @@ struct mlx5_cmd_work_ent {
int page_queue; int page_queue;
u8 status; u8 status;
u8 token; u8 token;
struct timespec ts1; u64 ts1;
struct timespec ts2; u64 ts2;
u16 op; u16 op;
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment