|
@@ -3216,11 +3216,24 @@ static int __init pg_init(void)
|
|
|
register_netdevice_notifier(&pktgen_notifier_block);
|
|
|
|
|
|
for_each_online_cpu(cpu) {
|
|
|
+ int err;
|
|
|
char buf[30];
|
|
|
|
|
|
sprintf(buf, "kpktgend_%i", cpu);
|
|
|
- pktgen_create_thread(buf, cpu);
|
|
|
+ err = pktgen_create_thread(buf, cpu);
|
|
|
+ if (err)
|
|
|
+ printk("pktgen: WARNING: Cannot create thread for cpu %d (%d)\n",
|
|
|
+ cpu, err);
|
|
|
}
|
|
|
+
|
|
|
+ if (list_empty(&pktgen_threads)) {
|
|
|
+ printk("pktgen: ERROR: Initialization failed for all threads\n");
|
|
|
+ unregister_netdevice_notifier(&pktgen_notifier_block);
|
|
|
+ remove_proc_entry(PGCTRL, pg_proc_dir);
|
|
|
+ proc_net_remove(PG_PROC_DIR);
|
|
|
+ return -ENODEV;
|
|
|
+ }
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
|