net: mlx5: Use ktime_get_ns()
authorThomas Gleixner <tglx@linutronix.de>
Wed, 16 Jul 2014 21:04:44 +0000 (21:04 +0000)
committerJohn Stultz <john.stultz@linaro.org>
Wed, 23 Jul 2014 22:01:43 +0000 (15:01 -0700)
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: Thomas Gleixner <tglx@linutronix.de>
Cc: Eli Cohen <eli@mellanox.com>
Signed-off-by: John Stultz <john.stultz@linaro.org>
drivers/net/ethernet/mellanox/mlx5/core/cmd.c
include/linux/mlx5/driver.h

index 87d1b018a9c394309a6ee78310640690146bf245..67f8f5a1dc86c6aa281ee1667d1e08fd1b943433 100644 (file)
@@ -548,7 +548,7 @@ static void cmd_work_handler(struct work_struct *work)
        lay->status_own = CMD_OWNER_HW;
        set_signature(ent, !cmd->checksum_disabled);
        dump_command(dev, ent, 1);
-       ktime_get_ts(&ent->ts1);
+       ent->ts1 = ktime_get_ns();
 
        /* ring doorbell after the descriptor is valid */
        wmb();
@@ -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_work_ent *ent;
-       ktime_t t1, t2, delta;
        struct mlx5_cmd_stats *stats;
        int err = 0;
        s64 ds;
@@ -668,10 +667,7 @@ static int mlx5_cmd_invoke(struct mlx5_core_dev *dev, struct mlx5_cmd_msg *in,
                if (err == -ETIMEDOUT)
                        goto out;
 
-               t1 = timespec_to_ktime(ent->ts1);
-               t2 = timespec_to_ktime(ent->ts2);
-               delta = ktime_sub(t2, t1);
-               ds = ktime_to_ns(delta);
+               ds = ent->ts2 - ent->ts1;
                op = be16_to_cpu(((struct mlx5_inbox_hdr *)in->first.data)->opcode);
                if (op < ARRAY_SIZE(cmd->stats)) {
                        stats = &cmd->stats[op];
@@ -1135,7 +1131,6 @@ void mlx5_cmd_comp_handler(struct mlx5_core_dev *dev, unsigned long vector)
        void *context;
        int err;
        int i;
-       ktime_t t1, t2, delta;
        s64 ds;
        struct mlx5_cmd_stats *stats;
        unsigned long flags;
@@ -1149,7 +1144,7 @@ void mlx5_cmd_comp_handler(struct mlx5_core_dev *dev, unsigned long vector)
                                sem = &cmd->pages_sem;
                        else
                                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));
                        dump_command(dev, ent, 0);
                        if (!ent->ret) {
@@ -1163,10 +1158,7 @@ void mlx5_cmd_comp_handler(struct mlx5_core_dev *dev, unsigned long vector)
                        }
                        free_ent(cmd, ent->idx);
                        if (ent->callback) {
-                               t1 = timespec_to_ktime(ent->ts1);
-                               t2 = timespec_to_ktime(ent->ts2);
-                               delta = ktime_sub(t2, t1);
-                               ds = ktime_to_ns(delta);
+                               ds = ent->ts2 - ent->ts1;
                                if (ent->op < ARRAY_SIZE(cmd->stats)) {
                                        stats = &cmd->stats[ent->op];
                                        spin_lock_irqsave(&stats->lock, flags);
index 2bce4aad257094ae16398c3cdd946405f4f2427d..52d631ca32cf32a20835d8f33bca6cbe6aedd7f7 100644 (file)
@@ -604,8 +604,8 @@ struct mlx5_cmd_work_ent {
        int                     page_queue;
        u8                      status;
        u8                      token;
-       struct timespec         ts1;
-       struct timespec         ts2;
+       u64                     ts1;
+       u64                     ts2;
        u16                     op;
 };