aboutsummaryrefslogtreecommitdiffstats
path: root/net/core/pktgen.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/core/pktgen.c')
-rw-r--r--net/core/pktgen.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/net/core/pktgen.c b/net/core/pktgen.c
index 8eb083b6041a..ef430b1e8e42 100644
--- a/net/core/pktgen.c
+++ b/net/core/pktgen.c
@@ -503,7 +503,7 @@ static int pg_delay_d = 0;
503static int pg_clone_skb_d = 0; 503static int pg_clone_skb_d = 0;
504static int debug = 0; 504static int debug = 0;
505 505
506static spinlock_t _thread_lock = SPIN_LOCK_UNLOCKED; 506static DEFINE_SPINLOCK(_thread_lock);
507static struct pktgen_thread *pktgen_threads = NULL; 507static struct pktgen_thread *pktgen_threads = NULL;
508 508
509static char module_fname[128]; 509static char module_fname[128];
@@ -1452,8 +1452,7 @@ static int proc_thread_write(struct file *file, const char __user *user_buffer,
1452 thread_lock(); 1452 thread_lock();
1453 t->control |= T_REMDEV; 1453 t->control |= T_REMDEV;
1454 thread_unlock(); 1454 thread_unlock();
1455 current->state = TASK_INTERRUPTIBLE; 1455 schedule_timeout_interruptible(msecs_to_jiffies(125)); /* Propagate thread->control */
1456 schedule_timeout(HZ/8); /* Propagate thread->control */
1457 ret = count; 1456 ret = count;
1458 sprintf(pg_result, "OK: rem_device_all"); 1457 sprintf(pg_result, "OK: rem_device_all");
1459 goto out; 1458 goto out;
@@ -1716,10 +1715,9 @@ static void spin(struct pktgen_dev *pkt_dev, __u64 spin_until_us)
1716 printk(KERN_INFO "sleeping for %d\n", (int)(spin_until_us - now)); 1715 printk(KERN_INFO "sleeping for %d\n", (int)(spin_until_us - now));
1717 while (now < spin_until_us) { 1716 while (now < spin_until_us) {
1718 /* TODO: optimise sleeping behavior */ 1717 /* TODO: optimise sleeping behavior */
1719 if (spin_until_us - now > (1000000/HZ)+1) { 1718 if (spin_until_us - now > jiffies_to_usecs(1)+1)
1720 current->state = TASK_INTERRUPTIBLE; 1719 schedule_timeout_interruptible(1);
1721 schedule_timeout(1); 1720 else if (spin_until_us - now > 100) {
1722 } else if (spin_until_us - now > 100) {
1723 do_softirq(); 1721 do_softirq();
1724 if (!pkt_dev->running) 1722 if (!pkt_dev->running)
1725 return; 1723 return;
@@ -2449,8 +2447,7 @@ static void pktgen_run_all_threads(void)
2449 } 2447 }
2450 thread_unlock(); 2448 thread_unlock();
2451 2449
2452 current->state = TASK_INTERRUPTIBLE; 2450 schedule_timeout_interruptible(msecs_to_jiffies(125)); /* Propagate thread->control */
2453 schedule_timeout(HZ/8); /* Propagate thread->control */
2454 2451
2455 pktgen_wait_all_threads_run(); 2452 pktgen_wait_all_threads_run();
2456} 2453}