IB: Convert msleep below 20ms to usleep_range
authorLeon Romanovsky <leonro@mellanox.com>
Tue, 23 May 2017 08:29:42 +0000 (11:29 +0300)
committerDoug Ledford <dledford@redhat.com>
Tue, 18 Jul 2017 01:21:22 +0000 (21:21 -0400)
The msleep(1) may do not sleep 1 ms as expected
and will sleep longer. The simple conversion from
msleep to usleep_range between 1ms and 2ms can solve an
issue.

The full and comprehensive explanation can be found at [1] and [2].

[1] https://lkml.org/lkml/2007/8/3/250
[2] Documentation/timers/timers-howto.txt

Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Reviewed-by: Erez Shitrit <erezsh@mellanox.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/hw/hns/hns_roce_hw_v1.c
drivers/infiniband/hw/mlx4/main.c
drivers/infiniband/hw/mlx4/mcg.c
drivers/infiniband/hw/nes/nes_hw.c
drivers/infiniband/ulp/ipoib/ipoib_cm.c
drivers/infiniband/ulp/ipoib/ipoib_ib.c

index 37d5d29597a449d23bf34587024b83e4c55bb657..729f8cc8738be2a23b2166f5011ae36e7ac844ed 100644 (file)
@@ -995,7 +995,8 @@ static void hns_roce_v1_mr_free_work_fn(struct work_struct *work)
                        goto free_work;
                }
                ne -= ret;
-               msleep(HNS_ROCE_V1_FREE_MR_WAIT_VALUE);
+               usleep_range(HNS_ROCE_V1_FREE_MR_WAIT_VALUE * 1000,
+                            (1 + HNS_ROCE_V1_FREE_MR_WAIT_VALUE) * 1000);
        } while (ne && time_before_eq(jiffies, end));
 
        if (ne != 0)
index 75b2f7d4cd95577814a3b9031aff4c0cebf56fa4..d1b43cbbfea7795418d4e2dffb5acaf454552c85 100644 (file)
@@ -1155,7 +1155,7 @@ static void mlx4_ib_disassociate_ucontext(struct ib_ucontext *ibcontext)
                         * call to mlx4_ib_vma_close.
                         */
                        put_task_struct(owning_process);
-                       msleep(1);
+                       usleep_range(1000, 2000);
                        owning_process = get_pid_task(ibcontext->tgid,
                                                      PIDTYPE_PID);
                        if (!owning_process ||
index 3405e947dc1ebb420b2e2aa3104e1a2ea92485f8..b73f89700ef9eaee928487b374491e863eb4444e 100644 (file)
@@ -1091,7 +1091,7 @@ static void _mlx4_ib_mcg_port_cleanup(struct mlx4_ib_demux_ctx *ctx, int destroy
                if (!count)
                        break;
 
-               msleep(1);
+               usleep_range(1000, 2000);
        } while (time_after(end, jiffies));
 
        flush_workqueue(ctx->mcg_wq);
index 8f9d8b4ad583918dc4a2785b1df33d6eee3b6921..b0adf65e4bdbf4c1e19f4b75c1b805b9d42ef622 100644 (file)
@@ -551,7 +551,7 @@ struct nes_adapter *nes_init_adapter(struct nes_device *nesdev, u8 hw_rev) {
                        if ((0x0F000100 == (pcs_control_status0 & 0x0F000100))
                            || (0x0F000100 == (pcs_control_status1 & 0x0F000100)))
                                int_cnt++;
-                       msleep(1);
+                       usleep_range(1000, 2000);
                }
                if (int_cnt > 1) {
                        spin_lock_irqsave(&nesadapter->phy_lock, flags);
@@ -592,7 +592,7 @@ struct nes_adapter *nes_init_adapter(struct nes_device *nesdev, u8 hw_rev) {
                                                break;
                                        }
                                }
-                               msleep(1);
+                               usleep_range(1000, 2000);
                        }
                }
        }
index 7cbcfdac6529cc5a93f43212a3d05744985f814c..d574d41bdf61c267015ae15df71c69f6fa70e34d 100644 (file)
@@ -954,7 +954,7 @@ void ipoib_cm_dev_stop(struct net_device *dev)
                        break;
                }
                spin_unlock_irq(&priv->lock);
-               msleep(1);
+               usleep_range(1000, 2000);
                ipoib_drain_cq(dev);
                spin_lock_irq(&priv->lock);
        }
@@ -1206,7 +1206,7 @@ static void ipoib_cm_tx_destroy(struct ipoib_cm_tx *p)
                                goto timeout;
                        }
 
-                       msleep(1);
+                       usleep_range(1000, 2000);
                }
        }
 
index efe7402f48852195efae4fc70cf843d0398dda30..57a9655e844deb1cc2eb57d9485f98e195368ac5 100644 (file)
@@ -770,7 +770,7 @@ int ipoib_ib_dev_stop_default(struct net_device *dev)
 
                ipoib_drain_cq(dev);
 
-               msleep(1);
+               usleep_range(1000, 2000);
        }
 
        ipoib_dbg(priv, "All sends and receives done.\n");