use workqueue instead of irq_thread
try to fill bufefr